2D Kids Game "Captain Holeetooth" 16-Bit Art / Godot4 Revival! MIT license // Join in! đź’–

Youtube Gameplay footage :television:

Captain Holetooth — A Small, Handcrafted 2D Adventure

Hi everyone,

I’m Oliver — a 49-year-old solo developer with over 30 years of gaming experience and a long background in game design (including time at Nintendo). This is my first game, and I’m reviving it with a fresh push to bring it to life in a modern engine.


The Story

Captain Holetooth is on his way home when a sudden storm throws his flying ship off course. It crashes into a ledge — one wing tears off — and down he goes! Lucky for him, he leaps free just in time… and plunges into a lake.

Now stranded in an unknown land, he must recover his precious stolen candy and find his way back to his castle.


Gameplay & Vision

This game is small by design — built to be completed in about 30 minutes. I’d rather finish something meaningful than let it stall under scope creep. Sequels are already on the horizon — this world has more to tell.

What you’ll experience:

  • Meeting quirky characters who bring the world to life.

  • Exploring hidden secrets tucked into every level.

  • Collecting items that matter.

  • A mood that’s relaxing, mysterious, and occasionally thrilling.

  • Replay value through discovery and exploration.


Planned Levels

  1. Mystical Forest & Underground Labyrinth — Home to some… unusual inhabitants.

  2. Snowy Mountain Peak — Big things always happen at the top.

  3. Journey Home — Side-scrolling flight back to the castle.

  4. Happy Ending in the Castle — Meet even more characters and wrap up the tale.


Current Status

The game was originally built in Godot 2 — yes, that old. I’ve started porting it forward using AI-assisted tools to modernize the code and assets, but I’m hitting technical walls. I’m not a full-time dev anymore, and while I know game design inside out, I need help to finish this.


What I Need

  • Godot 4 (or Godot 3.5) developers — to help refactor or port the codebase.

  • 2D artists — I have old assets, but they need polishing or reworking.

  • Sound/music collaborators — I’m composing, but open to co-creation.

  • QA testers — once we have a playable build.

  • Cheerleaders — even if you just want to follow along and offer encouragement.


Why I’m Asking

I’ve poured my heart into this. It’s not AAA — it’s personal. And I’d love to share it with you… with your help.

If you’re interested in contributing — even a little — or just want to chat about the project, I’d love to hear from you.

Thanks for reading — and thanks for being part of this amazing dev community.

— Oliver

3 Likes

Oh, this looks cute. But also, by skipping though your github, like a bit of work :slight_smile:

Just a side note, as you seem not to be aware of this: when searching “hirnbix” your old domain appears right on top, hosting an adult only site. Maybe think of letting go of hirnbix and removing mentions on the game’s original itch page.

Oh! Thanks - I got to get rid of this name!
Oliver

I contacted itch.io immediately and will create a new page soon.
Thanks again!

Haha, yes a few pixels are missing. But its not so much if more people would work on it.
I tried my best to make at least the structure a bit more structured.
Only Bummer is really that I can’t get the SMP files to convert.
What I’ll do:

  • Play the Godot 2 Version
  • Record Sound in Backbround
  • Extract samples and cut them for OGG export

:smiley:

2 Likes

Actually Claude Code is helping me nicely to structure the project.
If you have any questions, feel free to ask.

My plan is to work on the levels (unfortunately i cant automate rebuilding the tilemap).
Godot 4 is the same fun as in Version 2 :smiley:

Have a nice holiday time :slight_smile:

1 Like


Tiny bits of work :smiley:

1 Like

So, who has the guts to join in?
Let’s do some real work.

Captain Holetooth - Godot 4 TODO List

Current Status

Good News: The project is already on Godot 4.5! The migration from Godot 2 is mostly complete, but there are some critical bugs and legacy code that need fixing.


:red_circle: Critical Issues (Must Fix)

1. Fix Bullet Collision Detection

File: src/actors/player/bullet.gd (lines 30, 49)

Problem:

  • Code assumes TileMap collisions return TileMap object (not true in Godot 4)
  • Calls non-existent method body.get_closest_point_to(global_position)

What to do:

  • Use physics raycast or shape query to get collision normal
  • Remove the invalid get_closest_point_to() call
  • Check for body is StaticBody2D instead of body is TileMap

2. Remove Hardcoded Scene Paths

Files:

  • src/actors/player/buddies/limkolomro_the_bat/limkolomro.gd (line 12)
  • src/levels/mountain/mountain.gd (line 12)

Problem:

  • Uses absolute paths like get_node("/root/scn3/player")
  • Will crash if scene structure changes

What to do:

  • Add player node to a “player” group
  • Use get_tree().get_first_node_in_group("player") instead
  • Or use export variables and node references

:yellow_circle: High Priority Issues

3. Update Deprecated Physics API

File: src/actors/enemies/forest_crawler/forest_crawler.gd (line 34)

Problem: Uses deprecated s.get_linear_velocity()

What to do: Change to s.linear_velocity (direct property access)

4. Complete Missing Enemy Animation

File: src/actors/enemies/forest_crawler/forest_crawler.gd (lines 66, 76, 82)

Problem: Turn animation is commented out with TODO

What to do:

  • Either create the “turn” animation in AnimationPlayer and uncomment the code
  • Or remove the TODO and commented code if not needed

5. Implement Achievement Notification

File: src/actors/player/player.gd (line 106)

Problem: Achievement system tracks jumps but doesn’t notify player

What to do:

  • Create notification UI element
  • Display achievement when player jumps 50+ times
  • Use existing HUD or dialog system

:green_circle: Optional Improvements

6. Remove Redundant set_process() Calls

These are unnecessary in Godot 4 (but harmless):

  • src/ui/dialog.gd:71
  • src/levels/flyhome/rail.gd:9
  • src/levels/flyhome/flying_npc.gd:60, 73

7. Modernize Random Number Generation

These files use legacy RNG (still works, just outdated):

  • src/utils/uuid.gd:7
  • src/levels/minigames/yankandy/ball_script.gd:20
  • src/objects/plants/random_flowers.gd:23
  • src/objects/cave_foliage/cave_foliage.gd:23
  • src/objects/rewards/random_coin.gd:14

Optional: Migrate to RandomNumberGenerator class

8. Optimize Texture Loading

File: src/objects/rewards/random_coin.gd:14 (line 17)

Problem: Runtime load() can cause stuttering

What to do: Preload textures or cache them


Testing Checklist

After fixing critical issues, test:

Core Gameplay:

  • Player movement, jumping, shooting
  • Bullet bouncing (CRITICAL - currently broken)
  • Enemy AI and collision
  • Limkolomro bat following player (CRITICAL - hardcoded path)

All Levels:

  • Castle (inside/outside)
  • Forest
  • Mountain
  • Flyhome (ship mode)
  • Yankandy minigame

Systems:

  • Save/load
  • Score and collectibles
  • Character cards
  • Dialogs
  • Scene transitions
  • Checkpoints
  • Audio
  • Localization (EN/DE)

Quick Start Guide

Recommended order:

  1. Fix bullet collision (Issue #1)
  2. Fix hardcoded paths (Issue #2)
  3. Update deprecated physics call (Issue #3)
  4. Test everything thoroughly
  5. Polish (Issues #4-8)

Estimated time: 7-12 hours total


What’s Already Working :white_check_mark:

  • Signal connections (modern syntax)
  • Scene instantiation
  • Export variables (@export)
  • Tween system
  • Input actions
  • Audio system
  • Scene file format

Bottom line: The codebase is solid! Just fix the 2 critical bugs and you’re good to go.