UPDATES:

18.11.14: Deadlines for 2014-2015
24.11.14: Added groups
15.12.14: SVNs created for each group.
13.02.15: Last minute changes to deadlines for document return!

Assignment 3 specification (DEADLINES: 24.11 + 29.12 + 30.01 + 16.2 + 17.2 + 27.2)

The 3rd assignment is a group work. You have to assemble groups of 3 or 4 persons and tell the lecturer at the lectures on 24.11.14 and inform the assistant by email the names & student numbers of each group member. In this assignment your group has to design and implement a networked game. The game does not have to be anything new, i.e. take an old (preferably simple) idea and make it to be your “own” (style). Or if you want to make a full “technology demo” with multiple new things without any full game implementation (a tech demo has to have something that can be played but not fully), select 5 instead of 4 advanced techniques.

Game has to support at least 4 players (-3 from basic points if game is only 2 player game). Select a game that you can implement in time. The game plan (rules and implementation) has to be documented.

Use client-server paradigm or, if you feel you're up to it, use peer- to-peer approach without any centralized server. A client can be also made to run the server (non-dedicated).

Feel free to select any protocol you desire (UDP/TCP/SCTP) or even combine them. What you implement on top of the selected protocol has to be still reliable.

Networking code must be made by you, preferrably in C but C++ is also accepted. Use any library you see fit for other tasks (e.g. http-page parsing, GUI, database access, etc., if you feel the need) but remember to document the usage of these. Also if you're using code/instructions from other sources, please document them and add references to code to avoid plagiarism charges. You are free to use the examples provided on this course, and the exercises/assignments you have done during the course in this project.

GUI WILL NOT BE SCORED. So keep the user interface simple. If you have the skills to make something advanced that does not take too much time you can create more fancy GUI but still, it will not produce more points.

Use some code repository (recommended, not required). The course SVN is at your use but some other (e.g., git) code repository can be selected if you prefer them. The course assistant has to be given at least reading access to the code repository if an external one is used.

You can also ask for help for your project from the lecturer/assistant personally or via email. See wiki main pages for reception hours.

The game features

Required basic features:

  • Documentation (5 p), in PDF-format, must include:
    • Game description:
      • What kind of game you are trying to implement
      • What are the game rules and game mechanics
        • How the game is played (controls and movement/actions)
        • Views of different players (how actions are shown to others, how the players perceive the game world)
        • How the game will end
    • Game design
      • How to implement the game you described
      • The game features you are going to implement
    • Protocol
      • Diagrams (scored separately): Joining, game situations, error situations, ending of the game
      • Packets
    • Advanced techniques that are planned
      • The design of the technique in your game and a bit about the theory of the technique
      • How the technique is used in your game - what aspects it affects
    • Work schedule (here you can describe different features)
      • When each feature will be done
    • Division of work
      • Which persons were responsible of certain tasks (documentation, protocol design, server/client implementation, conducting testing, etc.)
    • Testing reports
      • From each tester + ideas how to fix the problems that did arise during testing (or actual fixes)
    • Additional libraries used
      • How/why/for what?
    • Situations that your implementation cannot handle
  • Protocol design and implementation (6 p)
    • Design (3p)
    • Implementation (3p)

Basic features (13 p)

The game has to consist of server and client and it can be played over networked connections. The game has to have ending terms. (5p)

Your clients must be able to search for the server in some way (server announces, broadcast, multicast, IP-list on some http-server, …). (2p)

Chat has to be provided for the players. Both public and private chatting has to be implemented. (2p)

Latency and jitter measurements for clients on server. (2p)

Implementation testing and testing reports. Each game has to be tested by 3 non-group members. The testing reports are included in the final documentation. (2p)

Advanced techniques (16p)

You can select 4 different techniques you want to implement into your game. Each technique will give 4 points, 2 from design into your code (in documentation) and 2 from implementing the technique.

Different techniques and some reading material (feel free to introduce some others too!)

Summary of the scoring

Feature Sub-feature Points Not done*
Documentation 5
Game description -1
Game design -1
Protocol design -1
The features that are planned
Work schedule -1
Division of work -1
Testing reports -1
Listing of additional libraries used -1
Situations that are not handled in implementation -1
Protocol 6 -40
Design 3
Implementation 3
Basic 13
Networked game (server & client) 5
Game has only 2 player support -3
Game can be played -1
Game can be ended -1
Server search 2 -2
Chat 2 -2
Latency and jitter measurement 2 -2 
Testing has been executed and errors corrected (at least attempted) 2  -2
Advanced 16
Design of the implementation and feature documentation 4×2
The feature has been implemented 4×2
TOTAL 40

* Negative effect

Additional points

  • Giving a presentation of the project at the end of the course: 1 p
    • A good presentation (discussion): 1 p
  • Any additional feature that you want to promote: 1-2p (remember to document these!)

DEADLINES

1. Groups have to be formed 24.11.2013 23:59
2. Initial game idea and design document 29.12.2014 23:59
3. Mid return (access to codes) 30.01.2015 12:00
4. Document return 16.02.2015 12:00
5. Presentation day 17.02.2015 10:00 →
6. Final code return 27.02.2015 23:59

Returning the assignment

Late returns: (2,3,4 and 6 ) = - ½ points/day

Further info for each deadline return

  1. Send a list of group members to course assistant by email at the end of lectures on 24.11.2014
  2. Return the game idea design documents to the assistant via email (only one return/group)
    • Describe here at least:
      • what kind of game (type, mechanics, rules)
      • how the game is played (how to move, interact, is the game player vs. player(s) or co-operative, how the game will end) - illustrations are great way to demonstrate this
      • what networking protocols you are going to use and what kind of networking you plan to use (server & client / peer-to-peer)
      • List what basic features you are going to/plan to/not going to implement
      • advanced techniques - how they are utilized in your game and how they affect your game
      • group formation and division of labor
      • initial schedule (loose schedule)
  3. Give details what repository you are using for the code/where the code resides and give at least read access for the assistant. Provide a list that shows what has been done - or mark the progression into your main project documentation (if not in the same repository, please send an updated version or a link to it).
  4. Same as. 3rd return if repository changed + exact location where to find the document
  5. Send slides to the assistant / put them into repository you're using and send only the exact location of the slides
  6. Same as. 3rd return if repository changed + brief explanation what works and what does not (can be included in the updated document)

Groups

Each group has own group-accessible folder on the course SVN server, complete addresses are in following table.

If the SVN does not work for some of the members please report this ASAP to the assistant.

Group name SVN Members Stats Code Compile Run
Group 1 https://www2.it.lut.fi/svn/courses/CT30A5002/Group1/ Juuso Valkki, Tommi Nivanaho, Jari Karhunen http://lut3179.pc.lut.fi/games_and_networking/Group1.tar.gz make client ./client 157.24.55.215
Group 2 https://www2.it.lut.fi/svn/courses/CT30A5002/Group2/ Juha Suomela, Kimmo Bordi, Valtteri Mehtonen http://lut3179.pc.lut.fi/games_and_networking/Group2.tar.gz make  make run-client
Group 3 https://www2.it.lut.fi/svn/courses/CT30A5002/Group3/ Markus Salminen, Jani Lankinen, Michal Genserek http://lut3179.pc.lut.fi/games_and_networking/Group3.tar.gz make deploy ./client
Group 4 https://www2.it.lut.fi/svn/courses/CT30A5002/Group4/ x,y,z
Group 5 https://www2.it.lut.fi/svn/courses/CT30A5002/Group5/ x,y,z