Desktop-only, vulkan-only and mostly Haskell.
- https://gitlab.com/keid β Project umbrella group.
-
https://gitlab.com/keid/engine β Engine packages (available on hackage).
- keid-core: Core parts of Keid engine.
- keid-geometry: Geometry primitives.
- keid-render-basic: Basic rendering programs.
- keid-resource-gltf: GLTF loader.
- keid-sound-openal: OpenAL sound system.
-
keid-ui-dearimgui: Immediate mode UI with
dear-imgui
. -
keid-frp-banana: Event/behavior FRP with
reactive-banana
.
-
https://gitlab.com/keid/tools
- weld: Asset processing tool.
-
https://gitlab.com/keid/examples
- overview: Literate single-file example π
- 2d/texts-and-sprites: CPU particle system demo that can be used as a benchmark.
- 2d/tiles: Texture-packed tilemap rendering.
- headless: Non-interactive rendering to a file.
- shader/external: External shader code with hot reloading.
- sound/positional: Positional sound with OpenAL.
- ui/dearimgui: Widget demo and some GLFW event handling gotchas.
-
https://gitlab.com/keid/demos
-
frp: Using FRP libraries (only
reactive-banana
for now, PRs welcome). - pbr: Physically-based rendering with UI-tweakable materials.
- sky-playground: Sandbox for feature experiments.
- snap: 3D tile editor.
-
frp: Using FRP libraries (only
- https://gitlab.com/keid/kb β This site.
- https://gitlab.com/keid/meta β A project-management project for the group.
Games
- Orboros β LD47, playable. Ported from vulkan-setup.
- Time to think β LD48, unfinished. New code upstreamed to engine and reused in Orboros.
- Swerve β LD49, playable.
Installation
There are some binary dependencies:
-
Platform libs (apt install
build-essential libtinfo-dev
or something). - Vulkan SDK from LunarG.
-
GLFW library (
libglfw3-dev
).-
May require extra platform deps like
libxinerama-dev libxxf86vm-dev libxi-dev libxcursor-dev
.
-
May require extra platform deps like
-
OpenAL library (
libopenal-dev
) and Opus codec (libopusfile-dev
).
Most of the packages are published on Hackage, you donβt need to clone all the repositories here.
But you may need to pin all the versions:
- Stack resolvers: https://gitlab.com/keid/meta/-/tree/main/resolvers
- Cabal freeze is generated from most recent resolver: https://gitlab.com/keid/meta/-/blob/main/cabal.project.freeze
Look at game project files for configuration example, those should work with both stack
and cabal
builds.
Some problems may arise in Nix setups, but I donβt know anything about it. Youβd better consult your local Nix guru.