Abstract:
In today's society, the pervasiveness and sales of video games is at an all-time high. Video games are used in a variety of application scenarios, from pure entertainment to supporting research, raising social awareness, and training. Video games are no longer developed only by professional programmers, but also by experts in other domains. This has made the problems surrounding the process of game development increasingly evident. One such problem is the lack of a clear methodology for defining video games, supported by user-friendly tools. Indeed, the available tools for making video games are either too specific or too general. When too specific, the abstractions provided by the tool are so poor that only few game genres are expressible. When too general the abstractions provided by the tool are so generic that even expressing simple domain concepts requires a lot of effort.
These problems lead to the process of developing video games being a costly one, in terms of time, money, and necessary knowledge. Such costs negatively affect the development process, and may even lead to the impossibility to develop certain games. When a solution is offered that reduces the cost of game development, this will benefit in particular the developers for whom game development is not their main job.
This thesis starts by analyzing the process of making a video game, and examines the available tools for making them. It then proposes a solution to the high costs of making games. This solution comes in the shape of a programming language that is exclusively focused on the domain of video games. This language, which we
call Casanova 2 (inspired by its predecessor language Casanova, with which it shares goals and philosophy), is designed to offer abstractions built around
the typical aspects of video games. Casanova 2 is not bound to any video game genre. Due to the specificity of the domain of game development, and the strong requirements it brings with it, the compiler behind the Casanova 2 language is able to apply code analysis. Together with a series of optimization layers, it is able to turn complex domain code into a highly-performant executable. Casanova 2 comes with a series of advantages such as embedded networking, and high-performance encapsulation support, which positively affects the production of games.
The thesis evaluates Casanova 2 by comparing it with representative languages, that are often used for video games, on expressiveness, compactness, speed, ease-of-development, and maintainability. It demonstrates that Casanova 2 is either equivalent to or outranks all competitors in these respects. This warrants the conclusion that Casanova 2 achieves its goal of offering a game development language that can be successfully used by a wide variety of developers to build video games.