31 lines
1.5 KiB
Markdown
31 lines
1.5 KiB
Markdown
# Tests
|
||
|
||
make test # alle Prüfungen, etwa 30 Sekunden
|
||
make sim # Bot gegen Bot, je Stufe 20 Partien: Runden und Siegquoten
|
||
|
||
Läuft alles headless: Logik, Nochmal, Bot-Partie (Stufe schwer, 8×), und
|
||
eine echte Mehrspieler-Partie mit Server, Host-Client und Gast-Client - der
|
||
Gast steigt in Runde zwei aus und wieder ein.
|
||
|
||
Die Screenshots-Prüfungen (Look, Layout) sind nicht dabei; die braucht ein
|
||
Fenster.
|
||
|
||
## Fallen
|
||
|
||
* **Kein `Engine.time_scale`.** Er staucht auch den Physikschritt; ab etwa 6×
|
||
tunneln die Würfel durch den Filz und fallen ewig. Schnell wird es über
|
||
`game.tempo = 0` - das streicht nur die Wartezeiten des Ablaufs.
|
||
|
||
* **Wurzelname.** Der Spielknoten muss auf Server und Client denselben Pfad
|
||
haben (`/root/Main/Raeume/<CODE>/…`). Daran hängt jeder RPC. Die
|
||
Mehrspieler-Tests laden deshalb die echte Hauptszene als aktuelle Szene und
|
||
hängen ihren Läufer daneben unter `root`. Wer die Hauptszene unter eine
|
||
Testwurzel hängt, bekommt auf der Gegenseite nur
|
||
`Requested node was not found` - und der Server spielt die Menschen per
|
||
Zeitablauf selbst, was wie eine laufende Partie aussieht.
|
||
* **Port 8000** ist auf Entwicklungsrechnern oft belegt. `PORT=… make test`.
|
||
* **Lambdas** in GDScript kopieren lokale Variablen. Eine Zuweisung darin
|
||
landet nicht draußen; die Tests halten `game` deshalb als Feld.
|
||
* **Ausgabe** erscheint erst, wenn der Prozess regulär endet. Ein per
|
||
`timeout` abgeschossener Client verliert seine letzten Zeilen.
|