Несколько слов о моем игровом движке - Force Tech

Всем привет! Разрабатываю собственный игровой движок #ForceTech на базе ресурсов таких игр как Thief 1 / 2 и System Shock 2. В прошлый раз вопрос нехватки информации о моем проекте встал весьма остро. Поэтому в этой статье я постараюсь изложить ответы на наиболее часто задаваемые вопросы.

Все скриншоты миссий сделаны на Force Tech.

Thief 2 FM - A Midsummer Night's Heist
Thief 2 FM - A Midsummer Night's Heist

Что такое Force Tech?

Force Tech — это игровой движок для собственных проектов, написанный с нуля на C++ с поддержкой OpenGL 3. У него очень низкие требования к железу и ПО, работает он даже на Windows XP с GeForce 8800 GT :).Технически рассчитан на стриминг данных и способен адаптироваться к любой конфигурации компьютера. При этом будет поддерживать большую часть современных эффектов, таких как динамические мягкие тени, PBR, GI и т.п. Одним из девизов разработки является "современные возможности на старом железе", без фанатизма, конечно :).

Создается он с поддержкой "из коробки" ресурсов (уровней, моделей, текстур, звуков и т.п.) игр Dark Engine (Thief 1 / 2, System Shock 2), поэтому, к моменту завершения работы, есть высокая вероятность получить альтернативный движок, предоставляющий этим играм новые возможности для модификации и расширения. Work in progress.

Зачем нужен собственный движок, когда есть куча бесплатных, прекрасно задокументированных, и более функциональных, чем твой?

Немного истории. Я пошел по пути создания собственного движка, когда лицензия на Unreal Engine 3 стоила $800 000. В те времена у простых смертных ещё не существовало возможности взять готовый навороченный 3D-движок и сделать на нём собственную коммерческую игру. Это сейчас у людей скорее возникает вопрос какой из движков выбрать. А тогда на чужом движке можно было выпустить лишь бесплатную модификацию... Когда же наступила новая "эра бесплатных крутых движков", разумеется, я задумывался, а не бросить ли мне все свои наработки и переключиться на что-то мейнстримное? Выделил для себя две основные причины, почему не хочу этого делать:

1. Мне всегда было интересно погрузиться в технологию, сделать что-то самому, разобраться как устроена игра изнутри. Как рисовать реалистичные тени? Как заставить ИИ вести себя реалистично? А физика? А скелетная анимация?.. Хотелось спроектировать и построить "собственный велосипед". Да, он никогда не будет таким же функциональным как профессиональные движки. Зато свой! Я буду знать в нём каждую мелочь и смогу изменить всё что угодно и как угодно. Да, мне не потянуть разработку AAA игры в одиночку, но я точно смогу покрыть им все свои инди-запросы. Как говорится, "а если не видно разницы, зачем платить больше"? Иными словами, зачем использовать трактор для того чтобы подняться по лестнице? Ну, и когда сам работаешь напрямую с железом, понимаешь где находятся узкие места движка и собственных алгоритмов, а где - узкие места той или иной технологии.

2. Сейчас ОГРОМНОЕ количество разработчиков делают и выпускают свои игры. Для обычных пользователей моя игра ничем не будет отличаться от тысяч других. Но моё личное отношение к ней будет отличаться: если она сделана на собственном движке, я почувствую что смог реализовать свой потенциал (при этом успех самой игры тут совершенно не важен), а если на чужом — внутри останется сожаление, что не попробовал сделать игру на своём.

Thief 2 - Masks
Thief 2 - Masks

Кому будет нужен твой движок?

Как минимум, Force Tech может быть интересен тем авторам, которые ранее уже работали с редактором миссий Thief — DromEd, и уже умеют создавать миссии в знакомом окружении. Они вполне смогут монетизировать свои труды, выпустив их как самостоятельные проекты в Steam, при условии использования собственных уникальных ресурсов.

Как максимум — тем энтузиастам, которых впечатлят его возможности, гибкость, минимализм и системные требования, и которые будут готовы ради этого мириться с некоторыми неудобствами импорта ресурсов из популярных редакторов ;).

Поскольку я выбрал очень специфический способ разработки, с поддержкой ресурсов Thief, то на выходе получится альтернативный движок для этой игры, что может заинтересовать моддеров этого сообщества. Кроме того, появится альтернатива такому проекту как The Dark Mod, но с поддержкой редактора от оригинальной игры — DromEd. Подробнее об этом написано в блоке "Какова конечная цель проекта?"

