Helm's API provides a simplistic and elegant way to make games. Besides a straight forward vector-graphics based drawing API, there's the obvious things like keyboard, mouse, joystick and framerate handling, but also higher-level concepts like automatons.
In Helm, input events like key presses and mouse clicks are accessed through a concept called signals — essentially values that change over time. This allows you to write logic dependent on input events like window resizes dynamically, without having to go to the extra effort to write callbacks that listen to events like in a regular game engine.
Built on the Elerea FRP framework in Haskell, Helm aims to be simplistic by default but support complex behaviour when needed. To do this, Helm provides things like an implementation of piped-based signals called automatons that allow you to compose the concept of signals to do factory-like logic, i.e. operations that take an input and output something valuable.
Install the Haskell Platform and then install Helm using the Cabal build system. Here's some example code to give you an idea of how to work with the API. It samples the window dimensions signal at every render, using the sampled values to render a red square with a side length of 64 at (100, 100).
import FRP.Helm
import qualified FRP.Helm.Window as Window
render :: (Int, Int) -> Element
render (w, h) = collage w h [move (100, 100) $ filled red $ square 64]
main :: IO ()
main = run defaultConfig $ render <~ Window.dimensions
© 2013-2014 Switchface Studios