The Casanova language is a programming language designed around games.
The main features of the language are:
- declarative updating and drawing
- safe underlying model for updates based on double buffering: make less mistakes that depend on update order
- units of measure: no mix ups of a Vector2<m> with Vector2<m/s>
- integrated coroutines for simpler state machines, AIs, and timers
- automated savegame facilities: saving and loading requires just one line of code
- first class menu management
- nested drawing for easier positioning and expression of visual dependencies
- first class resources to implement economy or complex damage/defense systems
- first class physics integration
The language is still under heavy development. Features which will are still in their early stages are:
- automated multiplayer: go from single to multiplayer with a dozen lines of code
- automated declarative pathfinding
- automated declarative goal-oriented AI
Casanova is based on F# and MonoGame 2.5. It can be used in conjunction with Visual Studio, taking advantage of its powerful tools. Moreover, thanks to MonoGame, it is possible to port Casanova games to multiple platforms, most notably Android smartphones and Tablets or Windows 8 RT.
As of now there are plenty of Visual Studio 2012 samples
and a starter kit
. Also, head to tutorials
and get started with your own games!
If you want to know more about the structure of the Casanova sources, then head on to Casanova sources
Casanova is a research project based on Giuseppe Maggiore
's PhD thesis
. There are various Papers
written about it by many researchers such as Mohamed Abbadi
, Francesco Di Giacomo, Enrico Steffinlongo, Michele Bugliesi, Pieter Spronck, Renzo Orsini, and Aske Plaat.