Помощь проекту

HeroWO на сегодня — это ранняя бета-версия, а потому в ней полно проблем.

Хорошие новости: многие ошибки в базовом геймплее исправляются в течение пяти минут.
Плохие новости: кому-то нужно о них сообщать.

Присылая ошибки в 🇷🇺 Проблемы вы уже помогаете проекту. Однако чтобы проект развивался, ему остро нужны люди, готовые вкладывать в него время и силы!

Многие задачи требуют программирования, но многие — нет. Ниже список задач для начала.

Присылайте ваши исправления мне в ЛС, или в новую тему в 🇷🇺 Общее, или в виде pull request в GitHub.

Заполнить банк данных

У HeroWO есть полноценная подсистема для аудио, но нет имен для многих звуков. Вы можете найти эти и другие отсутствующие данные поиском строки XXX в файлах databank-*.php files или в noXXXep.

Не нужно быть программистом, чтобы понимать логику этих файлов. Например, вот пропущенный звук, проигрываемый, когда герой стоит рядом с жилищем Воздушных элементалей на карте:

Сверить поведение с оригинальной игрой

Множество формул и механик отличается от оригинальных «Героев 3» (например, бонус от действия «Защита» в битве). Вот список потенциальных несовместимостей.

Вам также может быть интересно дополнить парсер и компилятор .h3m и/или текстовое описание данного формата (h3m-The-Corpus.txt).

Писать документацию и примеры

Тысячи строк комментариев помогают ориентироваться в коде тем, кто знаком с основами движка, но что делать новоприбывшим и непрограммистам?

Нужно введение в основные инструменты и приемы, как то важнейшие классы (ObjectStore, Map, Context и др.), использование obst.php, этапы преобразования данных (h3m2json.phph3m2herowo.phpdatabank*.php), природа констант (artifactsID.json, classes.txt) и т.д.

Особенно нужно легкое для понимания руководство по модификации игры: описание эффектов, патчей для банка данных, примеры, пользовательские модули и прочее. Пока что единственным источником этой информации остается Введение в модификации. Набор видео-роликов стал бы настоящим прорывом.

Писать юнит-тесты

Говоря просто, их нет, а нужно много. И это хороший способ получше познакомиться с движком.

Немного программировать

Определенные задачи требуют несложной разработки в рамках мелких изолированных модулей. Например, исправление для поиска пути, чтобы алгоритм всегда выбирал прямой путь при наличии альтернативы “вокруг” с такой же оптимальностью:

Много программировать

Серьезное развитие требует серьезной работы, тут ничего не поделаешь. К счастью, код HeroWO — очень модульный и капитальные исправления затрагивают единицы тысяч строк, а не всю кодовую базу.

Самое простая задача здесь — переписать мини-карту для использования <canvas> вместо создания DOM-узлов для каждой клетки на карте. Это сильно уменьшит размер дерева и улучшит время загрузки, потребление памяти и отзывчивость.

Более серьезная задача — переписать главную карту (она — вторая причина раздутого DOM).

Можно переписать карту битвы для куда лучшей скорости, но это большая задача.

Наконец, множество людей пишет, что хотелось бы играть в «Героев 3» на мобильных устройствах. В HeroWO для этого уже есть вся основа, но нужно сверстать весь UI.

Второстепенная работа

Разумеется, есть прорва других задач на любой вкус и цвет:

  • реплеи сейчас сохраняются, но нет возможности их проиграть
  • текущий ИИ совершенно не “И”
  • отсутствие предзагрузки ресурсов вызывает артефакты (особенно в битве)

Как и всегда, в noXXXep есть полный список.

Создавать моды

Ни один другой проект не может поспорить с HeroWO по части глубины и простоты модификаций. Поскольку в основе лежит JavaScript, к тому же Sqimitive, мод может встроиться в любую часть кода и вызывать все, что может вызывать сам движок. Не нужно C++, не нужно обратной разработки. Больше того, изменяя файлы банка данных, карты и эффектов можно добиться впечатляющих результатов без программирования вообще.

На форуме есть Введение в модификации. Документации по этой части пока нет, но может быть вы хотели бы это исправить?

Рассказать друзьям

Это то, что каждый должен может сделать. У HeroWO есть канал на YouTube, организация в GitHub и сервер в Discord. Пожалуйста, подпишитесь на них и расскажите знакомым — так проект сможет оставаться активным и развиваться!

Добрый день. Не совсем понял. Я конечно программист, но все же уточню. Надо в распакованных ресурсах игры найти соответствующий файлик и по звуку определить что это он, потом прописать его имя в databank?

