💨
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
- Clone the repo
git clone https://github.com/ucsd-cse125-sp23/group-5.git
- Build the project
cargo build
- Run the server and client(s)
- In debug mode(running locally)
cargo run --features debug --bin server # start the server cargo run --features debug --bin client # start a client
- 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)
.
- Run all unit tests
cargo test
- Run tests specific to a crate
cargo test -p [client|server|common]
- 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.
- 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