Первый коммит в новый движок и демка

Категория: Дневник разработки | Скилл: SkyXEngine | Дата: 13.05.2020
40 день работы над проектом движка SkyXEngine, произошло много событий. Но звука в движке нет до сих пор. Причин на то много, начиная от необходимости с самого низа сделать все по уму, и заканчивая тем, что мы готовим классную демку.

С момента последней записи дневника разработки, я принялся за внедрение звуковой системы непосредственно в движок. Клонировал репозиторий, посмотрел код ... на первый взгляд это просто куча классов (и считать так много причин, катастрофически мало комментариев, стандарт нарушен, физическая и логическая структура проекта пока хромает), но вдаваясь в подробности, исследуя его работу и замысел, стало ясно что это целая система, которую можно расширять во многих направлениях. При этом, система построена абстрагированно от низкоуровневых подробностей конкретного направления, иными словами - не привязана к чему либо. Это огромный шаг вперед с заделом на перспективу, потому что это позволит внедрять/заменять модули без необходимости пересматривать другие компоненты. Именно этого не хватало прошлой версии. Архитектор молодец!

Все это хорошо, но пока выяснял как работать с движком в новых условиях, пришлось изрядно понервничать. Документации естественно еще нет, а ведущий программист обьясняет скалярно в C-style, если ты не в теме, то unresolved external, но есть позитивные изменения :)

Пройдя первые этапы знакомства с новым видом движка, я внес первый коммит (поломав кодировку нескольких файлов), обновив common, добавил в ядро первые интерфейсы звуковой системы (там же эмиттер и плеер) и аудиокодека. По ходу дела пришлось вникнуть и решить задачу по git (+ к скиллу).

Сейчас дорабатываю низкоуровневую библиотеку работы с аудио (MitAL - MIT Audio Library) (при помощи еще более низкоуровневой библиотеки RtAudio), которая лежит в основе звуковой системы движка. Эту библиотеку мы планируем выложить под MIT, сделать этот мир хоть немного лучше, потому что если бы мы нашли свободную (и от копилефта тоже) низкоуровневую кроссплатформенную библиотеку для работы с аудио, то работа со звуком не затянулась бы на столько. Микширование, ресемплинг, блокировка, инстансинг и другие низкоуровневые операции аудио заняли больше половины времени разработки. Пусть наша библиотека экономит время и нервы другим :)

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

Там самая плитка из 1472 билда

Изначально мы раковыряли 1469 билд, импортировали все карты, но не нашли там той что нужно, хотя почти все источники интернета говорили что этот билд содержит то что мы искали. В общем-то так оно и было, но поверхности из плитки там не было, а нам нужна была именно плитка. Проверив все мы убедились что там нет искомого, и отправиилсь дальше - разобрали билд 1472 и нашли то что нужно, выдернули модели (да, уже есть плагин экспорта object моделей в наш движок) и текстуры и начали неспеша обустраивать уровень.

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

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

Вариант нашего рендера из 121 билда (сначала здесь был не очень красивый скрин, но потом поправили освещение и стало лучше)

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

Проекты
SkyXEngine, PHP-API, S4G
Категории
В разработке :)
Популярное
В разработке :)