Cho Dan Bo – Ambition Before Skill in Game Development
Cho Dan Bo was my first serious attempt at game development — and a lesson in ambition exceeding skill. What began as a simple idea turned into engine hopping, coding walls, and the realisation that I had skipped the fundamentals.
Cho Dan Bo is a game I started with far more ambition than skill. Deciding to seriously attempt learning game development, I devised a project that I thought was a simple idea — but it turned out to be far more advanced than I had bargained for.
Cho Dan Bo is a term used in Taekwondo. It varies between styles, but in the school where I trained it was the name given to the final trials before grading to 1st Dan black belt, symbolised by a red and black striped belt.
I never made it past Blue III belt before moving on to other things. However, during my time training, I had designed a character called “Cho” and drawn a comic about his disdain for learning the foundations. He was always daydreaming about becoming a highly skilled practitioner — jumping high into the air and performing incredible feats of martial arts.
Kind of fitting, really.
Cho Dan Bo - The Importance of Basics - The Comic
The comic (above), apart from being enormous (over 1m wide), shows Cho drilling punches. He falls into a daydream and imagines all kinds of advanced techniques, only to be rudely awakened by his teacher and sent back to drills.
The game was going to follow that exact structure. The opening menu would show Cho running through drills on the page. When you pressed any key, the menu would animate into a dream bubble. Once selected, you would enter his dream — and the game would begin.
Cho Dan Bo - Mini Game Level Select Screen Example
The entire game was going to be hand-drawn and scanned. Every background. Every animation frame. All pencil-coloured, like the comic itself. The idea was to make it feel like you were playing inside Cho’s notebook, exploring his daydreams.
Cho Dan Bo - The Game - UI Flowchart
Initially, there would be only one mini-game: a basic endless fighting game of skill. Cho would stand in the middle of the screen while enemies (his classmates) approached from both sides. As he defeated them with simple kicks, they would fall to the floor and begin piling up behind him. Once that worked, the plan was to expand it to four selectable mini-games. Each would gradually increase in speed and difficulty until defeat, with a high-score system encouraging replayability.
Nice and simple.
Or so I thought.
Cho Dan Bo - The Game - Original Concept
The gameplay sounded simple. The execution was not — and it was definitely not a good idea for a first solo game. Not only was the concept more difficult than expected, but the idea of hand-drawing everything was wildly unrealistic. And what makes it even more laughable — I gave myself three months to complete it while working full time. 🤣...😐
That didn’t stop me from trying.
I had already been experimenting with interactive elements in Unreal Engine, so that felt like a logical place to begin. I created a game design document outlining the concept, character and level ideas, audio notes, gameplay thoughts, and control systems. I saved that as a reference point, then began a second working document so I could experiment without drifting too far from the original idea.
First prototype running in Unreal Engine
I built a basic background and a controllable placeholder character — essentially a simple frame with a foot that could perform six-direction kicks and a jump. I reused the same sprite for enemies. They moved toward the player and were destroyed when hit.
Unreal Engine Highboxes (left & Middle). Belt colour swap out system prototype (Right)
Progress.
But this is where things began to unravel.
Bugs stacked up quickly. I didn’t like the control system. The enemy AI needed far more specific behaviour. I was using Unreal’s Blueprint visual scripting, and it was beginning to feel overwhelming and messy.
Around this time, I read something that stuck with me: visual scripting is powerful, but eventually you will hit a point where understanding real code becomes essential — and you’re often better off learning it from the start.
"HELL NO!"
However, I knew I wanted to move the project to a different engine. When I looked at how large the compiled Unreal project would be, I couldn’t help thinking about old Commodore Amiga games fitting onto a single floppy disk — tightly programmed and optimised.
So I experimented.
Cho Dan Bo overlaid on the IK+ background on Amiga 500. Markup for mobile version
I moved the project to GameMaker. It also offered visual scripting, but it didn’t quite click. I tried Unity — again, it didn’t feel right. After a lot of reading, testing, and deliberation, I decided to bite the bullet and learn Godot properly, which meant learning to code. 😮💨
Talk about down the rabbit hole.
It didn’t take long to fall in love with Godot’s interface and structure. Having direct control over code felt surprisingly clean compared to bulky visual systems, even though the learning curve was steeper.
It took weeks to rebuild in Godot what I had originally assembled in Unreal.
Cho Dan Bo - Kick Sprite Sheet for Godot
By this point, I had already abandoned the fully hand-drawn approach and shifted to using colour. It simply looked better and was more manageable. But once again, I hit the limits of my skill.
Just like Cho dreaming of skipping the foundations of Taekwondo, I had skipped the coding fundamentals. I’m good at problem-solving and troubleshooting — but without foundational knowledge, there was nothing solid to troubleshoot from.
Cho Dan Bo - Various Control System Concepts
I mentioned rabbit hole right?
Before long, I was deep into Harvard’s CS50 course, learning computer science fundamentals. I was studying different programming paradigms and continuing to learn GDScript through GDQuest. But life intervened, and the project slowed. Other creative commitments took priority.
Months later, around December 2025, I finally recognised what had been happening.
I had designed a game that required advanced coding techniques.
I was effectively switching off the built-in physics engine — the very thing that makes engines like Godot so powerful — and attempting to recreate movement systems from scratch. I constantly fought gravity, disabled physics in certain states, tried to prevent sideways bumps, and battled strange wobbling behaviour.
0:00
/0:12
Cho Dan Bo - Godot Physics Bug Out Fail - (Background borrowed from the interwebs)
It was only then that I realised just how advanced this type of game actually was — and that it was absolutely not the right choice for a first project.
Cho Dan Bo isn’t lost or forgotten. I still love the concept, and even the rough prototype was surprisingly fun to play. For now, though, it’s going into the vault.
Instead, I’m starting simpler.
A square character. Add collision. Make it move.
One system at a time, starting from scratch for every iteration, without tutorials.
I’ve also developed a structured process for learning code properly, which I’ll explain in a future article.
So far, it’s working. I’m learning — slower than I initially imagined, but steadily.
Just like Cho.
Never underestimate the importance of fundamentals. Understanding the basics will carry you further than any tutorial out there on the interwebs.
'Cho' - Cho Dan Bo - The Game
Everything on this site is free for everyone. No ads. No popups. No paywalls. Subscribe to receive the free monthly newsletter, and you’ll be able to comment on posts. If you’d like to help keep this project sustainable, there are SupporterandSponsortiers available - Totally optional.