Giuseppe Maggiore has just written to me about his new F# e-book, FRIENDLY F# through Game Development and XNA, where you learn F# through game development with XNA! This looks fabulous - I learnt to program through games, and so what better way to learn programming than this combination? You can also get it on Amazon, and the code samples are available through the link below.
I have just finished coauthoring the first version of a digital-only book about F# applied to gaming and simulations, which has been my topic of research and (very extensive) teaching during the last half decade; in fact, the book gathers the various samples I have used for teaching functional programming to my students.
The main subject of the book is the F# language and its various constructs, but every single chapter is centered around a game-related problem. Each one of the first 5 chapters describes a problem, shows and discusses its solution and then discusses in depth the F# constructs used. The book has a (relatively rare) "problem-solution" approach where everything is explained because of how well it works in solving the problem, and not just "because". The 5 problems we present are:
- a bouncing ball
- the Saturn V rocket
- an asteroid field
- a large asteroid field optimized with quad trees
- a police starship that must fight off a pirate ship attacking a cargo freighter
In the last two chapters we use XNA to build a 2D and 3D renderer for two of the samples we have seen. We show the basics of the SpriteBatch class, the Model class, input management and audio with this powerful framework. Basically, we cover the most important aspects of XNA in a simple and succint way.
The samples are all stored at: http://fsharpgamedev.codeplex.com/
The book is relatively short and cheap, and can be found here