Russian thread

А я подведу промежуточные итоги. Промежуток между релизами увеличился до 5 месяцев, при этом количество сделанных изменений в changelog уменьшается.
С выходом 0.98 наконец-то поддерживаются ВСЕ заклинания. Не готов и далёк от завершения ИИ, не реализованы абилки у Кристальных драконов (+3 кристалла в неделю), Номадов (нет штрафа на песке) и Воров(получение инфо о лояльности нейтралов и силе армий), не готовы звуки окружения на карте приключений, не сделан Зал славы. Также в TODO-списке числится Online game, но что под этим подразумевается - не понятно.
Кроме того, запланированы отсутствующие в оригинале дополнительные фишки, такие как многоуровневые карты, новый редактор карт, многоязычная поддержка, а в многопользовательском режиме - одновременные ходы, режим наблюдателя, выделенный сервер и запись реплеев. Плюс многочисленные улучшения, относящиеся к модам.
Вместе с тем, в Mantis открыто 275 багов, ожидающих подтверждения от тестеров и сиправления от разработчиков. В летнее время процесс исправления ошибок сильно замедлился.
Если после версии 0.99 будет полный релиз 1.0, а это по моим расчётам к 1 февраля 2016г., то достаточно сомнительно, что все запланированное получится реализовать. Тем не менее, многотысячная армия фанатов будет ждать столько, сколько потребуется.
Вот такая диванная аналитика, извините, если что не так.

Просто Иван перестал принимать активное участие в проекте, вот и всё. :slight_smile: Потом и beegee отдалился, до этого Tow, а сейчас и Warmonger редко что-то делает. Оно и понятно, одному не потянуть. + AVS, но всё равно картина грустная.

Еще ворота при осаде не реализованы, и просмотр параметров героя в режиме боя:-)

Это надо добавлять бонус, в котором в subtype будет указан terrain, и процент уменьшения штрафа:-)

ИМХО это можно и отложить на потом.

Да, плохо, что меньше народа занимается VCMI. Я вот тоже пока не добрался до кода. Вряд ли я смогу сделать что-то глобальное в ближайшие месяцы (boost я пока не освоил как следует, да и времени на кодинг особо нет). Но все-таки надеюсь, что в обозримом будущем смогу по мелочи что-то поправить и добавить (как и планировал “в январе”, потом “в мае”).
НАдо еще вспоминать, как с гитхабом работать…

Keloraen, есть такое, к сожалению. Пару лет назад команда состояла из 6 активных программистов, а теперь - только пара человек время от времени :frowning:

Возможно скоро смогу ненадолго вернуться, доделать что недоделал - есть пара интересных идей.

hippocamus,
Ради интереса - что в событиях порадовало?

С террейном упор на скорость парсинга а не читаемость. Вручную редактировать террейн в любом виде - самоубийство. Самая маленькая карта 36х36 это больше 1000 клеток. Не задолбется вручную редактировать? Про большие карты вообще молчу. Этот формат составлялся с расчетом на редактор и с запасом по расширяемости.

Проблем с расширением не вижу - для новых террейнов достаточно будет объявить какое-то короткое имя для карты. Какие-то джунгли могут иметь имя “jungle”, но для карты паралельно будет определен короткий код “jg”. С реками/дорогами тоже самое. Более того, этот формат можно интерпретировать не как
<террейн><река><дорога>, а как <террейн><оверлей 1> … <оверлей н>. А что за оверлеи - дорога, река или чтот другое значения не имеет.

Игроки - это уже особенность нашей системы моддинга. У всего должно быть уникальное имя в пределах мода. Да, у всех троечных цветов будет свое фиксированное имя. Но ничто не мешает в модах объявить какой-то свой цвет с новым идентификатором.

Со слоями карт самая большая проблема это механика игры и интерфейс. Куда на трехуровневой карте должен вести подземный переход? А что произойдет при нажатии на клавишу смены уровня? И как она должна выглядеть? Загрузить в игру карту с уровнем номер 2 проблем я не вижу. Было бы время :slight_smile:

