POSTMORTEM GiantessRun turns legacy, going open source soon


SO, A POST-MORTEM HUH?

Time to finally move on. GiantessRun is now a legacy game, with the last update at v1.11. As a personal duty as developer, I’m sharing its source code for free download here at Itch.io for future studies (last verified and tested on Godot 3.6). As I go to Godot 4.3.x, with highly changed patterns and more sofisticated personal game libraries, new ideas appears to me, like dialogue sequences, destructible objects, longer levels etc. So it’s not like building a remake version, but focusing on creating new games. For it, we must let go of legacy projects.

GiantessRun was built initially on Godot 3.2.x, and now we are on Godot 4.3.x. Although I went into a big test fight to upgrade the entire game into the new paradigm, more and more I found that an learning gamedev’s job should be used as guide for iteration, not maintained for so long (the first version was made in 2021 I think).

THE BEGINNING

I always wanted to be a game designer, like for over a decade, before even creating my art pages. Since emulating Metal Slug on MAME, or playing it on coin-op arcades, as my fond memories of getting a Sega Genesis with Sonic 2 as my first videogame, I always wanted to create my worlds. I grew in love with computers and programming, so it’s in my blood.

I enrolled into Unity classes, Coursera/Udemy/Youtube, even paid 2 years of Unity Pro (or Plus? I don’t remember) - I guess it was $250/year back then, waaaay back before their shitty “activation fee”. And learned a few things… none of it worked. I’m a self-taught developer, the “do-it-anyhow-you-have-a-deadline” developer since the first moment I learned my first programming language. Also, the fact I paid ~$500 for a software membership without even using it to earn something… and U.S Dollar not even being my main currency… meh. (I kept the Unity assets I bought, although they’re already old enough. Still, some PNG and sound/music assets I have the right to use in any project in the future, amirite? Sadly not on Unity tho.)

I left game designer not soon before the half of second paid year (reason: life sucks), but the dream was still bulding inside me. I wanna be a big game designer/programmer, but my lack of motivations made me really slow, and I simply couldn’t afford such big dollars.

That’s when I found Godot Engine. It’s amazing. My first touch on it was on version 3.1 (now it’s on 4.3, with 3.6 the latest 3.x version). Open-source, Python-like syntax, focus on 2D elements, royalty-free, it was my perfect playground, so I could build everything with it. I learned the basics (if, for, loop) and went to build my own library of reusable codes.

I avoid using other’s libraries, I like to learn how something is supposed to work. Reinventing the wheel is the law when you’re learning a new paradigm and how to do youw own thing, although not everybody agrees with it. Despite of that, I learned a lot.

Slowly and iterating the code, I learned myself how to make:

  • object’s garbage collection,
  • an audio system with loopable system and volume control,
  • joystick/controller support,
  • save games,
  • fixing dependencies when running a level inside a code,
  • background parallax system,
  • camera with shakes and constrains,
  • a complete dialog system with bitmap fonts and calling methods,
  • even an “updater” with server connection of sorts. Soon I had a character going up the ramps, jumping, even going at loops like Sonic (sadly I lost the code related to it). Camera was shaking and walking alone, and there was rain, snow, etc. Not bad for a first personal project with a turbulent life. /nodrama

Slow but steady, I was increasing my own library, but I still needed a way to test it. How could I improve my code without beta testers?

That’s when GiantessRun project came along.

THE GAME

The idea was really, really simple. A character running on the screen, like Super Mario Run. The map was basically endless. You collect coins, spend ’em on artworks. A venue to test loadings, fade screens, loading bulks of objects (each level has between 8-12 chunks), safe deletion of nodes avoiding memory leaks, and the DLC system that allows a screen to load the desired files in runtime.

For instance, I had a second project that was basically the folder of a character, and every artwork that should be loaded inside it, including backgrounds, music, rewards, ending cards etc. I’d export the .PCK file, rename it to .GTS and put in the .EXE’s folder, and the game would import it and put in the scene. So the game has a single level scene with infinite platforms.

All sounds I used are from royalty-free sites, except the levels music, as I have a friend who made ‘em (anonymous), that’s why I ain’t including the sounds in the code.

THE UPDATES

Once I launched version 0.01, it was painfully crude (running now with a 165hz monitor, it got really speedy, wasn’t using delta time):

…but with version v0.2, things got better, no feet stomping ya, but music was there and the level loading was now working. There was still memory leaks up to v1.03, I guess, so playing the game for a few minutes would bring it to over 2GB and crash. But hey, there is Mr. Red Fox, which would be the beta character for the project.

Finally, version 1.0 with a giant feet going down on you. The DLC system was finally working. The level was endlessly loading, the background had a simple but pretty parallax. The coins were being collected.

Between v0.01 and v1.00 was a 45-day period (not including the beforehand development) as a special Patreon project. And it worked basically as expected, a proof-of-concept. I was buuilding new code, and friends were testing in private; now everyone could test it. I could finally call myself a game designer with a shipped demo (even though it’s v1.0, it should’ve been v0.1, but alright).

Version v1.02 followed with a new character, Callie, the first unlockable artworks, and the DLC downloader system! I was able, for the first time, to update the game by simply uploading the updated .PCK file on a server (it’s off today, but the code is still there).