А так, конечно, я делаю Force Tech для себя и своих проектов. У меня нет цели тягаться с титанами индустрии в попытке создать им замену.

Зачем вместо того, чтобы делать игру, ты делаешь движок?

Пока что я разрабатываю свою потенциальную игру только "на бумаге". В настоящий момент ещё нахожусь в поисках идеи, которая бы цепляла меня и, при этом, была подъемной для первого проекта. И пока я "пассивно жду" когда эта идея придет - потихоньку пилю свой движок. Надеюсь, она объявится раньше, чем я начну делать очередной "никому не нужный командный выживач хоррор-рояль на ассетах из стора". Шучу. ;)

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

Thief 2 FM - A Midsummer Night's Heist
Thief 2 FM - A Midsummer Night's Heist

Какова конечная цель проекта?

Поскольку мне нужен комплексный движок, готовый к созданию иммерсивных симуляторов, Force Tech разрабатывается таким образом, чтобы уметь подменить собой другой движок — Dark Engine, на котором вышли игры Thief, System Shock 2 и Thief 2. Возможно, вы слышали про OpenMW, самостоятельный открытый движок для TES 3: Morrowind. Вот, я планирую примерно такую же штуку, но упор делаю не на создание полноценного ремейка Thief, а на создание движка для собственных проектов. Для Thief, в результате, получится скорее "игра по мотивам", использующая те же или похожие механики. Из ближайших аналогий в голову приходит Brutal Doom в сравнении с оригинальным Doom.

Как итог, под конец разработки Force Tech получится очень интересный "выхлоп": та самая "игра по мотивам Thief", совместимая со всеми уже существующими миссиями, объектами, текстурами и прочими ресурсами... Таким образом, уже сейчас можно использовать редактор миссий Thief — DromEd, для создания миссий для Force Tech. Но пока используются оригинальные ресурсы Thief, такая игра не может быть коммерческой, следовательно она будет бесплатной и доступной для всех.

Для полноценной же коммерческой игры придется создать собственные ресурсы: модели, текстуры, звуки и т.п. К примеру, в The Dark Mod все ресурсы сделаны самостоятельно, но авторы миссий для него всё равно не могут продавать их в Steam, как отдельные приключенческие игры, поскольку используемый в этом моде движок от Doom 3 имеет несвободную лицензию. При использовании Force Tech авторы FM для Thief смогут выпускать свои проекты в Steam, если заменят оригинальные ресурсы Thief своими аналогами.

Это движок, заточенный под определенные проекты, типа стелс?

И да и нет. Вспомним тот же System Shock 2, который был сделан на движке стелс-игры Thief. В обеих играх есть уклон в более скрытный геймплей, но это вовсе не является обязательным. Суть любого движка в том, чтобы предоставить разработчику функционал, который позволит сделать проект в любом жанре. Будь то шутер, симулятор ходьбы, головоломка... Поэтому пока что идет работа над внедрением базового функционала, свойственного для любой 3D-игры — это перемещение по уровню, взаимодействие с предметами (брать, бросать, класть), открывание дверей, переключение рычагов и т.п. Кстати, многое из этого уже готово.

Чем Force Tech отличается от остальных?

Этот раздел некоторые тоже могут счесть таким же спорным, как и саму идею создания собственного движка. Дело в том, что технологический стек выбран с ориентиром на старое железо, движок работает на OpenGL 3 (это уровень DirectX 10). Это значит, что проекты, созданные на Force Tech, смогут запускаться на железе уровня GeForce 8800 GT и новее. Как писал выше, для инди игры, как мне кажется, такого уровня графики будет более чем достаточно. Да, тут не 10 миллиардов полигонов в кадре, но если требуется именно это, есть другие движки, на острие технологий, и лучше использовать их. Я всё-таки придерживаюсь мысли, что инди — это больше про интересные, смелые идеи в играх, а не про графику. Инди — это разумный минимализм, самоограничение, компромиссы. Плюс, у меня есть убеждение, что фотореалистичная графика вредит погружению. В этом вопросе нужен баланс.