К ближайшему другому переходу, как в HMM3 (разность кооординат - минимум

Изображение облаков - верхний уровень, далее циклическое переключение уровней при нажатии на иконку подземелья (можно еще цифру с номером слоя на иконку выводить).

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

Посмотрел тестовый образец - ваш код ландшафта всё же достаточно удобен и нагляден - но наилучшим вариантом для парсинга всё же был бы аналог CDATA с представлением во внутригеройском формате. Всё же, в dat-файле ХотА сохранены некоторые поля в нечитаемом бинарном формате - они удобны для загрузки в память

Ну, тогда стоило бы использовать не двубайтовый код “sn”, а 4-хбайтовый “snow”, хотя бы потому, что это сразу определит def-файл как snowtl.def
А если всё же сохранять читабельность тайлов - тогда, кажется, лучше что-то вроде “snow02|08 dirt3C icy01”. что означало бы снежный тайл с типом #2, зеркалом #8, грунтоой дорогой с тайлом #3C и снежной рекой с тайлом #1.
Преимущество в том, что в текстовом редакторе можно было бы произвести массовое преобразование (например, превратить все реки на данной территории в грязевые)
Хотя идея общего оверлея мне нравится.

Ну, над этой проблемой думал немало, поэтому есть готовые решения.
Предлагалось сделать градацию по типам плоскостей:
0: ground
1: underground
2: overground
3: astral
Пока что разница между ними состояла бы, пожалуй, лишь в том, что

  • в underground все юниты получают бонус битвы в подземелье
  • в ground все получают бонусы своих родных почв
  • в astral никто не получает никаких обычных бонусов
  • в overground соответственно получают бонус битвы над землёй, хотя сейчас и не создано модов для этой парадигмы.
    При нажатии на кнопку смены уровня уровни сменяются циклически, поэтому, возможно, стоило бы сделать интерфейс под “уровень+”/"уровень-"
    Уровни имеют свои НАЗВАНИЯ (По умолчанию “Поверхность” и “Подземелье”), название отображается на верхней планке рамки мини-карты. По умолчанию, будет “Подземелье 2”, “Подземелье 3”, “Надземье 1”, “Надземье 2”.
    А вот подземные переходы должны быть всё-таки переработаны. Есть Верхние Врата и Врата Нижнего Мира. По сути, они такими и являются, только не отличаются внешне. Можно сделать отличающимися. Ну, а в Астрал могут вести только телепорты.
    Если есть несколько слоёв “Поверхность” (по сюжету, 2 изолированных мира) - они соединяются также телепортами (хотя никто не мешает их на картах вроде зеркалок оформить Вратами, которые всё равно по сути останутся телепортами).

Ага. Потенциально - очень мощная фича, которой можно найти применение не только в глобальных событиях карты.

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

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

Так что парсинг строк тут намного надежнее. Ну а детали как именно будет выглядеть формат - это уже определятся когда он начнет применятся, то есть - в редакторе или в коде читалки карт.

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

С отдельными мирами можно отдать настройку мира автору карты - какое окружение у уровня, как они расположены относительно друг друга (например, несколько далеких друг от друга островов - вполне реалистичный сценарий) или даже уровни разного размера. А связки между ними (те же подземные врата) задавать вручную или же автоматически в редакторе выставлять вместо выбора самого ближнего. Явное лучше, чем неявное.

Так я же и имею в виду, что может быть сколько угодно уровней любого типа!
Также хотелось бы иметь возможность создавать прямоугольные уровни, и “циклические” - где переход через логическую границу уровня переносил бы на противоположную сторону, а для игрока у уровня просто бы не было границ - как поверхность шара (или цилиндра, если зациклен только по одной координате). Кажется, это не так сложно сделать.

Cylindric is easy
sphere is almost impossible, but perhaps you meant Torus - which is almost as easy as Cylindric

Цилиндры и торы еще неизвестно на сколько сложно в движке будет сделать. Сколько угодно уровней - не проблема.

Ребята подскажите, почему в модах, иногда, вместо звука идет шум? Какие вообще характеристики должны быть у звукового файла ?
И еще вопрос :). Как то можно руссифицировать моды?

