Неотъемлемой частью написания программного кода является отладка.
Справка:Отладка кода (debugging) - это процесс выявления и исправления ошибок в программном коде. Он включает в себя анализ кода, поиск ошибок, их локализацию и устранение. Отладка может выполняться вручную, с помощью инструментов отладки (отладчиков) или автоматизированных средств.
Этот процесс может быть реализован по-разному, но он обязательно включает в себя такие этапы:
- Поиск и локализация ошибки;
- Исправление ошибки;
- Проверка исправления.
В этом уроке мы рассмотрим инструменты отладки, которые доступны нам в Корсарах (спойлер - их очень мало).
Логирование
Из всех известных человечеству методов поиска и локализации ошибок нам доступно только логирование (вывод отладочных сообщений) в двух вариантах: внутриигровое и в файл.
Внутриигровое логирование - это вывод сообщений в левом верхнем углу экрана.
// синтаксис
void Log_SetStringToLog(string logtext);
// пример
Log_SetStringToLog("говорит и показывает XGM");
Также есть функция, которая выгружает логи в текстовый файл ..\PROGRAM\compile.log
// синтаксис
void trace(string logtext);
// пример
trace("а теперь XGM пишет в файл");
Ещё нам доступен файл ..\error.log, куда пишутся сообщения об ошибках. Но если никаких ошибок небыло - то и файла этого у вас может не существовать.
Справка:Чтобы паралельно с игрой читать логи, вам придётся постоянно её сворачивать/разворачивать (<Alt> + <Tab>).
Если при этом она зависает - необходимо отключить полноэкранный режим в config.exe или engine.ini.
Debug панель
Во всех модификациях на базе ВМЛ доступна дебаг-панель Алексуса (так называемые "читы"), которая может быть очень полезна при отладке. Чтобы её активировать, необходимо в файле ..\PROGRAM\_mod_on_off.h найти переменную MOD_BETTATESTMODE и установить ей значение "On" . После этого панель будет доступна в игре по клавише <F11>.
// Show special message for test game statment
#define MOD_BETTATESTMODE "On" // On -DEV version; Test - TST ver; Off - realize
Если вы всё правильно включили - возле версии игры в главном меню должна появиться приписка DEV.
Включение этого режима подключает два файла: ..\PROGRAM\Debuger.c и ..\PROGRAM\Interface\boal_debug.c. В них, собственно, находятся все функции этой дебаг-панели. В файле Debuger.c вы можете посмотреть какие ещё панели, кроме <F11>, вам доступны. Мы не будем здесь углубляться в их устройство, я это уточнил только на случай, если вам нужно добавить туда свой функционал или узнать больше о существующем.
В кратце рассмотрим её основные возможности.
F1 - Set bBettaTestMode On/Off
Данный режим активирует вывод отладочных логов. А именно - функцию-обертку void Log_TestInfo(string logtext);, которая одновременно выводит сообщение и на экран, и в файл, добавляя к нему служебную информацию о текущем квесте.
Данный режим активирует вывод отладочных логов. А именно - функцию-обертку void Log_TestInfo(string logtext);, которая одновременно выводит сообщение и на экран, и в файл, добавляя к нему служебную информацию о текущем квесте.
Также, в этом режиме можно подойти к любому персонажу и клавишей <F12> открыть его панель персонажа (просмотр умений, способностей и т.д.). При этом также в лог выводится служебная информация об этом персонаже (тип, чем занят и т.д.).
В режиме моря появляется команда "Уничтожить!", которая позволяет мгновенно потопить указанный корабль или форт.
F5 - Show All Locators
Отображает все локаторы, их имена и координаты главного персонажа. Может быть полезно, чтобы расставить квестовых персонажей.
Отображает все локаторы, их имена и координаты главного персонажа. Может быть полезно, чтобы расставить квестовых персонажей.
F8 - Циклический телепорт по тавернам
Перемещает вас между тавернами по всему архипелагу. Используется для быстрого перемещения между островами в ходе тестирования.
Перемещает вас между тавернами по всему архипелагу. Используется для быстрого перемещения между островами в ходе тестирования.
F13 - Worldmap encounters ON/OFF
Включает/отключает генерацию энкаунтеров на глобальной карте.
Включает/отключает генерацию энкаунтеров на глобальной карте.
F15 - Dump Attributes(pchar)
Выводит в лог дамп всех атрибутов главного персонажа. Если вы уже читали мои уроки по квестам, или чему-то ещё - то знаете, что мододелы вешают всю служебную информацию в объект pchar. То есть выводя в лог все атрибуты этого объекта, мы получаем распечатку всей "базы данных" игры.
Выводит в лог дамп всех атрибутов главного персонажа. Если вы уже читали мои уроки по квестам, или чему-то ещё - то знаете, что мододелы вешают всю служебную информацию в объект pchar. То есть выводя в лог все атрибуты этого объекта, мы получаем распечатку всей "базы данных" игры.