The FunGEn package

[Tags: bsd3, library, program]

Multi-platform 2D game engine built on top of OpenGL & GLUT

[Skip to ReadMe]


Versions0.1, 0.3, 0.4, 0.4.1, 0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.4.6,, 1.0
Change logNone available
Dependenciesbase (==4.*), GLUT, OpenGL, random [details]
Copyright(C) 2002 Andre Furtado <>
AuthorAndre Furtado <>
MaintainerSimon Michael <>
Home page
UploadedTue Aug 6 14:00:48 UTC 2013 by SimonMichael
Downloads2523 total (29 in last 30 days)
0 []
StatusDocs uploaded by user
Build status unknown [no reports yet]




Maintainers' corner

For package maintainers and hackage trustees

Readme for FunGEn-0.4.1

<style> .a { font-weight:bold; color:red; font-size:200%; } .b { font-weight:normal; color:#bbb; font-size:smaller; } </style>

<span class="a">Fun<span class="b">ctional</span> G<span class="b">ame</span> En<span class="b">gine</span></span>

FunGEn (Functional Game Engine) is a cross-platform, BSD-licensed, OpenGL-based 2D game engine written in Haskell. It is intended to help game programmers make games in a faster and more automated way. FunGEn supports:

Docs: Original docs, moved here from the old site. <!-- Another version of the [pong tutorial](TUTORIAL.html). --> A video of the worms demo.
Hackage & API docs:
Latest code:
Discussion & help: #haskell-game or haskell-cafe

Getting started

cabal install FunGEn


What is a game engine?

A game engine can be considered as a library that provides game facilities to a game programmer. When using a game engine, the programmer must specify when the game events happen, rather than how they are implemented. A same functionality may have its implementation varying from platform to platform, in the case the engine is platform-independent. The main advantage of a game engine is that it can be reused to the development of many different kind of games, in an automated way, saving a lot of programming time.

Why Haskell?

We believe that Haskell is a great language to develop games, because of its high level of abstraction and the generation of a more concise, elegant and shorter code. This is great for code maintenance and understanding. Combining the power of Haskell with the facilities provided by game engines seems a promising project. You can find more info on Haskell in its official site.

What is HOpenGL?

HOpenGL stands for Haskell Open Graphics Library. Actually, it is a binding to one of the most famous graphics libraries around the world (OpenGL) and its auxiliary toolkit (GLUT). In other words, it makes possible to call OpenGL/GLUT routines (which were written in the C language) when programming in Haskell. You can find more info on HOpenGL in my HOpenGL Tutorial site, or in its official site.

Release notes

0.4.1 (2013/08/06)

0.4 (2013/08/05)

0.3 (2011/02/13)

GHC 6.12-compatible 0.3 released on darcsden & hackage by Simon Michael:

0.1-hackage (2008/09/17)

GHC 6.10-compatible 0.1 released on hackage by Miloslav Raus:

GHC 6.8 update (2008/02/26)

GHC 6.8-compatible update by Simon Michael:

0.1 (2002)

First public release by Andre Furtado:


Andre's 2002 todo list:

Here you have a list of some upcoming FunGEn features, and some other desired features (but with no implementation prevision yet).

Would you like to suggest a feature? Feel free to do it. Would you like to implement a feature? Please do it! Keep in touch.


FunGEn was created by Andre Furtado, Computation Science graduation student at the Informatics Center (CIn) of the Federal University of Pernambuco (UFPE), as part of a Scientific Iniciation (PIBIC/CNPq) research project (Creating a Game Platform Using Haskell), oriented by lecturer Andre Santos (PhD, 1995, University of Glasgow), who was responsible for figuring out a lot of FunGEn implementation details.

I would like to thank also the following people who contributed for the development of FunGEn:

FunGEn can be distributed freely, in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. I would thank you if you cite my name and this site if you are going to use FunGEn for other things besides home programming.