diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b989b5d --- /dev/null +++ b/.gitignore @@ -0,0 +1,105 @@ +## Java +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* +replay_pid* + +## Gradle +# Gradle files +.gradle +**/build/ +!**/src/**/build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Avoid ignore Gradle wrappper properties +!gradle-wrapper.properties + +# Cache of project +.gradletasknamecache + +# Eclipse Gradle plugin generated files +# Eclipse Core +.project +# JDT-specific (Eclipse Java Development Tools) +.classpath + +## MacOS +# General +.DS_Store +__MACOSX/ +.AppleDouble +.LSOverride +Icon[] + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +## Windows +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +## Jenv +.java-version \ No newline at end of file diff --git a/README.md b/README.md index 515c7a0..01ffb96 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,91 @@ -# README -This is a readme file. It typically includes some information about your project. -For more information about readmes, you can either [read a guide](https://github.com/18F/open-source-guide/blob/18f-pages/pages/making-readmes-readable.md) or have a look at the readmes of popular open-source projects such as [Swift by Apple](https://github.com/apple/swift) or [Tensorflow](https://github.com/tensorflow/tensorflow). +
+Game Logo +
-Readme files are typically formatted in Markdown. -However, there are platform-specific flavors, so for this project, you can make full use of the [Gitlab markdown syntax](https://docs.gitlab.com/ee/user/markdown.html), for example when talking about a :bug: (bug) or if your code is slow like a :snail:. -You can also tag people using @username and reference issues using '#1', where 1 is the issue number. For more features, consult the linked Gitlab syntax guide. +
-If you don't like reading documentation, [here's a cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet). +
+

Syntax Syndicate

+

Jona • Mathis • Julian • Lars

