|
1 |
| -# Networked client-server multiplayer game demo written in Rust |
| 1 | +# Networked client-server multiplayer architecture demo written in Rust |
2 | 2 |
|
3 | 3 | [](https://github.com/balintkissdev/multiplayer-game-demo-rust/actions/workflows/ci.yml)
|
4 | 4 |
|
5 |
| -> A proof-of-concept networked multiplayer game demonstrating UDP socket programming and asynchronous runtime usage in Rust. |
| 5 | +> "A technical demonstration showcasing UDP socket programming, Tokio |
| 6 | +> asynchronous runtime usage, and client-server game architecture in Rust. |
| 7 | +> Features real-time synchronization of 2D movement between local and remote |
| 8 | +> players." |
6 | 9 |
|
7 | 10 | 
|
8 | 11 | 
|
@@ -59,12 +62,12 @@ custom-tailored reliability protocols on top of it.
|
59 | 62 | - Client-server architecture for multiplayer networking. UDP socket
|
60 | 63 | communication for low-latency networking.
|
61 | 64 | - Health-check mechanism to detect lost network connections.
|
62 |
| - - Reliability patterns to mitigate harsh network environments like UDP packet losses. |
| 65 | + - Mitigation of UDP packet losses in harsh network environments. |
63 | 66 | - Real-time multiplayer gameplay with smooth synchronization.
|
64 | 67 | - Graphical client application with GUI menu
|
65 | 68 | - Hardware-accelerated OpenGL rendering for 2D top-down perspective graphics.
|
66 | 69 | - Flexible server hosting options:
|
67 |
| - - Clients can host hybrid server sessions from GUI. |
| 70 | + - Peer-hosted server: clients can host their own server sessions from GUI. |
68 | 71 | - Headless/dedicated server-only mode running without GUI.
|
69 | 72 |
|
70 | 73 | ## Requirements
|
@@ -104,8 +107,10 @@ The application can also be deployed as a Docker container, which will run in se
|
104 | 107 | docker build -t multiplayer-game-demo-rust .
|
105 | 108 | ```
|
106 | 109 |
|
107 |
| -2. Launch the Docker container. This starts with `--server-only` and `--trace` options by |
108 |
| -default. See [Command line options](#command-line-options) for more info. |
| 110 | +2. Launch the Docker container. This starts with `--server-only` and `--trace` |
| 111 | + options by default. Make sure to allow the container's port (`8080` by |
| 112 | + default) to the host. See [Command line options](#command-line-options) for |
| 113 | + more info. |
109 | 114 |
|
110 | 115 | ```sh
|
111 | 116 | docker run -d -p 8080:8080 multiplayer-game-demo-rust
|
@@ -134,3 +139,8 @@ switch.
|
134 | 139 | - `--trace`: Enable tracing of UDP messages on console log.
|
135 | 140 | - `-h, --help`: Print help.
|
136 | 141 |
|
| 142 | +## Resources |
| 143 | + |
| 144 | +- Roberto Vitillo. (2021). *Understanding Distributed Systems: What every developer should know about large distributed applications*. |
| 145 | +- Josh Glazer and Sanjay Madhav. (2015). *Multiplayer Game Programming: Architecting Networked Games*. Addison-Wesley. |
| 146 | + |
0 commit comments