The code for my game Dudelings: Arcade Sportsball is now available on GitHub.
I’m so very excited about this since I’ve been an outspoken and public advocate of free software for over a decade.
Now? I’ve got my own FOSS project.
But the road to getting here hasn’t been simple or easy. So let’s talk about the development journey, what I’ve done to the codebase to get it ready for FOSS release, and finally, how you can help!
The origins
Dudelings started back in February of 2023 when my brothers, Jared and Ephraim, DM’d me a link to their latest project.
They called it Doodlings and it was a proof of concept. Unfortunately, I’ve lost that prototype build so I can’t get a screenshot of it.
I remember thinking “hey, this is really fun.” Instead of controlling guys that jumped like in the final game, there were doodles that grew (more like slowly stretched upwards) as you held . They would also slowly retract as you let go of
or moved to another adjacent doodle.
The ball could not pass through a doodling’s body, though. So the only way to move the ball was over the other doodle’s heads. In this prototype, both players could occupy the same doodle and if both players held , the doodle would grow twice as fast.
There was no goal like in “Classic” mode in the retail build. Instead, the objective was to get the ball off the opposing side of the screen.
When I saw the game, I thought there was a ton of potential and I asked my brothers if I could expand on the idea. They gave me permission and we took it from there.
All things considered, we didn’t deviate too far from the prototype. The major differences were snapping to the goalies, dashing, punching, and the fact that the prototype had online multiplayer.
Yeah. You heard that right. The prototype had online play. It was built in Unity and my brothers have a ton of experience with the online components of that engine where my team (myself and my friend Ethan) didn’t have any experience in Godot or with online play.
It would be an understatement for me to say that shipping without online multiplayer was a huge disappointment. But I ran out of money and we didn’t have the expertise to add the feature.
But that leads me to…
The Development
Development of Dudelings was pretty straightforward. It wasn’t more than a month later, we had a build of our version mocked up in Godot.

I’ve gone back to the very first commit and the basic were here. The normal ball’s physics didn’t change except for a few minor tweaks. The way the dudelings jumped was more or less the same. But that was it. Jumping and switching characters was all that was in the game.
The first major divergence we made from the prototype was the ability to “snap” to the goalies by pulling or
. This allowed the ball to move a lot faster in our version of the game.
Several months passed and we were now in late 2023. There was new content in the game. We had three maps, more placeholder art, and dashing was now a thing.
You could press and your dudeling would dash into the air with incredible speed.
This was great but the ball just bounced off the dudeling and it went wherever it wanted.
That’s when we added auto-targeting. We thought of auto-targeting as if the Dudeling was grabbing and throwing the ball at the goal. Basically, it was taking a “shot.” Some fine tuning had to come into play in order to get auto-targeting working. The biggest hurdle was making it feel natural.
Eventually, we were able to dial it in to the point where most people don’t even realize that there is auto-targeting in the game. I’m actually really proud of this since it feels like it just works as it should.
But there was still something missing and we both knew it.
Don’t call it crunch
…because it definitely wasn’t crunch. In fact, the only overtime we worked was in the last week of development (and it was entirely voluntary). However, I had set a launch window of March 2024 and, frankly, we were running out of money.
Now, don’t get me wrong, the game was fun but it was missing a bit of competitive spirit.
That’s when Ethan surprised me with the punching mechanic.

