Neunermühle-Client | README
Inhaltsverzeichnis
- Inhaltsverzeichnis
- Überblick
- Funktionen
- Projektstruktur
- Erste Schritte
- Zugriff auf Gameserver und Webinterface
- Spielregeln und Ressourcen
- Projekt-Roadmap
- Beitragende
- Richtlinien für Beiträge
- Lizenz
- Danksagungen
Überblick
Willkommen im Systempraktikum der Ludwig-Maximilians-Universität München. Im Rahmen dieses Praktikums entwickeln wir einen Client für das strategische Brettspiel Neunermühle in der Programmiersprache C. Ziel ist es, die Logik des Spiels zu implementieren und den Client über eine TCP-Verbindung mit einem zentralen Gameserver zu verbinden. Der Gameserver überwacht das Spielgeschehen und stellt sicher, dass die Regeln eingehalten werden, während unser Client als aktiver Mitspieler agiert.
Das Projekt wird in mehreren Schritten im Verlauf des Praktikums entwickelt, und jeder Schritt führt uns näher zur fertigen Version des Clients.
Funktionen
Feature | Zusammenfassung | |
---|---|---|
⚙️ | Programmiersprache | C |
🔌 | Netzwerkprotokoll | TCP zur Kommunikation mit dem Gameserver |
🗃️ | Systemzugriff | Nutzung von Shared Memory zur Speicherung von Spielfeldinformationen |
🌐 | Gameserver-Zugriff | Nur über das Münchener Wissenschaftsnetzwerk (MWN) möglich |
🧩 | Hauptfunktionen |
|
Projektstruktur
.
├── LICENSE
├── README.md
├── bin
│ └── sysprak-client
├── client.conf
├── cmake-build-debug
│ ├── CMakeCache.txt
│ ├── CMakeFiles
│ │ ├── 3.27.8
│ │ │ ├── CMakeCCompiler.cmake
│ │ │ ├── CMakeDetermineCompilerABI_C.bin
│ │ │ ├── CMakeSystem.cmake
│ │ │ └── CompilerIdC
│ │ │ ├── CMakeCCompilerId.c
│ │ │ └── tmp
│ │ ├── CMakeConfigureLog.yaml
│ │ ├── TargetDirectories.txt
│ │ ├── c_project.dir
│ │ │ ├── modules
│ │ │ │ ├── args_parser
│ │ │ │ └── tcp_performConnection
│ │ │ └── tests
│ │ │ └── test_performConnection
│ │ ├── clion-Debug-log.txt
│ │ ├── clion-environment.txt
│ │ ├── cmake.check_cache
│ │ ├── pkgRedirects
│ │ └── rules.ninja
│ ├── Testing
│ │ └── Temporary
│ │ └── LastTest.log
│ ├── build.ninja
│ └── cmake_install.cmake
├── lib
│ └── README.md
├── main.c
├── makefile
├── modules
│ ├── README.md
│ ├── args_parser
│ │ ├── README.md
│ │ ├── args_parser.c
│ │ ├── args_parser.h
│ │ ├── config.c
│ │ ├── config.h
│ │ └── constants.h
│ ├── shared_memory
│ │ ├── README.md
│ │ ├── shared_memory.c
│ │ └── shared_memory.h
│ ├── tcp_performConnection
│ │ ├── README.md
│ │ ├── gameplay.c
│ │ ├── gameplay.h
│ │ ├── performConnection.c
│ │ ├── performConnection.h
│ │ ├── tcp_connection.c
│ │ └── tcp_connection.h
│ └── think
│ ├── README.md
│ ├── nmm.c
│ ├── nmm.h
│ ├── think.c
│ ├── think.h
│ ├── util.c
│ └── util.h
├── scripts
│ ├── Readme.md
│ ├── setup_precommit
│ │ ├── README.md
│ │ └── setup_pre_commit.sh
│ └── update_readme
│ ├── README.md
│ └── update_readme.sh
└── tests
├── README.md
├── test_clientConf
│ ├── README.md
│ └── test_clientConf.sh
├── test_performConnection
│ ├── README.md
│ └── test_performConnection.c
└── test_sharedMemory
├── README.md
├── test_sharedMemory.bash
└── test_sharedMemory.c
29 directories, 58 files
Übersicht der Verzeichnisse und Dateien
README.md
: Enthält die Projektdokumentation, wie Ziel, Funktionen und Aufbau des Projekts.compile_commands.json
: Nützlich für die Integration mit Tools wie Clang, um die Kompilierungsschritte zu verfolgen.docs/
: Alle projektbezogenen Dokumentationen, strukturiert und separat gehalten.lib/
: Bibliotheken oder externe Abhängigkeiten, die das Projekt verwendet.main.c
: Zentrale Einstiegsdatei, in der das Programm startet.makefile
: Automatisiert den Build-Prozess und erleichtert das Kompilieren.modules/
: Organisiert die Funktionalitäten des Projekts in wiederverwendbare Module:args_parser
: Verarbeitung von Kommandozeilenargumenten.tcp_performConnection
: Netzwerkmodule zur Verwaltung von TCP-Verbindungen.
scripts/
: Praktische Automatisierungsskripte, z. B. für Pre-Commit-Hooks oder Dokumentationsaktualisierungen.tests/
: Verzeichnis für Tests, die sicherstellen, dass der Code wie erwartet funktioniert.
Erste Schritte
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass folgende Voraussetzungen erfüllt sind:
- Programmiersprache: C
- Compiler: Ein C-Compiler wie GCC oder Clang
- Make: Zur Verwendung des Makefiles
- Netzwerkzugriff: Zugang zum Münchener Wissenschaftsnetzwerk (MWN)
Installation
-
Projekt klonen:
Github:
git clone https://github.com/noluyorAbi/C-Project
Gitlab (Mirror-Repository von Github)
git clone https://gitlab.lrz.de/sysprakws2425/gruppe18/c-project-mirror
-
Kompilieren des Clients:
make
Dies erstellt die ausführbare Datei und legt sie im
bin/
Verzeichnis ab.
Benutzung
Um den Client zu starten, verwenden Sie:
make run
Zugriff auf Gameserver und Webinterface
Das Webinterface ist unter folgender Adresse verfügbar:
http://sysprak.priv.lab.nm.ifi.lmu.de
Um das Webinterface und den Gameserver aus dem MWN zu erreichen, können Sie eine SSH-Portweiterleitung zu einem CIP-Rechner nutzen:
ssh -L localhost:PORT:sysprak.priv.lab.nm.ifi.lmu.de:PORT username@cip.ifi.lmu.de
Funktionen des Webinterfaces
Das Webinterface ermöglicht das Erstellen von Partien, in denen der Client gegen andere Spieler antreten oder gegen sich selbst getestet werden kann. Zudem kann man als Beobachter in eine Partie einsteigen, um Einblicke in den Spielablauf zu erhalten und die korrekte Funktion des Clients zu überprüfen.
Spielregeln und Ressourcen
Die Spielregeln für Neunermühle und weitere Hilfen zur Entwicklung des Clients finden Sie unter folgendem Link:
http://sysprak.priv.lab.nm.ifi.lmu.de/help/
Projekt-Roadmap
- Phase 1: Verbindung zum Gameserver herstellen
- Phase 2: Signalverarbeitung hinzufügen
- Phase 3: Shared Memory implementieren
- Phase 4: Spielelogik implementieren
Beitragende
Dieses Projekt wird von Studierenden der LMU im Rahmen des Systempraktikums entwickelt.
- 💬 Diskussionen beitreten: Teilen Sie Ihre Ideen, Feedback oder stellen Sie Fragen.
- 🐛 Probleme melden: Reichen Sie gefundene Bugs ein oder stellen Sie Feature-Anfragen.
- 💡 Pull Requests einreichen: Überprüfen Sie offene PRs oder reichen Sie eigene PRs ein.
Richtlinien für Beiträge
⚠️ Wichtiger Hinweis: Da dieses Projekt ein modulinternes Projekt ist, können leider keine Beiträge von Außenstehenden berücksichtigt werden.
Lizenz
Dieses Projekt steht unter der MIT License. Weitere Details finden Sie in der LICENSE Datei.
Danksagungen
- Wir danken der Ludwig-Maximilians-Universität München für die Bereitstellung dieses Praktikums.
- Besonderer Dank gilt den Betreuern und Professoren für ihre Unterstützung.