Ishaan Mathur, imathur3 James Huang, jamesjh4 Louis Asanaka, asanaka2
- Description:
- A multiplayer version of Snake (Snek)
- Goals, Objectives and Why we chose this project:
- Branch and build off of the skills we learned
- Familiarize ourselves with networking and graphics in Rust
- Interested in building a simple game that we are familiar with
- Graphics
- Create a basic UI with a grid showing the state of the game (snek positions, head, and body). The UI will be using Macroquad
- Task List
- Window using Macroquad
- Gridboard
- Snek head and body
- Snek movement
- Game logic
- Handle interactions between sneks and their environment.
- Task List
- Snek to snek collision
- Snek to wall collision
- Alive/death snek state
- Board representation
- Networking
- Synchronize client data and broastcast a global game state.
- Task List
- Client
- Receiving and updating game state
- Serializing and sending game state
- Server
- Handling client connections and disconnections
- Broadcast game state
- Client
- Writing the functionality to determine collisions between sneks
- Continously updating the state of the board and the player positions
- Handling simultaenous requests from every player in a parallelizable manner
- Developing the graphical interface to handle user interaction and display the current game state
- Running
cargo build
in the root project directory will suffice.
- To run the server, do
cargo run --bin snek-server
- To run the client, do
cargo run --bin snek-client
Slither.io
Snake from a Minecraft minigame