Relict Engine: У нас было два пакетика травы
Как и обещал, т.к. NauEngine мне, мягко говоря, не понравился (пока!), то начинаю новую серию постов о разработке собственного движка Relict Engine для проекта Cold Fusion, о котором можно немножко почитать в соседней серии "Вся наша жизнь спираль".
Пост вводный, поэтому технической информации практически не будет.
Итак, откуда же взялся Relict Engine?
Его история начинается в конце двухтысячных годов, когда еще во всю кипела работа над ремейком игры Elite3: Frontier First Encounters и переносом ее на DirectX9. Тот проект носил название FFED3D, и хотя проект добрался только до версии бета 12 (сначала наша группа по ряду причин забросила проект, а год назад, увы, умер разработчик, который его поддерживал до последнего времени), идеи, которые мы хотели в него внедрить до сих пор живы. Сам проект изначально строился на оригинальной кодовой базе (ассемблер, разобранный ребятами из JongWare + наш код, который собственно заменял оригинальные вызовы на современные), но в какой-то момент пришло понимание, что оригинальный игровой код дальше использовать нельзя, и нужно писать что-то свое. Так, Relict Engine (тогда под другим названием) и появился.
Сейчас, конечно, его реализация и подходы, которые я тогда использовал смотрятся, мягко говоря, убого. Однако, идейную его составляющую я планирую перенести в его современную версию.
Итак, "у нас было два пакетика травы"...
Конечно, писать полностью движок с нуля это очень круто, но в тоже время крайне не благодарное, да и по большей части, не нужное занятие. Поэтому, мы поступим немножко иначе.
План примерно такой:
1) Написать основной framework для нашего движка. Это полностью наша разработка, которая не требует никаких внешних библиотек, но то, что было написано в те далекие времена требует глобальной переработки (читай все удалить и написать заново)
2) Не тратить время на полноценный редактор - он не нужен. Гораздо лучше и проще написать ряд утилит (преимущественно консольных), которые будут выполнять одну задачу.
3) По максимуму задействовать библиотеки с открытым кодом для тех или иных задач.
На данный момент список такой:
- SDL - для работы с окнами
- Botan (если найду что-нить получше, переключусь туда) - криптография, цифровые подписи, итд
- asio - сокеты и все что связано с сетью
- Fmod - звуки, и все что связано со звуковыми эффектами
- Bullet - физика - возможно будет заменен на другой.
- Lua - скрипты и простая логика отдельных элементов
- glm - как библиотека для быстроматематики
- assimp - как библиотека для перегонки мешей в наш собственный формат (RAT - Rellict AsseT)
- ??? - тоже самое для работы с текстурами (пока не определился)
+ тонна служебных библиотек, которые и так были бы включены в проект (всякие zlib итд)
4) В качестве графики использовать OpenGl последней версии (чтобы можно было быстро написать хоть какой-то рендер), но в дальнейшем переключится на Vulkan
Работы очень много. Основная проблема легаси версии движка в том, что он не поддерживает 64битные системы (это исправим), мультипоточность (а вот с этим намучаемся) и сеть (тоже намучаемся). Все уже готовые элементы движка по сути придется выкинуть и написать заново. Сколько это все займет времени (с учетом моей основной работы, и как шла работа над проектом уже на готовом движке), я даже не представляю. Но, похоже, деваться особо некуда. Готовые движки не дают достаточного места для маневра, а писать костыли мне надоело.
И да, сразу отвечу на вопрос: Скорее всего Relict Engine не будет доступен публично для собственных проектов. Все-таки я собираюсь точить его под одну единственную конкретную задачу. Но посмотрим, что из этого получится, если получится вообще. А может быть и Nau Engine быстро отполируют (сомневаюсь, но надежда умирает последней) и можно будет использовать его (при условии, что они не решат идти путем Unreal с прибитыми гвоздями и со ависимыми друг от друга фичами кода ядра).
Лига Разработчиков Видеоигр
9.9K поста23.4K подписчика
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"