@@ -5,14 +5,14 @@ index: 2
5
5
6
6
# Der Spielleiter (Server)
7
7
8
- Die beiden [ Computerspieler] ( player ) kommunizieren nicht direkt miteinander,
8
+ Die beiden : t [ Computerspieler] { # player } kommunizieren nicht direkt miteinander,
9
9
sondern spielen über einen Mittelsmann: den Spielleiter.
10
10
Dadurch ist zum einen sichergestellt,
11
11
dass man seinen Gegner nicht mit invaliden Nachrichten belästigen kann,
12
12
zum anderen sorgt der Spielleiter dafür,
13
13
dass sich die Kontrahenten an die Spielregeln halten.
14
14
15
- Der Spielleiter ist direkt im [ Wettkampfsystem] ( wettkampfsystem ) integriert,
15
+ Der Spielleiter ist direkt im : t [ Wettkampfsystem] { # contest } integriert,
16
16
sodass alle Turnierspiele regelkonform gespielt werden.
17
17
Zum Testen des eigenen Computerspielers gibt es eine Version des Spielleiters mit grafischer Oberfläche,
18
18
erhältlich im [ Downloadbereich der Website] ( https://software-challenge.de/dokumentation-und-material ) .
@@ -21,11 +21,11 @@ und sogar als Mensch mitspielen.
21
21
22
22
## System vorbereiten und Spielleiter starten
23
23
24
- Die einzige Voraussetzung ist
24
+ Die einzige Voraussetzung ist
25
25
die [ Installation einer Java-Laufzeitumgebung] ( /entwicklung/installation-von-java ) .
26
26
dass auf dem Rechner mindestens die Laufzeitumgebung für Java 11 installiert ist.
27
27
28
- Nach der erfolgreichen Installation kann man den grafischen Server
28
+ Nach der erfolgreichen Installation kann man den grafischen Server
29
29
durch einen Doppelklick auf die Datei ` software-challenge-gui ` starten.
30
30
31
31
## Die Programmoberfläche
@@ -88,10 +88,10 @@ die man sich beliebig oft wieder ansehen kann,
88
88
um beispielsweise einen Fehler des eigenen Spielers zu analysieren
89
89
oder eine Strategie zu verbessern.
90
90
91
- Aktuell werden Replay-Dateien automatisch im Unterordner "replays"
91
+ Aktuell werden Replay-Dateien automatisch im Unterordner "replays"
92
92
des aktuellen Verzeichnisses beim Programmstart abgespeichert.
93
93
94
- <!--
94
+ <!--
95
95
Die im Folgenden genannten Anpassungsmöglichkeiten beim Speichern werden noch implementiert.
96
96
97
97
~Um das aktuelle Spiel als Spielwiederholung zu speichern,
@@ -117,7 +117,7 @@ diese Situation erneut nachzuspielen um den Computerspieler gezielt zu verbesser
117
117
Dies ist zur Zeit nur auf etwas kompliziertem Wege möglich.
118
118
Es folgt eine Schritt-für-Schritt Anleitung:
119
119
120
- 1 . Lade das betreffende Replay aus dem : t [ Wettkampfsystem] { # contest } herunter (.xml.gz Datei).
120
+ 1 . Lade das betreffende Replay aus dem Wettkampfsystem herunter (.xml.gz Datei).
121
121
122
122
2 . Entpacke das Replay, um eine .xml-Datei zu erhalten.
123
123
@@ -162,11 +162,11 @@ So nutzt du ihn
162
162
(Terminal; auf Windows cmd oder Powershell)
163
163
im Verzeichnis des entpackten Archives.
164
164
165
- 4 . Starte den Testserver auf Port 13051 mit dem beiliegenden ` ./start.sh ` (Linux/Mac ) bzw. ` .\start.bat ` Skript oder dem entsprechenden Befehl:
165
+ 4 . Starte den Testserver auf Port 13051 mit dem beiliegenden ` ./start.sh ` (Linux/macOS ) bzw. ` .\start.bat ` Skript oder dem entsprechenden Befehl:
166
166
167
167
java -Dfile.encoding=UTF-8 -Dlogback.configurationFile=logback.xml -jar server.jar --port 13051
168
168
169
- 5 . Starte die : t [ Computerspieler] { # player } in weiteren Kommandozeilenumgebungen auf Port 13051
169
+ 5 . Starte die Computerspieler in weiteren Kommandozeilenumgebungen auf Port 13051
170
170
(standardmäßig die Option ` --port 13051 ` ).
171
171
Die Computerspieler verbinden sich automatisch zum Testserver und spielen ein Spiel.
172
172
Danach sollten sich die Computerspieler automatisch beenden.
@@ -179,9 +179,8 @@ eine Spielsituation zu laden und zu testen.
179
179
Die Spielsituation muss vorher wie unter [ Spielsituation nachstellen] ( #spielsituation-nachstellen ) erzeugt werden.
180
180
Dann kann die Datei mit dem Argument ` --loadGameFile ` geladen werden
181
181
und optional mit ` --turn ` ein Zug spezifiziert werden.
182
- ``` shell
183
- java -Dfile.encoding=UTF-8 -Dlogback.configurationFile=logback.xml -jar server.jar --port 13051 --loadGameFile ./replay.xml --turn 10
184
-
182
+ ``` sh
183
+ java -Dfile.encoding=UTF-8 -Dlogback.configurationFile=logback.xml -jar server.jar --port 13051 --loadGameFile ./replay.xml --turn 10
185
184
```
186
185
187
186
### Replay speichern
@@ -212,43 +211,43 @@ bemerkt er den Eingang des Zuges vom Computerspieler nicht rechtzeitig und disqu
212
211
Damit dieses Problem möglichst selten auftritt,
213
212
haben sich die folgenden Parameter beim Starten des Servers bewährt:
214
213
215
- Unter Linux:
216
- ``` shell
217
- java -Dfile.encoding=UTF-8 \
218
- -Dlogback.configurationFile=logback.xml \
219
- -server \
220
- -XX:MaxGCPauseMillis=100 \
221
- -XX:GCPauseIntervalMillis=2050 \
222
- -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled \
223
- -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 \
224
- -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark \
225
- -jar server.jar --port 13051
226
- ```
227
- Unter Windows (unterscheidet sich nur durch die Art, den langen Befehl
228
- auf mehrere Zeilen zu verteilen):
229
- ``` shell
230
- java -Dfile.encoding=UTF-8 ^
231
- -Dlogback.configurationFile=logback.xml ^
232
- -server ^
233
- -XX:MaxGCPauseMillis=100 ^
234
- -XX:GCPauseIntervalMillis=2050 ^
235
- -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled ^
236
- -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 ^
237
- -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark ^
238
- -jar server.jar --port 13051
214
+ Unter Linux und macOS:
215
+ ``` sh
216
+ java -Dfile.encoding=UTF-8 \
217
+ -Dlogback.configurationFile=logback.xml \
218
+ -server \
219
+ -XX:MaxGCPauseMillis=100 \
220
+ -XX:GCPauseIntervalMillis=2050 \
221
+ -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled \
222
+ -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 \
223
+ -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark \
224
+ -jar server.jar --port 13051
239
225
```
240
- Um das Verhalten des Garbage Collectors noch weiter zu verbessern, kann
241
- man auch noch mittels der Optionen
242
- ``` shell
243
- -XX:+PrintGCDateStamps -XX:+PrintGC -XX:+PrintGCDetails -Xloggc:" pfad_zum_gc.log"
226
+
227
+ Unter Windows
228
+ (unterscheidet sich nur durch die Art, den langen Befehl auf mehrere Zeilen zu verteilen):
229
+ ``` sh
230
+ java -Dfile.encoding=UTF-8 ^
231
+ -Dlogback.configurationFile=logback.xml ^
232
+ -server ^
233
+ -XX:MaxGCPauseMillis=100 ^
234
+ -XX:GCPauseIntervalMillis=2050 ^
235
+ -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled ^
236
+ -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 ^
237
+ -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark ^
238
+ -jar server.jar --port 13051
244
239
```
245
- eine Logdatei über die Aktivitäten des Garbage Collectors anlegen. Darin
246
- sieht man genau, wann er wie lange lief. Man kann dann die Einstellungen
247
- verändern und testen, ob sich das Verhalten verbessert.
240
+
241
+ Um das Verhalten des Garbage Collectors noch weiter zu verbessern,
242
+ kann man auch noch mittels der Optionen
243
+ ` -XX:+PrintGCDateStamps -XX:+PrintGC -XX:+PrintGCDetails -Xloggc:"pfad_zum_gc.log" `
244
+ eine Logdatei über die Aktivitäten des Garbage Collectors anlegen.
245
+ Darin sieht man genau, wann er wie lange lief.
246
+ Man kann dann die Einstellungen verändern und testen, ob sich das Verhalten verbessert.
248
247
249
248
Die Konfiguration des Garbage Collectors ist kein Allheilmittel
250
249
und kann zu neuen Problemen führen, auf die man gefasst sein sollte.
251
- Dazu gehören erhöhter Resourcenverbrauch und Instabilität der Anwendung.
250
+ Dazu gehören erhöhter Ressourcenverbrauch und Instabilität der Anwendung.
252
251
253
252
Eine Auflistung möglicher nützlicher Parameter für Computerspieler findet sich unter
254
253
https://stackoverflow.com/questions/48989515/java-garbage-collector-time-limit .
@@ -268,7 +267,7 @@ und wertet am Ende die erreichten Punktzahlen aus.
268
267
Der TestClient muss vom Terminal mit den entsprechenden Argumenten aufgerufen werden.
269
268
Diese werden unter den Beispielen näher erläutert.
270
269
271
- Unter Linux:
270
+ Unter Linux und macOS :
272
271
``` sh
273
272
java -jar -Dlogback.configurationFile=logback-tests.xml test-client.jar \
274
273
--tests 4 \
@@ -279,6 +278,7 @@ Unter Linux:
279
278
--start-server \
280
279
--port 13051
281
280
```
281
+
282
282
Unter Windows
283
283
(unterscheidet sich nur durch die Art, den langen Befehl auf mehrere Zeilen zu verteilen):
284
284
0 commit comments