Skip to content

accuratealx/SimpleGameEngine2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Простой игровой движок 2

Предисловие:

Некоторое время назад у меня появилось желание сделать собственную игру. Мои поиски начались с изучения материалов по игрострою. По сути мне нужно было несколько функций для создания игры (создание окна, вывод спрайта с масштабом и поворотом, вывод текста и проигрывание звуков). Почитав разное в интернете, готовые движки отбросил сразу, как и фреймворки, слишком много лишнего для моих нужд. Процесс начался с создания окошка на WinAPI, подключения OpenGL и тд. И тут до меня дошло что большинство кода, который я пишу, может быть использован в другой игре. Я стал выносить универсальные функции в отдельный проект, так и родился игровой движок. Это вторая версия, которая лучше первой в несколько раз. Про проблемы одно поточных игр можно поговорить отдельно, в двух предложениях все не описать. Игра и этот проект делаю в свободное от работы время, процесс долгий, но тщательный. Если мне что-то не нравиться, то откатываюсь назад и переделываю. На данный момент реализованы не все возможности. Внятной документации по использованию пока нет.

Возможности:

  • Событийный механизм
  • Компонентная система
  • Многопоточная работа
  • Вывод звука (OpenAL)
    • Проигрывание фоновой музыки
    • Проигрывание отдельных зыуков
  • Вывод графики (OpenGL)
    • Растровые шрифты
    • Набор примитивов
    • Шейдеры
  • Игровые архивы
    • Система патчей
  • Поддержка контроллеров
    • Рули
    • Джойстики
    • Педали
  • Асинхронная консоль
    • Стековая машина
    • Выполнение скриптов
  • Привязка команд консоли на пользовательский ввод
    • Клавиатура
    • Контролеры
    • Мышь
    • Возможность указания модификаторов (Ctrl, Shift и тд)
  • Собственная библиотека визуальных компонентов
  • Виртуальные переменные
  • Загрузка ресурсов
    • Разбивка загрузки на несколько скриптов
  • Игровые сцены
    • Плавная смена через затемнение
  • Таймерные события
  • Дополнительные инструменты
    • Редактор архивов
    • Редактор растровых шрифтов

Установка:

  1. Скачать репозиторий в любой каталог
  2. Оnкрыть в Lazarus пакет Package\SimpleGameEngine2.lpk
  3. Создать новый проект, сохранить
  4. Добавить зависимость 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.

Схематическое устройство системы:

Схема

About

Спрайтовый 2D движок

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published