At the very core of Chickadee there is an event loop. This loop, or
“kernel”, is responsible for ensuring that the game is updated at
the desired interval, handling input devices, rendering the current
state of the game world, and handling errors if they occur. The
kernel implements what is known as a “fixed timestep” game loop,
meaning that the game simulation will be advanced by a fixed interval
of time and will never vary from frame to frame, unlike some other
styles of game loops. The appropriately named
abort-game procedures are the entry and exit points to the
Chickadee game loop.
If you are using
chickadee play to launch your game, then
run-game is already taken care of for you.
#f] [#:update-hz 60] [#:load] [#:update] [#:draw] [#:quit] [#:key-press] [#:key-release] [#:text-input] [#:mouse-press] [#:mouse-release] [#:mouse-move] [#:controller-add] [#:controller-remove] [#:controller-press] [#:controller-release] [#:controller-move] [#:error]
Run the Chickadee game loop.
A new graphical window will be opened with window-width x
window-height as its dimensions, window-title as its
title, and in fullscreen mode if window-fullscreen? is
#t. If window-resizable? is
#t then the window
can be resized by the user.
alphavalue. See the documentation for
run-game*for an explanation of this value.
#tif this is a repeated press of the same key.
The default behavior is to re-throw the error.
To stop the game loop, simply call
Stop the currently running Chickadee game loop.
The above explanation of the game loop was partially a lie. It’s true
that there is a game loop at the center of Chickadee, but
run-game is not it’s true entry point. There exists an even
lower level procedure,
run-game*, in the
game-loop) module that
run-game uses under the hood.
On its own,
run-game* does not do very much at all. In order
to actually respond to input events, update game state, or render
output, the developer must provide an engine.
run-game is such
an engine, and it’s likely all a developer will need. However, what
if a developer wanted to use all of the useful Chickadee features to
make a terminal roguelike game instead? Chickadee doesn’t come with a
terminal rendering engine, but the developer could write one without
having to write their own core game loop.
Start the game loop. This procedure will not return until
abort-game is called.
The core game loop is generic and requires four additional procedures to operate:
Return the current value of the system timer in seconds.