Одним из моих интересов является реализация на этом весьма устаревшем стеке многих современных решений, таких как PBR, Soft Shadows, Global Illumination. Из этой тройки пока успешно реализованы только реалистичные динамические мягкие тени от каждого источника света, просто потому что в играх Thief они наиболее востребованы. Реализация PBR упирается в необходимость создания карт микроотражений для всех (или хотя бы большинства) существующих в игре текстур, поэтому временно отложена (без соответствующих текстурных карт её не увидеть, как и уже реализованные в движке Normal Mapping и Parallax Occlusion Mapping). А глобальное освещение - настолько ресурсоемкая и сложная технология, что её реализация отложена пока на один из последних этапов разработки.

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

Normal mapping test
Normal mapping test

Почему такой устаревший стек?

Да просто потому что на современном уже и так полно бесплатных открытых движков! Позвольте здесь не приводить их список ;), их действительно много. А вот на таком относительно "старом" стеке, с поддержкой OpenGL 3 — совсем мало. Поэтому и тут я смогу занять определенную нишу.

В своё время, когда у меня была довольно мощная GeForce GTX 285, поддерживающая максимум DX10, и стали выходить игры, требующие для ЗАПУСКА DX11, я чувствовал себя обманутым. Моя карточка спокойно бы их потянула, но разрабам тех игр было лень делать поддержку "устаревшей" технологии и они просто забили. Поэтому, можно считать это своеобразным моим "пунктиком".

Какие популярные технологии уже реализованы в движке?

Вот не полный список основных: Deferred Shading & Lighting, Realtime Soft Shadows, Gamma Corrected Lighting, Hardware Occlusion Culling, Screen Space Ambient Occlusion, Normal Mapping, Parallax Occlusion Mapping, Distance Field Font Rendering, Skeletal Animation, Geometry Streaming, Audio Streaming, Universal Multithreading, Bullet Physics Engine, WAV uncompressed & ADPCM playback, Resource & Shader Managers, Transparent ZIP Decompression, UTF-8 Support, Interface Templating Engine...

Lighting + shadows + SSAO
Lighting + shadows + SSAO

Почему не open source?

В будущем планируется сделать открытой, как минимум, прикладную часть движка (как в Unity). А вообще, в open source хотелось бы выложить что-то более-менее целостное. Хотя бы некий "минимальный функциональный срез", где все реализованные возможности были бы соединены вместе. Сейчас пока даже такая версия ещё не готова. Ко всему прочему, я уже давно затеял грандиозный рефакторинг с внедрением архитектуры ECS, а это значит, от нынешней архитектуры практически ничего не останется. Но я с большим энтузиазмом смотрю на эту затею ;).

Если вы всерьез проявите интерес к разработке на Force Tech, уверен, мы сможем договориться и вы можете рассчитывать на поддержку, помощь и доступ к исходному коду ;). Но в любом случае, прикладной код чтения ресурсов Dark Engine будет в открытом доступе и любой желающий сможет распорядиться им по своему усмотрению, хоть перенести в Nanite и Lumen, чтобы сделать Thief или System Shock 2 "RTX On".

Планируется ли поддержка лучей рейтрейсинга, вулкан?

Не уверен, что это нужно, поскольку мой основной ориентир на бюджетный аппаратный сегмент. С лучами и без Force Tech движков полно. Я хотел бы добиться максимально красивой картинки без использования тяжеловесных технологий. Мне не приплачивает nvidia за интеграцию, поэтому уже сейчас люди, глядя на тени в Force Tech, называют их лучами. :) Да, они "не настоящие", но, как говорил выше, "если не видно разницы, зачем платить больше?" ;). В любом случае, это вопрос очень отдаленной перспективы и сейчас однозначно на него ответить сложно. Время покажет.

Какие библиотеки используются в движке?

Помимо упомянутого графического АПИ OpenGL 3.2, в Force Tech используются следующие ключевые библиотеки (в алфавитном порядке):

Bullet Physics Library — расчеты физики;
GLAD — обвязка функций и расширений OpenGL;
GLFW — кроссплатформенная обвязка интерфейса ОС, графической библиотеки и пользовательского ввода;
GLM — математическая библиотека,
libzip — работа с zip-архивами,
OpenAL — воспроизведение звуков,
pugixml — xml-парсер, на XML в движке описываются пользовательские интерфейсы,
stb — работа с изображениями,
UTF8-CPP — поддержка UTF-8.

Какой будет использоваться редактор уровней, ресурсов, ассетов?

