Sky Island Showdown: CSE 125 Spring 2023 Group 5 Project, a Multiplayer, 3D Game

Related tags

Command-line group-5
Overview


As the Wind Blows 💨

Project for CSE 125 Spring 2023, Group 5
Homepage »

As the Wind Blows is a 3D multiplayer game, created with Rust, WGPU, and a touch of love. We built the game engine from scratch, providing a fresh gameplay experience accompanied by a visually appealing art style. Set in a world of floating sky islands, this immersive battle game invites you and your friends to enjoy together. Come and discover the charming universe of As the Wind Blows!

Getting Started

To get started on contributing to the project, follow the steps below.

Prerequisites

  • Rust (install using rustup)
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Building

  1. Clone the repo
    git clone https://github.com/ucsd-cse125-sp23/group-5.git
  2. Build the project
    cargo build
  3. Run the server and client(s)
    1. In debug mode(running locally)
    cargo run --features debug --bin server # start the server
    cargo run --features debug --bin client # start a client
    1. In production mode
     cargo run --features prod --bin server # start the server
     cargo run --features prod --bin client # start a client

Testing

All the unit tests are attached in the src directories in each file with the code that they’re testing. The convention is to create a module named tests in each file to contain the test functions and to annotate the module with cfg(test).

  1. Run all unit tests
    cargo test
  2. Run tests specific to a crate
    cargo test -p [client|server|common]
  3. Run tests specific to a module
    cargo test -p [client|server|common] -- [module_name]

Documentation

Documentation is generated using cargo doc. The documentation is generated in the target/doc directory.

  1. Generate documentation and open it in a browser
    cargo doc --open

Project Structure

This project follows a monorepo architecture, where the client, server, and common libraries reside in a single repository. There are 3 crates in this project: client, server, and common.

  • client: This folder contains the code and resources for the game client. The client is responsible for rendering the game, handling user input, and communicating with the server.
  • server: This folder contains the code and resources for the game server. The server is responsible for managing game state, handling client connections, and processing game events.
  • common: This folder houses the shared Rust library that contains code and resources used by both the client and server. This can include shared data structures and and utility functions.

License

Distributed under the MIT License. See LICENSE.txt for more information.

Team

  • Yunxiang Chi
  • Esa Hammado
  • Binghong Li
  • Xivan Shao
  • Alan Wang
  • Shuhua Xie
  • Lingye Zhuang
Comments
  • Wind attacks

    Wind attacks

    Added logic for wind attacks, cooldowns, and ammo Added code for displaying cooldowns/ammo on client Refactored code for respawning to only use spawn command Changed cooldown system to store cooldown value instead of timestamp because converting on client side was too hard

    opened by alanlwang1 0
  • missing import in main branch

    missing import in main branch

    Imported DEFAULT_SERVER_ADDR in server/src/main.rs; couldn't compile the server code in the main branch without it even though it was part of inactive code.

    opened by ehammado 0
  • feat(all): added game event channel infra for sending sfx/vfx

    feat(all): added game event channel infra for sending sfx/vfx

    The command handlers can now send game events (for sound effects and particle effects) to the clients, with specified recipients. The specific sfx/vfx specs are yet to be determined, and the client side event handlers need to be set up in real use cases.

    opened by xiyan128 0
  • feat(client): loading models and scene graph from json config files

    feat(client): loading models and scene graph from json config files

    • model configs are in models.json
    • scene config is in scene.json

    I also refactored the scene graph code a bit, but the interface should remain the same.

    opened by xiyan128 0
  • Fixed inconsistent sampling and added poller with condvar for better input message passing

    Fixed inconsistent sampling and added poller with condvar for better input message passing

    Refactored the input system by introducing a poller which solves the inconsistent sampling rate issue. This is necessary for stable cross-platform experience and winit does not support customization on repeat delay.

    The poller uses a condition variable to wait for the intervals, and it can be waken up if there are events that need to be handled immediately (like "pressable" inputs).

    opened by xiyan128 0
An NTP implementation in Rust, supported by Internet Security Research Group's Prossimo project.

NTPD-rs NTPD-rs is an implementation of NTP completely written in Rust, with a focus on exposing a minimal attack surface. The project is currently in

Prossimo (ISRG) 302 Jan 4, 2023
`decaf377-rdsa` is a randomizable signature scheme using the `decaf377` group.

