Highlights
Task Maze
In this submission you will create a simple online multiplayer "roaming" game, where n number of players walk around a maze (or outside the maze). All participants in the game must see all other participants in the game and how they move. The task is assumed to be solved with the use of Java / RMI as a platform for communication.
The assignment must be Passed to be eligible to receive a grade in the subject.
Passed in this context is that at least 60% of the task is done satisfactorily. 60% corresponds to 60 points. Total points are 100 for this task.
The assessment will be based on the following criteria, with a maximum number of points:
• Documentation in code and outside code, including installation instructions
Code that is not documented or poorly documented will not get points in this category. Similarly, missing, incomplete or incorrect installation instructions will result in no points being awarded in this category.
Points: 0 – 20
• Design of solution, purely in terms of communication
Note that the user interface will not count that much, however, the game must be user-friendly and playable. Here it is the solution for communication that is rewarded. Solutions that burden the machine/network unnecessarily will be deducted here.
Points: 0 – 20
• How much of the task is solved?
The task must of course be solved in its entirety, but for various reasons it may be that some things remain. At this point, points will be awarded based on how large a part of the task has been completed. You do not get points for "things" that do not work, only the parts that work.
Points: 0 – 20
• Simplicity and elegance There are an infinity of potential solutions, and this point rewards simplicity in code and elegance in implementation. A good program code is easy to read and easy to understand.
• Error situations, including user errors
Error situations arise, and this point includes two aspects of this in this respect. Partly how well you have tested your application (remember to test to find errors, not to see if it works), and partly how you use Exceptions in your solution.
Points 0 – 20
About the handed-out code ...
In this assignment, you will be given some source code that you will use during the solution of the compulsory assignment. The code can be found in the file (NewMazeOblig.zip), and the code is relatively well documented.
In the code you will find comments that certain parts of the code should not be touched. If you see this - do not touch the code!
The handed-out code generates a logical labyrinth which by default consists of boxes (Box [] []), 50 x 50 horizontally and vertically, which stand next to each other so that they form a square. This happens in the RMI object BoxMaze which implements BoxMazeInterface. In BoxMaze, the maze itself is created. The BoxMaze constructor is designed to generate any size. In the app Maze you will find static int DIM which defines the size of a maze, and in the applet this is set to 10. If you want a larger maze, then this is changed in the Maze class.
The maze on its side (which you will find in BoxMaze) is created by continuously removing walls between the boxes in such a way that the maze arises. At the same time, the algorithm ensures that there is at least one way through the maze and that the entrance to the maze is always at the top left corner, and the exit is always at the bottom right. Each time you run the applet, a new unique maze is generated, different from the previous one.
Each Box in the maze (BoxMaze) knows if it has an adjacent path up / down / left / right and can return an array of all adjacent boxes where there is a path (public Box [] getAdjecent ()).
In addition, the task also includes a so-called backtracking algorithm that is implemented in the Simulation package, as part of the VirtualUser class. VirtualUser assumes that each "player" in the maze has a position defined as an instance of the PositionInMaze class. This position then uses VirtualUser to find its way out of the maze, from any space inside the maze, and out of the maze, whereupon the "player" is repositioned using a set of movements, to the start of the maze. This is done in the getFirstIterationLoop () method. The getIterationLoop () method actually does the same thing, but always from position [1,1], ie the upper left corner of the maze.
The Maze applet works in such a way that it connects to the RMIServer and retrieves the logical representation of the maze. This is then drawn up in the applet.
PS! There is an error in the solveMaze () method in VirtualUser which in special cases results in a recursion well (stack overflow). This error situation is very rare, but it can happen in some cases. If this happens then just run the program again.
To get the framework up and running:
a) You start RMIServer (no separate start of rmiregistry, and no separate definition of java.security)
b) RMI server reads DIM from the Maze class and instantiates a logical occurrence of the maze.
c) You can start as many clients as desired via an applet Maze
The challenge here is as follows:
• Send as few messages as possible
• Ensure that start / end etc. is as simple as possible for the clients who drive.
• The server can e.g. run all the time while player comes to or falls from.
• Some questions that you must decide on along the way ...:
o What happens if someone tries to walk through a maze wall?
o What happens if someone collides?
o What happens if someone tries to go outside the maze?
o Should the client be able to connect to other servers than the default?
• Should all programs operate with their own RMI registry or?
In addition to these “ambiguities” that you must address, it is a requirement that you should be able to easily demonstrate at least 20 simultaneous clients in the maze. This means that each client must be such that it places itself at any point in the maze, whereupon the client finds the exit, and where the client then drives around and finds an entrance to the maze and traverses the maze again. This has already been solved with the code that you have been given, but the problem related to how the other clients observe these movements has not been solved.
It is a goal to be able to demonstrate what is the maximum number of clients you can handle in your solution and argue for where the bottleneck in that case is.
Finally, there are at least 3 different methods to solve this problem, and you should figure out which of these methods to use. Common to all is that the server generates a maze that the client should be able to "go in".
Method A: The client continuously updates its location in the maze and informs the server of its new location. In addition, the client continuously asks the server for the positions of the other clients.
Method B: The client retrieves an overview of all other clients from the server, and then informs the other clients directly (via peer-to-peer) about their place in the maze.
Method C: The server always has an overview of the clients, and continuously updates each client about the positions of the other clients
Attached you will find a starting point for programming this task. A general prerequisite for the solution is that you implement some form of RMI-Callbacks. This really means that the solution listed as Method A is not a recognized way to solve the task since it potentially does not involve callbacks.
The point is that when the game is "finished" then anyone should be able to play/participate no matter where they are in the world.
A final tip along the way is that when simulating clients, it is not necessarily the case that all clients need to have a graphical user interface, but remember that all clients should still have a complete overview of where everyone else is in the maze.

This IT/Computer Science Assignment has been solved by our IT/Computer Science Experts at My Uni Paper. Our Assignment Writing Experts are efficient to provide a fresh solution to this question. We are serving more than 10000+ Students in Australia, UK & US by helping them to score HD in their academics. Our Experts are well trained to follow all marking rubrics & referencing style.
Be it a used or new solution, the quality of the work submitted by our assignment experts remains unhampered. You may continue to expect the same or even better quality with the used and new assignment solution files respectively. There’s one thing to be noticed that you could choose one between the two and acquire an HD either way. You could choose a new assignment solution file to get yourself an exclusive, plagiarism (with free Turnitin file), expert quality assignment or order an old solution file that was considered worthy of the highest distinction.
© Copyright 2026 My Uni Papers – Student Hustle Made Hassle Free. All rights reserved.