Sign in Join

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

Catalog · How the catalog works

Random project

SprE_ngin_E_2_D

Very Fast Software 2D Game Engine

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

It is a lightweight 2D game engine (written on Object Pascal and compilled in Lazarus).

Killer features:

  • thanks to the use of special structures like CSR (Compressed Sparse Row), editing even in software mode becomes incredibly fast (the complexity is O(selected points));
  • thanks to the "dirty rectangles" technology, scrolling of background objects occurs almost very quickly, which allows for the rendering of very large sprites (more than 30kx30k pixels) as background objects;
  • using multi-threaded processing in conjunction with SIMD optimizations, it is possible to achieve quite decent speed even in software rendering mode.

Brief description

Supported OS: currently only Windows.

Rendering type: software (OpenGL is used only for outputting the final frame, but shader support is already implemented).

Main modules:

  1. Fast_Main : main editor routines
  2. Fast_AnimK : animation (particles,physics,hair,fluid effects etc.)
  3. Fast_GL : initializing GLSL shaders
  4. Fast_Graphics : rendering of primitives (like a line, rectangle,circle), filters, blitters, CSR-sprites processing etc.
  5. Fast_UI : working with UI/UX elements
  6. Fast_Scene_Tree : scene object manager
  7. Fast_SIMD : some SIMD powered routines
  8. Fast_Threads : working with threads (implementations of multi-threaded variants of some main functions)
  9. Hot_Keys : key mapping
  10. Image_Editor : editing sprites (filters, masks, etc.)
  11. Documentation : descriptions of tools from Draw, AnimK, File
  12. Performance_Time: measuring the running time of different sections of code

Tools page:

  • Text Text: drawing text (partially implemented, does not currently support multithreading);
  • Brush Brush: reserved for working on sprites on scene (not implemented);
  • Spline Spline: drawing curves/splines (it is the most optimized tool of all and has many settings for rendering, optimization, etc.);
  • Select Items Select Items: editing splines (uses high-performance lazy rendering algorithms and CSR-sprites capabilities);
  • Select Background Region Select Background Region: reserved for working with selective edits to the scene canvas (not implemented);
  • Background Background: background fill;
  • Post-Process Post-Process: various layer effects like AlphaBlend, Darken, Blur, Noise, etc. (almost completely implemented);
  • TileMap TileMap: drawing sprites using a black-and-white mask (partially implemented, some work on the collision system);
  • Snap Grid Snap Grid: alignment of objects to a grid (only the display of the grid itself is implemented);
  • Regular Grid Regular Grid: auxiliary grid for displaying the scale of the scene;
  • Play: starts the game loop;
  • Game Settings: some basic scene settings such as "Borderless window", etc. (partially implemented);
  • Add Actor: adding characters (not implemented);
  • Sound Control: some sound settings (not implemented);

All units are in active development and will be supplemented as needed.

Additional

Executable demo(SprE_ngin_E_2_D.exe) is included, so run-n-fun.

Screenshots:

  1. Editor mode:
  1. Scene tree and object tags:
  1. Game mode(old UI design): multithreading, SIMD, 100000 sprites
  1. Editor mode(old UI design): spline with 20000000 points
  1. Editor mode(old UI design): selected points in spline with 20000000 points
  1. Editor mode(old UI design): selected points in splines with 60000000 points
  1. Editor mode(old UI design): drawing tilemap, text, etc.
  1. Turbo Pascal style UI(old UI design):