Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

SimpleGameEngine2

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

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

Простой игровой движок 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

Полностью или частично не реализовано:

  • Сеть
  • Часть команд консоли
  • Часть библиотеки визуальных компонентов
  • Состема оверлея

Поддержать автора:

Простой пример:

pascal
program TestApp;

{$AppType GUI}

uses
  SimpleGameEngine;

type
  TGame = class(TSimpleGameEngine)  
  end;
  
var
  Game: TGame;
  
begin
  Game := TGame.Create;
  Game.Run;
  Game.Free;
end.

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