@@ -182,35 +182,39 @@ Port 13051. So kannst du ihn nutzen:
182
182
6 . Um weitere Testspiele zu spielen, starte die : t [ Computerspieler] { # player } erneut.
183
183
Der Testserver muss dabei nicht neu gestartet werden.
184
184
185
- Beachte, dass der Testserver keine Spielaufzeichnungen anlegt, wie es
186
- der Server mit grafischer Oberfläche tut. Die Auswertung der Spiele muss
187
- in einem der teilnehmenden : t [ Computerspieler] { # player } geschehen (z.B. durch
188
- Log-Ausgaben).
189
-
190
- Es ist ebenfalls möglich, statt eines zufällig generierten vollständigen
191
- Spielplanes eine Spielsituation zu laden und zu testen. Die
192
- Spielsituation muss vorher wie unter [ Spielsituation
193
- nachstellen] ( #spielsituation-nachstellen ) erzeugt werden. Dann kann die
194
- Datei mit dem Argument ` --loadGameFile ` geladen werden und optional mit
195
- ` --turn ` ein Zug spezifiziert werden.
185
+ Beachte, dass der Testserver keine Spielaufzeichnungen anlegt,
186
+ wie es der Server mit grafischer Oberfläche tut.
187
+ Die Auswertung der Spiele muss in einem der teilnehmenden : t [ Computerspieler] { # player } geschehen
188
+ (z.B. durch Log-Ausgaben).
189
+
190
+ Es ist ebenfalls möglich, statt eines zufällig generierten vollständigen Spielplanes
191
+ eine Spielsituation zu laden und zu testen.
192
+ Die Spielsituation muss vorher wie unter [ Spielsituation nachstellen] ( #spielsituation-nachstellen ) erzeugt werden.
193
+ Dann kann die Datei mit dem Argument ` --loadGameFile ` geladen werden
194
+ und optional mit ` --turn ` ein Zug spezifiziert werden.
196
195
``` shell
197
196
java -Dfile.encoding=UTF-8 -Dlogback.configurationFile=logback.xml -jar softwarechallenge-server.jar --port 13051 --loadGameFile ./replay.xml --turn 10
198
197
199
198
```
199
+
200
200
### Unerwartete Zugzeitüberschreitungen (Soft-Timeout)
201
201
202
- Wenn Sie den Testserver einige Zeit laufen lassen, um eine größere
203
- Anzahl von Testspielen durchzuführen, kann es dazu kommen, dass
204
- : t [ Computerspieler] { # player } wegen Zugzeitüberschreitungen vom Server disqualifiziert
205
- werden (Soft-Timeout). Dies passiert, obwohl der Zug innerhalb der
206
- erlaubten Zugzeit (abhängig vom Spiel, bisher aber immer zwei Sekunden)
207
- an den Server geschickt wurde. Der Garbage Collector der Java Virtual
208
- Machine löst dieses Verhalten aus. Er pausiert die Anwendung, um nicht
209
- mehr genutzten Speicher freizugeben. Wenn der Server dadurch zu einem
210
- ungünstigen Zeitpunkt angehalten wird, bemerkt er den Eingang des Zuges
211
- vom : t [ Computerspieler] { # player } nicht rechtzeitig und disqualifiziert ihn daraufhin.
212
- Damit dieses Problem möglichst selten auftritt, haben sich die folgenden
213
- Parameter beim Starten des Servers bewährt:
202
+ Mit der Option ` --no-timeout ` können Zeitüberschreitungen für alle Spieler deaktiviert werden.
203
+ Alternativ können diese auch bei erstellten Reservierungen
204
+ über das XML-Protokoll individuell für jeden Spieler gesetzt werden.
205
+
206
+ Wenn Sie den Testserver einige Zeit laufen lassen,
207
+ um eine größere Anzahl von Testspielen durchzuführen, kann es dazu kommen,
208
+ dass : t [ Computerspieler] { # player } wegen Zugzeitüberschreitungen vom Server disqualifiziert werden (Soft-Timeout).
209
+ Dies passiert, obwohl der Zug innerhalb der erlaubten Zugzeit
210
+ (abhängig vom Spiel, bisher aber immer zwei Sekunden)
211
+ an den Server geschickt wurde.
212
+ Der Garbage Collector der Java Virtual Machine löst dieses Verhalten aus.
213
+ Er pausiert die Anwendung, um nicht mehr genutzten Speicher freizugeben.
214
+ Wenn der Server dadurch zu einem ungünstigen Zeitpunkt angehalten wird,
215
+ bemerkt er den Eingang des Zuges vom : t [ Computerspieler] { # player } nicht rechtzeitig und disqualifiziert ihn daraufhin.
216
+ Damit dieses Problem möglichst selten auftritt,
217
+ haben sich die folgenden Parameter beim Starten des Servers bewährt:
214
218
215
219
Unter Linux:
216
220
``` shell
@@ -253,18 +257,23 @@ Dazu gehören erhöhter Resourcenverbrauch und Instabilität der Anwendung.
253
257
Eine Auflistung möglicher nützlicher Parameter für : t [ Computerspieler] { # player } findet sich unter
254
258
https://stackoverflow.com/questions/48989515/java-garbage-collector-time-limit .
255
259
256
- ### Massentests
260
+ ### Massentests mit dem TestClient
257
261
258
262
Massentests mit dem eigenen : t [ Computerspieler] { # player } können sehr nützlich sein,
259
- beispeilsweise um die Stärke gegenüber einer früheren Version zu Testen.
260
- Dafür wird in jeder Saison ab Version XX.1.0 ein TestClient
261
- bereitgestellt.
263
+ beispielsweise um die Stärke gegenüber einer früheren Version zu Testen.
264
+ Dafür wird in jeder Saison ab Version XX.1.0 ein TestClient bereitgestellt.
265
+
266
+ Der TestClient lässt für eine Anzahl an Spielen zwei Computerspieler gegeneinander antreten,
267
+ wobei die Startreihenfolge abwechselt,
268
+ sodass eine gerade Anzahl an Spielen sinnvoll ist.
269
+ Dabei informiert er über den Fortschritt
270
+ und wertet am Ende die erreichten Punktzahlen aus.
262
271
263
- Der TestClient muss vom Terminal mit den entsprechenden Argumenten
264
- aufgerufen werden. Diese werden unter den Beispielen näher erläutert.
272
+ Der TestClient muss vom Terminal mit den entsprechenden Argumenten aufgerufen werden.
273
+ Diese werden unter den Beispielen näher erläutert.
265
274
266
275
Unter Linux:
267
- ``` shell
276
+ ``` sh
268
277
java -jar -Dlogback.configurationFile=logback-tests.xml test-client.jar \
269
278
--tests 4 \
270
279
--name1 " displayName1" \
@@ -274,10 +283,10 @@ Unter Linux:
274
283
--start-server \
275
284
--port 13051
276
285
```
277
- Unter Windows (unterscheidet sich nur durch die Art, den langen Befehl
278
- auf mehrere Zeilen zu verteilen):
286
+ Unter Windows
287
+ (unterscheidet sich nur durch die Art, den langen Befehl auf mehrere Zeilen zu verteilen):
279
288
280
- ``` shell
289
+ ``` cmd
281
290
java -jar -Dlogback.configurationFile=logback-tests.xml test-client.jar ^
282
291
--tests 4 ^
283
292
--name1 "displayName1" ^
@@ -287,10 +296,9 @@ auf mehrere Zeilen zu verteilen):
287
296
--start-server ^
288
297
--port 13051
289
298
```
290
- Der TestClient kann sich auch mit einem bereits laufenden Server
291
- verbinden, bei Angabe des Arguments ` --start-server ` startet er jedoch
292
- einfach selbst einen. Wichtig ist, dass nicht versucht wird, zwei Server
293
- auf dem selben Port zu starten.
299
+ Der TestClient kann sich auch mit einem bereits laufenden Server verbinden,
300
+ bei Angabe des Arguments ` --start-server ` startet er jedoch einfach selbst einen.
301
+ Wichtig ist, dass nicht versucht wird, zwei Server auf dem selben Port zu starten.
294
302
295
303
#### Argumente des TestClients
296
304
0 commit comments