Outline of the game with its goals, rules and mechanics
Have a very clear and well thought out written concept of your game (max two pages, self-made)
You have already started producing relevant and meaningfully runnable code for your project
Project diary exists (PDF or text) and is readable
The diary has at least one meaningful entry
Show a self made mockup of your game during the presentation
Overview of the functionality of client and server specific to your game
Overview of the software requirements (not required software)
Have a name for your game, ideally also for your group
Project timeline and responsibilities
Have a detailed and well thought out project plan in written form
You run over time in your presentation
One group member has 0 commits in the repository
Not all required sources and documents are committed to the repository on time or not all documents are available in PDF or plaintext
Definition of the network communication is generic
The project plan is so generic, you could use it for any of the other projects
Placeholders, typos or severe grammar mistakes in the slides
Your slides contain way too many words
Not all group members are present and on time for the milestone (exercise and lecture)
You fulfilled all regular achievements
You did not get any malus
Give a great presentation
There is a gitignore file containing entries relevant for major operating systems and the used tools
Source code is sufficiently documented with JavaDoc
Protocol and content is properly encoded, decoded and validated
Players can change their nicknames
Client to client chat is working
Project diary is up to date and filled with meaningful entries
Arbitrarily many clients can log on to the server
The server handles a client logout in a meaningful way
A ping message is regularly sent from server to client and processed meaningfully (connection losses are detected and handled)
A ping message is regularly sent from client to server and processed meaningfully (connection losses are detected and handled)
The human-readable network protocol is defined and implemented
The human-readable network protocol is defined in a dedicated document. All commands are explained together with an example
Network protocol is being used correctly
The server assures that player nicknames are unique and changes duplicates in a consistent manner by assigning appropriate names
The client suggests a nickname based on the system username
The network protocol and its serialized format is not human-readable
One or more group members did not meaningfully contribute to the project during this milestone
.class files in the repository
Your game does not run on Linux
User has to input messages precisely matching the network protocol
Not all required sources and documents are committed to the repository on time or not all documents are available in PDF or plaintext
Have the default -or not meaningfully altered- README
Have commits without (meaningful) message
Break coding conventions
Not all group members are present and on time for the milestone (exercise and lecture)
Already have a gradle build script producing one executable jar
The latest commit on the main branch was made prior to the Friday preceding the milestone, at 16:59.
Demonstrate your understanding by completing a multiple-choice challenge
Source code is sufficiently documented with JavaDoc
Outline of the game with its goals, rules and mechanics
Broadcast to all clients across all games and lobbies is working and has a dedicated command
The build script succeeds and produces an executable jar & javadoc for the task "build-cs108"
Command line parameters are parsed correctly: (client <hostadress>:<port> [<username>] | server <port>)
Project diary is up to date and filled with meaningful entries
Present a working prototype (Terminal or GUI) of the game in the presentation
The chat is available via a basic GUI
There is a way to list open, ongoing as well as finished games. Their status is indicated
The main logic of the game as well as its fundamental mechanics are present and the game is playable
Game state is kept on server
Use at least one external library besides JUnit. JavaFX does not count as an external library
Have support for multiple lobbies (one per game) with their respective internal chats
There is a way to list players in lobbies
There is a manual which describes how the game is to be played based on your implementation, in written form
There is a way to list all players currently connected to the server
How things are going - project timeline and responsibilities, changes and problems
The human-readable network protocol is defined and implemented
The definition of the network protocol in the external document is up to date. All commands are explained together with an example
Present your QA measures, which can also be found in the document (see slides)
Reasonable Software Quality concept in written form (see slides)
Have a well thought-out and detailed written QA concept and a solid and realistic plan on how to implement it, including first measurements in written form (see slides)
How is the gamestate and game logic represented in the code
Present a working prototype of the game logic in the exercise slot by playing the game (Terminal or GUI)
Describe tools, libraries and processes which you use that are not introduced in the lecture and why you use them
Whisper-chat between two clients is working
Update and adjust your project plan for milestones 4 and 5
You run over time in your presentation again
Build process violates specification (not exactly one executable jar produced, works only on team members machines, build.gradle not in the root of the directory, gradle wrapper not usable, taskname)
One or more group members did not meaningfully contribute to the project during this milestone
.class files in the repository
Your game does not run on Linux
Not all required sources and documents are committed to the repository on time or not all documents are available in PDF or plaintext
Have still the default -or not meaningfully altered- README
Have more commits without (meaningful) message
Placeholders, typos or severe grammar mistakes in the slides
Break coding conventions
Your slides contain way too many words
Not all group members are present and on time for the milestone (exercise and lecture)
Give a great presentation
Source code is sufficiently documented with JavaDoc
Review two JARs you received: Explain (1 sentence each) if you would give the following achievements: GUI, GUI (advanced), High Score, Referee, Shall We Play A Game, Victory and the malus Chat Commander (see slides)
Project diary is up to date and filled with meaningful entries
The game is represented graphically
The game is fully playable from the UI. Text input is only used where absolutely necessary
There is a high score list which is stored persistently, updated when needed and available for clients
Your assessment of the other games matches our assessment with a deviation of at most one achievement (see slides)
The rules of the game are checked and enforced correctly
Present the working final game in the excercise slot by playing the game using the JAR
All relevant features of a core component of your game are tested
Unit-Tests are comprehensive and meaningful
The winner and the win state is correctly determined
Build process violates specification (not exactly one executable jar produced, works only on team members machines, build.gradle not in the root of the directory, gradle wrapper not usable, taskname)
Some required functionality is only available via special chat commands. Exceptions are made for whispering in the form of a dedicated command /w $user $msg
Have more commits without (meaningful) message
Break coding conventions
The latest commit on the main branch was made prior to the Friday preceding the milestone, at 16:59.
Source code is sufficiently documented with JavaDoc
Outline of the game with its goals, rules and mechanics
Have a clear introduction to your game explaining its fundamentals in such a way that a first-time listener can understand it
Your repository contains an outreach/ folder with the specified content, where the maximal size of the video content (gameplay, trailer) is 10 MB
Command line parameters are still parsed correctly
Project diary is up to date and filled with meaningful entries
Have a bugfree demo of the game in the final presentation
The GUI works without any errors and all client functionality is accessible by it
The entire logic of the game as well as all its mechanics are present and the game is fully playable
There is a high score list which is stored persistently, updated when needed and shown when requested
Arbitrarily many clients can still log on to the server
The game and/or team has a proper Logo
There is a manual which describes how the game is to be played, in written form
All external libraries in your project are managed by gradle via maven central
Have a representative screenshot of the game
Final version of human-readable network protocol is defined and implemented
The final version of the network protocol is current in external documentation
Results of Quality Assurance measures and lessons learned from them (see slides)
QA report with goals, methods and results (see slides)
Detailed and relevant analysis of QA measures over time, discussion of results, well-written report (see slides)
Present the working final game in the excercise slot by playing the game using the JAR
Describe tools, libraries and processes which you use that are not introduced in the lecture and why you use them
Use at least two libraries besides JUnit actively for a significant / impactful task in your project. JavaFX does not count
Have a representative video showing somewhere between 20 seconds and 2 minutes of gameplay
All unit-tests are meaningful and 'green'
Lessons Learned
The game only works properly when a connection to the internet can be established
Build process violates specification (not exactly one executable jar produced, works only on team members machines, build.gradle not in the root of the directory, gradle wrapper not usable, taskname)
Connection losses during gameplay are not handled
Server and Client cannot be run on the same machine simultaneously
Server does not start directly when started via 'java -jar some.jar server…' but requires additional user action
Have more commits without (meaningful) message
Server cannot run in headless (i.e. only textual, console-based UI) mode
Placeholders, typos or severe grammar mistakes in the slides
Break coding conventions
Your slides contain way too many words
The game uses 3d graphics
The game has animated characters
The game has sound
Have a CI Server which builds every commit, executes the tests and informs about the outcome
The game supports input methods other than mouse and keyboard
The game has especially good sound
Use a proper Bug/Issue tracker
The game is especially nice to look at
The game only uses assets for which the group holds all rights
The game has a resolution-independent full-screen mode
The game has an intro
The game has a spectator mode
Support custom key binding
The game has some new/interesting game mechanics
The game supports mods
The game runs on Windows and on Linux
The Manual and Documentation looks professionally made
The game works in real time
Players can reconnect to a running game after losing their connection
Give a great presentation
Having a mechanism that punishes the use of cheat codes
The game has a trailer
The game has an in-game tutorial
Do something worthy of giving points for we haven't thought about
The game has a proper website and domain
Implement cheat codes (e.g. for resources or to instantly win a game)
| Milestone 1 | Milestone 2 | Milestone 3 | Milestone 4 | Milestone 5 | Milestone 6 | Total |
|---|---|---|---|---|---|---|
| 0 | 140 | 500 | 310 | 150 | 400 | 1500 |