Project Description
The Casanova language is a programming language designed around games.

The language is oriented towards:
  • a very easy learning curve: the syntax is simple and references very basic concepts such as scene, entities, and the flow of time
  • state machines: all code can be interrupted easily
  • performance: even if the language is high level, it easily outperforms naïve C#
  • compatibility: any .Net library (and C# source file) can be directly integrated with Casanova sources

We are committed on further improving Casanova. Our main research focus is networking, in order to take advantage of our state machine system to simplify the creation of distributed protocols, but we are also focused on a stronger optimizer for state machines and queries.

Casanova fully supports Unity. This means that games built with Casanova run on all Unity supported platform such as Android, iOS, the webplayer, etc..

Casanova has been used for a series of Samples and Games.

The language is a research project based on Giuseppe Maggiore's, Mohamed Abbadi's, and Francesco Di Giacomo's PhD work. There are various Papers written about it.

As an example, consider the sources for a bouncing ball:
module Game

open "UnityEngine.dll"
open UnityEngine

worldEntity World = {
  inherit UnityBall

  Velocity : Vector3

  rule Position = Position + Velocity * dt
  rule Velocity = Velocity + (new Vector3(0.0f, -9.81f, 0.0f)) * dt

  rule Position,Velocity =
    wait Position.y < 0.0f
    yield (new Vector3(Position.x,0.0f,Position.z)), 
          (new Vector3(Velocity.x, Velocity.y * -1.0f, Velocity.z) * 0.8f)

  Create() =
    Velocity      = new Vector3(3.0f,0.5f,1.0f)
    UnityBall     = UnityBall.Find()

Special thanks go to Professors Pieter Spronck, Agostino Cortesi, Michele Bugliesi, Aske Plaat, and Renzo Orsini for their support and constant encouragement.

Last edited Dec 7 at 7:15 PM by giuseppemag, version 46