Пусть лежит пока :) когда будут новости я отпишусь. Пока что можно следить за гитхабом и сокрушаться, что не тем я занят, ой не тем...
Недавно теме проекта стукнул ещё один год. В 2020 году удалось достичь нескольких хороших вещей. Например, были полностью реализованы загрузчики всех форматов игры на языке программирования Rust. При этом, в отличие от C++ в этот раз это были более эффективные загрузчики, написанные вручную, а не сгенерированные из спецификаций kaitai. Хотя спецификации в очередной раз оказали добрую службу, можно было читать их как карту и переносить в свой загрузчик в виде кода. Так же был переписан на Rust загрузчик файла data.bin, который до этого у меня был реализован только на C#. Помимо успехов из категории чисто портирования, был достигнут так же успех на фронте поддержки различных мультимедиа. Так, я реализовал в движке загрузку и проигрывание музыки и звуков из аллодов, а так же видеороликов в формате Smacker.
На этом достижения заканчиваются. Если на C++ у меня по факту уже был рендер солидной части уровня, на расте я пока могу ограничиться только стадией с рендером главного меню. Тут стоит уточнить одну вещь. На C++ я хотел сделать полностью софтварный рендеринг, у меня это получилось, но ценой неприятных оптимизаций вроде необходимости следить, какие тайлы обновились в кадре, и перерисовки только этих тайлов. Необходимость повторять эти костыли давила на меня, а потом я заболел коронавирусом. Как можно догадаться, от короновируса я не умер, но перерыв на болезнь только усугубил моё нежелание пилить софтварный рендеринг. Вместо этого я занялся основательным бритьём яков, и стал делать плагин для Intellij IDEA, для Rusty Object Notation, или просто RON файлов. Этот формат я планирую использовать в данном проекте, так же им пользуется много игровых разработчиков на языке Rust. Так что, вроде бы, я даже не потратил время впустую. Кстати, вот мой плагин, если кому-то интересно.
Так вот. Раз намотался ещё один год и депрессия немного отпускает, в ближайшее время я снова вернусь к проекту. Но вместо софтварного рендеринга буду делать рендеринг через
OpenGL. Террейн будет отрисовываться полностью хардварно, текстуры объектов будут динамически стримиться в атлас на основе того, что видно в данный момент на экране. Кажется, что я буду делать работу заново, но на самом деле мотивации продолжать разработку от этого получится больше, и проект уйдёт ещё немного дальше. Помимо рендеринга, в этот раз я сразу постараюсь продумать архитектуру неткода, и реализовать её на практике. Внимательный читатель вспомнит, что я не хотел делать сетевую часть аллодов. Спешу вас успокоить, сетевую часть я всё ещё не планирую делать, а неткод мне нужен потому, что я запланировал добавить возможность проходить сингл в кооперативе, где каждый из игроков имеет возможность взять под контроль часть отряда. Работать это будет в виде возможности расшарить активную игровую сессию в режиме сервера, при этом боевой товарищ может подсоединиться к ней через специальное игровое меню, доступное по нажатию на кнопку сетевой игры. Собственно поэтому я заранее закладываю разбиение боевого кода на серверный и клиентский. Просто игрок-хост не будет ходить к серверу через сокет, а игрок-товарищ будет.
ух ты и даже не понабежали, похоже жизнь налаживается, с выздоровлением!
Спасибо за добрые слова! :)
Небольшие новости: дописал загрузчики форматов картинок, начал работу над запеканием спрайтов в атласы. На данный момент добился того, что смог упаковать все спрайты задействованные в боевом режиме в один атлас 4096x4096. Вкупе с уже давно изобретённым способом упаковывать все тайлы террейна в атлас 1024x1024, это приводит нас к тому, что игровую карту будет возможно отрисовать за несколько вызовов отрисовки, без необходимости группировать спрайты в отдельные батчи.
В ближайшее время собираюсь сделать example в виде программы, которой на вход можно было бы подать номер миссии, и на выходе иметь окошко с отрисованной картой, примерно в тех же объёмах в каких она отрисовывалась в версии для C++. Когда данная программа-минимум будет готова, займусь доработкой примера до отображения юнитов и мешочков на карте, параллельно начну делать примеры поменьше, на которых постараюсь обкатать контроллеры анимаций для юнитов, контрллеры анимаций для заклинаний, и некоторые обобщённые механизмы для рисования UI в игре
Реализовал простейшую вариацию Wave Function Collapse, потестил на кошках аллодах.

Madware
> Просто игрок-хост не будет ходить к серверу через сокет, а игрок-товарищ будет.
Могу посоветовать так не делать, а сделать обоих через сокет - меньше кода писать и поддерживать
Mephistopheles
Так как это мой личный пет проект, я хочу совершать в нём побольше глупых ошибок. Чтобы нужно было побольше переписывать. Понимаю, звучит эгоистично, но личный опыт хождения по граблям даст более глубокое понимание, почему так нельзя было делать. Вспоминается сразу аналогия на вершину айсберга и дьявола в деталях. Так вот, раз уж у меня есть возможность тратить на проект неограниченное количество времени, я хочу получать побольше знаний о подводной части айсберга и деталях, так сказать, из первых рук.
Поэтому, спасибо, конечно, за советы, но я не буду им следовать. Чисто исходя из позиции, озвученной выше.

Да простят меня аллоды, но я переключился временно на конкурс 2D платформеров.
Куски кода для рендера тем не менее собираюсь в итоге переиспользовать в аллодах.
Так что это почти не измена :)
Проекту стукнуло четыре года. Надо что-то делать с этим. Какую-то самодисциплину устроить чтоли.
Предлагайте ваши варианты волшебных пендалей которые можно себе отвешивать чтобы летающие острова аллоды наконец начали бороздить просторы астрала
Madware
> Предлагайте ваши варианты волшебных пендалей
Перед лечением надо поставить диагноз, иначе от чего лечить-то?
Каковы причины? Проведи анализ, может пендели и не понадобятся :)
советов не дам, у каждого свое... пендаль он и в африке пендаль = принуждение, ищи ответ в себе, зачем оно тебе
Madware
> Какую-то самодисциплину устроить чтоли.
Как мне кажется основная проблема была в том что ты начал менять движки.
А я говорил(с)
Madware
> Предлагайте ваши варианты волшебных пендалей которые можно себе отвешивать
> чтобы летающие острова аллоды наконец начали бороздить просторы астрала
А если по делу... Найди единомышленника совместная(не командная) работа хорошо мотивирует
Если конечно хочется завершить проект, а не
Madware
> я хочу совершать в нём побольше глупых ошибок. Чтобы нужно было побольше
> переписывать.
Почитал Эльмиго и в принципе думаю я знаю в чём причина.
Мотивации на вторую "работу" (а серьёзный проект это именно работа) не может быть если она не приносит какой-то ощутимой прибыли.
Можно поробовать подстегнуть себя каким-нибудь краудфандингом типа патреона, чтобы было ощущение отдачи от того что я делаю. Но как показывает практика, типичный патреон выглядит так -- "Вася зарабатывает уже целых семь долларов в месяц"
Либо оставить всё как есть и делать что-то по проекту набегами два раза в год, но тогда позиционировать проект как полноценный опенсорсный ремейк аллодов нет никакого смысла.