Inspiration
The League WASM Game is born from a mix of classic MOBA aesthetics and modern survival roguelike mechanics.
- League of Legends: The top-down isometric camera, character-centric combat, and aesthetic are heavily inspired by modern MOBAs.
- Vampire Survivors: The "survive for a set time" mechanic and the escalating wave-based enemy spawns take cues from the popular "bullet heaven" or "horde survival" genre.
- Bevy Engine: The project serves as a demonstration of the power of the ECS (Entity Component System) architecture in Bevy 0.15.
What it does
League WASM Game is a high-performance, browser-based survival game. Players select a character and must survive against waves of enemies for 5 minutes. It features:
- Responsive top-down combat and movement.
- Real-time 3D rendering using PBR (Physically Based Rendering) in the browser.
- A seamless loading experience for 3D assets.
How we built it
The project is built using a modern Rust-based tech stack:
- Bevy 0.15: A high-performance ECS-driven game engine.
- Rust: For memory safety and performance.
- WebAssembly (WASM): To run the game at near-native speeds in the browser.
- Trunk: To manage the WASM build pipeline and asset bundling.
- wasm-opt: To optimize the binary size and ensure compatibility with modern WASM features.
- Nginx & Docker: For containerized deployment and efficient asset serving.
Challenges we ran into
- WASM Feature Compatibility: Configuring
wasm-optto handle modern instructions like bulk memory operations and nontrapping float-to-int conversions emitted by the Rust compiler. - Asset Rendering: Ensuring PBR materials and GLTF models rendered correctly when using a minimal Bevy feature set to keep binary size small.
- Visibility System: Navigating the changes in Bevy 0.15's visibility propagation system to ensure all 3D assets appeared as expected.
Accomplishments that we're proud of
- Successfully deploying a Bevy 0.15 game to WASM with full PBR support.
- Achieving a smooth frame rate in the browser using a pure Rust ECS.
- Creating a robust build pipeline that handles complex WASM optimizations automatically.
What we learned
- Deep understanding of the Bevy 0.15 API and its ECS architectural improvements.
- Advanced configuration of the WASM toolchain, specifically
wasm-optandTrunk. - Best practices for serving large 3D assets efficiently over the web using Nginx and gzip.
What's next for League Wasm Game
- More Characters & Abilities: Expanding the roster with unique playstyles.
- Progression System: Adding in-game upgrades and experience points.
- Enhanced Environment: Implementing more dynamic terrain and interactive map elements.
- Sound & VFX: Adding immersive audio and particle effects.
Built With
- rust
- webassembly
Log in or sign up for Devpost to join the conversation.