Ну наконец-то нашел тех, кто реально пытается переписать экзешник (без малейшего желания обидеть Гиппокамуса и его команду

). Теперь можно излагать конкретные сображения в ответ на вопрос
CrackedMind: «Чем можешь помочь?» Может быть некоторые из этих соображений покажутся элементарными, но я не знаю на какой стадии находится разработка группы Openheroes в настоящее время и потому начну с самых азов.
Поскольку ремейк предпологает сделать всё с нуля, то логично начать с разумной организации самих баз данных. Чтобы не было напрасных споров, сразу разъясню, что я имею в виду. Базы данных Героев делятся на 3 основные группы:
1. Предметы. Сюда входят юниты, объекты на карте и сами герои. Каждый предмет – это отдельная база данных, которая включает в себя параметры предмета, его анимацию, озвучку и тексты.
2. События. Сюда входят:
a. Воздействия, изменяющие параметры и местоположение предметов (выстрелы, магии, артифакты и эвенты). Каждое воздействие – это отдельная база данных, которая содержит алгоритм воздействия, параметры, анимацию, озвучку и тексты.
b. К событиям относятся также сообщения на экране в ходе игры. Они могут быть связаны с каким-либо действием игрока, моментом времени, эвентом или другим сообщением (диалоги).
3. Поля (карты). Сюда входят: карты приключений, поля сражений и собственно города.
Обозначим все эти базы данных одним термином «элементы игры».
Безусловно, есть смысл заархивировать все базы данных в один большой файл - объединенную базу данных, типа *.lod , но не надо их смешивать, объединяя параметры в сводные таблицы. Гораздо эффективнее иметь унифицированные (т.е. одного формата) базы данных для каждого типа элементов (юнитов, героев, объектов, магий, артифактов и тд.). Во-первых, это позволит безболезненно вводить новых юнитов в игру, особенно взятых с сайта. Большинство из нас уже имеет свою собственную конфигурацию Героев и если сейчас, импортируя чей-то новый город, загрузить себе чужие crtraits.txt, twcport.def, cprsmall.def, cranim.txt и тд, то с собственной конфигурацией Героев можно распрощаться.
Имея разделенные базы данных (БД), можно будет передавать друг другу новые элементы (юниты, магии, города...) в виде законченных баз данных (параметры + файлы озвучки + анимации + иконки), полностью готовых к использованию, которые легко внедрить в игру – просто ввел БД нового юнита в свою объединенную базу данных и готово! - тут же видишь его в редакторе карт и соотвественно в игре. Редактор карт должен брать список всех элементов игры (юнитов, объектов, городов и тд.) из той же объединенной базы данных, что и экзешник. Таким образом, для введения в игру нового юнита или города достаточно создать или импортировать его БД, запаковать его в свою объединенную базу данных (типа *.lod) и потом просто поместить новый элемент на карту.
Во-вторых, поскольку ведение новых элементов в игру абсолютно не отразится на собственной конфигурации, это сделает программу более стабильной, потому что базы данных будут независимы друг от друга. Если экзешник не найдет базы данных (БД) указанного юнита, он должен показать белый квадрат вместо этого юнита и по умолчанию принять его параметры равными 1 (1 атака, 1 жизнь и тд.), чтобы игра не висла. Если анимация не указана – она просто пропускается, если воздействие не описано – оно просто принимается равным нулю. Программа никогда не должна останавливаться и зависать.
Сводные таблицы нужны только для удобства балансировки, да и то в виде отдельной утилиты, но об этом дальше. Для создания и изменения БД, нужны простенькие редакторы. Для наглядности я тут за пару вечеров слепил
макет редактора юнитов.
При запуске редактора, он обращается в объединенную базу данных и выводит в список всех имеющихся юнитов по номерам, именам и принадлежности к городам. Итак, открываешь редактор, пишешь номер юнита и кликаешь «Показать». Если юнит с этим номером существует, показываются все его данные, если же нет – тогда все поля останутся пустыми и ты знаешь, что надо его создавать. Тут никаких трюков и скриптов – просто заполняешь все поля, жмешь «Сохранить» и всё! Редактор записывает готовую БД в отдельный файл в той форме, которую установили кодеры для экзешника. Кодеры в принципе не обязаны придерживаться существующей сегодня формы записи данных. В новом экзешнике они могут использовать любую другую удобную им форму и потом просто конвертировать все существующие данные в эту новую форму.
Фактически данный макет - это действующий интерфейс, в принципе ему нужно прописать соотвествующие обращения и он станет полноценным редактором. Сейчас для примера он показывает базу данных U0014 – Юнит номер 14.
Макет редактора юнитовБазовая идея редактора – максимальная автоматизация, то есть практически все списки (юнитов, магий и тд.) заполняет сам редактор из объединенной базы данных. Имена соотвествующих файлов иконок, озвучки и дефов редактор тоже прописывает сам по шаблону. Если при нажатии кнопки «Показать», окошки иконок, озвучки и дефов окажутся пустыми, нужно создать недостающие файлы, положить их в нужную папку или запаковать в общий файл (типа *.lod) и опять кликнуть на просмотр юнита. Программа никогда не должна зависать.