Student Project: Programming Games

Universität der Bundeswehr München, 2020–2023


Abstract icons for a UML diagram, some program code, and a game controller

Starting in 2020, I have been one of several project group supervisors in the Programming Project at the UniBw M. Having learned the fundamentals of object-oriented programming, in this module the students gather in teams and develop their first full software project, a reimplementation of an existing game concept, from start to finish.

MORE Racing

Project Team

  • Luca Doll
  • Leona Fischer
  • Philipp Schmauder
  • Leon Schramm
  • Fabian Schröder
  • Leon Schröder
  • Joshua Stöhr


  • Julian Fietkau
  • Michael Trautwein

MORE Racing is an arcade-style racing game based on MORE Sharing, the university’s programme for renting bikes and scooters. Pick from a selection of three different vehicles and race against AI opponents to be the first to secure one of the coveted limited-quantity dog photo calendars. Or challenge yourself to complete three rounds on the second track as quickly as you can and compare times with your friends. In both game modes, batteries (for electric vehicles) and enegy drinks (for non-electric bikes) strewn along the course will provide the extra boost you need.

This year continues the use of jMonkeyEngine for the creation of a 3D game, although the provided scaffolding this time was for a racing experience. The team decided on a game themed around the university’s bike sharing programme, and on incorporating real-life influences and in-jokes from around campus. For the first time during my supervisory tenure in the programming project, the group themselves created the video seen on this page.

For the purpose of this video, an audio track under copyright by Warner Music was replaced with a legal alternative. Music: Nesterouk – Hip-Hop Funk.


Project Team

  • Malte Groß
  • Chayanant Jitjangkul
  • Janek Neckel
  • Johannes Reuß
  • Maximilian Römpler
  • Lara Rühl
  • Dennis Wertgen


  • Julian Fietkau
  • Akay Schuster

Rum-Geballer is an action adventure exploration game based on Pirates of the Caribbean. You play as Jack Sparrow and have to fight through three unique stages to recover your treasure. Your enemies, the Empire’s soldiers and Davey Jones’s crew, have to be gunned down or slashed with your saber. Silver dubloons and bottles of rum can be found along the way. Your adventure will lead you from a deserted tropical island to the streets of Port Royale and then to the open sea, where you will need to recover the heart of Davey Jones.

In contrast to the previous years, for the 2022 programming project the students were presented with existing scaffolding for a 3D game based on jMonkeyEngine. The team decided to develop a game themed around Pirates of the Caribbean and focused on a compelling game world. The three stage labyrinths are hand-crafted and the variety of collectibles offers incentives for high score chasers.

For the purpose of this video, audio files under copyright by Disney were replaced with legal alternatives. Music: Kevin MacLeod.

Elli Is You (Baba Is You)

Project Team

  • Coleen Cabalo
  • Lars Gatzemeyer
  • Marcel Kinzen
  • Jonas Lacher
  • Tim Meyer
  • Niklas Schäfer
  • Elia Sperr


  • Julian Fietkau
  • Klaus Willimczik

In Baba Is You, the rules of the game are tangible parts of the world. Initially controlling a small white creature named Baba, the player can deconstruct and rearrange the rules that govern the logic of the game to solve puzzles consisting of various environmental obstacles. Under ordinary circumstances a key might open a door, but if no key is available, why not change the rules so the door can be opened with some water?

In this variant of the game, the default player character is a purple elephant named Elli. Featuring six levels of increasing difficulty, the player must help Elli navigate the game logic to create a winning state. Finishing the game unlocks a custom level mode, where more levels can be loaded from external text files. As a creative twist not present in the original game, Elli can be scripted: the player may write out a list of moves in advance to solve a level, including the option to loop instructions. In this way, Elli Is You intends to introduce basic programming concepts to its audience – which is also why the color scheme is inspired by the default IntelliJ syntax highlighting.

Deutschland Inc. (Factorio)

Project Team

  • James Beutler
  • Rodney Brassat
  • Niklas Mörsdorf
  • Johannes Münch
  • Chris-Miron Rickert-Nühs
  • Paul Schöne
  • Akay Schuster
  • Alexander Theiss


  • Julian Fietkau
  • Thomas Ottenhus

