From e5d06e03109d37469d01a68650111da3ebbdb1c9 Mon Sep 17 00:00:00 2001 From: Augusto Date: Wed, 10 Feb 2021 12:05:38 +0000 Subject: [PATCH 1/2] Add the first draft of the multiplayer-fps subject and audit --- subjects/multiplayer_fps/README.md | 40 ++++++++++++++++++++++++ subjects/multiplayer_fps/audit/README.md | 33 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 subjects/multiplayer_fps/README.md create mode 100644 subjects/multiplayer_fps/audit/README.md diff --git a/subjects/multiplayer_fps/README.md b/subjects/multiplayer_fps/README.md new file mode 100644 index 00000000..c8554fb5 --- /dev/null +++ b/subjects/multiplayer_fps/README.md @@ -0,0 +1,40 @@ +## multiplayer_fps + +### Instructions + +Write your own version of the game [maze wars](https://www.youtube.com/watch?v=5V5X5SbSjns) you should recreate all the elements of the game, but you have freedom to implement the user interface. + +In the bare minimum you should implement the in the user interface: + + - A mini map where the player can see he's own position and the whole "game world". + + - The graphics of the game: the walls and the other players (see [maze_wars](https://www.youtube.com/watch?v=5V5X5SbSjns) for more details) + - You should also display the frame rate of the game in the screen. + + - A peer-to-peer network that will allow other players to join your server and play against each other. + + - Your implementation should allow one client and the server to run in the same machine and allow all the other clients to connect to the server in other machines + +You have to develop the game server and also a client application: + +- The server must accept all the connections possible. + +- When the client is initialized it should ask for the : + + - IP address of the server, allowing the same client application to connect to any server. + + - After this it should ask also for a name. + + - Example: + Assuming that you can to connect to a server in your same computer. + + ```console + path/to/client $ cargo run 192. + Enter IP Adress: 127.0.0.1 + Enter Name: name + Starting... + path/to/client $ + ``` + - Note: If you want to connect to a server in another computer you will have to connect to the Ip address of the server computer. + +- You can use any language that you prefer. diff --git a/subjects/multiplayer_fps/audit/README.md b/subjects/multiplayer_fps/audit/README.md new file mode 100644 index 00000000..c7158615 --- /dev/null +++ b/subjects/multiplayer_fps/audit/README.md @@ -0,0 +1,33 @@ +### Functional + +##### Try to run the game server + +###### Does it compile and run without any warnings? + +##### Try to run a client in the same computer as the sever + +###### Does it compile and run without any warnings? + +###### Does it ask for the IP address of the server? + +##### Introduce the IP address of the game server + +###### Does the client manage to connect to the server? + +###### Does the client asks you for a name? + +##### Introduce your name + +###### Does the client initiates the graphical interface? + +###### Are you presented with a mini map of the maze? + +###### Can you see your position in the mini map? + +###### When you move around the world does your position updates in the mini map? + +###### When you move around the maze does the view of the camera updates? + +###### Is the frame rate displayed in the interface? + +###### Is the frame rate of the game higher or equal to 30 fps? From 90e7ef074dd6fdb2700a82a4ce6ff4600b5ebcbc Mon Sep 17 00:00:00 2001 From: Augusto Date: Wed, 7 Apr 2021 23:05:57 +0100 Subject: [PATCH 2/2] Add instructions and questions for the project multiplayer_fps --- subjects/multiplayer_fps/README.md | 59 ++++++++++++++++-------- subjects/multiplayer_fps/audit/README.md | 22 ++++++++- 2 files changed, 59 insertions(+), 22 deletions(-) diff --git a/subjects/multiplayer_fps/README.md b/subjects/multiplayer_fps/README.md index c8554fb5..63d654ff 100644 --- a/subjects/multiplayer_fps/README.md +++ b/subjects/multiplayer_fps/README.md @@ -4,37 +4,56 @@ Write your own version of the game [maze wars](https://www.youtube.com/watch?v=5V5X5SbSjns) you should recreate all the elements of the game, but you have freedom to implement the user interface. -In the bare minimum you should implement the in the user interface: +#### Minimum Requirements for the User Interface: - - A mini map where the player can see he's own position and the whole "game world". +- A mini map where the player can see he's own position and the whole "game world". - - The graphics of the game: the walls and the other players (see [maze_wars](https://www.youtube.com/watch?v=5V5X5SbSjns) for more details) - - You should also display the frame rate of the game in the screen. +- The graphics of the game: the walls and the other players (see [maze_wars](https://www.youtube.com/watch?v=5V5X5SbSjns) for more details) - - A peer-to-peer network that will allow other players to join your server and play against each other. +- Finally you have to display the frame rate of the game on the screen. - - Your implementation should allow one client and the server to run in the same machine and allow all the other clients to connect to the server in other machines +- The game should have at least 3 levels with increasing difficulty. -You have to develop the game server and also a client application: +#### Architecture of the application -- The server must accept all the connections possible. +- A peer-to-peer network that will allow other players to join your server and play against each other. -- When the client is initialized it should ask for the : +- Your implementation should allow one client and the server to run in the same machine and all the other clients to connect from different computers. - - IP address of the server, allowing the same client application to connect to any server. +- Use the UDP protocol to enable the communication between the clients and the server. - - After this it should ask also for a name. + +#### You have to develop the game server and also a client application: + +- The server must accept as much connections as possible (the minimum should be 10). + +- When the client is initialized it should ask for: + + - The IP address of the server, allowing the client application to connect to any server. + + - After this, it should ask also for a name. - Example: Assuming that you can to connect to a server in your same computer. - ```console - path/to/client $ cargo run 192. - Enter IP Adress: 127.0.0.1 - Enter Name: name - Starting... - path/to/client $ - ``` - - Note: If you want to connect to a server in another computer you will have to connect to the Ip address of the server computer. +```console +path/to/client $ cargo run +Enter IP Address: 198.1.1.34:34254 +Enter Name: name +Starting... +path/to/client $ +``` + +#### Performance Requirements + +- The game should always have a frame rate above 50 fps (frames per second). + +#### Bonus + +- Implement a level editor to allow player to create they're own mazes. + +- Implement an algorithm that generates automatically new mazes. + +- Implement A.I. players to allow playing the game without having to wait for more people to join to the server. -- You can use any language that you prefer. +- For the basic implementation you can initialize the game from the command line. As a bonus you can implement the initialization of the game as part of the graphical interface and save a history of the hosts with an alias so it's easier to reconnect to known servers. diff --git a/subjects/multiplayer_fps/audit/README.md b/subjects/multiplayer_fps/audit/README.md index c7158615..1c32c0d5 100644 --- a/subjects/multiplayer_fps/audit/README.md +++ b/subjects/multiplayer_fps/audit/README.md @@ -1,4 +1,4 @@ -### Functional +#### Functional ##### Try to run the game server @@ -30,4 +30,22 @@ ###### Is the frame rate displayed in the interface? -###### Is the frame rate of the game higher or equal to 30 fps? +###### Is the frame rate of the game higher higher than 50 fps? + +##### Try to connect to from another computer + +###### Are you able to connect to the server? + +##### Connect simultaneosly with as much people as posible and play the game for at least 5 minutes + +###### Did the frame rate stayed over 50 fps? + +###### Independently of the frame rate displayed in the screen, does the game feels smooth? + +#### Bonus + +###### +Is it posible to edit you're own maze? + +###### +Can you play against an A.I. player? + +###### +Can levels be created automatically by an algorithm?