Aaron Fischer Ingenieur, Vater, Heimwerker, Problemlöser

18 März, 2008

Das MIT Beer Distribution Game

TL;DR:

Im Fach Labor für Softwareprojekte musste ich mit meinem Team über zwei Semester hinweg ein Softwareprojekt planen und umsetzen. Das Ziel war das Spiel The Beer Game vom MIT Institut als Computerspiel umzusetzen.

Fünf Tems haben sich an dieser Aufgabe versucht und es entstanden tolle Spiele (und die meisten davon haben auch funktioniert :). Mein Team bestand aus Marc Hübner, Briseida Sarasola, Thomas Monninger, Daniel Freier und mir. Ich übernahm dabei die Rolle des Projektleiters.

Das Spiel

The Beer Game ist ein Simulationsspiel, das eine Handelskette von Produktion bis zum Verkauf darstellt. Ziel ist es, die Kosten der kompletten Kette so gering wie möglich zu halten. Jeder Spieler übernimmt eine Position eines Lagers oder Produzent, kann Bestellungen an das nächste Glied der Kette schicken und muss die von einem anderen Lager oder dem Endkunden geforderte Menge Bier liefern. Da die einzelnen Positionen nicht bekanntgeben wie viel sie im Lieferrückstand sind und wie viel sie im Lager deponiert haben, bricht das System schnell zusammen wenn eine Position von seiner Bestellung ungewohnt abweicht.

Planung

Anfangs mussten wir das Spiel natürlich als Brettspiel einmal ausprobiert haben und so spielten wir einige Runden zusammen und schrieben uns ein Regelbuch. Dies glichen wir mit den Originalen MIT Regeln ab, so dass wir sichergehen konnten, die Regeln vollständig verstanden zu haben.

Danach machten wir uns an die Planung. Es wurden Pflichtenheft und Lastenheft erstellt, eine grobe Zeitplanung aufgesetzt und viel Diagramme gezeichnet.

Umsetzung

Die Umsetzung erfolgte in Java. Zwei arbeiteten am Server, die anderen drei schrieben den Client und machten die GUI.

Startscreen

Das Spiel sollte über das Netzwerk spielbar sein und auf Client/Server-Basis entwickelt werden. Um die Sache etwas interessanter zu gestalten, haben wir mit einem anderen Team eine gemeinsame Schnittstelle vereinbart. So konnten wir (nach einigen Interoperabilitätstests) Client und Server beliebig austauschen.

Spiel wählen

Da Simulationsspiele allgemein langweilig aussehen und das Brettspiel auch nicht wirklich aufregend war, haben wir uns entschlossen, das ganze etwas dynamischer und anschaulicher zu gestalten. Wir implementierten kleine Animationseffekte wie stapelnde Kisten oder bewegte Pfeile und legten dies auf eine zuvor gerenderte 3D-Szene.

3D

Organisation

Bei der Planung und Aufgabenverteilung verzichteten wir auf Schwergewichte wie MS-Project und nutzten stattdessen ein simples Wiki. Hier hatten wir Meetings protokolliert, Aufgaben verteilt, Stundenlisten geführt, Schnittstellen besprochen und einen Großteil der Dokumentation geschrieben.

Ergebnis

Dank unserer Planung mit Puffer waren wir schon eine Woche vor dem Abgabetermin fertig und hatten so noch Zeit den letzten Schliff an der Dokumentation und den Grafiken vorzunehmen.

Da so gut wie alle in meinem Team Linux oder OSX zur Entwicklung verwendeten und den OpenSource-Gedanken unterstützen, hatten wir (bis auf die aufgezwungenen Programme) nur freie Software im Einsatz. Dazu zählen OpenOffice und LaTeX für Pflichtenheft, Projektauftrag, Präsentationen und co., Subversion als Versionsverwaltung, Eclipse als IDE, GIMP und Blender für Grafiken, ArgoUML für UML-Diagramme, Instiki als Projektwiki, Mantis für die Fehlerverfolgung, JUnit für die automatisierten Tests und ANT für den Buildprozess.

Aus diesem Grund haben wir das komplette Projekt inkl. Programmcode unter die GPL gestellt. Wer es sich näher anschauen möchte oder vielleicht sogar Erweiterungen daran vornehmen will, kann das komplette Projekt hier herunterladen.