Aus #429, Nachbetrachtung nach Etappe 5d („was am MCP noch fehlt“). Punkt 5 von 6.
Anlass
Beim Nachbau des 5d-Tests sollte der Agent prüfen, ob der Player des Intros zwischen 0,5 s und 2 s Spielzeit zu sehen ist. Das Fenster ist ihm zweimal durchgerutscht: Zwischen play und dem nächsten get_runtime lag schon mehr als 2 s. Erst play_input mit {"wait": 1} und danach sofort play mit pause hat getroffen, und auch das nur ungefähr (t = 1,3 s).
Stand heute (im Code nachgesehen)
play kennt play, pause, resume und stop, ohne Zeitangabe.
play_input zählt hold und wait in Spielsekunden. Am Ende eines Aufrufs läuft das Spiel aber weiter, bis der nächste Aufruf kommt.
get_runtime liest den Zustand zu dem Zeitpunkt, an dem der Aufruf ankommt.
Vorschlag
play_input bekommt einen Schritt {"pause": true}: Das Spiel hält genau nach dem Schritt davor an, also auch nach einem wait bis zu einer bestimmten Spielzeit.
Alternativ oder dazu: play mit until (Spielsekunden). Das Spiel startet oder läuft weiter und hält bei dieser Zeit an.
Danach liest get_runtime den angehaltenen Zustand, und screenshot zeigt ihn.
Abzuwägen beim Plan: Ein Behavior kann die Spielzeit selbst anhalten (play_input kennt das schon als Fehlerfall), und ein Tab im Hintergrund zeichnet keine Frames.
Aus #429, Nachbetrachtung nach Etappe 5d („was am MCP noch fehlt“). Punkt 5 von 6.
## Anlass
Beim Nachbau des 5d-Tests sollte der Agent prüfen, ob der Player des Intros zwischen 0,5 s und 2 s Spielzeit zu sehen ist. Das Fenster ist ihm zweimal durchgerutscht: Zwischen `play` und dem nächsten `get_runtime` lag schon mehr als 2 s. Erst `play_input` mit `{"wait": 1}` und danach sofort `play` mit `pause` hat getroffen, und auch das nur ungefähr (t = 1,3 s).
## Stand heute (im Code nachgesehen)
- `play` kennt `play`, `pause`, `resume` und `stop`, ohne Zeitangabe.
- `play_input` zählt `hold` und `wait` in Spielsekunden. Am Ende eines Aufrufs läuft das Spiel aber weiter, bis der nächste Aufruf kommt.
- `get_runtime` liest den Zustand zu dem Zeitpunkt, an dem der Aufruf ankommt.
## Vorschlag
- **`play_input` bekommt einen Schritt `{"pause": true}`**: Das Spiel hält genau nach dem Schritt davor an, also auch nach einem `wait` bis zu einer bestimmten Spielzeit.
- Alternativ oder dazu: **`play` mit `until`** (Spielsekunden). Das Spiel startet oder läuft weiter und hält bei dieser Zeit an.
- Danach liest `get_runtime` den angehaltenen Zustand, und `screenshot` zeigt ihn.
- Abzuwägen beim Plan: Ein Behavior kann die Spielzeit selbst anhalten (`play_input` kennt das schon als Fehlerfall), und ein Tab im Hintergrund zeichnet keine Frames.
admin
added this to the Development project 2026-10-18 19:38:51 +02:00
admin
moved this to Next in Development on 2026-10-18 19:39:03 +02:00
play mit until:play, resume oder pause lassen das Spiel bis zu dieser Spielzeit laufen und halten es dort an. Der Aufruf antwortet erst, wenn das Spiel steht. get_runtime und screenshot zeigen danach genau diesen Moment.
Genau: Der Frame, der über die Zeit hinausginge, wird gekürzt (frameWithin in src/core/time.ts, verwendet in PlaySession). Das Spiel steht auf 0,5 s, nicht einen Frame später.
play_input hat einen letzten Schritt {"pause": true}. Nach einem wait hält das Spiel genau zu dessen Zeit, nach einer Taste oder einem Klick sofort. Die Antwort nennt die Spielzeit und ob das Spiel steht.
get_runtime und play_input geben Zeiten auf die Millisekunde an, nicht mehr auf Hundertstel.
Die offenen Fragen, entschieden
Eine Pause, die vorher kommt (Toolbar oder Break-Node), ein Load scene oder ein Restart game heben das until auf. Die Antwort sagt das.
Steht die Uhr still, gibt der Aufruf nach 25 s mit der aktuellen Zeit auf. Ein Tab im Hintergrund wird sofort abgelehnt.
Eine Aufnahme, die nicht in Echtzeit läuft, wird nicht gekürzt. Dort hält das Spiel im ersten Frame, der die Zeit erreicht.
Live (MCP Test Project)
play bis 0,5 s antwortete {"time":0.5,"paused":true}, resume bis 2,1 s ergab genau 2,1. Am Projekt wurde nichts geändert.
Tests
Prüfung
Ergebnis
Unit agent-play (6 neu) und time (2 neu)
19/19, verwandte Tests 1158/1158
Gegenproben
6, alle kompilieren, alle rot
e2e 71 (atx)
ALL PASSED, 27 Checks, neu 71h3 (0,505 s, 0,8 s, wait 0,31 s). Ohne Kürzen rot bei 0,5166 s
Gate (atx)
CHECK EXIT 0, 327 Dateien, 5033 Tests
Umgesetzt in `70402aa`, Wiki *MCP* in `3b3179c`.
## Was neu ist
- **`play` mit `until`:** `play`, `resume` oder `pause` lassen das Spiel bis zu dieser Spielzeit laufen und halten es dort an. Der Aufruf antwortet erst, wenn das Spiel steht. `get_runtime` und `screenshot` zeigen danach genau diesen Moment.
- **Genau:** Der Frame, der über die Zeit hinausginge, wird gekürzt (`frameWithin` in `src/core/time.ts`, verwendet in `PlaySession`). Das Spiel steht auf 0,5 s, nicht einen Frame später.
- **`play_input` hat einen letzten Schritt `{"pause": true}`.** Nach einem `wait` hält das Spiel genau zu dessen Zeit, nach einer Taste oder einem Klick sofort. Die Antwort nennt die Spielzeit und ob das Spiel steht.
- `get_runtime` und `play_input` geben Zeiten auf die Millisekunde an, nicht mehr auf Hundertstel.
## Die offenen Fragen, entschieden
- Eine Pause, die vorher kommt (Toolbar oder `Break`-Node), ein `Load scene` oder ein `Restart game` heben das `until` auf. Die Antwort sagt das.
- Steht die Uhr still, gibt der Aufruf nach 25 s mit der aktuellen Zeit auf. Ein Tab im Hintergrund wird sofort abgelehnt.
- Eine Aufnahme, die nicht in Echtzeit läuft, wird nicht gekürzt. Dort hält das Spiel im ersten Frame, der die Zeit erreicht.
## Live (*MCP Test Project*)
`play` bis 0,5 s antwortete `{"time":0.5,"paused":true}`, `resume` bis 2,1 s ergab genau 2,1. Am Projekt wurde nichts geändert.
## Tests
| Prüfung | Ergebnis |
|---|---|
| Unit `agent-play` (6 neu) und `time` (2 neu) | 19/19, verwandte Tests 1158/1158 |
| Gegenproben | 6, alle kompilieren, alle rot |
| e2e 71 (atx) | ALL PASSED, 27 Checks, neu 71h3 (0,505 s, 0,8 s, `wait` 0,31 s). Ohne Kürzen rot bei 0,5166 s |
| Gate (atx) | `CHECK EXIT 0`, 327 Dateien, 5033 Tests |
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Aus #429, Nachbetrachtung nach Etappe 5d („was am MCP noch fehlt“). Punkt 5 von 6.
Anlass
Beim Nachbau des 5d-Tests sollte der Agent prüfen, ob der Player des Intros zwischen 0,5 s und 2 s Spielzeit zu sehen ist. Das Fenster ist ihm zweimal durchgerutscht: Zwischen
playund dem nächstenget_runtimelag schon mehr als 2 s. Erstplay_inputmit{"wait": 1}und danach sofortplaymitpausehat getroffen, und auch das nur ungefähr (t = 1,3 s).Stand heute (im Code nachgesehen)
playkenntplay,pause,resumeundstop, ohne Zeitangabe.play_inputzähltholdundwaitin Spielsekunden. Am Ende eines Aufrufs läuft das Spiel aber weiter, bis der nächste Aufruf kommt.get_runtimeliest den Zustand zu dem Zeitpunkt, an dem der Aufruf ankommt.Vorschlag
play_inputbekommt einen Schritt{"pause": true}: Das Spiel hält genau nach dem Schritt davor an, also auch nach einemwaitbis zu einer bestimmten Spielzeit.playmituntil(Spielsekunden). Das Spiel startet oder läuft weiter und hält bei dieser Zeit an.get_runtimeden angehaltenen Zustand, undscreenshotzeigt ihn.play_inputkennt das schon als Fehlerfall), und ein Tab im Hintergrund zeichnet keine Frames.Umgesetzt in
70402aa, Wiki MCP in3b3179c.Was neu ist
playmituntil:play,resumeoderpauselassen das Spiel bis zu dieser Spielzeit laufen und halten es dort an. Der Aufruf antwortet erst, wenn das Spiel steht.get_runtimeundscreenshotzeigen danach genau diesen Moment.frameWithininsrc/core/time.ts, verwendet inPlaySession). Das Spiel steht auf 0,5 s, nicht einen Frame später.play_inputhat einen letzten Schritt{"pause": true}. Nach einemwaithält das Spiel genau zu dessen Zeit, nach einer Taste oder einem Klick sofort. Die Antwort nennt die Spielzeit und ob das Spiel steht.get_runtimeundplay_inputgeben Zeiten auf die Millisekunde an, nicht mehr auf Hundertstel.Die offenen Fragen, entschieden
Break-Node), einLoad sceneoder einRestart gameheben dasuntilauf. Die Antwort sagt das.Live (MCP Test Project)
playbis 0,5 s antwortete{"time":0.5,"paused":true},resumebis 2,1 s ergab genau 2,1. Am Projekt wurde nichts geändert.Tests
agent-play(6 neu) undtime(2 neu)wait0,31 s). Ohne Kürzen rot bei 0,5166 sCHECK EXIT 0, 327 Dateien, 5033 Tests