Tuesday, 25 June 2013

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


Clockwatching

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!

Downloads

Windows. If it doesn't run, you may need to install OpenAL.
Mac! 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.
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

2 comments:

Don said...

Gareth, do you know what XNA bits I need installed? I have Game Studio 4.0, but when I open the solution in VS2010 or VS2012 I get "project type not supported" errors on the FShoot.XNA project

John Peter said...

Great Article
C# Training
Dot Net Training in Chennai