Essentially, pressing or
would allow you to throw your fist at the dudelings to the left or right of you. This would stun lock the dudeling and they wouldn’t be able to do anything. If you managed to punch a dudeling your opponent was currently controlling, they’d be locked in place on that guy for a moment, too!
This was exactly the mechanic the game needed. It added a fresh dynamic to the game, introducing some much needed offensive measures.
But we were quickly approaching our launch date and I was out of cash. So we just had to polish the game and get it out the door.
Launch 🚀💥
There was little fanfare when the game launched. It ended up launching the exact same day as Hades II’s stealth droped on Steam, which definitely didn’t help our sales numbers.
It ultimately only ended up selling about 900 copies. That’s a 10 months after release, mind you. And I invested some $50,000 into the game in terms of labor.
A few months after launch, I created a free update for Dudelings that I called “2nd Base.” This was an endeavor I had to undertake on my own as Ethan was no longer working for me.
2nd Base was essentially a season 2 where I added an upgraded menu system, a CRT filter, new maps, a new game mode, new jerseys drawn by my girlfriend Emily, new announcer voices including Bill from NerdNest and Rich from Fan The Deck, greater match customization, new pickups, Steam integration, achievements, and a slew of balancing and bug fixes.
It would be fair to say that this was a major update. It felt as though I had doubled the number of features compared to the launch version.
2nd Base was my attempt at getting more attention on the game but it sadly didn’t seem to help that much.
Prepping for FOSS release
So I was kinda bummed. I was extremely proud of the game. I had invested a ton of time and money into it. But it kinda went nowhere. It’s probably my fault. I dropped the ball with the marketing. I should’ve been building hype for the game on my channel as soon as we started development, but I didn’t.
But after 2nd Base, I just decided it was a little to painful to think about. So I just let it be.
Then I realized the anniversary was about to roll around.
That’s when I decided to make the code free software. So the last three weeks I’ve been refamiliarizing myself with everything. Making changes and fixing things that needed attention.
I’ve also added some comments and documentation to hopefully allow others to parse it. It took me ages to actually understand how it worked because, up until release, I hadn’t written a single line of code for the game. I did the art assets and other resources.
Now, the comments are honestly pretty sparse but I have a decent understanding of which scripts do what. So if you’re interested in helping, I’d recommend you join our Revolt server where you can ask me questions and we can work on the code together.
A few of the changes I’ve made to get the game ready for FOSS release:
- Reorganized game assets to simplify the process of exporting them into the FOSS build of the game
- Made some upgrades to the game’s assets to reduce overall download/disk usage size
- Backported some features/assets of the Android build to the main branch
- This included re-encoding the video files in the how to play and launch movie to lower bitrates
- Removing the video file that played in the background of the Main Menu and replacing it with static images that were animated in Godot
- Backported the custom virtual gamepad in the Android port to the main branch
- Added a link to our new Revolt server on the Main Menu
- Changed all links & references to our new canonical domain name: heavyelement.com
- Made some changes to the underlying code to unify the demo and retail codebase as much as possible
- The demo features one map, one game mode, and some customization features disabled. It should be on Steam soon!
And I fixed a bunch of stuff, too:
- Fixed instances where game would randomly fail to launch on Intel graphics under Linux operating systems
- Fixed a glitch where the ball could get stuck between the left- or right-most Dudeling and get placed out of bounds
- Fixed an issue with unlocking “Destination” map where criteria was met, but the map didn’t unlock until the game was restarted
- Fixed a visual glitch where labels for CheckButtons would disappear when in a hover state (thanks moocow1452)
- Fixed an issue where requests to the news endpoint failed silently
- Improved error handling for new news items on the Main Menu and in the What’s New submenu
With the game’s launch almost a year away in the rear-view mirror, it’s a bittersweet milestone. Dudelings was a passion project for me. It’s an incredibly fun game that I’m exceptionally proud of. But it’s one that fell into precious few hands and has been enjoyed by a tragically minuscule cohort.
So now, nearly a year on, it’s time to make the code available under the GPLv3. Hopefully, we can grow a passionate development scene around the game.
“But what’s included?” I hear you ask. Good question. All of the game’s code is freely available under a copyleft license which ensures your rights as an end user to read, copy, modify, and share the code with anyone and for any purpose.
The game’s art, however, is a different story. I’m following the DOOM model of open sourcing. At the moment, they’re still under copyright. You’ll need the asset archive from Itch in order to play the game. Or you’ll have to extract the Assets directory from version 1.2.1 of the game (or the demo) when that becomes available on Steam some time soon.
How you can help
I’m a developer by trade. I love writing code. But my native programming languages are PHP and JavaScript. I kinda find the Pythonic syntax of GDScript to be *cough* un-ergonomic at best.
It doesn’t work how I expect, it’s got lots of little pain points, and I’m just not a huge fan. But for a game engine, it works pretty darn well.
All that is to say, I’m not the best GDscript coder in the world. I’m looking for folks who are. If you’d like to help improve the Dudelings code, help clean things up, get things organized, implement features, or hunt bugs–now’s your chance.
You can check out the repo and, if you wanna help out, join our Revolt server! Maybe we can even add features that I had intended on from the start.
And you can pick up the retail version on Steam, Itch, Humble, or Google Play.