HGamer3D - Programming Games with HaskellΒΆ

Introduction

Some years back, I started a journey into the world of the Haskell programming language. And as many others I chose the area of game programming, specifically 3D game programming, as a field to exercise the new skills.

This led to the story I’m telling below on game programming with Haskell. As the toolset to use I will introduce to you the HGamer3D package - a Haskell based API for 3D graphics, audio, input handling, networking, GUI and game programming. HGamer3D can be used on Linux and Windows.

Most game programming tools are written in C++, some have a Java basis and some a .Net one with C# as programming language. Also scripting and scripting languages play an important role in game programming. Notably all of those languages - scripted or not - are object oriented since it is widely accepted that object orientation is a good paradigm for complex simulations and games. Haskell is not an object oriented language.

So immediately the fact that usually the object oriented paradigm is used in game programming creates some tension against the strong claims functional programmers have for using purely functional paradigms in their programs. You will find a lot of discussions around this on the web, take for example some starting points into the discusion in the Haskell Wiki pages on game programming.

On the following pages I try not to discuss too much of this fundamentals but rather I want to show how games can be programmed with HGamer3D and in future sections, how HGamer3D is acutally implemented.

As always things are changing constantly so from time to time hit the refresh button in your browser, to see if updates are available which have been hidden by the caches from the server all the way down to your display.

Table of Contents