Modelle und Theorie Verteilter Systeme

Programmierpraktikum: Modelle Dynamischer Systeme

NiveauB.Sc. Informatik, Wirtschaftsinformatik
VorkenntnisseWünschenswert: "Softwaretechnik und Programmierparadigmen"
Gute Programmierkenntnisse in einer beliebigen Sprache, vorzugsweise Java/Scala/JavaScript
Leistungspunkte nach ETCS6 LP
Bestandteile4 SWS Praktikum
TurnusJedes Semester
PrüfungsformPortfolioprüfung
DetailsModulbeschreibung

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
Demanding puzzle game requiring forethought. (i-step bisimulation)
© MoDySy-Teilnehmende

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
Strategy game which requires a little coordination. (State spaces)
© MoDySy-Teilnehmende

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
Puzzle game based on two-dimensional chomsky grammars. (Formal grammars)
© MoDySy-Teilnehmende

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
Pi-tastische Rätsel mit Pithagora. (Pi-Kalkül)
© MoDySy-Teilnehmende

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.

The Tales of Logic
Freitag, 10. Juli 2020
Together on a tricky logic adventure. (Event-Structures)
© MoDySy-Teilnehmende

'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

 

Plague Inc. meets Population Protocols

 

© MoDySy-Teilnehmende

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

 

Bringe Schafe mit Teleportern ins Ziel. (Lambda-Kalkül)

 

© MoDySy-Teilnehmende

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.

 

Tempus Fugit

Freitag, 07. Februar 2020

 

Logik-Kartenspiel als rundenbasiertes Fantasy-RPG (Linear-time Temporal Logic)

 

© MoDySy-Teilnehmende

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

Der Weg ist das Ziel. (Petri-Netze)

 

© MoDySy-Teilnehmende

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

 

Rundenbasiert, HotSeat, Aufbauspiel, 1vs1. (Pi-Kalkül)

 

© MoDySy-Teilnehmende

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.

 

Petri 2019

Freitag, 05. Juli 2019

 

Baue deine Traumstadt und entwickle Produktionsketten! (Petri-Netze)

 

© MoDySy-Teilnehmende

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 Island

Freitag, 05. Juli 2019

 

Wirtschaftssimulation. (Petri-Netze)

 

© MoDySy-Teilnehmende

 

Good Bot, Bad Bot

Freitag, 05. Juli 2019

 

Lead your Bot to victory! (Trace-Equivalence/Bisimulation)

 

© MoDySy-Teilnehmende

 

Undercover Agents and the Funky Portals

Dienstag, 12. Februar 2019

 

Convert the right agents! (Population Protocols)

 

© MoDySy-Teilnehmende

“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.