Вопрос с редактором сложный и открытый. Сейчас поддерживается формат миссий Dark Engine, но оригинальный редактор для него весьма недружественен и сложен в освоении. Надо сказать, для Dark Engine сейчас небольшая группа энтузиастов неспешно делает собственный редактор — FMEditor, но, к сожалению, его будущее сейчас весьма туманно по политическим соображениям. Так что, поживём — увидим. А вообще, в будущем я планирую внедрить импорт популярных форматов моделей. Разработка собственной игры покажет, какие форматы удобнее использовать. Загрузка текстур в Force Tech уже сейчас поддерживается очень широким спектром форматов: DDS (DXT*), PNG, TGA, PCX, GIF, JPG, BMP.

Как часто будут публиковаться версии движка?

С 2017 года Force Tech развивается в рамках программы просмотра ресурсов: Dark Engine Viewer. На данный момент насчитывается пять публичных релизов. Последний состоялся почти два года назад - в сентябре 2021 года. За это время было сделано очень многое. Новая версия готовится к выпуску и будет опубликована уже очень скоро. В будущем, конечно, хотелось бы сократить время между релизами (раньше оно было меньше), но в этот раз нововведений оказалось слишком много!

Thief 2 FM - Alterna Crystallis
Thief 2 FM - Alterna Crystallis

Почему движок называется Force Tech?

Изначально движок назывался Force Engine. Это название придумал мой друг, просто подставив мой ник в название - Force. А я подумал, а почему нет? Но позже выяснилось, что уже существует движок с названием The Force Engine, посвященный играм вселенной Star Wars. Поэтому я решил идти до конца по пути вдохновения работами одной известной компании ;), и переименовал проект в Force Tech.

Будет ли поддержка Linux?

Изначально движок писался именно в Linux c оглядкой на совместимость с Windows. Со временем, моя основная среда разработки сменилась на Windows и удобнее стало продолжать работу уже там. Плюс, основная аудитория пользователей в подавляющем большинстве использует Windows, а спроса на Linux-версии не было, поэтому они перестали публиковаться. Но, надо сказать, Windows-версии движка прекрасно работали в Linux под wine, поэтому возможность ими пользоваться там всё же есть. В случае возникновения обоснованных запросов именно на Linux-версию, работы по её поддержке будут возобновлены. Либо же, Linux-версия будет выпущена после релиза полнофункциональной версии движка.

Ух, получился очень внушительный FAQ. Наверняка, ещё ряд вопросов остался не освещенным, поэтому пишите в комментариях, что ещё следует добавить, и я дополню эту статью. Спасибо за интерес к Force Tech!

Подписывайтесь, чтобы не пропускать новости проекта!

139139
94 комментария

Ты делаешь крутое и полезное дело!! Успехов тебе и терпения!

23

Спасибо! 👍

5

Комментарий недоступен

6

Тоже сложилось такое впечатление. Текст было крайне неприятно читать из-за пассивной агрессии.

4

Слишком много агрессии в сторону выдуманных людей, которые ничего не могут и завидуют тебе. Твои примеры на подобии глупо писать от руки, раз есть комп и клавиатура и т.п. вообще выпадают из логики. Да все это делать глупо, так как есть удобные способы, и занимаются этим, только чтобы удовлетворить какие-то своим потребности и самореализоваться. Возвращаясь к самому посту, складывается ощущение, словно ты пытаешься себе доказать, что ты не занимаешься бесполезной тратой времени, хотя похоже сам в это не веришь. Я когда диплом писал, так не оправдывал себя, как ты тут. Запомни ты делаешь это для себя в первую очередь, не надо говорить про зависть и подобное.

5

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

2

Сейчас ОГРОМНОЕ количество разработчиков делают и выпускают свои игры, а чем моя будет отличаться от тысяч других в глазах обычных пользователей? Да ничем! И чувство сожаления о собственном нереализованном потенциале всегда накрывает меня в этом месте.

А как это вообще связано? Игроку плевать на каком движке ты делаешь игру. Как это вообще будет отличать твою игру от других? Её может отличать оригинальность, увлекательный геймплей, интересные механики, крутая история, повествование но никак не движек на котором она сделана. Тебе будет как-то легче от того, что ты выпустишь очередной мусор в стим, НО ЗА ТО ЭТОТ МУСОР БУДЕТ СДЕЛАН НА СОБСТВЕННОМ ДВИЖКЕ.

Отдельно зацепил кусоек про команду - т.е ты всерьез задумался найти людей которые будут сидеть и изучать твой движок для разработки игры, чтоб после получить абсолютно бесполезный опыт в индустрии?

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

4