I. Улучшенный режим Марвина.
В консоли появились новые команды:
1) MAXIMIZE - развернуть окно консоли на 3/4 экрана.
2) MINIMIZE - свернуть назад, к исходному размеру.
3) HELP - печатает справку о командах консоли, причем не только в окно zSpy, как оригинальный движок, но и прямо в окно консоли; HELP I - напечатает справку о всех командах, начинающихся с буквы I (INSERT и т.д.).
4) SPAWNMASS - призыв кучи монстров вокруг героя; команда была в оригинальном движке, но толком не работала. Починена вместе с вариацией SPAWNMASS GIGA - призыв сильных монстров (тролля, демона, ползуна-воина). Также добавлены SPAWNMASS ORC, SPAWNMASS UNDEAD - призыв орков и нежити. Можно в конце еще добавить число - множитель для численности монстров.
5) VAR - напечатать/изменить переменную скриптов, прямо во время игры.
Примеры:
VAR Kapitel - напечатает текущую главу,
VAR self.attribute[ATR_HITPOINTS] - напечатает здоровье героя в консоли,
VAR other.name - напечатает имя персонажа в фокусе,
VAR self.attribute[ATR_STRENGTH] = 100 - изменит силу героя.
II. Многостраничные книжки реализованы.
Чтобы создать такую книжку, нужно просто вызвать в скриптах функцию Doc_SetPages, передав в качестве числа страниц 3 или больше, ну и соответственно далее в скриптах настроить дополнительные страницы. Листать в игре кнопками вправо/влево, там еще стрелочки будут появляться, если есть еще страницы справа/слева. Номер страницы не печатается, если он нужен, напишите его на странице сами.
III. Карта мира.
Для определения карты, которая должна показать на экране по нажатию кнопки M, теперь движком вызывается функция PLAYER_HOTKEY_SCREEN_MAP (как в Готике 2), и только если она в скриптах не найдена, используется стандартное для Г1 поведение - отображается карта ITWRWORLDMAP_ORC или ITWRWORLDMAP, если первой в инвентаре нет.
IV. Управление LOD'ом.
LOD, который так портил жизнь ранее при попытке сделать чуть более полигональную модель, чем это обычно принято, можно достаточно гибко настраивать.
Во-первых, есть параметр modelDetail в файле gengine.ini - он управляет применением LOD'а к моделям (всем сразу). Чем больше значение modelDetail, тем меньше используется LOD. Игра вычисляет выражение (1.15 - modelDetail * 0.6) и использует его как множитель для определения силы LOD'а. Допустимый диапазон для modelDetail в оригинале: 0..1, в GEngine расширен, теперь допустимы любые числа. Значение 2 (или больше) отключает LOD для всех моделей, отрицательные значения, наоборот, усиливают LOD на меньших расстояниях (можно использовать для тестирования). Параметр modelDetail настраивается также через меню игры (Графика-> Уровень детализации объектов).
В GEngine добавлена возможность применять разные параметры LOD'ов к разным моделям. Для этого нужно перед компиляцией модели (например, тролля) - компилировать, понятно, надо только движком GEngine), - добавить в каталог с исходниками модели файл с именем "<имя-исходника>-params.ini" (например, TRO_BODY-params.ini). Такой прием может применяться для статических мешей (меч), динамических моделей (доспех/шкура монстра), морфируемых мешей (голова/лук). Если такой файл при компиляции не будет найден, будут использованы параметры по умолчанию, которые зависят от типа модели:
1) для статического меша (пример имени файла: "ItMw_1H_Warhammer_01-params.ini"):
Код:
[PROGMESH]
LODStrength=1
LODStartDistance2=0
LODDynCollapseSpeed=0
LODMinVerts=0
2) для динамического меша (пример имени файла: "Hum_KDFM_ARMOR-params.ini"):
Код:
[PROGMESH]
LODStrength=1
LODStartDistance2=0
LODDynCollapseSpeed=0.03
LODMinVerts=0
3) для морфируемого меша (имя файла выглядит, например, так: "ORC_HEADSHAMAN-params.ini"):
Код:
[PROGMESH]
LODStrength=0.35
LODStartDistance2=0
LODDynCollapseSpeed=0.03
LODMinVerts=0
Параметры LOD'ов из файла "*-params.ini" используются только при компиляции модели, далее они сохраняются в MDM/MDL/MRM-файле и при последующих запусках загружаются уже оттуда. При том, что формат MDM/MDL/MRM-файлов я не менял, скомпилированные таким образом в GEngine модели можно использовать и для запуска в обычной Г1.
LODStrength - основной параметр, значение 0 отключает LOD для данного меша, значения, большие единицы, наоборот, увеличат эффект LOD'а. Игра использует выражение (LODStrength * (1.15 - modelDetail * 0.6)) для определения степени LOD'а.
Команда игровой консоли ZPROGMESHLOD переопределяет параметр LODStrength для всех моделей в текущей игровой сессии.