Factorio is a game about industriousness and industry. Stranded on an alien planet, the player is tasked with building up automated resource production lines from nothing. Starting with a few pieces of coal and iron ore mined from the ground, they need to move from handling individual hand-operated smelters while fending off hostile alien insects to fully automatic production lines for components and products of ever-increasing complexity fed by automatic drills and huge amounts of energy. After all, the rocket for the way home cannot be built by hand.

This version of the game moves the setting to a fictionalized branch of the German military and a lone engineer fending for survival behind enemy lines. The beginning phase of the game closely mirrors the original, featuring similar procedural world generation and a thread of production moving from basic coal smelting to electrical power lines and transport belt networks – although here, the enemies are hostile soldiers instead of alien critters. As in the original, the way home is secured by researching better technologies.

Plants vs. Zombies

Project Team

  • Desiree Arnold
  • Noah Dieckmann
  • Sven Keineke
  • Dominic Knopf
  • Heiner Lüken
  • Matthias Sporck
  • Florian Stender


  • Julian Fietkau
  • Bastian Bauers

Plants vs. Zombies is a single-player game commonly ascribed to the “tower defense” genre. The game runs in real time and has waves of attacking zombies approach from the right side of the screen. The player is tasked with building suitable defenses to prevent them from reaching the left side of the on-screen lawn. To that end, various plants can be placed in the zombies’ path, but this ability is contingent on the game’s main resource – sunlight – which must be gathered and farmed.

This version of the game puts its own twist on the visual style of the original, featuring all custom artwork. The plant arsenal has been reduced to a subset of the original game and some other aspects of the gameplay (zombie variety, environmental aspects, progression unlocks) have also been streamlined. One of the bigger programming challenges was making sure that no matter how many plants, zombies and sunlight nuggets are on screen, everything behaves as it should and animates fluidly. The final stage of this game features an all-new boss fight (against “Dr. Zomboss”), and upon winning it, the player gains access to an endless mode that consists of increasingly difficult waves of zombies.


Project Team

  • Jakob Bräunlich
  • Jakob Layer
  • Alexander Macharski
  • Jan Magnusson
  • Robin Marth
  • Florian Nußbaum
  • Alessandro Pedace


  • Julian Fietkau
  • Ibrahim Hamade

Pokémon is a game consisting of several complex subsystems, such as its 2D world and the player’s movement therein as well as the turn-based fights based on attack moves with element type advantages. Like in the original games, wild Pokémon can be encountered in the tall grass, and they can then be caught and trained. The game features a world map sporting two towns with Pokémon Centers and PokéMarts, a number of NPCs, and a gym with five enemy trainers ascending in difficulty.

Due to the time constraints of the Programming Project, this version of the game naturally has a reduced scope compared to the original. It contains 304 Pokémon species (the real franchise is up to 900 at the time of writing) and only five of the 18 element types found in the original series. The fighting moves are restricted to pure attack moves (the Pokémon do not have stats other than HP and AP) and the only kind of item in the game are Pokéballs. Nonetheless, the team went through significant effort to replicate the menu and dialog UI experience from the early-2000s Pokémon games. At the end of the course time, the project even gained a multiplayer component that features not only the possibility of Pokémon fights between players, but also a shared overworld with real-time movement and text chatting.


The Programming Project is a core module in the undergrad computer science degree at UniBw M. It builds upon earlier courses (most specifically Object-oriented Programming) to guide students from their experience with small-scale exercises in solo programming to full-fledged team-based software development projects.

After forming teams of 6 to 8 students, they pick a game concept from a provided list. Designing and implementing this game is their overarching goal for the next three months, during which they proceed through a number of project phases which reflect the classic waterfall model of software development: first they explore and define the goal in detail, then they workshop a software architecture design (also in increasing detail) before starting their implementation, for which the Programming Project uses Java along with a suitable presentation layer (JavaFX or jMonkeyEngine). The tail end of the project allows for minor revisions and bugfixes before the results are presented and discussed. Besides the finished implementation, project results also consist of documentation artifacts such as UML class diagrams, flow charts, state and sequence diagrams, use case descriptions and unit testing manuals.

Throughout this entire process, the student groups share weekly meetings with their tutor (a senior student who has already completed the course) and their supervisor (a university employee). My role as the supervisor is partly organizational – ensuring that commitments are being kept, that documentation is being completed on time, and that the work stays goal-oriented – and partly technical when it comes to discussions about the details of software architecture or the use of modern programming tools.