Repository navigation
Crowd Controlled add rooms and improve controlls - #3336
Merged
Merged
Conversation
AMatutat
marked this pull request as ready for review
October 28, 2026 07:38
AMatutat
marked this pull request as draft
October 29, 2026 13:37
AMatutat
marked this pull request as ready for review
October 30, 2026 08:24
Flamtky
requested changes
Oct 30, 2026
Flamtky
left a comment
Member
There was a problem hiding this comment.
Ein paar Punkte habe ich gefunden, vor allem beim Startfeld des Helden.
Flamtky
requested changes
Oct 31, 2026
Flamtky
left a comment
Member
There was a problem hiding this comment.
Hatte noch einen dummen Test gefunden
A puzzle window now ends ten seconds after half the voters voted, and three seconds after all of them did. Multiple choice answers show A, B, C, D instead of numbers on the game screen, in the tally, and on the devices; devices still send the option number as their vote.
Both post surveys ask on the learning page whether the escape room was better or worse than a short, normal recap at the end of the lecture, once for how much it was liked and once for how much it helped understanding.
"Benutzen" now finds an object on every tile its hitbox reaches into, not only on the tile of its position, so a board two tiles wide works from in front of either tile. Objects without a hitbox keep their own tile.
Terminals show a step of the modelling cycle with a digit; Stachowiak draws the cycle on the whiteboard after terminal 3, and its order gives the door code. The chest has a number lock solved with the graph model of the laboratory. The lab is one room of 9 by 5 tiles. Terminals 1, 2 and 4 ask the automaton room's questions 1, 2 and 4, and the surveys (now v2) ask about modelling and regular languages.
In the FOMO room the audience picks a target from a list instead of
voting on single steps. The hero walks there along the shortest free
route, turns to the target and uses it. The list grows with the story.
Rooms mark targets with AudienceTarget; rooms without targets keep the
arrows. The game screen shows each target's letter and name above it
and outlines only the targets the audience can pick.
Choice answers show A, B, C, D again on the game screen, in the tally
and on the devices. The gamify commit had turned them back into numbers.
The new room rooms.ki.KiRoom ("Gefangen im Entscheidungsbaum") asks five
questions about machine learning and decision trees. Its tutorial shows
the contact page of Carsten Gips, and the door code is 268.
Private helpers of the room levels use line comments, so checkstyle
passes.
The main menu waited until something answered on the game port and then connected to it. A server left over from a crashed round answered too, so every new round joined that old game. The menu now checks that the port is free before it starts its own server. If another program holds the port, it shows "Port 7777 ist belegt" and starts nothing.
Master split the deco-image prefab into deco-interaction and show-image. The printers in the tutorial rooms of both rooms now use a deco-interaction prefab whose "interacted" event shows the image through a show-image prefab. The rooms find the printer through DecorationInteractionPrefab to offer it as a target.
- rooms.escape.EscapeRoom starts a room from its values, and EscapeRoomLevel holds terminals, helper, chest, door lock, tutorial, computer and whiteboard. The automaton, FOMO and AI rooms keep only their texts, questions and codes. - The level editor of these rooms saves to game/assets/levels/<room>. - audience: drop TileStepper.snap() and place(). The server already puts the hitbox center on the start tile. - Remove the unused wlevels/fomo level and ServerProcessTest.
Flamtky
approved these changes
Oct 31, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dungeon: Add three audience escape rooms and let the audience pick targets instead of steps
Der PR baut auf dem Publikumsmodus aus #3307 auf. Er bringt drei Escape-Rooms für Lehrveranstaltungen
und ändert, wie das Publikum die Figur steuert. Im FOMO- und im KI-Raum stimmt es nicht mehr über
jeden Schritt ab, sondern wählt ein Ziel aus einer Liste. Die Figur läuft per Wegsuche selbst dorthin
und benutzt das Ziel.
Relay
weiterhin die Nummer der Antwort, ab 1 gezählt.
web/app.js,web/style.css).Damit die Änderungen ankommen, muss das Relay neu deployt werden. Ohne Deploy läuft alles weiter,
die Geräte zeigen dann nur Buchstaben ohne Antworttexte.
das Spiel sie mitschickt (
answers). Die Hinweise darunter verweisen dann nicht mehr auf denSpielbildschirm.
wählen die Buchstabentasten, groß oder klein. Beschriftete Optionen wie Ja/Nein behalten die
Zifferntasten.
Engine und Publikumsmodus
Das Paket
enginebleibt unverändert, alle Änderungen liegen infeature.*.Zielwahl statt einzelner Schritte
AudienceTargethat einen Namen und eine Bedingung, wann das Ziel in derListe steht.
AudienceTarget.tile(...)markiert ein Feld wie den Ausgang.AudienceContext.Gotoalle Ziele, deren Bedingunggilt und die die Figur erreicht, sortiert nach Namen. Die Geräte zeigen ihn als Single Choice
(
controls()liefertchoice). Tracking und Spielbildschirm sehen ihn alsgoto, gezählt wirdder Name des Ziels.
TileStepperplant den Weg per Breitensuche über die Felder. Ein Feld zählt nur, wenn auch eineinzelner Schritt dorthin ginge. So weicht die Suche Terminals, Truhen und NPCs aus, was die
Wegsuche der Engine nicht tut. Die Figur läuft den Weg Feld für Feld, dreht sich zum Ziel und
benutzt es. Was hinter einer geschlossenen Tür liegt, fehlt in der Liste.
bisher mit Pfeilen.
abgestimmt haben.
Spielbildschirm
Positionen mit dem HUD-Zustand, der Client rechnet sie mit der Kamera auf den Bildschirm um.
InteractionFeedback.showAlways(...)umrandet alle interagierbaren Objekte dauerhaft, ohneMauszeiger, und das Objekt, das „Benutzen“ auslösen würde, rot. Eine zweite Variante nimmt einen
Filter. In Räumen mit Zielen umrandet sie nur die wählbaren Ziele, der rote Rand entfällt.
Stimmenverteilung (
DialogFactory.letterChoiceOptions,DialogFactory.choiceLetter).RoomCamerahält die Kamera auf der Mitte des Raums und zoomt so, dass der ganze Raum zu sehenist.
Abstimmung
AudienceSystem.windowEndlegt fest, wann ein Fenster früher endet. Rätsel und Zielwahl enden10 Sekunden, nachdem die Hälfte abgestimmt hat, und 3 Sekunden, nachdem alle abgestimmt haben.
Texte enden nach 5 und 2 Sekunden. Einzelne Schritte behalten ihre Zeit.
deco-image, bekommen eine „Weiter“-Abstimmung. Die Stimme schließtdas Bild wie sein Schließen-Knopf.
answers).Bewegung und Level
Figuren mit größerem Sprite wie der Rogue.
AudienceSystem.standOnstellt NPCs genauso auf einFeld.
lässt sich deshalb von vor beiden Feldern benutzen.
Decohat 33 neue EinträgeLab…mit den Labor-Grafiken ausobjects/tech. Stehende Geräteblockieren ihr Feld, Wandgeräte nicht.
Neue Räume
rooms.automaton.AutomatonRoom, „Gefangen im Automaten“ (runAutomatonRoom). Vier Fragen zuregulären Sprachen und Grammatiken, Kleene repariert Terminal 3, Steuerung mit Pfeilen.
rooms.fomo.FomoRoom, „Gefangen im Modell“ (runFomoRoom). Modellierung und reguläre Sprachen,Vorraum mit Übungsfragen, Zielwahl, Rätsel mit Modellierungskreislauf und Graphmodell.
rooms.ki.KiRoom, „Gefangen im Entscheidungsbaum“ (runKiRoom). Fünf Fragen zu maschinellemLernen und Entscheidungsbäumen, Zielwahl. Quinlan baut Terminal 4 wieder auf, und die Reihenfolge
der Ziffern folgt dem Informationsgewinn.
(
surveys/pre-<raum>.json,surveys/post-<raum>.json). F4 im Hauptmenü öffnet den Level-Editor.game/doc/audience.mdbeschreibt die Räume, die Zielwahl und wie ein eigener Raum Ziele setzt.Tests
TileStepperTest), Zielwahl und Buchstaben(
AudienceContextTest), das frühere Fensterende (AudienceSystemTest) und den Filter derUmrandung (
InteractionFeedbackTest).durchgespielt. Er ist nicht eingecheckt.
./gradlew :audience:relay:runundDUNGEON_AUDIENCE_RELAY= ./gradlew :game:runFomoRoom.spotlessCheck,checkstyleMain,checkstyleTestund:game:testlaufen durch.