|
1 | 1 | # Software-Challenge [](https://travis-ci.com/CAU-Kiel-Tech-Inf/socha) |
2 | 2 |
|
3 | | -Das offizielle Repository der [Software-Challenge](https://www.software-challenge.de/), welches aus Server, Client und Spiel-Plugins besteht. |
| 3 | +Dies ist das offizielle Repository der [Software-Challenge](https://www.software-challenge.de/), ein Programmierwettbewerb für Schüler. |
| 4 | +Ziel hierbei ist, für ein jährlich wechselndes Spiel eine künstliche Intelligenz zu entwickeln, die den Gegenspieler besiegt. |
| 5 | +Das Repository besteht aus Server, Client und Spiel-Plugins. |
4 | 6 |
|
5 | 7 | ## Struktur |
6 | 8 |
|
7 | 9 | | Ordner | Beschreibung | |
8 | 10 | | ------ | ------------ | |
9 | 11 | | helpers | Zusätzliche Tools (aktuell nur der TestClient) | |
10 | | -| player | Simpleclient dieses Jahres | |
| 12 | +| player | SimpleClient dieses Jahres | |
11 | 13 | | plugin | Plugin dieses Jahres | |
12 | 14 | | server | Spielserver | |
13 | 15 | | socha-sdk | Projektübergreifend verwendete Klassen | |
14 | 16 |
|
15 | 17 | ## Collaboration |
16 | 18 |
|
17 | | -Wir nutzen den type-scope commit message Syntax nach [Karma Runner](http://karma-runner.github.io/4.0/dev/git-commit-msg.html), wobei die verfügbaren scopes in [.dev/scopes.txt](.dev/scopes.txt) definiert werden. Bitte führe nach dem klonen des repositories einmal folgendes im Terminal aus, damit die entsprechenden git hooks aktiv werden: |
| 19 | +Unsere Commit-Messages folgen dem Muster `type(scope): summary` (siehe [Karma Runner Konvention](http://karma-runner.github.io/latest/dev/git-commit-msg.html)), wobei die verfügbaren Scopes in [.dev/scopes.txt](.dev/scopes.txt) definiert werden. Bitte führe nach dem Klonen des Repository's einmal Folgendes im Terminal aus, damit die entsprechenden Git-Hooks aktiv werden: |
18 | 20 |
|
19 | 21 | git config core.hooksPath .dev/githooks |
20 | 22 |
|
21 | | -Um bei den Branches die Übersicht zu behalten, sollten diese ebenfalls nach der Konvention benannt werden - z.B. könnte ein Branch mit einem Release-fix für gradle `fix/gradle-release` heißen und ein Branch, der ein neues login-feature zum server hinzufügt, `feat/server-login`. |
22 | | -Branches werden normalerweise beim mergen gesquashed, außer die einzelnen commits des branches haben jeweils eine alleinstehende Aussagekraft. |
| 23 | +Um bei den Branches die Übersicht zu behalten, sollten diese ebenfalls nach der Konvention benannt werden - z.B. könnte ein Branch mit einem Release-Fix für Gradle `fix/gradle-release` heißen und ein Branch, der ein neues Login-Feature zum Server hinzufügt, `feat/server-login`. |
| 24 | +Branches werden normalerweise beim Mergen zu einem einzelnen Commit zusammengefügt (Squash-Merge), es sei denn, die einzelnen Commits des Branches haben jeweils eine alleinstehende Aussagekraft. |
23 | 25 |
|
24 | | -Detaillierte Informationen zu unserem Kollaborations-stil findet ihr in der [Kull Convention](https://xerus2000.github.io/kull). |
| 26 | +Detaillierte Informationen zu unserem Kollaborations-Stil findet ihr in der [Kull Konvention](https://xerus2000.github.io/kull). |
25 | 27 |
|
26 | 28 | ## Build |
27 | 29 |
|
28 | | -Als Build-Tool wird [Gradle](https://gradle.org/) verwendet. Das gesamte Projekt kann sofort nach dem checkout per `./gradlew build` gebaut werden, es ist keine Installation von Programmen nötig. |
| 30 | +Als Build-Tool wird [Gradle](https://gradle.org/) verwendet. Das gesamte Projekt kann sofort nach dem Checkout per `./gradlew build` gebaut werden, es ist keine Installation von Programmen nötig. |
29 | 31 |
|
30 | 32 | Die wichtigsten Tasks: |
31 | 33 |
|
32 | 34 | | Task | Beschreibung |
33 | 35 | | ------ | ------------ |
34 | | -| `build` | baut alles, deployt und testet |
35 | | -| `test` | führt tests aus |
36 | | -| `deploy` | erstellt hochladbare ZIP-Pakete |
37 | | -| `integrationTest` | testet ein komplettes Spiel sowie den TestClient |
38 | | -| `startServer` oder `:server:run` | führt den Server direkt vom Quellcode aus |
39 | | -| `:server:startProduction` | startet den gepackten Server |
40 | | -| `:player:run` | startet den SimpleClient direkt vom Sourcecode |
41 | | -| `:player:shadowJar` | baut eine jar des SimpleClient |
42 | | -| `:test-client:run` | startet den Testclient |
| 36 | +| `build` | Baut alles, deployt und testet |
| 37 | +| `test` | Führt Tests aus |
| 38 | +| `deploy` | Erstellt hochladbare ZIP-Pakete |
| 39 | +| `integrationTest` | Testet ein komplettes Spiel sowie den TestClient |
| 40 | +| `startServer` oder `:server:run` | Führt den Server direkt vom Quellcode aus |
| 41 | +| `:server:startProduction` | Startet den gepackten Server |
| 42 | +| `:player:run` | Startet den SimpleClient direkt vom Sourcecode |
| 43 | +| `:player:shadowJar` | Baut eine jar des SimpleClient |
| 44 | +| `:test-client:run` | Startet den TestClient |
43 | 45 |
|
44 | 46 | ### Unterprojekte |
45 | 47 |
|
46 | 48 | Tasks in Unterprojekten können über zwei Wege aufgerufen werden: |
47 | | -`./gradlew :server:run` führt die Task "run" des Unterprojektes "server" aus. |
48 | | -Alternativ kann man in das server-Verzeichnis wechseln und dort `./gradlew run` ausführen. |
| 49 | +`./gradlew :server:run` führt den Task "run" des Unterprojektes "server" aus. |
| 50 | +Alternativ kann man in das Server-Verzeichnis wechseln und dort `./gradlew run` ausführen. |
49 | 51 |
|
50 | | -Bei der Ausführung eines Unterprojekts via `run` können per `-Dargs="Argument1 Argument2"` zusätzlich Argumente mitgegeben werden. Zum Beispiel kann der TestClient mit folgendem Befehl direkt aus dem sourcecode getestet werden: |
| 52 | +Bei der Ausführung eines Unterprojekts via `run` können per `-Dargs="Argument1 Argument2"` zusätzlich Argumente mitgegeben werden. Zum Beispiel kann der TestClient mit folgendem Befehl direkt aus dem Sourcecode getestet werden: |
51 | 53 |
|
52 | 54 | ./gradlew :test-client:run -Dargs="--player1 ../../player/build/libs/defaultplayer.jar --player2 ../../player/build/libs/defaultplayer.jar --tests 3" |
53 | 55 |
|
54 | | -### Arbeiten mit Intellij IDEA |
| 56 | +### Arbeiten mit IntelliJ IDEA |
55 | 57 |
|
56 | | -Zuerst sollte sichergestellt werden, dass die neuste Version von Intellij IDEA verwendet wird, da es ansonsten Probleme mit Kotlin geben kann. |
| 58 | +Zuerst sollte sichergestellt werden, dass die neuste Version von IntelliJ IDEA verwendet wird, da es ansonsten Probleme mit Kotlin geben kann. |
57 | 59 |
|
58 | | -In Intellij kann man das Projekt bequem von Gradle importieren, wodurch alle Module und Bibliotheken automatisch geladen werden. Dazu sind folgende Schritte notwendig: |
| 60 | +In IntelliJ kann man das Projekt bequem von Gradle importieren, wodurch alle Module und Bibliotheken automatisch geladen werden. Dazu sind folgende Schritte notwendig: |
59 | 61 |
|
60 | 62 | - Projekt klonen: `git clone git@github.com:CAU-Kiel-Tech-Inf/socha.git` |
61 | | -- In IDEA auf "File" > "New" > "Project from existing sources" > socha Verzeichnis auswählen |
| 63 | +- In IntelliJ auf "File" > "New" > "Project from existing sources" > socha Verzeichnis auswählen |
62 | 64 | - "Import project from external model" > "Gradle" auswählen |
63 | 65 | - Im folgenden Fenster: |
64 | 66 | - "Use auto-import" ankreuzen |
65 | 67 | - bei "Gradle JVM" JDK 8 auswählen, wenn sie nicht schon ausgewählt ist |
66 | 68 | - "Finish" drücken |
67 | | -- Warten, bis das Gradle build fertig ist |
| 69 | +- Warten, bis das Gradle-Build fertig ist |
68 | 70 | - Einmal im Terminal `git checkout .idea` ausführen, um sich die codeStyles zurückzuholen |
69 | 71 |
|
70 | | -Nun können Gradle tasks auch direkt in IDEA vom Gradle Tool Window (befindet sich normalerweise in der rechten Andockleiste) ausgeführt werden. |
| 72 | +Nun können Gradle-Tasks auch direkt in IntelliJ vom Gradle-Tool-Fenster ausgeführt werden; dieses befindet sich normalerweise in der rechten Andockleiste. |
0 commit comments