Releases
cerlib is distributed as a .zip
package. Every package contains:
- The source headers
- Compiled libraries for all supported platforms
- Supporting CMake scripts
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
Version | File |
---|---|
0.9.0 | Game Template | Package (~64.0 MB) |
0.7.0 | Game Template | Package (~25.8 MB) |
0.6.0 | Package (~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 theGame::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.
- Available via the
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