Also, a Patreon-exclusive .GTS file of Amy Rose with her sunset beach level was finally avaliable for my patrons, and it works up to the latest version, as every asset like coins/diamonds/UI is in the game; the file itself has only the music, the level card, the unlockable artworks and the rotative platforms.

Version v1.04 is the one with all memory leak fixed, the level now could run for 30 minutes. I’ve added my third original character (Skythe Hedgehog) on it. I don’t know why, but that version was shipped with debug console activated. Oops ^-^’

Version v1.05 had most bugfixes, but included a special change: the generic red fox is now my OC Fire the Fox (now called Firera)!

Version v1.06, a new character is up, Free the Dragoness (now she’s called Eileen). The first time the game was updated from the server. Also, that’s when I turned the game into a donationware game, which made the game increase in downloads.

…and version v1.07, my girl Fire has a lava level as well, with a new hazard: flying rocks. Also, a MacOS version was made - sadly I couldn’t test it, as I don’t own a Mac.

Version v1.10 was the one who got the most changes:

  • The main game includes only the game itself, every level is now a .GTS file in “packs/” folder (up to now, the game was 100MB, and it decreases to 40MB, with only 7MB needed to update the main game core);
  • Every level/character can be downloaded using the game updater;
  • Artworks were cleaner, strong shadow, although I’ve compressed every image to 256 colors, decreasing its final PNG size (as it was already 120MB in size just in unlockable artworks);
  • The “saves” folder is now local, making the game portable; before that, he was using the default “app_userdata” Godot set for it.
  • Not only you could use the .GTS files to make levels, you could also use the files to run a gamecode once; on Patreon, two special files (“DuplicateCoin.patreon” and “10000Coinds.patreon”) with self explanatory names;
  • The “late jump” was implemented, which decreased everybody’s frustration over fast-thinking milissecond jumps - thanks for Andy Gavin’s blog post of “Making Crash Bandicoot” for such amazing suggestion (seriously, go read all his posts, and yes I always loved Crash Bandicoot)
  • Finally, Godot version was changed from 3.2.x to 3.5.x, but sadly not for 4.x, as it would break dependencies and force a major rework in every aspect.

In version v1.11, the server download idea was dropped, including the “game updater”. That’s everything.

And finally, version v1.12 (and final) was the latest avaliable version. It was to include Pamela, a friend’s commissioned character, which will be part of a next game. A beta version v1.20 includes the finished level, but without the unlockable artworks.

NOW WHAT?

I have friends who commissioned me to make their OCs appear in GiantessRun, but I contacted ‘em for the project change. I have new ideas for the game, which basically makes it an entire new game. I love the Wonder Boy I/Adventure Island I game, and I want to make one similar to it, destructible objects, dialogues, powerups and a basic story behind it. It’s gonna be a new GiantessRun game, maybe with another name, idk yet.

Since Godot 4.2.x came and I jumped into the pattern change, I was able to update my game core:

  • Running a scene from the Editor will set all pending dependencies, so I can test a level without loading the entire game;
  • A visible touchpad for Android/iOS exports (one was on the works in the game, but never shipped);
  • Now I have a macOS hardware for MacOS exports (actually a hackintosh, but it’s enough);
  • 1920x1080p resolution (GiantessRun is a 720p game);
  • The character now walks into moving platforms and climbs stairs;
  • Camera is more powerful, working for it to run in rails;
  • Explosive objects, including floors;
  • A Hi-score system that uses the server code to upload it for online hi-scores;
  • Dialogue system is complete, suppoorting BMP font faces and localization - I could build an RPG with it.

On the future goals:

  • Enemy AI (finally);
  • Bosses;

A last question: why don’t you use other’s code? Because for me reinventing the wheel is fun! Godot is a powerful yet simple system, and it was fun to work since the first player jump up to lots of particles moving at the screen in high speed. Also, if I had done it in the beginning, I wouldn’t learn a lot of things. I wanna make my career in game development, but I needed the know-how first, and instead of simply downloading ready-to-use libraries, I made my own, iterating and learning good practices until stability. It’s a testbed for future projects, reusable code and self-learning. I bet that’s how Stardew Valley started.

I could say the only thing that turned wrong was my real life, which prevented me to work on the game for more time - new levels, new characters. I consider GiantessRun a giant success. I never thought of that game being really really big, with dozens of thousands of downloads. I wanted to learn how to make a game in the way I intended (file updates, endless running areas, no memory leak, server updates, game expansions)

Everything I’ve learned during those years, all experiments and the codetest made by lots of people (who even without updates are still downloading the game for free today). I should thank everybody who tested it and commented about bugfixes and suggestions. You made this game possible, testing and giving feedback, now an amateur can call himself a gamedev and is finally able to tackle harder challenges.

TYSM ALL GUYS/GIRLS! THANKS FOR PLAYING MY SILLY GAME! FOR THE NEXT ADVENTURE!! ♥

Files

GiantessRun v1.11 (Windows, Linux).zip 105 MB
Jan 29, 2023
GiantessRun v1.20 Source Code.zip 50 MB
80 days ago

Get GiantessRun (NSFW furry paw fetish game)

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.