Dev Log โ 12 April 2026
Session Overview
My first full build session on the Godot rebuild. The project started as a Buildbox 3.6.4 mobile game. I’m rebuilding it entirely in Godot 4.6 as a 2D landscape shooter. Today I covered project scaffolding, asset migration, core systems, and got to a first playable iteration with several bug fixes along the way.
Goals
- Port game concept from Buildbox to Godot 4.6
- Build core player movement (Asteroids-style thrust)
- Implement wave-based asteroid spawning
- Wire up HUD, GameManager autoload
- Map new
Game Assests/folder assets
Outcomes
- โ Playable first pass running in Godot
- โ Player ship, bullets, asteroids all functional
- โ GameManager autoload wired
- โ Asset migration started
- โ ๏ธ Several issues identified for next session
Architecture Overview
Signal Flow
Issues Found & Fixed
Godot was scanning Buildbox .obj mesh files in unzipped game folders. Created .gdignore files in 5 folders: Asteroids Destroyer 3.6.4/, ios/, Website/, Screenshots/, Screenshots/. Fixed by Project โ Reimport All.
Direct GameManager.xxx references fail at compile time if the project isn’t fully reloaded after manual project.godot edits. Solution: replaced all bare GameManager calls with get_node("/root/GameManager") cached into a local variable. Affects Player.gd, GameScene.gd, HUD.gd.
# Before (compile error)
GameManager.take_damage()
# After (runtime lookup โ always works)
var gm := get_node("/root/GameManager")
gm.take_damage()
In GameScene._on_bullet_fired(), add_child(b) was called BEFORE setting b.rotation. Since _ready() fires on add_child, the bullet computed its velocity with rotation = 0 (straight up). Fixed by setting rotation before adding to tree.
# Fixed order:
b.rotation = rot # set FIRST
bullets_container.add_child(b) # _ready() now sees correct rotation
b.global_position = pos
Changed _random_edge_position() spawn margin from 60px inside screen to 150px outside screen. Asteroids now drift in naturally from off-screen.
Bullet was using old placeholder texture at scale = 0.06 (rendering at ~2px). Updated to Game Assests/Player Missile/Player Missile.png (37ร65px) at scale = 0.5.
New Systems Built
Asteroid Damage States
Each asteroid now has 4 damage states showing progressive cracking. Sprites change on each hit before the asteroid breaks apart.
Asteroid Size System: Asset Mapping
Asset folders A1โA12 map to three in-game sizes. Higher A-number = smaller asteroid.
| In-Game Size | Asset Folders | HP | Score | Splits Into |
|---|---|---|---|---|
| LARGE | A1, A3, A4, A5 | 4 | 50 pts | 2ร MEDIUM |
| MEDIUM | A6, A7, A8, A10 | 3โ4 | 25 pts | 2ร SMALL |
| SMALL | A9, A11, A12, A13 | 3 | 10 pts | โ |
Health HUD Redesign
Replaced 3 separate heart TextureRects with a single HealthDisplay TextureRect. One image per life count (0โ3), swapped on health_changed signal.
Rank & Progression System
| Rank | Threshold | Reward |
|---|---|---|
| Lieutenant 1 โ 4 | 0 โ 6,500 | +1 Nuke per rank-up |
| Officer 1 โ 3 | 12,000 โ 32,000 | +1 Nuke per rank-up |
| Squadron Leader โ Air Chief Marshal | 50,000 โ 1,400,000 | +1 Nuke per rank-up |
Carried Over to Next Session
move_and_collide return value never checked