ZoneView - редактор карт и логики, который позволяет работать с основными ресурсами игры, а также подключать ресурсы модов.
Ключевые особенности
возможность подключать ресурсы основной игры и ресурсы мода, при этом ресурсы мода аналогично Стартеру имеют приоритет;
возможность одновременно работать с основным mob-файлом и дополнительным, переключаться между ними и переносить объекты;
возможность менять размер карты и сохранять мини-карту;
гибкая визуальная настройка логики поведения юнитов (охрана области, патрулирование и т.п.);
создание шаблонов.
История версий
Версия 1.4.1 - 06.04.2023
Поправил рендер. Теперь должно быть минимум миганий.
Так же исправил проблемы с производительностью, чтобы редактор не отъедал все ресурсы (в разы меньше перерисовок сцены).
Исправил проблемы с большим количеством объектов на сцене (которое приводило к диким тормозам при добавлении/удалении объектов).
Новые иконки в тулбарах! Спасибо Atom (он же Uveton) за некоторые из них.
Добавил возможность скопировать в буфер обмена значения полей в инспекторе (см. документацию). !!! Обратите внимание!
Заменил функционал кнопки GetIDs в инспекторе. Теперь она не просто идентификаторы в файл выплёвывает и открывает этот файл, а копирует в буфер обмена кусочек кода для построения группы из выделенных объектов. Учитывает при этом уникальные айдишники NPC, которые требуют использования другой функции. Ну и называется теперь Get Group.
Поправил форматирование дробных чисел. Теперь везде должна использоваться точка в качестве разделителя десятичных разрядов и запятая для разделения значений в кортежах (векторов, в частности).
При нажатии на Ctrl+Q копирует в буфер обмена текущие координаты на террейне, куда показывает курсор мыши.
Поправил работу с зонами из ЗвА, где у юнитов вдруг всего одна логика, а не пять, как на зонах оригинальной игры. Соответственно поменял интерфейс выбора логики. Теперь там кнопки, а не выпадающий список. Причем кнопки учитывают количество логик в наборе выделенных юнитов и не должны позволять выбирать логику, которой нет хотя бы у одного юнита.
Поправил некоторые баги при работе с точками патрулирования, которые приводили к крэшам редактора.
Теперь можно в режиме логики двигать юнитов, если выделены только они (без точек логики).
Исправил мелкие баги вроде ошибок, которые вываливались из-за неожиданного содержимого mob файлов.
Дерево объектов теперь должно дублировать выделение объектов на сцене. Напомню, что из дерева можно быстро перемещаться к объекту даблкликом (камера сфокусируется на выделенном) и можно выделять сразу несколько объектов через Ctrl (к сожалению, это стандартное поведение компонента, которое никак не поменять на Shift, чтобы в соответствие с окном сцены привести).
Поменял шрифты по запросу от Atom/Uveton.
Убрал раздражающее окошко про то, что конкретная текстура не смогла быть загружена. Теперь сообщение одно на открываемый файл.
Добавил возможность выключить перемещение объектов из режима выделения. Перекомпоновал немного меню, вынес включаемые опции в единый блок меню Options. Сюда же перенес опцию по выбору типа рамки выделения (экран или сцена) из ini файла.
Исправил проблему в чтении ресурсных файлов, которая раньше могла тихо и мирно пройти мимо ошибки и зачитать фигню в память, а теперь будет ругаться ошибками. Это привело к тому, что у меня некоторые модифицированные сцены перестали загружаться, ругаясь теперь на всякие проблемы, которые раньше ZoneView не замечал. Например, теперь при загрузке юнита будет в лог сыпаться сообщение, если вдруг попадётся ошибочно назначенная ему кость, которой нет в модельке. Это легко могло произойти, если кто-то поменял юниту модельку в стороннем редакторе (или в ZoneView старой версии), но не трогал при этом кости.
Собственно кости теперь можно назначать сразу группе объектов. При этом, если у группы разные модельки, то списки будут скомпонованы вместе. При применении не будет ошибки, список для каждой модельки отфильтруется и применятся только те кости, которые есть в модельке. Плюс редактор костей теперь работает со встроенной копией этих списков, т.е. "применятся" кости только при нажатии на кнопку Apply в самом редакторе свойств, а не сразу по закрытию окошка Bones. Привел к единому знаменателю, так сказать.
Теперь при загрузке mpr файла ищутся сектора и атласы не по имени открываемого файла, а по имени содержащегося внутри *.mp файла. Это актуально для ситуаций, когда кто-то копирует имеющийся *.mpr файл, модифицирует его в сторонних редакторах, но при этом при сохранении не переопределяет внутреннее имя. Тем не менее, теперь имя *.mp файла внутри .mpr будет определяющим, поэтому имена файлов секторов и имена файлов тайловых атласов всё ещё должны быть названы так же, как и *.mp.
Добавил в нижний левый уголок индикатор количества сообщений об ошибках в логе. Советую обращать внимание и исправлять по мере возможности. Счетчик сбрасывается при открытии MPR или при даблклике по статусбару (всему, а не только полю с ошибками). Если кто-то может представить какую-то более логичную работу этой штуки, я готов послушать.
Убрал какие-то дебажные атавизмы из редактора свойств.
Т.к. с прошлого обновления прошло много времени, а список этот я начал вести не сразу, то я мог что-то забыть упомянуть тут.
Версия 1.2.2 - 02.07.2022
Провел ОЧЕНЬ масштабную работу по поиску и исправлению утечек памяти и прочих проблем работы с памятью. Не гарантирую, что их совсем не стало, но точно сильно меньше
Починил снятие выделения при зажатом шифте
Добавил такое понятие как Map Template - это ini файл с расширением zvmt (Zone View Map Template), внутри которого указано три пути к mpr файлу и двум mob файлам. Один такой zvmt файл позволяет открыть сразу все три необходимых игровых файла и приступить к работе над соответствующим уровнем
На самом деле еще в прошлой версии добавил, но забыл уточнить. Теперь редактор умеет принимать аргументы командной строки и открывать соответствующие файлы. В итоге можно "привязать" в ОС файлы с расширениями mpr, mob и zvmt к исполняемому файлу ZoneView.exe и просто даблкликать на соответствующих файлах для открытия.
Исправил проблему с повторной загрузкой уже загруженных текстур (это раздувало память и даже "роняло" редактор на некоторых сценах)
Теперь если во время загрузки mpr будет включен Caps Lock, то террейн будет отображаться с bounding box'ами секторов. Это может быть полезно в случаях, когда надо понять, в какой момент тот или иной объект станет просчитываемым при приближении игрока (например, патрулирующий юнит начнет таки патрулировать). Чтобы убрать эти боксы, надо выключить Caps Lock и перезагрузить уровень
Версия 1.2.1 - 16.06.2022
Добавил рамку выделения объектов, которая работает в экранных координатах, а не в плоскости карты. Имхо, так удобнее. Но если вдруг привык кто-то к старой - ее можно включить в ini файле, сняв комментарий со строчки ;UseScreenSelection = 0.
Провел очень масштабную работу по исправлению утечек памяти и правильной работе с этой памятью. По идее должно быть меньше ошибок из разряда Access Violation. Не гарантирую полное их отсутствие, но должно стать стабильнее и надежнее.
Теперь при попытке удалить с карты объект, который участвует именем или идентификатором в любом из скриптов (основного или дополнительного загруженных mob файлов) будет выводиться предупреждение. Удаляться объект будет только после согласия.
Исправил вагон разных ошибок, с которыми вообще не понятно, как раньше редактор работал О_о
Теперь дефолтные текстура и моделька, к примеру, не могут быть выгружены и стать недоступными (а раньше могли!)
Теперь при запуске редактора рендер буфер сразу создается не дефолтного разрешения (1280х1024), а в размер окна. В предыдущей версии могли быть искажены пропорции объектов при первоначальном запуске, которые исправлялись после изменения размера окна с последующим пересозданием рендер буфера. Теперь вот менять размер окна не надо, буфер будет сразу нужного размера, а значит и пропорции будут правильными.
Версия 1.1.1 - 31.05.2022
Починил сериализацию ловушек. Теперь пересохраненные сцены, в которых есть ловушки с указанием точек удара магией, перестанут ломаться в игре.
Добавил пошаговое снятие выделения. Если выделенными оказываются дочерние элементы, то при клике в пустое место сначала снимается выделение с дочерних элементов (например, с точек патрулирования в режиме логики при выбранном юните, или с точек целеуказания при выделенной ловушке в обычном режиме), и только потом с основных (юнитов/ловушек). Напомню, что с зажатым Shift'ом выделение не будет сбрасываться вообще при случайном клике мимо.
Добавил возможность добавлять разнообразные точки сразу нескольким объектам (например, сразу нескольким выделенным мобам можно добавить по точке патрулирования (флажку) одним нажатием на кнопку).
Добавил механизм загрузки последних открытых файлов через Ctrl+L (таким образом можно "откатывать" файлы, если вдруг ошиблись и случайно удалили/переместили объект)
Окно встроенного редактора скрипта теперь может масштабироваться. Плюс оно теперь т.н. TOPMOST, т.е. не будет прятаться под другие окна.
Добавил возможность задать внешний скриптовый редактор, который будет открываться вместо встроенного. Для этого нужно в ini файле задать параметр ScriptEditor="notepad.exe", например. Скрипт в таком случае сначала пишется в отдельный файл и скармливается этому внешнему приложению, после чего ZoneView ждёт, пока приложение закроется, чтобы прочитать файл обратно и записать в MOB. Очевидно, править сразу два скрипта - плохая идея.
Теперь можно передвигать уже выделенные объекты без необходимости переключаться вручную на режим перемещения. Достаточно "зажать" кнопку мышки над уже выделенным объектом. По-умолчанию теперь выбрана плоскость XY.
Добавил функцию сохранения сразу обоих mob файлов (Primary + Secondary) и хоткей для нее - Shift + Ctrl + S.
Теперь редактор дополнительно спрашивает, если вы пытаетесь открыть файл, вместо которого уже загружен измененный. Например, если открыть mob и подвинуть в нем любой объект, то при попытке открыть другой mob или mpr файл, редактор спросит подтверждения. Это должно помочь не затирать случайно свои же изменения.
Теперь редактор спрашивает при попытке пересохранить файл поверх уже имеющегося. Это подтверждение можно выключить выбрав в диалоге Yes to all, тогда согласие запишется в реестр и больше не будет спрашиваться.
При сохранении поверх имеющегося файла предварительно создается бэкап (.bak файл).
Теперь при перезагрузке mpr'ки камера не ставится в дефолтное положение, если текущая ее позиция адекватна новому загруженному ландшафту.
Минорно, но... Раньше редактор при сохранении mob файла игнорировал секцию VSS, которая использовалась в оригинале в редакторе для визуального редактирования скрипта. А я краем уха подслушал, что кое-кто хочет реализовать аналогичную штуку в собственных редакторах, так что теперь ZoneView будет сохранять эту секцию. Секции DIRICTORY и DIRICTORY_ELEMENTS пока продолжают пропускаться, ибо не используются вообще нигде и никем.
Немного переделал вывод координат мыши. Теперь оно не так сильно должно мигать на современных операционках. Если кто знает, как победить это моргание окончательно, дайте знать.
Версия 1.1 - 14.11.2019
Переделал работу с DirectX устройством. Теперь в ini файле не нужны поля BBWidth/BBHeight - разрешение выбирается в размер окна (и обновляется при его изменении). Здесь же добавил обработку потерянного контекста (LOST_DEVICE) - теперь приложение должно перестать падать при открытии любого другого полноэкранного 3Д приложения или запуска скринсейвера.
Добавил горячие клавиши на переключение между основным и дополнительным MOB файлами (Ctrl+1, Ctrl+2). Теперь объекты НЕактивного MOB файла рисуются белыми и полупрозрачными (а-ля призраки).
Еще добавил хоткей на трансфер объекта между MOB'ами - Ctrl+T.
Добавил возможность задавать области срабатывания и цели для ловушек (см. документацию).
Переделал "пикинг" (выделение объектов). Теперь оно работает по геометрии (за исключением "служебных" моделек для источников света/частиц/звуков/точек всяких). Каждый раз, когда происходит клик мышкой по рабочей области строится сразу список объектов, находящихся под курсором. Если курсор не двигать, а продолжать кликать, то объекты будут выделяться по очереди из подготовленного списка - таким образом можно выделить объект, который находится внутри другого, например. Как только курсор сдвинется хотя бы на пиксель - список сбросится, а после следующего клика создастся новый.
Оптимизировал скорость работы редактора свойств. По идее починил пропадающие заголовки (названия) свойств и пропадающие кнопки при нажатии кнопки Alt под виндами от Висты и старше. Больше не нужно запускать с отключением визуального оформления. Плюс из-за оптимизаций должно меньше мигать при построении списка свойств.
Теперь активное редактируемое поле (в которое можно что-то написать) в редакторе свойств имеет желтый фон.
Добавил в паре мест дополнительные обработчики ошибок - теперь редактор не должен с грохотом падать, если кто-то (например, запущенные ПЗ) держат открытыми и заблокированными ресурсные файлы.
Переосмыслил процесс работы с логикой юнитов. Теперь все точки (что патрулирования, что наблюдения) видны сразу при выделении юнита. Между ними нарисованы теперь стрелочки, чтобы видно было порядок.
Guard Radius теперь рисуется только если у юнита выбран режим Guard, а маршрут патрулирования, соответственно, только если Patrol. Добавил визуализацию CFHRadius'а (Call for help, он же Alarm).
Изначально продолжение «Аллодов» носило название «Аллоды 3D», затем его сменили на «Аллоды 3: Возрождение», ну а позже из-за ряда проблем на «Проклятые Земли».