thevista.ru/page19006-vyshel … 5_i_net_46

MS Visual Studio 2015 вышел.
VCMI компилится по ней? Или еще никто не пробовал?

Про звук: нужен пример файла который "щумит"
Русифицировать можно. Для этого надо сделать отдельный мод и переопределить там текстовые свойства объектов мода.

в моде Axolotl Creatures Pack есть зверь Tortofroids. Когда он атакует как раз идет “шум”.
Сам по себе файл нормальный, воспроизводиться корректро

Кстати, вот, например, в VCMI не реализована возможность рандомного выбора графических картинок (ну или любых DEF, видео или звуковых файлов в перспективе).
Картинки прописаны жестко и берутся по индексу:

"game-select" : "gamselb0", "gamselb1"],

Например, есть куча фонов загрузки для HMM3, которые хотелось бы брать по рэндому.
Или, к примеру, динамически ролик победы/поражения подменять на другую версию для разнообразия.
Или при обращению к картинке поля боя для леса рендомно подменять ее на другую картинку из списка.
Я давно этим не занимался, но представляю себе это так - в память загружается exe-файл, который ждет, когда exe-файл клиента vcmi запросит графический/видеофайл, упомяный в конфиге exe-файла утилиты, и выбирает произвольный файл из списка альтернатив, подсовывая его путь имя в клиент VCMI взамен исходного.
В конфиге файла будет прописано что-то типа

{
"gamselb0":
"mymod/gamselb0","myothermod/somepicture","anothermod/pics/loadscreen"
}

или в каком-нибудь другом формате, например:

gameselb0=mymod/loadp$othermod/pics/heres$

По идее, это надо делать хуки.
Может кто-то сварганить такую фигню для VCMI? По идее, здесь нет ничего сложного.

Зачем еще и отдельный процесс?

Macron1, ужас… троллейбус-из-хлеба.жпг

Проблемы:

  • системо-зависимо. Нужно 4+ реализации (Вин, Линух, Мак, Андроид).
  • хуки могут быть заблочены без админских прав. Необходимость запуска от админа = плохо.
  • не пройдет там где нужно выбирать больше одного файла, например - случайная иконка существа (маленькая+большая)

Приемлимое решение - сделать на уровне нашей виртуальной файловой системы, перенаправления уже есть - воговский Zelp.txt успешно подменяет троечный Help.txt. Добавить случайность не проблема.

Хорошее решение - сделать случайный выбор из списка именно для случая загрузочных экранов - тут логична необходимость случайного выбора картинки.

Правильное решение - посмотреть в файл CPregame.cpp и увидеть то, что случайный выбор уже сделан :slight_smile:
github.com/vcmi/vcmi/blob/devel … e.cpp#L600

Да, экран выбора игры и загрузки карты уже работает в плане выбора рендомных картинок, я проворонил как-то этот функционал.
Ну например, selgamebk (или как он там, под рукой нет HMM3 - основной экран игры - только одна картинка (ее тоже хотелось бы рэндомно брать) (в Hero Of Light уже есть кнопки HMM, избавленные от фона).
Или к примеру, AISHIELD, который рисуется на minimap при ходе компа, тоже неплохо бы рендомить.

Было бы неплохо сделать это на уровне виртуальной файловой системы. Потому что хардкодить рендомный выбор картинки для каждого элемента - слишком неблагодарное занятие.
Конечно, тут возникает другой вопрос. К примеру, герб игрока выбрать рендомно хорошо один раз, при старте игры. А загрузочный экран рендомить при каждом обращении надо. Это вопрос.

Кто знает что это значит? (см. скрин)

И второй вопрос насколько сложно починить этот баг? bugs.vcmi.eu/view.php?id=1965 очень кошмарит проводить с ним битвы.


Слишком много звуков пытаются вопроизвестись одновременно.

Думаю не сложно. Постараюсь глянуть сегодня.