HeroWO на сегодня — это ранняя бета-версия, а потому в ней полно проблем.
Хорошие новости: многие ошибки в базовом геймплее исправляются в течение пяти минут.
Плохие новости: кому-то нужно о них сообщать.
Присылая ошибки в 🇷🇺 Проблемы вы уже помогаете проекту. Однако чтобы проект развивался, ему остро нужны люди, готовые вкладывать в него время и силы!
Многие задачи требуют программирования, но многие — нет. Ниже список задач для начала.
Присылайте ваши исправления мне в ЛС, или в новую тему в 🇷🇺 Общее, или в виде pull request в GitHub.
Заполнить банк данных
У HeroWO есть полноценная подсистема для аудио, но нет имен для многих звуков. Вы можете найти эти и другие отсутствующие данные поиском строки XXX в файлах databank-*.php
files или в noXXXep.
Не нужно быть программистом, чтобы понимать логику этих файлов. Например, вот пропущенный звук, проигрываемый, когда герой стоит рядом с жилищем Воздушных элементалей на карте:
Сверить поведение с оригинальной игрой
Множество формул и механик отличается от оригинальных «Героев 3» (например, бонус от действия «Защита» в битве). Вот список потенциальных несовместимостей.
Вам также может быть интересно дополнить парсер и компилятор .h3m и/или текстовое описание данного формата (h3m-The-Corpus.txt
).
Писать документацию и примеры
Тысячи строк комментариев помогают ориентироваться в коде тем, кто знаком с основами движка, но что делать новоприбывшим и непрограммистам?
Нужно введение в основные инструменты и приемы, как то важнейшие классы (ObjectStore
, Map
, Context
и др.), использование obst.php
, этапы преобразования данных (h3m2json.php
→ h3m2herowo.php
→ databank*.php
), природа констант (artifactsID.json
, classes.txt
) и т.д.
Особенно нужно легкое для понимания руководство по модификации игры: описание эффектов, патчей для банка данных, примеры, пользовательские модули и прочее. Пока что единственным источником этой информации остается Введение в модификации. Набор видео-роликов стал бы настоящим прорывом.
Писать юнит-тесты
Говоря просто, их нет, а нужно много. И это хороший способ получше познакомиться с движком.
Немного программировать
Определенные задачи требуют несложной разработки в рамках мелких изолированных модулей. Например, исправление для поиска пути, чтобы алгоритм всегда выбирал прямой путь при наличии альтернативы “вокруг” с такой же оптимальностью:
Много программировать
Серьезное развитие требует серьезной работы, тут ничего не поделаешь. К счастью, код HeroWO — очень модульный и капитальные исправления затрагивают единицы тысяч строк, а не всю кодовую базу.
Самое простая задача здесь — переписать мини-карту для использования <canvas>
вместо создания DOM-узлов для каждой клетки на карте. Это сильно уменьшит размер дерева и улучшит время загрузки, потребление памяти и отзывчивость.
Более серьезная задача — переписать главную карту (она — вторая причина раздутого DOM).
Можно переписать карту битвы для куда лучшей скорости, но это большая задача.
Наконец, множество людей пишет, что хотелось бы играть в «Героев 3» на мобильных устройствах. В HeroWO для этого уже есть вся основа, но нужно сверстать весь UI.
Второстепенная работа
Разумеется, есть прорва других задач на любой вкус и цвет:
- реплеи сейчас сохраняются, но нет возможности их проиграть
- текущий ИИ совершенно не “И”
- отсутствие предзагрузки ресурсов вызывает артефакты (особенно в битве)
Как и всегда, в noXXXep есть полный список.
Создавать моды
Ни один другой проект не может поспорить с HeroWO по части глубины и простоты модификаций. Поскольку в основе лежит JavaScript, к тому же Sqimitive, мод может встроиться в любую часть кода и вызывать все, что может вызывать сам движок. Не нужно C++, не нужно обратной разработки. Больше того, изменяя файлы банка данных, карты и эффектов можно добиться впечатляющих результатов без программирования вообще.
На форуме есть Введение в модификации. Документации по этой части пока нет, но может быть вы хотели бы это исправить?
Рассказать друзьям
Это то, что каждый должен может сделать. У HeroWO есть канал на YouTube, организация в GitHub и сервер в Discord. Пожалуйста, подпишитесь на них и расскажите знакомым — так проект сможет оставаться активным и развиваться!