Hysen Labs
Open-source project
haskell-game/fungen avatar
haskell-game

fungen

A lightweight, cross-platform, OpenGL-based 2D game engine in Haskell

100 stars16 forksHaskellBSD-3-Clause
01
DEEP OPEN-SOURCE ANALYSIS

FunGEn: the oldest Haskell game engine

A BSD-licensed, OpenGL-based game engine written in Haskell since 2002, small enough to be a gentle entry point, with maintenance now looking for new hands.

02
DEEP OPEN-SOURCE ANALYSIS

An engine with history

FunGEn, short for Functional Game Engine, is a BSD-licensed, cross-platform, OpenGL-based game engine written in Haskell. The README dates it to 2002 and calls it the oldest Haskell game engine, created by Andre Furtado. With very few dependencies and two example games, it is presented as one of the easiest ways to start with Haskell game development. The project is licensed BSD-3-Clause.

03
DEEP OPEN-SOURCE ANALYSIS

The feature list

The capability list reads like a small engine's essentials: initialization, updating, removing, rendering, and grouping routines for game objects, definition of a game background or map with texture-based maps and tile maps, reading keyboard and mouse input, collision detection, time-based functions and pre-defined game actions, loading and displaying 24-bit bitmap files, and some debugging and performance evaluation facilities.

04
DEEP OPEN-SOURCE ANALYSIS

Maintenance and a call for help

Maintenance is described plainly. Simon Michael provides infrequent maintenance and chat support in the haskell-game community, with no issue tracker and no email support. The author's own note is candid: no time to do more with it, but the package is still useful and could attract users with some care and a better homepage, so maintainers or co-maintainers are wanted.

05
DEEP OPEN-SOURCE ANALYSIS

Getting it running

Setup means installing the OpenGL C libraries if they are not already present, with an Ubuntu or Debian example in the README, and if you are unsure whether they are installed, trying the next step and watching for missing C library errors. With the right binary path on your shell, either the stack or cabal location, you can run the example games.

06
DEEP OPEN-SOURCE ANALYSIS

The design philosophy

The history section explains the engine's thinking. A game engine is a library that provides game facilities, letting the programmer say when game events happen rather than how they are implemented. The README argues Haskell suits games because of its abstraction and concise code, and recounts how the first FunGEn version was not as functional as desired, still handled imperatively. The response was a shift in philosophy, describing a game as a set of specifications, and a plan to rebuild following the Clean Game Library concepts, a project the README admits demands time.

07
DEEP OPEN-SOURCE ANALYSIS

Editorial conclusion

The most human part of the README is the honesty: an old engine, lightly maintained, with its original author openly looking for someone to take it over.

08
DEEP OPEN-SOURCE ANALYSIS

Official sources

09
Community notes

Community notes