Skip to main content

Releases

cerlib is distributed as a .zip package. Every package contains:

  • The source headers
  • Compiled libraries for all supported platforms
  • Supporting CMake scripts
info

You should only need the Game Template package. During CMake configuration, it fetches the cerlib binaries for you automatically from the server.

The full package is only necessary when you want to build your game offline (without an active internet connection). In that case, simply unzip the package into your game's folder. The game will then use that package instead of fetching it from the server.


Downloads

VersionFile
0.9.0Game Template | Package (~64.0 MB)
0.7.0Game Template | Package (~25.8 MB)
0.6.0Package (~25.8 MB)

Changelog

Version 0.9.0

This releases focuses on preparation for the initial, major release.

Work was done in terms of performance, stability and quality of life features.

The game template was further improved with better tooling and platform support.

Switch to event-based game architecture

The Game class now provides methods starting with On... that call arbitrary functions at certain points in time.

For example, a polling loop is now replaced by something such as:

game.OnTick( [](GameTime time ) {
// Update game logic here, use time as a reference.
} );

Platform support

iOS and iPadOS are now supported.

Spine integration

cerlib is now able to load, manage and render Spine assets.

Please note the Spine Editor License Agreement when using the Spine integration.

Rendering changes

  • Implemented a Vulkan-based rendering backend, which is now used on all non-Apple platforms.
    • Metal will still be used on Apple platforms.
  • Moved the graphics drawing API to a new class GraphicsDevice.
    • GraphicsDevice is available via the Game::OnDraw() event.
  • New 2D drawing functions:
    • SetPolygonShader()
    • DrawRectangle()
    • DrawLine()
    • DrawRoundedRectangle()
    • FillRoundedRectangle()
    • DrawEllipse()
    • FillEllipse()
    • DrawPolygon()
    • FillPolygon()
    • DrawTriangle()
    • FillTriangle()
    • DrawDirectedTriangle()
    • FillDirectedTriangle()
    • DrawMesh()
    • DrawSpineSkeleton()
    • DrawTextWithBasicShadow()
    • DrawStringWithBasicShadow()
  • Improved the performance of the Metal rendering backend.
  • ImGui has moved to a modernized abstraction along with a new class ImGui.
    • Available via the Game::OnImGui() event.

Miscellaneous

  • Added a new class AStar that implements the A* search algorithm, usable for easy 2D pathfinding.
  • New methods:
    • GraphicsDevice::GetPixelRatio()
    • GraphicsDevice::GetViewSize()
    • GraphicsDevice::GetViewAspectRatio()
Version 0.8.0

Version 0.8.0 was not released.

Version 0.7.0

This release focuses on adding small quality of life features as well as fixing some minor issues.

  • Improved website and documentation
  • Removed CreateGame.py script
    • Instead, download a Game Template and modify it to your liking.
    • The cerlib package is now fetched automatically by the game.
  • Simplified your game’s CMake script
  • Fixed a compile error when attempting to assign an Option to an existing Option
  • Fixed a CMake error when opening a game in Visual Studio using the Open -> CMake… action
    • This occurred only on AMD64 (i.e. 64-bit x86) machines
  • Improved Window
    • Added Window::centerOnDisplay()
    • Added a recenter parameter to Window::setSize() that automatically recenters the window after it’s resized
    • Added a initialWindowSize parameter to the Game constructor
  • Improved List
    • List::front() renamed to List::first()
    • List::back() renamed to List::last()
    • Added List::removeFirst()
  • Improved the event handling API
    • Removed Game::events()
    • Added Game::nextEvent()
    • Renamed Game::handleEvents() to Game::handleAllEvents()
  • Added new events
    • DisplayOrientationChangedEvent
    • DisplayAddedEvent
    • DisplayRemovedEvent
    • DisplayMovedEvent
    • DisplayDesktopModeChanged
    • DisplayCurrentModeChanged
    • DisplayContentScaleChanged
  • Input API improvements
    • Added cer::wasMouseButtonJustPressed()
    • Added cer::wasMouseButtonJustReleased()
    • Added MouseButton::Extra1
    • Added MouseButton::Extra2
  • Added Game::showMessageBox() and cer::MessageBoxType
  • Added Game::sleep() and Game::sleepMS()
  • Added FrameStats::tickRate, which represents the game’s tick rate (frame rate)
  • Implemented CoreAudio audio backend on Apple platforms

Other

  • Updated ImGui to 1.91.5
  • Internally implemented Metal support in preparation for the upcoming iOS support
  • Internally added Box2D as the physics backend for the upcoming 2D physics support