Gareth Williams

I Make Games

I make videogames, sometimes. Serial game jammer. Unity, C#. Made One Game a Month in 2013. Made PicaVoxel. Currently working on Jarheads. Senior developer at Future Visual.

1GAM June: FShoot

This month I chose once again to do something new and took it upon myself to dabble with a little F#. This is the first time I have used F# in any way, and the first time I have used a functional programming language.

I ended up shoehorning OO code into F#, the same way I'm sure many C# developers do when they first look at F#. I say shoehorning because that's how it felt. Even once I had been given a crash-course in functional development by Matt, I still felt that F# wasn't for me. Much of my issues come down to trying to fit a game, which is essentially one big state engine, into a language which is inherently stateless. I did, however, begin to find the syntax of F# rather charming and I could perhaps see myself employing it down the line - just not to write core game engine code.

FShoot itself is a simplistic space-invaders clone. Not much to write home about, other than I chose to make the game using just particles. Every single object on screen is a particle or is constructed out of many particles. I think it makes for a cool aesthetic.

I haven't decided what I'm going to do for July. I think I'm running out of ideas, which is a really bad thing for someone who identifies themselves as a game developer. Still, I'm super chuffed to have made it this far (six months, six games!) and I'm not going to give up easily.  

Tools Used

  • Monogame / XNA
  • F#
  • Visual Studio 2012
  • Photoshop CS6
  • Audition CS6

Source Code

Available on Github


20 days, very much on and off. I'd say ~30 hours total.

Special Thanks

  • Matt for the F# pointers.
  • Dave Thomas for the Monogame F# template
  • James for the Mac port!


Windows. If it doesn't run, you may need to install OpenAL.

  • FShoot - Windows .zipMac! A first for my 1GAM run this year. Thanks to James for the effort! Apparently tested on an iMac, but leave a comment if you can't get it to run.

  • FShoot - Mac OSX .zip

And Linux. This has been tested on Linux Mint 14 (Cinnamon), you may need to install libSDL-mixer (sudo apt install libsdl-mixer1.2). Run from a terminal (mono FShoot.exe). If it doesn't run, copy/paste the output into a comment below.

  • FShoot - Linux .tar.gz