Second Devlog – Game Development Progress
A lot of progress has been made! There are now five unique scenes in total:
- Game Scene
- Prestige Scene
- Book Scene
- Stats Scene
- Settings Scene
For this devlog, I’ll focus entirely on the Game Scene, as it’s the heart of the project.
Game Scene Overview
This scene is where all the action takes place! I’ve implemented core gameplay mechanics and systems that drive the player’s progression. Here’s a breakdown of the features and functionality:
Game Mechanics
- Click to Deal Damage: Players can click or tap to damage the enemy.
- Dynamic Enemy Stages: Stages change dynamically, introducing different enemy types and boss fights every 5 stages. The enemy visuals update based on their type (e.g., pirate, clown) and gender (male or female).
Economy and Progression
- Coin Generation: Coins accumulate passively over time and are rewarded for defeating enemies, with bonuses for progressing to higher stages.
- Kill Bonuses: Players earn extra coins when defeating enemies, with even greater rewards during boss stages.
Hat System
- Hat Drops: Unique hats drop when bosses are defeated, and these hats stack on the player’s character, creating a fun visual indicator of progress.
- Customizable Appearance: Collected hats are saved and displayed on the character dynamically.
User Interface (UI)
- Key elements like the coin counter, health bar, and stage indicator automatically update to keep players informed about their progress.
Stage Transition System
- The game transitions between enemy types every few stages, with tilemaps changing to match the environment. For example, pirate stages feature a pirate-themed tilemap.
Audio and Visual Polish
- Sound Effects: Shooting and enemy defeat sounds enhance feedback for player actions.
- Background Music: Looping music ensures the game feels alive.
- Character Animations: Idle, shooting, and enemy animations bring the scene to life.
Key Code Snippets
Stage Transition Logic
func update_stage():
if (GameData.current_stage - 1) % stages_per_type == 0:
var new_enemy_type_index = randi() % GameData.enemy_types.size()
GameData.current_enemy_type = GameData.enemy_types[new_enemy_type_index]
var is_boss_stage = GameData.current_stage % boss_frequency == 0
update_tilemaps()
update_enemy_animation(is_boss_stage)
Hat Stacking System
func stack_hats():
for child in character.get_children():
if child is Sprite2D:
child.queue_free()
var y_offset = 120
for hat in GameData.collected_hats:
var hat_sprite = Sprite2D.new()
hat_sprite.texture = load(hat["image"])
hat_sprite.scale = Vector2(5, 5)
hat_sprite.position = character.position + Vector2(0, -y_offset)
add_child(hat_sprite)
y_offset += 50
This is just the beginning! The Game Scene sets the foundation for combat, progression, and customization, while the other scenes (like Prestige and Stats) will build on these mechanics.
Stay tuned for the next devlog, where I’ll dive into another scene and highlight more of the systems coming together. Let me know your thoughts or suggestions!