+
+ + +## Table of Contents + +- [About the Project](#about-the-project) +- [Repository Structure](#repository-structure) +- [Prerequisites](#prerequisites) +- [Development Timeline](#development-timeline) + + +## About the Project + +As part of the Programming Project course (CS108) for the semester FS26 at the University of Basel, we are developing a computer game implementation of the popular card game **Poker**. + +The project's focus lies in **networking** and distributed systems design. +Key aspect of our implementation being the development and integration of a **custom protocol** specifically designed for **client-server communication**. +This protocol handles game state synchronization, player actions, lobby and global chat, and real-time updates across the network. + + +## Repository Structure + +``` +├── src/ # Source code directory +│ ├── main/ # Application code +│ └── test/ # Unit tests +├── documents/ # Project resources and documentation +│ ├── images/ # Images for README and documentation +│ ├── docs # Documentation +│ ├── milestones/ # Milestone deliverables (6 milestones) +│ └── (Other resources) # Additional project materials +└── outreach/ # Public-facing content and marketing materials +``` + + +## Prerequisites +- Java Development Kit (JDK) 25 +- Gradle (included via Gradle Wrapper) + + +## Development Timeline + +This project spans six milestones throughout the FS26 semester, with each milestone representing a major phase in development: + +### **[MS-1](https://p9.dmi.unibas.ch/cs108/2026/#Milestone%201): Foundation & Design** +- Game concept and rules presentation +- Networking architecture overview +- Project mockups and requirements analysis +- Detailed project plan and team organization + +### **[MS-2](https://p9.dmi.unibas.ch/cs108/2026/#Milestone%202): Networking & Server Implementation** +- Human-readable custom protocol definition and implementation +- Server implementation with multi-client support +- Client-server chat functionality +- Protocol documentation and validation +- JavaDoc code documentation and QA concepts + +### **[MS-3](https://p9.dmi.unibas.ch/cs108/2026/#Milestone%203): Knowledge Checkpoints** +- Assessment of individual technical understanding through evaluation + +### **[MS-4](https://p9.dmi.unibas.ch/cs108/2026/#Milestone%204): Game Logic & Working Prototype** +- Core game logic implementation +- Playable game demo (terminal or GUI) +- Command-line argument parsing +- Multiple lobby support with internal chats +- Whisper/private messaging functionality +- Build automation and executable JAR + +### **[MS-5](https://p9.dmi.unibas.ch/cs108/2026/#Milestone%205): Polish & Complete User Interface** +- Full GUI implementation with JavaFX +- Complete game playability through UI +- Persistent high score list +- Comprehensive unit tests +- Game rule enforcement + +### **[MS-6](https://p9.dmi.unibas.ch/cs108/2026/#Milestone%206): Final Delivery & Public Presentation** +- *Bug-free* final demo +- Complete GUI with all functionality +- Outreach materials and project documentation +- Game manual and usage instructions +- Team logo and promotional materials +- QA reports and lessons learned diff --git a/documents/docs/diary/24-02.md b/documents/docs/diary/24-02.md new file mode 100644 index 0000000..d9f05d9 --- /dev/null +++ b/documents/docs/diary/24-02.md @@ -0,0 +1,41 @@ +# Erste Teambesprechung +## Was gemacht wurde +### Installation benötigter Software zur Projektleitung +- Openproject zur Koordinattion und Dokumentierung +- Wireguard um die lokale Kommunikation zwischen den Entwicklern zu ermöglichen + +### Spielidee und Name +- Es soll ein Poker Spiel entwickelt werden (mit standard Poker Regeln) +- Der Name der Gruppe ist "Syntax Syndicate" +- Der Name des Spiels ist "Casono" +- Pixel Art + +### Arbeitsteilung +- Backend: Lars, Mathis + - Netzwerk: + - Logic: + - Engine: +- Frontend: Jona, Julian + - Presentation in UI: + - Logic: +- Artist: Julian, Jona + + +### Netzwerkprotokoll +- Rundenbasiert +- Textbasiert und lesbar +- Request udn Response (synchron) +- Client-Server Modell + +#### Client: +- Display für den Spielzustand +- führt eigenständig Abfragen beim Server durch +- "heartbeat" Artiger Ansatz, prüft beim Server regelmässig nach Zustandsänderungen +- einfache Input validation + +#### Server: +- Verwaltet den Spielzustand +- Verwaltet die Spiele +- Nimmt Anfragen entgegen und verarbeitet diese +- Stellt global und lobby chat bereit +- Setzt Spielregeln durch \ No newline at end of file diff --git a/documents/docs/diary/27-02.md b/documents/docs/diary/27-02.md new file mode 100644 index 0000000..3f5ba0b --- /dev/null +++ b/documents/docs/diary/27-02.md @@ -0,0 +1,12 @@ +# zweites Teammeeting + +## UI / Frontend +- UI sketch erstellt +- grundlegende Entscheidungen getroffen ueber den Aufbau der UI mit anschliessender Vorstellung in der gesamten Gruppe (alle zufrieden :D ) + +## Netzwerk +- Struktur und Aufbau des Transferprotokolls besprochen +- Network Listener und Manager (ähnlich dem Aufbau von Discord) +- Nachrichten IDs +- Nutzung von hooks der "einen Listener beim Manager einhakt und die Nachricht abgreift" +- Nutzung von Action Commands diff --git a/documents/docs/diary/README.md b/documents/docs/diary/README.md new file mode 100644 index 0000000..ef70dbb --- /dev/null +++ b/documents/docs/diary/README.md @@ -0,0 +1,34 @@ +# Meeting Diary + +This folder holds the notes and documentation of all team meetings throughout the project. +The notes are organised by **milestones (1–6)** so that everyone can easily see what was discussed and decided at each stage. Each sub-header below links to the actual Markdown file containing the details. + +## Milestone 1 +### [24. February 2026](24-02.md) +- Project idea +- Assignment of roles +- First draft of network protocol + +### [27. February 2026](27-02.md) +- UI mockup +- Finalizing structure of network protocol + + +## Milestone 2 +*(Meeting notes to be added here when available)* + + +## Milestone 3 +*(Meeting notes to be added here when available)* + + +## Milestone 4 +*(Meeting notes to be added here when available)* + + +## Milestone 5 +*(Meeting notes to be added here when available)* + + +## Milestone 6 +*(Meeting notes to be added here when available)* diff --git a/documents/images/logo.png b/documents/images/logo.png new file mode 100644 index 0000000..8d9797d Binary files /dev/null and b/documents/images/logo.png differ