itch.io is community of indie game creators and players

Devlogs

5.0 Release Update

Shape Engine
A downloadable Game Engine Demo for Windows and Linux

The upcoming 5.0 release is nearly complete, but it’s not finished yet. As usual, a small improvement snowballed into a major release and is taking far longer than I anticipated. Most of the important, large tasks are already done — except one.

I am currently overhauling all outline-drawing functions to use custom algorithms that draw outlines as triangles instead of full segments. This change makes it possible to use transparent colors for outlines without producing overlapping artifacts.

It started when I fixed CircleSector drawing and realized my temporary outline system couldn’t handle transparent outlines cleanly. That left a choice: leave the temporary implementation as-is or redo all outline functions for every closed shape. I chose the latter, which means updating CircleRingTriangleRectQuad, and Polygon outlines — including variations such as DrawLinesDrawPercentageLinesDrawCornered, and more. Unfortunately, rendering Triangle and Polygon outlines both cleanly and performantly is not simple.

Once the OutlineDrawing is finished, I will release 5.0 (hopefully).

900+ commits went into this release already, and here are the current Release Notes of what I have done so far:

Input System

  • [BREAKING] Input system improvements.
  • [NEW] InputGesture system added  (LongPress, DoubleTap, etc.).
  • [NEW] InputDeviceSettings struct added for easier setup of the input system.
  • [NEW] InputActionSettings struct added for easier setup of input actions.
  • [NEW] Automated system for applying the current gamepad mappings added (gamepads now work on macOS).
  • [UPDATE] Gamepad management improved.

Collision System

  • [BREAKING] Collision system improved.
  • [BREAKING] Collision system separated from spatial partitioning algorithm to allow use of custom algorithms.
  • [NEW] Optional parallelization features for better performance added (allows running certain parts of the collision detection algorithm concurrently).
  • [NEW] MotionType and BroadphaseType enums added to the collision system.

Pathfinding

  • [BREAKING] Pathfinding system improved.
  • [NEW] Optional parallelization features for PathRequest handling added.

Savegame

  • [BREAKING] Savegame system improved.
  • [NEW] The Savegame folder is now automatically created based on ApplicationName and SaveDirectory.
  • [NEW] Automated savegame backup system added (automatically creates a backup folder in the savegame directory, and it can create and apply backups).

Docs

  • [NEW] XML summaries added to every class, member, and function that is public.

Drawing

  • [NEW] MaskedDrawing* functions added (Allows only drawing a shape or shape outline within a certain area or outside of a certain area).
  • [NEW] StripedDrawing* overloads added.
  • [UPDATE] Striped drawing functions improved.

Workflows

  • [NEW] Workflow added to automatically update the gamepad mappings file once a month (SDL GameController DB is used as source).
  • [NEW] Workflow added to automatically keep ShapeEngines dependencies up to date (raylib and Clipper2).
  • [NEW] Workflow added to automatically attach Example project builds to new releases.
  • [NEW] Workflow added to upload ShapeEngine NuGet packages to nuget.org (manually triggered only).

Core

  • [NEW] ApplicationName property added (used for setting up the savegame folder).
  • [NEW] ShapeEngine now handles capping of the FrameRate to the set FrameRateLimit.
  • [NEW] MacOS app bundling and packaging support for Examples added.
  • [UPDATE] VSync now works better and no longer disrupts fullscreen (If VSync is enabled, the FrameRateLimit is automatically set to the refresh rate of the current monitor).

Misc

  • [BREAKING] Pool System overhauled and drastically simplified.
  • [NEW] PerlinNoise class added (thanks to Fixin).
  • [NEW] ResourcePacker project added - Allows packing/ unpacking of resources to text or binary files. 
  • [NEW] DebugLogger class added (allows printing information to the console and/or to a log file).
  • [UPDATE] A lot of misc fixes, improvements, and clean up.
  • [UPDATE] Better polygon bounding circle algorithm implemented.

Example Scenes

  • [NEW] New Savegame Example Scene added.
  • [NEW] New XML / JSON serialization systems added.
  • [NEW] New XML / JSON Example Scenes added.
Download Shape Engine
Leave a comment