Asteroids Destroyer Dev Log – 12 April 2026

Asteroids Destroyer โ€” Development Journal

Dev Log โ€” 12 April 2026

๐Ÿ“… Session 1
๐ŸŽฎ Godot 4.6
๐Ÿ—๏ธ Foundation Build
โฑ๏ธ Full Day
๐Ÿš€

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

Asteroids Destroyer โ€” Scene TreeGameManager (Autoload) โ”œโ”€โ”€ session_score, total_score, player_health โ”œโ”€โ”€ coins, nukes_held, selected_ship โ”œโ”€โ”€ rank system (19 RAF ranks, 0 โ†’ 1,400,000 pts) โ”œโ”€โ”€ ship shop (9 ships ร— 3 series) โ””โ”€โ”€ save/load via ConfigFile “user://save.cfg” GameScene (Node2D) โ† main scene โ”œโ”€โ”€ Background (Sprite2D) โ† space background โ”œโ”€โ”€ ParallaxBackground โ† parallax layers โ”œโ”€โ”€ AsteroidsContainer (Node2D) โ”œโ”€โ”€ BulletsContainer (Node2D) โ”œโ”€โ”€ Player (CharacterBody2D) โ† Player.tscn โ”‚ โ”œโ”€โ”€ Sprite2D (ship texture) โ”‚ โ”œโ”€โ”€ CollisionShape2D (capsule) โ”‚ โ”œโ”€โ”€ GunBarrel (Marker2D) โ”‚ โ””โ”€โ”€ ThrustAudio / ThrusterParticles โ””โ”€โ”€ HUD (CanvasLayer) โ† HUD.tscn โ”œโ”€โ”€ HealthDisplay (TextureRect) โ”œโ”€โ”€ ScoreLabel โ””โ”€โ”€ NukeLabel Asteroid (RigidBody2D) โ† Asteroid.tscn โ”œโ”€โ”€ 3 sizes: LARGE / MEDIUM / SMALL โ”œโ”€โ”€ Splits on death (LARGEโ†’2ร—MEDIUM, MEDIUMโ†’2ร—SMALL) โ””โ”€โ”€ 4 damage states (sprite changes per hit) Bullet (Area2D) โ† Bullet.tscn โ”œโ”€โ”€ Speed: 950 px/s, Lifetime: 1.4s โ””โ”€โ”€ body_entered โ†’ asteroid.hit()

Signal Flow

Player GameScene GameManager bullet_fired โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถ _on_bullet_fired() player_died โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถ _on_player_died() _on_asteroid_destroyed() โ”€โ”€โ–ถ add_score() health_changed โ”€โ”€โ–ถ HUD.update_health() score_changed โ”€โ”€โ–ถ HUD.update_score()
๐Ÿ›

Issues Found & Fixed

FixMTL Import Errors: Buildbox assets polluting Godot

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.

FixAutoload compile error: “Identifier not found: GameManager”

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()
FixBullets fired straight up regardless of ship rotation

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
FixAsteroids spawning on-screen (visible pop-in)

Changed _random_edge_position() spawn margin from 60px inside screen to 150px outside screen. Asteroids now drift in naturally from off-screen.

FixBullet invisible (scale 0.06 on wrong asset)

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.

Hit 1 Hit 2 Hit 3 Hit 4 [ State 1 ] โ”€โ”€โ–ถ [ State 2 ] โ”€โ”€โ–ถ [ State 3 ] โ”€โ”€โ–ถ [ State 4 ] โ”€โ”€โ–ถ ๐Ÿ’ฅ DESTROY (fresh) (cracked) (damaged) (critical) + split/points

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

Collision shapes wrong: single radius=210 CircleShape2D too large for MEDIUM/SMALL asteroids (larger than their visible sprite)
Player not losing lives on asteroid collision: move_and_collide return value never checked
Player gets stuck between asteroids: single collision resolution, no bounce
No explosion VFX on bullet impact
No thruster animation: particles placeholder only