Inhalt des Dokuments
Showcase zum Programmierpraktikum „Modelle Dynamischer Systeme“
Im Programmierpraktikum „Modelle Dynamischer Systeme“ entwickeln Bachelor-Studierende kleine Computerspiele, die auf diskreten Modellen wie Petrinetzen, Transitionssystemen, Pi-Kalkül und Population Protocols aufsetzen. Im Kern geht es dabei um das Erlernen von Teamarbeitsweisen und Projektmanagement. Aber nebenbei entstehen auch hübsche Spiele, die etwas mit theoretischer Informatik zu tun haben. Auf dieser Seite versammeln sich einige der Ergebnisse.
One Step Too Far
Freitag, 26. Februar 2021
You are a princess and, instead of waiting for a white knight, you're taking fate into your own hands by fighting against the dragon. You're smart, so before you fight you take a look at the playing field and negotiate how many steps he is allowed to take. For every step the dragon takes you have to defend yourself with the same action. If you manage to do the negotiated number of steps, you win and will even get a part of his treasure.
Das Spiel modelliert i-Schritt-Äquivalenz. Jedes Level ist ein eigenes Transitionssystem. Der Drache übernimmt die Rolle des Angreifers und die Prinzessin die der Verteidigerin. Verschiedene Aktionen werden durch verschieden-farbige Kanten dargestellt. Die Welten demonstrieren mehrere Arten der Äquivalenz: bei starker Simulation muss man jeden Zug eins-zu-eins nachmachen; bei schwacher Simulation darf man mit gelben Tau-Schritten überbrücken; bei Bisimulation darf der Drache die Spielfelder wechseln. Indem die Prinzessin am Anfang die Anzahl der Schritte, die sie verteidigen will, auswählt, wird ein i-Schritt-Simulationsspiel durchgeführt.
- „One Step Too Far“ spielen
- Phaser.js / TypeScript (Source)
- Credits: Johanna England, Julian Dschana Kremb, Lucas Hoschar, Lin Fun Cheung, Duy Khang David Dinh, Fabian Stroschke, Iliya Velev, Fabian Onur Willner
Marry Me
Freitag, 26. Februar 2021
- Funny, but stressful race against the timer. (Critical sections / race conditions)
- © MoDySy-Teilnehmende
A simple top-down 2D game where you have to marry the right couple to help your blind father to keep his job. Schedule the time for the bride and the groom to enter the registry office in order to marry each other. Be aware, things can happen, you have to master certain obstacles! Maybe the groom gets tired, maybe the bride panics. It's a RACE against the time. You are responsible to help your dad marry the couple. Play and crack the high-score.
A race condition occurs when the system's substantive behavior is dependent on the sequence or timing of other uncontrollable events. To win the game the sequence of correct couples to marry needs to be met, but random events might keep the right person from being at the designated spot in time. Its the players job to interfere when this happens.
- „Marry Me“ spielen
- Godot / GDScript (Source)
- Credits: Joshua Horstmann, Fiete Brix, Henry Schwerdtner, Daniel Meyer, Ahmet Kerim Tambulut, Sude Ayden, Sarp Güven, Mohammed Bin Sumait
State Finder
Freitag, 26. Februar 2021
A 2D game where you have to move your player with arrows and search the rooms to collect bubbles according to your player's current state. The goal is to reach the end-state by gathering keys, and you can only gather them if you collect the required amount of bubbles.
A state space is the set of all possible configurations of a system. The goal of the game is to reach the given end-state by realizing a possible configuration by collecting the bubbles and keys (input alphabet). The player can only collect the elements which are allowed in their current state.
- „State Finder“ spielen
- Phaser.js / TypeScript
- Credits: Alphan Eracar, Frederic Risling, Daniel Schrenk, Inga Strelnikova, Max Roschlau, Philipp Zorn
Chomsky Crush
Freitag, 10. Juli 2020
You start with an 8x8 word consisting of sheep. To change or shorten this word, you have to use a set of production rules given per level. The goal of each level is different and you can achieve them by letting sheep interact with each other. Reach the goals with as few moves as possible and a lot of points!
The Chomsky hierarchy consists of four types of formal grammars. The three level are build upon these types. Level 1 and 3 are recursively enumerable with the production rules of tap, swap and mix. Level 2 is context-sensitive with the only production rule of evaluating two sheeps to two sheeps of another color.
- „Chomsky Crush“ spielen
- Phaser.js / TypeScript (Source, TU-Berlin-intern)
- Credits: Laura Keller, Claudia Tulasch, Louisa Nau, Sven Hoferichter, Nicolas Kleinholz, Tim Winkler, Gustavo Eggert Martinez, Melissa Altin
PIrats
Freitag, 10. Juli 2020
Pithagora wurde ein PIcrochip implantiert, wodurch sie sich nun fernsteuern lässt. Nutze diese Macht weise und führe Pithagora durch geschicktes Kombinieren von Pi-Befehlen zum Sieg. Tauche im ersten Level ein in die malerische Welt von Pindien, in dem dir Karl PIroklammer erklärt, wo's lang geht. Besegle die Pieben Weltmeere und jage sagenumwobene Schätze, von denen du noch nie gehört hast.
Dies ist ein Knobelspiel, das auf dem Pi-Kalkül basiert und den Spieler in diese Art des Denkens einführt. Im Pi-Kalkül gibt es Prozesse und Namen (Kanäle). Die Prozesse laufen meist nebenläufig und kommunizieren über Kanäle miteinander, über die sie Namen verschicken und empfangen können.
- „PIrats: Die Abenteuer der Pithargora“ spielen
- Phaser.js / TypeScript (Source, TU-Berlin-intern)
- Credits: Jakob Balasus, Andreas Paul Bruno Lönne, Eloi Sandt, Mohammad Ahmad, Christian Emanuel Wallisch, Muaaz Chihabi
The Tales of Logic
Freitag, 10. Juli 2020
'The Tales of Logic' is a riddle adventure game. The game is played as duo multiplayer to explore the world together. You can meet dangerous bandits trying to kill you as well as people who need your help. Every riddle you solve influences the game and following riddles that you may try to solve so be careful of your choices.
Event structures are formal models consisting of a finite set of atomic, non-repeatable events, causal relationships of dependency and a rule-based formalism. Events can add or delete dependencies (Dynamic-Causality Event Structures). Solving various puzzles or failing them has an impact on later options.
- „Tales of Logic“ spielen
- Phaser.js / TypeScript (Source, TU-Berlin-intern)
- Credits: Jon Schnäcker, Mai Duong, Erik Fischer, Sarah Lengfeld, Christina Lütjering, Kubilay Eren, Luca Monaco, Amira Hrustic
Quarantine
Freitag, 10. Juli 2020
Quarantine ist ein Echtzeit-Manager-Spiel, in dem ihr als Staat versucht, eine Epidemie zu stoppen. Die kritische Lage gilt es mithilfe von Lockdowns, Tests, Impfungen und diversen Skills einzudämmen. Achtet allerdings auf die Finanzen, greift zu strikt ein und die Steuereinnahmen bleiben aus. Schützt die Bevölkerung, investiert in die Forschung und vernichtet das Virus.
Quarantine ist ein RTS-Spiel, in dem ihr als Staat versucht, eine Epidemie zu stoppen. Die kritische Lage gilt es mithilfe von Lockdowns, Tests, Impfungen und diversen Skills einzudämmen. Achtet allerdings auf die Finanzen, greift zu strikt ein und die Steuereinnahmen bleiben aus. Schützt die Bevölkerung, investiert in die Forschung und vernichtet das Virus.
- „Quarantine“ spielen
- Phaser.js / TypeScript
- Credits: Chandimal Galmangoda Guruge, Sebastian Führ, Jakob Hartmann, Marvin Kruber, Shao L., Hien Tran, stagnum, Nastassia Lukyanovich, Paula Blechschmidt
Lamda-Hirte
Freitag, 10. Juli 2020
In dem Rätsel Spiel „Lambda-Hirte“ bekommt man die Aufgabe, auf der Wiese grasende Schafe zurück in die Scheune zu bringen. Diese Aufgabe erfüllt man, indem man Teleporter auf verschiedene Gras-, Sand-, Steinfelder oder andere Teleporter platziert, welche auf wiederum andere Felder abbilden. Wenn der Spieler das Kommando gibt, werden die Schafe auf das Zielfeld teleportiert.
Die Teleporter die man nutzt, können durch typisierte Lambda-Terme beschrieben werden. Es sind sehr simple, da es nur einen Eingabe- und einen Ausgabe-Typ gibt. Als Eingabe/Ausgabe werden die Tiles (Gras, Stein oder Sand) genutzt. Beim Typisierte-Lambda-Kalkül können auch mehrere Eingabe- und Ausgabe-Typen geben, wir haben uns allerdings dagegen Entschieden, weil es das Spiel zu kompliziert macht.
- „Lambda-Hirte“ spielen
- Phaser.js / TypeScript
- Credits: Lennart, Kim Jana, Ali, Daniel, Simon, Charlotte
Tempus Fugit
Freitag, 07. Februar 2020
Dunkle Geschehnisse häufen sich in dem Archipel von Tempus Fugit. Als Willy der Magier behauptet ihr euch durch strategische Zauberei gegen Wellen an Feinden. Die Nutzung seiner Zauber erfordert bestimmte Runenfolgen, welche logisches Denken erfordern. Doch Vorsicht, denn von ungeschickter Runenplatzierung profitiert auch der Gegner!
Das Gameplay basiert auf der strategischen Verteilung von Runen (Variablen) in nacheinander ablaufenden Runden. Anhand von dieser linearen „Zeit“ abhängigen Variablenbelegungen können temporallogische Bedingungen für verschiedene Aktionen erfüllt oder verhindert werden. Spezifisch sind zum Beispiel alle Zauberkarten des Spielers mit einer Bedingung versehen, die von von der Kampfrunde ausgehend zukünftigen oder vergangenen Variablenbelegungen abhängig sein können.
- „Tempus Fugit“ spielen
- Phaser.js / TypeScript
- Credits: Tobias Loch, Mustafa Mohsen, Florian Eyert, Kejni Dema, Maximilian Lukas Stamm, Alessio Nicolo Perna
Petri Dungeon
Freitag, 07. Februar 2020
Bei Petri-Dungeon geht es darum, den richtigen Pfad zu gestalten, um zu Zielpunkten zu gelangen. Auf dem Weg dorthin müsst ihr an Hindernissen vorbei und teils Objekte einsammeln. Die Spielfigur kann sich aufteilen und wieder zusammengeführt werden.
Die Mechanik basiert auf Prinzipien von Petrinetzen. Am Anfang der Levels gibt es jeweils einen Choice-Punkt und die Spielenden setzen weitere Fork- und Join-Punkte, um die Spielfigur im richtigen Zustand ins Ziel zu bringen.
- Phaser.js / TypeScript
Space Pies
Freitag, 05. Juli 2019
Space Pies ist eine rundenbasierte Raumschiffschlacht, in der zwei Spieler mit ihren eigenen Raumschiffen gegeneinander antreten. Das Ziel des Spiels ist es alle Lebenspunkte des Gegners abzuziehen und somit siegreich hevorzustehen. Dabei müssen die Spieler die richtige Strategie finden, um ihre Raumschiffe so modular zu erweitern, dass diese bestens gewappnet sind für den Kampf. Dabei soll ebenfalls die Simulation durch Terme des Pi-Kalküls im Vordergund stehen, sodass die Nutzer spielend leicht den Pi-Kalkül erlernen können.
Space Pies wurde komplett auf dem synchronen Pi-Kalkül, mit Einbezug des Choice-Operators, aufgebaut. Jedes Spielelement und deren Interaktionen miteinander werden durch Terme des Pi-Kalküls dargestellt und simuliert. Replikationen stellen wiederaufkehrende Elemente wie den Rundenablauf dar. Channels beschreiben Elemente wie Schilde, Waffen, Upgrade-Möglichkeiten oder dienen zur Synchronisation. Choices dienen unteranderem zur Nutzerinteraktion.
- „Space-Pies“ spielen
- Phaser.js/TypeScript-Source (TU-Berlin-intern)
- Credits: Adrian, Louis, Janis, Kara, Lars, Max, Patrick B., Patrick R.
Petri 2019
Freitag, 05. Juli 2019
Petri2019 ist ein Aufbauspiel, in dem man durch geschicktes Ressourcenmanagment eine imposante Stadt nach eigenen Vorstellungen erbaut und kleinere Herausforderungen auf dem Weg zur Weltstadt erledigen muss. Es handelt sich um eine Wirtschaftssimulation, bei der man mit einen kleinem Startbudget, bestehend aus Rohsoffen wie z.B. Holz, Gold oder Stein anfängt und dann durch das sinnvolle Investieren in das Einrichten von Produktionsanlagen und das geschickte Witerentwickeln von Ressourcen und Produktionsketten weiter expandieren kann. Dabei wählt man den Einsatz mit Bedacht, um seine Ressourcen zu maximieren und zu vermeiden, die Produktionsketten nicht mehr beliefern zu können.
Das Spiel basiert auf dem Petrinetz-Formalismus. Ein Petrinetz ist ein gerichteter Graph, der aus Plätzen, Transitionen und Kanten besteht. Ein Platz ist dabei eine passive Komponente, die in der Lage ist, Dinge zu speichern, eine Transition eine aktive Komponente, die Dinge erzeugen kann, und Kanten bilden die abstrakten Beziehungen zwischen diesen Komponenten. In unserem Spiel werden alle Gebäude, Straßen und Lagerplätze dadurch repräsentiert, was man mit einem Klick auf die Petrinetzansicht visualisieren kann.
- „Petri 2019“ spielen
- Phaser.js/TypeScript-Source (TU-Berlin-intern)
- Credits: Valentin, Tim, Shahla, Nils, Niklas, Niels, Jonas, Eugen, Christian, Anna
Good Bot, Bad Bot
Freitag, 05. Juli 2019
- „Good Bot, Bad Bot“ spielen
- Unity/C#-Source (TU-Berlin-intern)
Undercover Agents and the Funky Portals
Dienstag, 12. Februar 2019
“Undercover Agents and the Funky Portals” is a puzzle game, where one has to find the right sequence of actions to complete a level. The level is considered complete, when all the agents are colored green. A click activates an agent, and then it moves towards an inactive agent of an opposite color, or moves away from the activated agent of an opposite color, depending on which agent is the closest.
- „Undercover Agents and the Funky Portals“ spielen
- Vanilla Scala.js