1. Homepage
  2. Programming
  3. INFT 3030 Concurrent Programming - Assignment: Multi-player game server (MPGS)

INFT 3030 Concurrent Programming - Assignment: Multi-player game server (MPGS)

Engage in a Conversation
UniSAINFT 3030Concurrent ProgrammingJavaMulti-player game server

INFT 3030 Concurrent Programming
CourseNana.COM

Concurrent Programming Assignment SP2 2019 CourseNana.COM

Introduction CourseNana.COM

This document defines the requirements for the assignment in Concurrent Programming. The assignment is intended to give you experience in modelling a concurrent requirement and writing a concurrent program in Java to implement it. The CourseNana.COM

application is a multi-player game server (MPGS). CourseNana.COM

A MPGS is software that runs on a computer connected to Internet. It enables and handles all communication between players of games running on Internet connected devices so that they can participate in a shared game. A turn based game is often played using a multiplayer game server. In these games each player (using client software) takes a turn in giving input to the game server. CourseNana.COM

Google (PlayServices) and Apple (GameCenter) provide a MPGS for their mobile platforms. There are also independent companies providing these services; examples of which are Photon (https://www.exitgames.com/en/OnPremise) and Smartfox (http://www.smartfoxserver.com/products). CourseNana.COM

MPGS can quickly become very complex and contain many functions that we won’t be implementing in this assignment. The scope of the MPGS to be implemented by you and your team in for the Concurrency Programming assignment are the ability CourseNana.COM

for players to connect and to play a game together, noting the following: CourseNana.COM

􏰀 Only players who are registered are allowed to connect to and play on the MPGS. It is acceptable to have a list of registered players in an external database, i.e. you can assume that the registration is taken care of by a separate piece of software and the list of registered players is provided by that software. Typically, when a player connects to the CourseNana.COM

MPGS, they are often placed into a “lobby”. CourseNana.COM

  • 􏰀  Normally a player in the lobby would then choose a game to join or start their own and hope others will join. However CourseNana.COM

    in this assignment, you are only required to have one multiplayer game to join and everyone who is logged in will have CourseNana.COM

    to play in that one game. CourseNana.COM

  • 􏰀  The game to be hosted by the MPGS will be called multiplayer snakes CourseNana.COM

Multiplayer snakes CourseNana.COM

Single player versions of snakes can be found in many places on the internet, e.g. http://playsnake.org and http://codeincomplete.com/projects/snakes/. The rules vary between different variants: CourseNana.COM

􏰀 you can get points for eating fruit, as well as simply surviving as long as you can CourseNana.COM

  • 􏰀  it can be OK to cross the edge of the screen, or this can end your game CourseNana.COM

  • 􏰀  game time can be limited so you get a fixed time to score, or the game can go on until you cross the edge of the screen CourseNana.COM

    or collide with yourself or another player. CourseNana.COM

A downloadable multiplayer version of snakes for windows is here: http://sandbox.yoyogames.com/games/172375/download. In this case there are no food items you just try to block other snakes and need to be the last snake left with somewhere to move to win. Another example of the idea can be viewed at https://www.youtube.com/watch?v=hRy_qQLdptA although you may not understand the German commentary! CourseNana.COM

For the purposes of this assignment, you are free to choose your own rules for the actual snakes game. The main focus for this assessment is the way your MPGS supports multiple concurrent players. CourseNana.COM

Server design CourseNana.COM

After they have connected and joined a game, players send to the game server their moves. These moves are very simple: Up, Down, Left, Right or No Move. A No Move could mean either keep going in the same direction as the last move or stop and wait. The game server takes all the moves from all the players and updates its copy of the game board. If you chose to have fruit the snakes eat to get points, the server will need to detect if fruit has been eaten and updates player scores. The server CourseNana.COM

then broadcasts the game board (with all the other players shown and any fruit left or added) to each player so they can make the next move. CourseNana.COM

In a fully networked implementation of this game each player will have to display on their screen the current state of play and then transmit moves to the server (using TCP/IP or UDP sockets) over the internet. Given this can be a time intensive exercise, in this assignment, we are going to limit the implementation to save on programming time and leave time to concentrate on the concurrent aspects of the server and players. For the MPGS you will implement, no networking is required. In keeping with the rest of this course we will restrict the game server and players to be threads all on the same Java process (JVM). CourseNana.COM

This means that you will not have to write TCP/IP or UDP socket code, rather you will need to manage the communication between players and the server using Java constructs. This also means that initially at least you can get the server to draw the game state on a single screen where all the players can see it rather than sending a copy down to each player for them to draw on their own screen. CourseNana.COM

Modelling CourseNana.COM

Testing CourseNana.COM

Assessment summary CourseNana.COM

In addition to writing concurrent Java code for the game server and clients (players), you will need to construct a model of their game server and players using the LTSA tool. The modelling will need to accurately capture the concurrent behaviour of your proposed server and show that it is both safe, i.e. it is not likely to freeze. And that it is in fact using multiple threads to perform its functions in a way than can be scaled up to many different players. CourseNana.COM

You will be required to demonstrate testing to show that the game can be played by 4 real players and up to 100 simulated players. Simulated players just make random moves on the board. It would be expected that you apply testing concepts that have been discussed in the lectures (JUnit assertions and mock objects). CourseNana.COM

For internal students this will be a group project with teams of 4. External students will work alone on the assignment and hence will not need to provide an as complete a solution as internal students. CourseNana.COM

The assessment scoring is divided into two stages. CourseNana.COM

Checkpoint 1 CourseNana.COM

Checkpoint 2 CourseNana.COM

Final Submission and Presentation CourseNana.COM

Internal CourseNana.COM

2.5 points scored as a group CourseNana.COM

2.5 points scored as a group CourseNana.COM

10 points scored individually 5 points scored as a group CourseNana.COM

External CourseNana.COM

The following subsections provide details that are focused on internal students. Clarifications for external students are provided at the end of each section. CourseNana.COM

Checkpoint 1 CourseNana.COM

This body of work is to be presented in the week 6 lab slot. CourseNana.COM

The purpose of the check point provides an opportunity for the design of the server to be checked before implementation commences. At this checkpoint the group should have finalised the concurrency design of the server and player roles and created a Java class design document. The group should also have a draft LTSA model of their concurrency design. All this is to CourseNana.COM

be gathered in a design report of approximately 3000 words (or equivalent with diagrams). The report needs to allocate Java classes to group members for the first sprint to implementation. CourseNana.COM

External students will do this as individuals. The deliverable is the same, but they do not need to prepare such a large document (1000 words). CourseNana.COM

Checkpoint 2 CourseNana.COM

This body of work is to be presented in the week 8 lab slot.
The purpose of this checkpoint is to evaluate some early working code as planned for the first sprint in checkpoint 1. There
CourseNana.COM

should be an emphasis on a thread-safe monitor controlled buffer between clients and the server and some initial implementation of the threaded server code especially the thread safe game state code. The LTSA model should be nearing completion. Some attention should be focused on testing and how this will be performed. Finally plans for the final implementation should be finalized and every team member should have some coding allocated to complete the assignment. CourseNana.COM

An updated report will be required for this checkpoint and working code is required.
External students do not need as large an updated report (1000 words) and the scope of code implementation will be reduced.
CourseNana.COM

Final Submission and Presentation CourseNana.COM

The final submission will provide working code which allows four players to engage in the game and code to allow simulated play for up to 100 players. There will also be a completed LTSA model of the concurrent behaviour the players and the game server. The model should demonstrate that the game server is capable of concurrent operation and that it has no potential freezes (deadlocks). A report will describe the structure of the code for both the model and the actual implementation. The report should be approximately 5000 words or equivalent diagrams. The group will present the server working with 4 real CourseNana.COM

players and 100 simulated players. The group mark will be allocated for successful integration of group member’s code and model and the demonstration/presentation. The individual marks will be allocated to the code each student has written and their individual contribution to contribution to the model and the report. CourseNana.COM

External students need only demonstrate one real player, and scaling up to 4 simulated players. External students need only provide a report of 1000 words. External students can demonstrate via a screen capture or video. CourseNana.COM

Technical Specifications CourseNana.COM

Stage 1 CourseNana.COM

The first stage of the project should be to allow players to login.
Each player will be modelled and coded as a concurrent thread. The server design should be able to handle concurrent login
CourseNana.COM

requests from different players. CourseNana.COM

Logins must be thread-safe on the server. It is not necessary to support registration. Registering players can be handled by manually loading their usernames and passwords into a suitable database. A suggested package is MapDB (as presented in Appendix 1) which is a good choice for a thread-safe embedded database. CourseNana.COM

It is a requirement for the concurrent login code that a thread-safe standard Java collection is NOT to be used to pass messages between the player logging in and the server. It is also a requirement that monitors be used to manage access to this collection. CourseNana.COM

Stage 2 CourseNana.COM

The second stage of the project is to implement the game playing part of the server. Once the server starts it should be ready to accept logged in players playing the game. CourseNana.COM

It is a requirement to use thread safe collections for the communication channels between players and the server for game playing and for the storage of the game state. It is a requirement to use a thread pool for game player interactions based on the java.util.concurrent.executor model. The actual game playing will adopt the pure client server model. CourseNana.COM

The server's main loop would be a concurrent version of this pseudo code: CourseNana.COM

while not done
   for each player in world
      if input exists
         get player command
         execute player command
         tell player of the results

      send typed text to server
   if output from server exists

print output CourseNana.COM

In the case of the assignment Java threaded version with no networking the server could take care of updating the screen since all players can see the single screen. CourseNana.COM

There is a simple snake single player code example at: https://code.google.com/p/java-snake/source/browse/trunk/java- CourseNana.COM

snake/src/snake/Main.java. Code from here tested on IntelliJ 14 community edition can be found in Appendix 2 CourseNana.COM

Get in Touch with Our Experts

WeChat (微信) WeChat (微信)
Whatsapp WhatsApp
UniSA代写,INFT 3030代写,Concurrent Programming代写,Java代写,Multi-player game server代写,UniSA代编,INFT 3030代编,Concurrent Programming代编,Java代编,Multi-player game server代编,UniSA代考,INFT 3030代考,Concurrent Programming代考,Java代考,Multi-player game server代考,UniSAhelp,INFT 3030help,Concurrent Programminghelp,Javahelp,Multi-player game serverhelp,UniSA作业代写,INFT 3030作业代写,Concurrent Programming作业代写,Java作业代写,Multi-player game server作业代写,UniSA编程代写,INFT 3030编程代写,Concurrent Programming编程代写,Java编程代写,Multi-player game server编程代写,UniSAprogramming help,INFT 3030programming help,Concurrent Programmingprogramming help,Javaprogramming help,Multi-player game serverprogramming help,UniSAassignment help,INFT 3030assignment help,Concurrent Programmingassignment help,Javaassignment help,Multi-player game serverassignment help,UniSAsolution,INFT 3030solution,Concurrent Programmingsolution,Javasolution,Multi-player game serversolution,