gfm 1.1.8

D gamedev toolkit.

To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

What's this?

GFM is a feature-rich library to ease the creation of video games / multimedia applications with the D programming language.

Documentation and overview can be found here:

Build Status


Public Domain (Unlicense).

How to use GFM?

Add the sub-package you are interested in in your dub.json:

      "dependencies": {
        "gfm:math": "==1.1.6"

See the examples/ directory, or as an example of a game.

Warning: you need at least DUB 0.9.22-rc1 to use GFM


You absolutely don't need to use the whole of GFM. Pick just what you need to minimize the amount of dependencies.

GFM dependencies

There is an ongoing work to reduce package dependencies and delete things in GFM that exist elsewhere but better.

Design goals

  • Give more power to the library user providing code that will probably need to be written anyway.
  • Each module / sub-package is maximally decoupled.
  • Logging interface for everything which need to output messages.
  • Correctness and functionality are favoured over speed.
  • Wrappers are lightweight layers that expose the C libraries objects, turn every error code into an D exception and makes it easier to use the library correctly.
  • As much as possible, GFM emit warnings when something goes wrong, try to recover when it makes sense and log every problem.

Why use GFM?

In the D1 days, I created several multimedia applications:

  • Vibrant:
  • Wormhol:
  • Extatique:
  • The Orange Guy:
  • SeamzGood:

This all came with some insight with how to do OpenGL applications in D. During this time I became acutely aware that my quick & dirty coding style wouldn't cut it in the long run. GFM is the clean successor library to the unfortunate code I was using at this time.

  • ponce
  • Gerbrand Kamphuis / vuaru: many fixes
  • Kyle Hunter / Kelet: ENet wrapper
  • Francesco Cattoglio: OpenGL wrapper improvements
  • John D. Cook: SimpleRNG author
  • Sam Hocevar: many bits of code
  • Daniel Cousens / RommelVR: GL fix
Sub packages:
gfm:core, gfm:math, gfm:image, gfm:net, gfm:enet, gfm:assimp, gfm:opengl, gfm:sdl2, gfm:freeimage
gfm:image, gfm:core, gfm:net, gfm:opengl, gfm:sdl2, gfm:math, gfm:assimp, gfm:enet, gfm:freeimage
8.0.6 2021-Feb-09
8.0.5 2021-Jan-04
8.0.4 2020-Sep-10
8.0.3 2020-Jan-16
8.0.2 2019-Nov-09
Show all 160 versions
Download Stats:
  • 4 downloads today

  • 10 downloads this week

  • 73 downloads this month

  • 77571 downloads total

Short URL: