Abstract |
Serious games are video games primarily designed for learning purposes, with related applications
and positive influence in various fields including primary education, health and engineering.
Serious games for programming encourage players to use mainly algorithmic mechanics to carry
out game tasks and complete missions. Such mechanics may be formally algorithmic, or not
theoretically linked to strict programming principles in some circumstances, but they are
nevertheless classified as programming-related games. We present a novel serious game in which
the main goal is to develop a typical 2D game.
In this context, live programming refers to the capability to alter the program while it is still
running by reprogramming on-the-fly itself. Technically, this is not related to self-modifying
programs, as the modification logic is externally originated, either by the programmer or even by
another third-party system. In terms of development life-cycle, the traditionally separated
editing, compilation, linking and execution loops become a single running mode, thus providing
an interactive experience with immediate feedback and effect on program changes.
The development of games is overall a very demanding process even for simple cases, generally
organized as a simulated universe (game terrain) with animated objects (game characters) that
interact with each other, while the simulation pace is regulated with successive timed game loops.
Both the behavior of game characters and the reaction of the game terrain to various events are
programmed, making instant change and testing a powerful tool, especially to newcomers and
junior programmers.
In this thesis, we present a novel learning-oriented interactive development environment
supporting rapid visual programming of typical 2D games. We put particular emphasis in
providing an integrated environment where typical game asset editing, such as character
animation and game terrain properties, are effectively interleaved with more demanding aspects
like game scripting, immediate programming and iterative testing. In particular, we enable instant
scripting of any pickable game object with a live visual programming editor, with all actions taking
place during gameplay, essentially removing any boundaries between editing, implementation
and testing phases. Even while the game is played, new game objects may be created and
modified, by attaching new attributes and events, and adding custom event handlers. Object
attributes may be updated on-the-fly by the user either interactively, or by adding new visual code
causing such modifications.
Finally, in our developing environment, time may be freely rewinded and replayed, undoing or
redoing any relevant user actions and game state modifications internally, providing a unique live
debugging facility. It is possible to drop the entire history onwards, from any point in time, and
continue from there throughout such sessions. With a video player inspired user interface, timetravel is more familiar and debugging with it becomes far easier to manage. We have created as
a case study a remake of the classic Super Mario video game, to demonstrate the process of
developing a game from scratch while utilizing all new features.
|