A client-server 3D renderer featuring real-time player movement and view synchronization within a dynamic n-tick rate system. Built with Rust using OpenGL and SDL2.
- n-tick rate server (default: 128)
- multiplayer (capacity: $\infty$)
- basic lighting (ambient + diffuse + specular)
- back-face culling
- Improve documentation (severely).
- Fix server implementation
- The server tends to fall apart with 3+ connections.
- Implement client-side server interpolation.
- Implement culling techniques (frustrum & occlusion)
- Implement instanced-based rendering.
- Implement AABB-based collision.
- Maybe try kiddo.
Retrieve the repository:
git clone https://github.com/splurf/blazed-demo
Before attempting to compile the client, you will need to configure SDL2. Afterwards, you should have the library files placed into your toolchain and the .dll file at client\SDL2.dll in this project's directory.
cargo r --release --manifest-path client\Cargo.toml
cargo r --release --manifest-path server\Cargo.toml
Client
Usage: client.exe [OPTIONS]
Options:
--fps <FPS> Specify the FPS [default: 120]
--offline Do not attempt to connect to server
--remote-tcp-addr <REMOTE_TCP_ADDR> Remote TCP IP address [default: 127.0.0.1:54269]
--local-udp-addr <LOCAL_UDP_ADDR> Local UDP IP address (optional)
--remote-udp-addr <REMOTE_UDP_ADDR> Remote UDP IP address [default: 127.0.0.1:54277]
-h, --help Print help
Server
Usage: server.exe [OPTIONS]
Options:
-t, --tcp-addr <TCP_ADDR> Local TCP IP address [default: 127.0.0.1:54269]
-u, --udp-addr <UDP_ADDR> Local UDP IP address [default: 127.0.0.1:54277]
--tps <TPS> Server ticks/sec [default: 128]
-h, --help Print help
.png)

