Inspiration
I wanted to build a game that combined the tension of wave-based survival with objective-based gameplay — something where you can't just hide in a corner and fight, you have to move through dangerous space to complete tasks. The setting came naturally: an astronaut alone on a lunar base, aliens pouring in, and you've got to shut everything down before you're overwhelmed.
What it does
Star Defender is a 3D first-person action-survival game. You play as an astronaut defending a lunar base from waves of alien invaders. To win, you need to activate a central switch, collect access keys from containers in each room, and boot up two computers — all while aliens are constantly spawning and coming for you. The difficulty escalates as you complete objectives: the more progress you make, the faster they come.
How I built it
- Engine: Godot 4.6 with GDScript
- Player: Full 3D character controller with WASD movement, mouse look, sprint, jump, and a three-attack melee combo system (jab, combo, kick) with knockback physics
- Enemies: Custom AI that chases the player, bobs in the air, deals contact damage, and dies with a knockback death animation
- Game loop: A state-driven game manager that tracks terminal completions, escalates spawn rates across phases, and triggers win/lose conditions
- Assets: Mixamo for the astronaut model and animations, a modular space station asset kit for the environment, and free sound effects for combat and ambiance
Challenges I faced
- Collision layers were a constant headache — getting doors to block the player but let aliens phase through required careful layer/mask setup, and debugging invisible collisions in 3D is not fun
- Hitbox detection took several iterations. My first approach fired damage at the start of the attack animation, which meant punches only hit if the alien was already inside you. I had to switch to continuous per-frame detection during the attack window
- Alien AI tuning was harder than expected. Too fast and the game was impossible, too slow and there was no tension. Getting the right balance of speed, knockback force, and spawn timing took a lot of playtesting
- Export pipeline on macOS with Godot had some friction around code signing and texture format requirements that I had to work through
What I learned
- How to use Godot
- Game Development fundamentals from scratch
- How to architect a game manager with phase-based state transitions
- Godot's collision layer/mask system and how Area3D vs CharacterBody3D interact
- The importance of game feel — screen shake, knockback physics, and sound effects transform a prototype into something that feels like a real game
- Scoping ruthlessly for a hackathon: I cut planned features (ranged enemies, EMP ability) to focus on polishing the core loop
What's next
- Ranged alien enemy type that forces you away from terminals
- EMP burst ability with a cooldown for crowd control
- More rooms and a larger map layout
- Leaderboard with time-based scoring
- Multiplayer co-op
Built With
- gdscript
- godot-4.6
Log in or sign up for Devpost to join the conversation.