Войти
Уголок творчестваСтатьиrigidLight Engine

Разработка LifeGen Engine

Автор:

О движке LifeGen Engine.

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

Язык: С\С++
Целевая платформа: Windows PC, XBoX 360, PS3

Физика: nVidia PhysX, хотя возможно внедрение собственного велосипеда
Звук: модифицированная библиотека Audiere
Окошки: wxWidgets
Скриптинг: AngelScript
Сеть: WinSock, протокол TCP\IP
Графика: пока что, DirectX 9, и DirectX 10. DirectX 11 только при получении соответствующей аппаратной поддержки, ибо смысл писать то, что будет невозможно увидеть?

Жанровая направленность: универсальная

Структура:

  • Жирный модуль ядра, инициализирующий кучу библиотек, и содержащий в себе море оберточного кода
  • Несколько модулей рендера, инициализирующих соответствующие графические API
  • Несколько модулей физики
  • Модули-обертки

  • Модуль, являющийся оберткой над wxWidgets
  • Модуль-обертка над WinSock
  • Модуль-обертка над Audiere
  • Модуль-обертка над AngelScript
  • Приложения

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

    О лаунчере игры:
    При запуске, он обращается к конфигурационным файлам, и читает оттуда путь, по которому, должен искать игровой контент. Если такого конфигурационного файла нет, лаунчер сам создает его, и, по умолчанию, ставит путь к контенту - каталог Res в собственной папке. Если такого каталога нет, при следующем запуске, этот каталог будет создан самим лаунчером, согласно имени каталога, указанного в конфигурационном файле. Его цель - найти логику, и запустить ее, что, в некоторой степени, соответствует концепции Data-Driven игровых движков.

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

  • Игровой логики. Писать скрипты бывает скучно, и утомительно, а если время сильно поджимает, или просто хочется сделать работу побыстрее, то текстовое отображение скриптов не всегда бывает идеальным. Редактор игровой логики подразумевает два способа вывода скриптов - в графическом виде, и в виде исходного текста, что может позволить сделать разработку проще, и быстрее.
  • Моделей (в достаточно узком виде - добавить скелетную\вершинную анимацию, назначить материал, LOD, логику, и пр.)
  • Материалов. Предполагается внедрить массивы материалов, и более сложные техники, которые позволят, допустим, в стратегической игре, двадцати юнитам в одном строю, выглядеть уникальными. Все это можно сделать в редакторе материалов. Как повелось нынче, редактор материалов располагает графическим отображением создаваемого материала.
  • Физических объектов. По аналогии с редактором PhAT в UE3, этот редактор позволяет сделать объекты подверженными физическому воздействию. Для моделей, использующих скелетную анимацию, подключается PhysX, или подобный велосипед; для моделей, использующих вершинную анимацию - соответствующий велосипед.
  • Физических материалов. Устроен аналогично, в сравнении, с редактором игровой логики, однако, с учетом своей специфики.
  • Химических воздействий. Настроен на самые простые вещи, такие, как окисление, горение, восстановление. Результаты работы могут быть применены в редакторе физических материалов. Может быть полезно, например, при создании кислот, если не хочется на уровне ставить лишний триггер.
  • Систем частиц.
  • Постпроцесс-эффектов.
  • Искусственного интеллекта. Чтобы, фигурально выражаясь, отделить котлеты от мух, основная логика создается через редактор игровой логики, включая классы персонажей. В редакторе ИИ реализуется поведение. Это может быть удобно, например, при работе над масштабной игрой, когда ИИ может занять огромную часть исходного кода игры.
  • Геометрических эффектов (DX11). Подразумевается возможность использования этих эффектов, вкупе с тесселяцией, без чего, тот же дисплейс выглядит, порой, совершенно невыгодно. Применяться эти эффекты будут в редакторе материалов.
  • Звуковых файлов.
  • Лицевых анимаций. В данном случае, идет речь о велосипеде, с использованием морфинга, и различных фишек, высмотренных как в последних игровых движках (CryEngine 2-3), так и в DirectX 10 SDK. Под скелетную анимацию лиц планируется выделить отдельный модуль редактора.
  • GUI.
  • Уровней. Первое, что видит перед своими глазами, человек, запустивший редактор - вьюпорты, в которых подразумевается создание уровней, их геометрии, и логики.
  • Свойств. У каждого объекта, размещенного на уровне, есть свои свойства, которые могут быть изменены, по усмотрению дизайнеров, работающих над уровнем.
  • Модуль оцифровки. Так же, в редакторе присутствует модуль, позволяющий оцифровывать объекты, посредством оптического сканирования.
  • Прочие редакторы, не указанные выше.
  • О системе рендеринга:
    При работе, движок проверяет наличие в папке файла конфигурации, и запускается с настройками, указанными в файле конфигурации, выбирая соответствующий модуль рендеринга, и его настройки. Каждый модуль рендеринга содержит в себе класс, приводимый в исполнение менеджером рендеринга, размещенным в ядре движка. Каждый модуль рендеринга имеет возможность включения различных моделей освещения, от стандартной, до Deferred Shading, Screen-Space Ray-Tracing, и других, описанных в модулях рендеринга. Движок не зависит от системы рендеринга, поэтому, он может успешно сотрудничать даже с такими графическими API, как Direct3D 6-8.

    Чисто теоретически, задействовать можно даже Software, соответствующим образом, понижая качество выводимой картинки. Однако, разбор полетов движка демонстрирует, что до уровня тех компьютеров, которые не могут выводить графику сильнее Direct3D 8, его еще нужно сильно оптимизировать, да и некоторые библиотеки, используемые в движке, не взлетят под соответствующими операционными системами.

    5 марта 2010

    Комментарии [8]