Skip to content

OlegMathProg/SprE_ngin_E_2_D

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 of the calculation depends only on the number of selected points and is almost independent of the number of all existing points on the scene);
  • 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_AnimK : animation (particles,physics,hair,fluid effects etc.)
  2. Fast_GL : initializing GLSL shaders
  3. Fast_Graphics : rendering of primitives (like a line, rectangle,circle), filters, blitters, CSR-sprites processing etc.
  4. Fast_UI : working with UI/UX elements
  5. Fast_Scene_Tree : scene object manager
  6. Fast_SIMD : some SIMD powered routines
  7. Fast_Threads : working with threads (implementations of multi-threaded variants of some main functions)
  8. Hot_Keys : key mapping
  9. Image_Editor : editing sprites (filters, masks, etc.)
  10. Documentation : descriptions of tools from Draw, AnimK, File
  11. 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 only in the source code);

  • 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 Play: starts the game loop;

  • Game Settings Game Settings: some basic scene settings such as canvas size, display of some objects (partially implemented);

  • Add Actor Add Actor: adding characters (not implemented);

  • Sound Control 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. Game mode: multithreading, SIMD, 100000 sprites
Editor_Preview1
  1. Editor mode: spline with 20000000 points
Editor_Preview2
  1. Editor mode: selected points in spline with 20000000 points
Editor_Preview3
  1. Editor mode: selected points in splines with 60000000 points
Editor_Preview4
  1. Editor mode: drawing tilemap, text, etc.
Editor_Preview5
  1. Turbo Pascal style UI:
Editor_Preview6