decaf377-rdsa is a variant of RedDSA, instantiated using the decaf377 group. Signatures are parameterized by domain (for instance, Binding and SpendAu

Penumbra 8 Oct 25, 2022
Python/Rust implementations and notes from Proofs Arguments and Zero Knowledge study group

What is this? This is where I'll be collecting resources related to the Study Group on Dr. Justin Thaler's Proofs Arguments And Zero Knowledge Book. T

Thor 65 Dec 16, 2022
Yet Another Kalman Filter Implementation. As well as Lie Theory (Lie group and algebra) on SE(3). [no_std] is supported by default.

yakf - Yet Another Kalman Filter Yet Another Kalman Filter Implementation, as well as, Lie Theory (Lie group, algebra, vector) on SO(3), SE(3), SO(2),

null 7 Dec 1, 2022
Librarian runs pre-configured commands against a group of files that match a set of filters

Filesystem Librarian Librarian runs pre-configured commands against a group of files that match a set of filters. The group of files is called a libra

Jason Rogena 10 Dec 25, 2022
Create, reorder, group, and focus workspaces easily in i3. Fully configurable with enhanced polybar modules.

Create, reorder, group, and focus workspaces fast and easily in i3. Features Focus Mode: Eliminate Distractions Enable Focus Mode: Use groups and focu

i3-wsman 15 Sep 2, 2023
An optimizing IK solver based on the Lie group of rigid transforms SE(3)

OptIK A fast inverse kinematics solver for arbitrary serial chains, providing Rust and Python programming interfaces. The implementation is similar to

Kyle Cesare 17 Oct 5, 2023
Simple RISC-V emulator presented at Rust Nation 2023

A tale of binary translation This repo contains the code for the RISC-V emulator that I presented at Rust Nation 2023. It is intended as a teaching ex

Amanieu d'Antras 34 Feb 20, 2023
Contains challenges, write-ups, and deployment configurations from b01lersCTF 2023.

CTF Name A template repository for a CTF competition. This is a description of the CTF event. CTFTime Link Structure Challenges are organized by categ

null 7 Mar 29, 2023
a hack implementation of CCS generic arithmetization, won a prize at Zuzalu hackathon 2023 despite incompleteness

ccs-hack CCS (Customized Constraint System) is a generic constraints representation system can simultaneously capture R1CS, Plonkish, and AIR: $$\sum_

Thor 27 Jun 1, 2023
GraphQL Summit 2023 Workshop Demo for Federated Subscriptions in GraphOS.

Kahoot Clone Demo App - Subgraphs Welcome to the project for GraphQL Summit 2023 "Federated Subscriptions in GraphOS" workshop! ⚠️ Before the workshop

Apollo GraphQL 4 Oct 10, 2023
rust-rustlings-2023-autumn-CAIMEOX created by GitHub Classroom

2023秋冬季操作系统训练营 第一阶段训练安排 rustlings Rust编程训练教室 rustlings ??❤️ Greetings and welcome to rustlings. This project contains small exercises to get you used

The Learning&Training Hub of OS Kernel 2 Oct 31, 2023
DevNot Summit 2023 etkinliğindeki Programcıdan Programcıya Rust konulu sunuma ait örnek kodları içerir.

DevNot Summit 2023 - Programcıdan Programcıya Rust DevNot Summit 2023 etkinliğindeki Programcıdan Programcıya Rust konulu sunuma ait örnek kodları içe

Burak Selim Senyurt 8 Oct 12, 2023
Repository containing schedules, slides/talk and user submissions for the 2023 devconnect hackerhouse

2023 DevConnect Hacker House Content Schedule Hackathon Tracks xChain dapps - Total Prize pool of USD 12k (5k, 4k, 3k) Fully on-chain dapps - Total Pr

Internet Computer Hackers Den 8 Nov 22, 2023
🎄Solutions for Advent of Code 2023

?? Advent of Code 2023 Solutions for Advent of Code in Rust. 2023 Results Day Part 1 Part 2 Day 1 ⭐ ⭐ Day 2 ⭐ ⭐ Day 3 ⭐ ⭐ Day 4 ⭐ ⭐ Day 5 ⭐ ⭐ Day 6 ⭐

Felix Spöttel 3 Dec 4, 2023
My solutions for the Advent of Code 2023.

?? Advent Of Code 2023 Hi! These are my Rust solutions for the Advent of Code 2023. Day Name Source Part 1 Part 2 Time 1 Time 2 1 Trebuchet?! 01.rs ⭐

Marcus Cemes 3 Dec 7, 2023
Solutions of Advent-of-Code 2023 in Rust

Advent of Code 2023 in Rust If you've never heard of Advent of Code, you're missing out. Check it out now at adventofcode.com! I mostly do AoC puzzles

Aurélien Geron 4 Dec 8, 2023
Solutions to Advent of Code 2023 in Rust 🎄

Advent of Code 2023 Solutions to Advent of Code 2023 in Rust ?? Day Part 1 Part 2 Thoughts 1 ⭐ ⭐ As with most early advent of code challenges, it's mo

Pedro Godinho 6 Dec 6, 2023
🎄🎅 My Advent of Code 2023 solutions 🎁⛄

???? My AOC 2023 solutions ??⛄ ?? Table of contents ?? Table of the days ?? Goals ⛄ Quickstart ?? Table of the days Day Part 1 Part 2 Language 01 Toki

rei 6 Dec 11, 2023