imathur1 / snek-game

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CS128H Final Project

Group Name: Team::Team

Names and NetIDs

Ishaan Mathur, imathur3 James Huang, jamesjh4 Louis Asanaka, asanaka2

Project Introduction

  • 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

System Overview

  • 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

Possible Challenges

  • 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

Building

  • Running cargo build in the root project directory will suffice.

Running

  • To run the server, do cargo run --bin snek-server
  • To run the client, do cargo run --bin snek-client

References

Slither.io

Snake from a Minecraft minigame

About


Languages

Language:Rust 100.0%