/Hickory

Tools for building 3D interactive programs in Haskell

Primary LanguageHaskell

Hickory

Hickory is a game engine for Haskell. The pieces (vulkan renderer, input systems, resource loading, game state management) are fairly modular, allowing some pieces to be used without committing to others. Screen Shot 2023-01-02 at 4 52 14 PM

Core library: 'Hickory'

  • Vulkan Graphics
  • 3D Model Loading / Animation
  • Camera Projection/Unprojection
  • Text Rendering
  • Raw Input (Mouse clicks / touches and key pressses)
  • Misc. Math Utilities

Functional Reactive Paradigm: 'Hickory-FRP'

  • Built on the 'Reactive Banana' FRP library
  • Game loop
  • Separate rendering and physics time steps
  • Game state recording and time-travel
  • High level UI widget abstraction

GLFW Backend: 'Hickory-GLFW'

  • Easy initialization of a Vulkan context and input handling for GLFW (a cross platform desktop library)

iOS Backend: 'Hickory-iOS'

  • Easy initialization of a Vulkan context and input handling for iOS
  • Some additional fiddly work needed to get a working binary, but overall this is a relatively painless way to get into iOS development

Getting started

The Examples/ directory has a simple action game example.

$ stack run shooter

Contributing

See CONTRIBUTING.md file for details.

License

See LICENSE file for details.