cerlib 0.6.0 released!

This release focuses on cleaning up cerlib’s API as well as preparation for the upcoming 1.0 release.

  • Improved website and documentation
  • Replaced several C++ STL types by custom implementations:
    • std::stringString
    • std::string_viewStringView
    • std::optionalOption
    • std::tupleTuple
    • std::pairPair
    • std::spanSpan and MutableSpan
    • The rationale for this is outlined here.
  • Added a new type pint
    • A positive-only integer, used as a replacement for size_t
    • Used to index into containers, automatically checks invalid values
    • Simplifies algebra and reduces casting between signed and unsigned integers
  • Added a script NewGame.py that’s able to generate game templates
  • Added entt as an optional component
    • entt is automatically available in your game
    • Simply #include <entt/entt.hpp> and go
  • Improved the general game architecture
    • You’re now able to write a game loop directly in the main function
    • The Game class is now final
    • Events can now be polled and handled separately
  • Added a new class Camera
    • Can be used to easily implement a 2D observer
  • Added a new class AnimatedImage
    • Allows you to load and play sprite sheets
  • Added types Degrees and Radians
    • Improved type-safety for types and functions that handle rotations
    • Supported by user-defined literals
    • Can be converted to and from
  • cerlib games now link statically with the C++ runtime on Windows and Linux
    • On macOS, dynamic linking is preferred, since the OS guarantees the existence of a C++ runtime
  • Dropped WASM support
    • A focus on desktop, mobile and embedded platforms is preferred
  • Your game now uses precompiled headers to reduce compilation times
  • Replaced SmallDataArray by List
  • Removed multiwindow support
  • Various build system improvements