Giter Site home page Giter Site logo

pascalgameengine's Introduction

Игровой движок для Delphi и FreePascalCompiler на основе SFML.
SFML-based game engine for Delphi and FreePascalCompiler.

О проекте

Движок позволяет организовать игровой цикл на основе переключаемых сцен, а также предоставляет полезные процедуры и классы для разработки игр. Таким образом, разработчик игры концентрируется на логике отдельных сцен и их переключении, а не на создании окна и рендере/просчете игрового цикла, как это необходимо при работе с низкоуровневыми графическими библиотеками. В качестве библиотеки используется SFML и его доработанные биндинги для Паскаля PasSFML.

Разработка проектов на основе движка для Windows возможна как при помощи Delphi, так и при помощи FreePascalCompiler. Работа под Linux возможна только через FreePascalCompiler.

Состав репозитория

  • csfml - содержит скомпилированные библиотеки CSFML из репозитория PasSFML
  • engine - исходный код движка в виде модулей для Delphi и FreePascalCompiler.
  • example - исходный код примера использования движка в виде проектов для Delphi и FreePascalCompiler.
  • sfml - содержит код биндинга SFML из репозитория PasSFML

Инструменты сборки

Для сборки игр на движке нужен либо установленный Delphi (проверено с версиями 10 и 11), либо FreePascalCompiler (проверено с версией 3.0.4)

Сборка примера

Для сборки проекта примера в Windows при помощи Delphi нужно открыть проект example/ExampleDelphi.dproj и выполнить его сборку в конфигурации Release. В каталоге появится исполняемый файл ExampleDelphi.exe.

Для сборки проекта в Windows при помощи FreePascal нужно открыть каталог example и запустить файл make_win32.bat или make_win64.bat. В каталоге появится исполняемый файл ExampleFPC.exe.

В обоих случаях для запуска потребуется скопировать библиотеки из каталога csfml/win32 или csfml/win64 в каталог с исполнимым файлом. Разрядность библиотек должна соответствовать разрядности сборки. Из внешних ресурсов нужны только файл шрифта arial.ttf и файл спрайта logo.png, они уже есть в каталоге.

Для сборки проекта в Linux при помощи FreePascal нужно открыть каталог example и запустить файл make_linux64.sh. В каталоге появится исполняемый файл ExampleFPC. Чтобы выполнить сборку и последующий запуск, понадобятся установленные библиотеки sfml и csfml.

pascalgameengine's People

Contributors

tereshenkovav avatar

Stargazers

 avatar Gunko Vadim avatar  avatar

Watchers

 avatar  avatar

pascalgameengine's Issues

Корректная обработка ошибок загрузки ресурсов и ошибок рендера/обсчете сцен

Программа должна вести лог и давать сообщение игроку о произошедшей ошибке.
Перейти на кидание исключений в загрузчиках ресурсов и обработку исключений/логирование в классе Game при инициализации/рендере/обсчете

Z-буфер спрайтов

Список спрайтов с весом каждого и автоматическим рендером в порядке веса

Добавить в инструменты - создание окна заданного размера, включение полного экрана и выбора размера из списка

Сделать программу и включить её в состав репозитория.
Программа должна позволять задать размер окна и получать список полноэкранных режимов, выбирать из списка и задавать вручную, перестраивать окно на лету и показывать границы окна.
Полезно для диагностических целей.
На её основании, перестроить код проверки поддержки полноэкранного режима в играх

  if not SfmlVideoModeIsValid(Mode) then
    raise Exception.Create('Invalid video mode');

потому что он нужен только для полного экрана, а не для окна. И неочевидно работает в виртуалках.

Ассоциативный массив спрайтов

Словарь спрайтов с ключами и рендером по коду ключа, с обработкой несуществующих ключей и загрузкой каталога/списка файлов.

Установка эффектов для рендера сцены

Возможность рендерить сцену не сразу на окно, а в текстуру, потом накладывать эффект и выводить в окно.
Может быть полезно при рендере меню или игровой паузы, сделать серым цветом или затенением.
Сюда же эффект пикселизации.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.