Developing a MarbleRace Game


WS 2014






Campus , Results
Note: This page is for a course from a previous semester.
Find a list of current courses on the Teaching page.
Course Dates:




PreMeeting 25.09.2014 10:00 118
Kick-Off meeting 14.10.2014 10:00 118
MileStone 1 18.11.2014 09:00 118
MileStone 2 16.12.2014 09:00 118
MileStone 3 20.01.2015 09:00 118
Final Release 15.02.2015 23:59
Final Presentation 10.03.2015 10:00 118

In this practical course, the students will implement a MarbleRace game for the PC platform, which combines concepts of Marble Madness and CarRacing Games like Mario Kart, with eye catching 3D visual effects (cf. Marble track, Pinball).

The game can be a single player game where you play against time or AI, or it can be a multiplayer game where you and your friends sit together controlling individual marbles. Via a keyboard or a joystick, you can apply directional forces to your marble, other parts of the movement is controlled by the physics (e.g. gravity and terrain). An example demonstrates the concept in 2D can be found here. For a multiplayer mode, you can decide if it is going to be a competition or a cooperation, i.e., are you going to help or sabotage each other?

Participants will work in small teams. Within each team, there will be subteams concentrating on the game engine (graphics and game logic) or the content creation. Although the students can focus on a smaller problem, they have to ensure that their parts fit into the whole framework of the game. Therefore, the intercommunication between the group members is of a very high priority in order to define precise interfaces and common data structures.

Basically, students will learn to organize themselves as part of a bigger project. Depending on the topic of the group, students will learn to implement a specific part of a game.

  • Graphics:

    For a high visual quality of the game, students will have to implement several shaders in the rendering pipeline that is based on OpenGL. This includes effects like complex materials (e.g. relief mapping) and post processing effects (e.g. glow, deferred lighting, motion blur, reflection). A template based on ACGL (Aachen Computer Graphics Library, a high level abstraction of OpenGL) will be provided for a quick start.

  • Game Logic:

    Although the rendering is in 3D, the game logic is implemented in 2D. Students will implement basic physics simulation, like collision and gravity. The movement of the marble will be restricted by the static scene, e.g. the marble can be blocked by an obstacle. Of course if you want you can create destructible assets and roll over! Students should also handle the event trigger, e.g. earn speed boost when hit bonus box.

  • Content Creation:

    Students will have to create the game world, e.g. a game level or a unique scene for the rolling marble. Since this kind of modeling should be done on a very high abstraction level, single instances of geometry will have to be created with common tools like blender or 3dsmax. Furthermore, the group has to create the textures for the geometry, which can be done with tools like gimp or photoshop.

Every group can propose its favourite game concept and themes, e.g. space racing/catoon style in a kids room.

Software Engineering

The course will teach the participants how to develop a complex project using software engineering techniques.

  • Application Specification:

    In our scenario, the supervisors will provide a description for each part of the project. The students have to understand it and clarify any questions in the first stage of the project.

  • Software Design:

    The students have to create rough class diagrams that describe the data structures and the internal relationships of their application. The team has to organize itself and it has to set the responsibilities for the different components of the software. In this stage, any common interfaces and data structures with other groups have to be defined.

  • Coding:

    Each group has to implement their specific topic. Most of the work can be done independently of other groups as long as the interfaces and data structures do not change. If any changes are necessary for a single group, it has to make an appointment with the other groups to clarify the changes as fast as possible.

  • Testing:

    The students will have to test their application with artificial data as long as it is not integrated into the full framework. However, in order to ensure the quality of the product, the supervisors will also test the application from time to time and therefore the program has to run on a specific target computer that is provided by our chair.

  • Integration:

    After each milestone, the groups will have to integrate the single parts in order to present the full game in regular time intervals.

  • Report:

    During the course, the students should make some notes on problems, difficulties and solutions which they have chosen. At the end of the course, they have to hand in a very small report including the mentioned aspects.


  • Students have to know C/C++ programming.
  • OpenGL: It would be better to know OpenGL.


Disclaimer Home Visual Computing institute RWTH Aachen University