Skip to content

JMoogs/starfall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Starfall

A top-down bullet-hell action game built with Bevy 0.18 and Rust 2024.

Fight through waves of increasingly dangerous enemies, unlock boss arenas, and race to the top of the map as fast as possible. Your completion time is saved to a local leaderboard.


Gameplay

Navigate a vertically scrolling map, shooting enemies and bosses that block your path. Four distinct bosses guard checkpoints — defeat them (or destroy their gate switches) to advance. Reach the summit to win.

Controls

Input Action
W / A / S / D or Arrow keys Move
Mouse Aim
Left mouse button Shoot
E Cycle weapon forward
Q Cycle weapon backward
Space Use ability
Escape Pause / Resume

Classes

Choose your class from the main menu. Each class has unique stats and a different set of three weapons.

Class HP Speed HP Regen Mana Playstyle
Rogue 1 400 Fast 60/s 800 Aggressive all-rounder
Warrior 2 200 Medium 80/s 400 Tank, close-range brawler
Mage 900 Medium 40/s 1 300 High mana, burst damage
Sniper 1 050 Slow 50/s 300 Long-range, precise shots

Weapons

Each class carries three weapons cycled with Q and E.

Class Weapon 1 Weapon 2 Weapon 3
Rogue Default High-damage Piercing
Warrior Default Stationary blast Piercing
Mage Default Rapid-fire Piercing
Sniper Default Boomerang Accelerating

Abilities

Choose one ability before starting. Activate it with Space; each use costs mana and has a short cooldown.

Ability Effect
Iframe Brief window of complete invulnerability
Speedy Temporary movement-speed boost
Heal Instantly restores a portion of HP
Damaging Empowers your bullets for increased damage

Enemies

Enemy Description
Bandit Basic melee attacker
Bandit (Buffed) Tougher variant with increased HP and damage
Crusader Armoured enemy with higher resistance
Aimer Lv.1 / Lv.2 Ranged enemy that aims directly at the player
Dasher Lv.1 / Lv.2 Charges toward the player and fires at point-blank range
Predictor Lv.1 / Lv.2 Leads the shot, firing where the player is heading

Four boss encounters block progression through the map. Each boss arena is sealed on entry; the exit only opens once the boss is defeated.


Building

Prerequisites

Native

# Debug build
cargo run

# Release build (recommended for playing)
cargo build --release
./target/release/starfall

WebAssembly

rustup target add wasm32-unknown-unknown
cargo build --target wasm32-unknown-unknown --release

Serve the resulting .wasm file with any static file server alongside a suitable HTML shell.

Feature flags

Flag Effect
testing_utils Starts the player as permanently invulnerable and fast; adds extra test weapons
cargo run --features testing_utils

Leaderboard

Completion runs are saved locally. The leaderboard records your time, class, and ability choice. Access it from the main menu.


Project Structure

src/
├── main.rs              — App entry point and plugin registration
├── constants.rs         — Shared constants (tile size, colours, costs)
├── bullet/              — Bullet spawning, movement, and collision
├── entities/
│   ├── bosses/          — Boss AI and arena logic (boss1–boss4)
│   ├── enemies/         — Enemy types (aimers, bandits, dashers, predictors, …)
│   ├── health.rs        — Health component and HP bar rendering
│   ├── spawn.rs         — Generic enemy spawn helper
│   └── …
├── map/                 — LDtk world loading and terrain collision
├── player/              — Player movement, shooting, abilities, mana, camera
├── states/              — Game states (splash, menu, pause, death, won, leaderboard)
└── stats/               — Shared stat components (speed, regen, status effects)

License

This project is provided as-is for educational purposes.

About

A bullet hell game in Rust using Bevy

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages