Некоторое время назад у меня появилось желание сделать собственную игру. Мои поиски начались с изучения материалов по игрострою. По сути мне нужно было несколько функций для создания игры (создание окна, вывод спрайта с масштабом и поворотом, вывод текста и проигрывание звуков). Почитав разное в интернете, готовые движки отбросил сразу, как и фреймворки, слишком много лишнего для моих нужд. Процесс начался с создания окошка на WinAPI, подключения OpenGL и тд. И тут до меня дошло что большинство кода, который я пишу, может быть использован в другой игре. Я стал выносить универсальные функции в отдельный проект, так и родился игровой движок. Это вторая версия, которая лучше первой в несколько раз. Про проблемы одно поточных игр можно поговорить отдельно, в двух предложениях все не описать. Игра и этот проект делаю в свободное от работы время, процесс долгий, но тщательный. Если мне что-то не нравиться, то откатываюсь назад и переделываю. На данный момент реализованы не все возможности. Внятной документации по использованию пока нет.
- Событийный механизм
- Компонентная система
- Многопоточная работа
- Вывод звука (OpenAL)
- Проигрывание фоновой музыки
- Проигрывание отдельных зыуков
- Вывод графики (OpenGL)
- Растровые шрифты
- Набор примитивов
- Шейдеры
- Игровые архивы
- Система патчей
- Поддержка контроллеров
- Рули
- Джойстики
- Педали
- Асинхронная консоль
- Стековая машина
- Выполнение скриптов
- Привязка команд консоли на пользовательский ввод
- Клавиатура
- Контролеры
- Мышь
- Возможность указания модификаторов (Ctrl, Shift и тд)
- Собственная библиотека визуальных компонентов
- Виртуальные переменные
- Загрузка ресурсов
- Разбивка загрузки на несколько скриптов
- Игровые сцены
- Плавная смена через затемнение
- Таймерные события
- Дополнительные инструменты
- Редактор архивов
- Редактор растровых шрифтов
- Скачать репозиторий в любой каталог
- Оnкрыть в Lazarus пакет Package\SimpleGameEngine2.lpk
- Создать новый проект, сохранить
- Добавить зависимость SimpleGameEngine2 в инспекторе проекта
- Lazarus 3.0
- FPC 3.2.2
- OpenAL.dll
- Сеть
- Часть команд консоли
- Часть библиотеки визуальных компонентов
- Состема оверлея
program TestApp;
{$AppType GUI}
uses
SimpleGameEngine;
type
TGame = class(TSimpleGameEngine)
end;
var
Game: TGame;
begin
Game := TGame.Create;
Game.Run;
Game.Free;
end.