A simple F# Breakout clone using Duality
F# C#
Latest commit 4d4ddef Nov 15, 2014 @Andrea Updates to the binaries

README.md

F#n and Games

Game loop

The idea of the game loop is to "Decouple the progression of game time from user input and processor speed."[1] The loop processes the input but doesn't wait for it. A game loop looks something like this

while (true)
{
  processInput();
  update();
  render();
}

Duality has a game loop, when it runs it calls each of the components. Components you say?...

[1] from Game Programming patterns

Duality concepts

  • Scenes: contain Game Objects
  • Game Objects: contain component
  • Components: have logic about each of the game objects and how they should behave
  • Resources: stored needed to run the game, it includes seriealized scenes, game objects, sounds, textures, etc.

It's worth noting that Scenes, objects, etc are all serialized.

Duality editor

There is a really good reference about duality in the Duality Website

Let's write some game code

We are going to start off improving on the ScoreComponent, with the solution opened go to Breakout.core project and open the "components.fs" file.

The ScoreComponent type inherits from Component (a type from Duality that is implemented in C#). We also have the equivalent of a read only property in C# , with a backing mutable field, not really a very functional aproach to this.

    member this.Score = score

Another thing to note on this type is that it implements ICmpUpdatable (a Duality interface).

Some useful links