LINUX.ORG.RU

Разработка трёхмерного игрового движка

 , , , ,


1

2

Уже долгое время пишу игровой движок общего назначения (т.е. не исключительно для какого-то одного жанра). Естественно, под GPL. Естественно, онтопик – гражданин перого класса. Использую инфраструктуру Qt. Сейчас проект состоит из:

  • Библиотеки libKawaii3D, предоставляющей классы для построения одной или нескольких трёхмерных сцен.

  • Библиотеки, облегчающей создание различных Renderer плагинов libKawaiiRenderer.

  • Renderer плагина libMisakaRenderer. Использует OpenGL 4.5 Core + ARB_bindless_texture.

  • Renderer плагина libKurisuRenderer. Использует Vulkan, Glslang и SPIRV-tools.

  • Плагина загрузчика ассетов libKawaiiAssimp. Загружает модели, меши и сцены из файловой системы, используя библиотеку libAssimp. Примеры передаваемых строк: "models/preCombinedCastle.fbx", "file:///usr/share/somegame/character.dae", "/home/user/models/helicopter.obj".

  • Плагина загрузчика ассетов libKawaiiFigures3D. Загружает некоторые простые меши – куб, сферу, тетраэдр, октаэдр, икосаэдр, тор, квадрат и плоскость. Примеры передаваемых строк: ":/cube_x5", ":/octahedron_x0.33", ":/torus".

  • Библиотеки libKawaiiWorlds. Игровой движок. Отвечает за загрузку и хранение ассетов, физику, переходы между локациями, сетевой мультиплеер, воспроизведение музыки и звуков, обработку пользовательского ввода, ландшафты с картами высот и вот это вот всё.

  • Библиотеки libKawaiiWorlds_qml. Поддержка QML и JavaScript для libKawaiiWorlds. Предоставляет классы обёртки над классами и структурами движка.

  • Приложения KawaiiWorldsViewer. Загружает игры, читая специальный json файл. Таким образом избавляет большинство игр от необходимости иметь собственный бинарный исполняемый файл и обеспечивает независимость от ОС и, до определённого предела, архитектуры CPU. Предполагается, что такие игры-миры будут использовать JSON файл для указания используемых моделей, текстур, шейдеров, материалов и прочего; JavaScript для игровой логики и QML для разметки GUI.

Повесточка:

  • Пишу игру – пошаговую мультиплеерную стратегию. Цель сделать так, чтобы у соперника не осталось городов (либо штурмануть, либо уйти в глухую оборону и ждать пока монстры спушат супостата по самые уши). Осаду городов планирую сделать в стиле TowerDefence, драку между юнитами – исключительно на глобальной карте. В целом имеется достаточно подробная задумка и лимитированный скоуп. Слишком сильно распространяться сейчас не хочу – пока не доделаю играбельный прототип.

  • Как придумать название игре? Может ли ЛОР помочь с этим? :)

  • День после. С достаточно большой уверенностью, могу сказать, что до играбельного прототипа я дотолкаю игру довольно скоро. А что дальше? Работает ли краудфандинг для движков / игр? Если да, то что на него нужно предоставить? На каких площадках? Если нет, то как найти патронов / инвесторов? Понятно, что в этой стране геймдев мёртв и посыпан токсичной радиоактивной пылью мобилькерами, так что искать нужно среди интернационалов. Интересны ли энтузиасты, например Valve, или они только место в Стиме продадут? Кому бывают интересны?

  • Было бы классно обрасти командой единомышленников – художников, композиторов, левел дизайнеров, программистов, девопсов и прочих. Сейчас тащу в одно, в меру отъетое, лицо :D

  • Средства для локализации / интернационализации игр-миров на уровне движка – нужно ли и в каком виде?

  • Позиционный звук – что для него вообще использовать? /*в игре юзаю QML-ский AudioEngine, но понятно, что это "ну такое"*/ Первым в голову приходит OpenAL, но он в последних версиях спроприетарился и скурвился. Использовать старые версии? Или есть современные решения?

  • Поддержка языков кроме C++ и JavaScript – на сколько нужно? Сейчас поддерживается C++, так как сам движок написан на нём, так что достаточно было не превращать его в монолитное монструозное. А JavaScript, так как Qt имеет всю необходимую инфраструктуру для этого, ну и сам язык довольно простой, да. Пока склоняюсь к тому, не особо приоритет, а всякие пайтоны, lua и прочие расты могут подождать.

  • Сейчас есть PKGBUID-ы под этот наш Арч и они хороши. Но что бы придумать с поддержкой других десктопных дистров? Есть скрипты и даже CMakeLists.txt, чтобы скачать все модули движка в уютный хомячок и там же собрать. Нужно ли подобное? Стоит ли их поддерживать / обновлять и т.д. или лучше сделать разбиение на пакеты также как для Арча, с использованием, например CPack?

Скриншотики: https://imgur.com/a/zhHhcnw

Исходники: https://gitlab.com/KawaiiGraphics

★★★★★
Ответ на: комментарий от anonymous

Дай игре сейчас любое назавание техническое, а так придумывай другое чёб звучало и всё такое, а как уже гдето игру версии 0,00000000000000000000000000001 опубликуешь там уже и название явно укоренишь за своим проектом.

Ок. Так и сделаю, thanks.

robus ★★★★★
() автор топика
Ответ на: комментарий от slackwarrior

Это всё ещё походит, и на описание скинчиков, и на описание мерча, и на описание артов..

robus ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.