Skip to content

Game development

Table of Contents

I started learning programming in November 2024. The goal is to make games I find fun, whilst also learning core concepts along the way.

The Legend of Bingus (working title)

Inspired by Hero Klungo Saves the World, Bingus auto runs: the player has to avoid obstacles and time jumps to survive.

0:00
/0:27

Prototype showing double jump, normal/red coins and level warp at end

Development roadmap

  • Auto scrolling ✅
  • Obstacles ✅
  • Clickable buttons that show/hide/move platforms ✅
  • System to swap direction of movement 🚧
  • Coins ✅
  • Coin sound system (coins collected in sequence increase pitch of coin sound to signify a 'combo') ✅
  • Checkpoints ✅
  • Level select 🚧
  • 3x red coins per level, harder to collect ✅

Soundtrack

audio-thumbnail
World1
0:00
/58.584

Successes

Red coins

Red coin system is dynamic (mostly).

Each level has an ID that it self-reports to the game manager.

The coins also have an ID: coin_1 etc. Game manager uses this to check whether the coins have been collected, stored in a dictionary:

var red_coin_progress = {
	# Each entry corresponds to the appropriate level ID.
	1: {"coin_1": false, "coin_2": false, "coin_3": false},
	2: {"coin_1": false, "coin_2": false, "coin_3": false},
	3: {"coin_1": false, "coin_2": false, "coin_3": false},
}

Level IDs are integers but the coin IDs are still strings, which will be fixed soon. The levels are integers to help the level swapping system know where to go next.

Code runs on level initialise to check if the coin has been collected previously. If it has, we set transparency to 50% to visually indicate this to the player.

func _ready():
	# Wait a frame before running logic as the global dictionary isn't ready...
	await get_tree().process_frame 
	
	# Check whether we've collected the coin before
	if Global.red_coin_progress[Global.current_level][coin_id]:
		self.modulate.a = 0.5
	else:
		print("Don't have this coin (", coin_id, ") in ", Global.current_level, ", keeping it as-is.")
Prototype snow level with (very faint) snow particle effect