Да. Например, если для airElementalConflux соответствует звук FOO.WAV, тогда строка меняется так:

//    array_fill_keys($c_airElementalConflux, ['sound' => 'XXX=ID:dbs:']),
//    array_fill_keys($c_airElementalConflux, ['sound' => 'FOO.WAV']),

Или, если найден звук для окна с сообщением о встрече с палаткой ключника (databank-objects.php):

      $qmsg = ['quest_message', [$const, [$adve[20].'`{Audio XXX=ID:dbos:`}']]],
      $qmsg = ['quest_message', [$const, [$adve[20].'`{Audio BAR.WAV`}']]],

image

Благодарю за желание помочь!

P.S: распакованные ресурсы можно скачать отсюда.

1 Like

Привет! Я фронтенд разработчик, стаж 6 лет. Стек небогатый, но с вёрсткой и логикой помочь могу.
Все время хотел реализовать модуль битвы для заруб с друзьями, но далеко не продвинулся, а тут наткнулся на этот проект и воспрял духом.
Если найдется работа, то готов попробовать уделять свободное время.

Приветствую!

Работы сколько угодно, но проект сложный, в него надо вникать. Не могу сразу предложить что-то увлекательное. Ошибок много, хороших тестировщиков нет (чтобы я мог четко понять, как вызвать проблему). Это было бы очень полезно для проекта, но будет ли это интересно — поднять локальную версию и шерстить баги?

P.S:

Видел такой проект (C++):

Давай свяжемся в телеге - @vesst94, созвонимся, пообщаемся, я не против помочь. Пусть и не фуллтайм.

Из мессенджеров у меня только Discord.

Идея хорошая, НО НО НО!
Ребят, спасибо за работу, я без притензий, просто хочу понять.
1е НО - а что на счет прав? Вы используете по сути чужую интелектуальную собственность!
2е но, сейчас в польше, по пол часа жду открытие окна города или пока герой начнет движение.
ВЫ писали что нужны художники? Зачем? (эт я к тому, что я художник, но не понимаю что вы еще хотите в героях 3 сделать?)

На оба эти вопроса есть ответы в Discord:

Меня спрашивают, зачем проекту художники. Мы сегодня выше об этом немного говорили. Вкратце, чтобы “Герои” развивались, нужно две главных вещи: новый движок и новая графика. Новый движок есть - да, с багами, да, медленный, но он есть и будет становиться лучше.

А вот новой графики нет, и в этом проблема - если говорить прямо, то herowo.game сейчас пиратит оригинал. Но даже моды типа HotA, которым нужна оригинальная игра, работают только пока Ubisoft на это закрывает глаза (вспоминаем, как это бывало со Square Enix и Nintendo).

Я начинал проект не как мод, а как эволюцию “Героев”. Это значит, что мы должны быть целиком независимы от Ubisoft. Нам нужна своя графика (с сохранением стилистики).

В оригинале - порядка 150 существ в битве и 1400 объектов на карте приключений. Это самое важное, но даже это - очень много. Однако разбив все на тематические куски (по городам, по территориям) можно сравнительно быстро сделать так, что отдельные маленькие карты перестанут зависеть от оригинальной графики. А это уже что-то!

Именно на эту нелегкую, но благородную задачу я и ищу людей.

1 Like

ЭВРИКА! Как говорил 1 товарищь!
В общим, я уже несколько лет лелею проект по героям 3. Планирую его сделать НО понимаю что в одиночку не потяну! Есть идея, фракции, СОБСТВЕННЫЙ сетинг! Руки из нужного места и главное фантазии ВАГОН и маленькая тележка! Предлажил бы Сделать СВОИХ героев с блекджеком и шлюхами! НО, не уверен справится ли браузер с ЭТИМ! Изначально хотел делать в 3д. И планировал, НО с фиксированной камерой и масштабом как в героях 3. Video's Aleksej Charitonov | VK



В общим ТАК, готов отдать проект! Занятся проработкой всего лора по нему! И ДА, он лучше героев 3!
Правда на счет баланса могут быть проблемы.

Разработчику большой рахмэт за созданный проект!

Привет.
Полный парсинг h3m интересует?
или вы уже реализовали?

Если что вот тула:
http://heroescommunity.com/viewthread.php3?TID=42328&pagenumber=16
пост от Hazar

тула разбирает карту на запчасти с полным описанием каждого байта(бита, если требуется)
тут даже исходный код нет необходимости читать - из этого реверс-инжиниринга можно свой код написать просто подкидывая карты с разными объектами и получая полный парсинг на выходе в разных форматах - excel, json (короткий и полный), база SQLite

Уже есть, как парсинг, так и сборка.

И это тоже.