A Retrospective - Comparing the 2018 Prototype to Now


As I get closer to releasing the full demo, I thought I'd look back and reflect upon the journey so far and how Battle Tower Royale actually came to be.

----------

Battle Tower Royale is intended to be my first fully-realized game. However, it's not the first time I've ever worked in Gamemaker. Way back around August 2017, I saw a deal on Humble Bundle for a Gamemaker 2 license at a reasonable cost. Being a poor college student who always harbored a dream of making games, I purchased it and gradually stumbled my way through learning how to use the program. The time spent working on the prototype would consume me for the next six months while I continued juggling my engineering degree and a part-time job.

To say that I was in over my head is an understatement. I knew next to nothing about art, barely anything about programming beyond a couple of C++ classes I took back in 2009-10, and I possessed only a crude understanding of music composition. Yet by some miracle, I managed to finish a functional prototype of an action RPG that didn't even bear a proper name on the title screen. This prototype was internally labeled Battle Tower Royale, a name that would later be repurposed for the full game.

While the prototype did receive a few updates and fixes in early 2018, that prototype would be the last time I touched Gamemaker for over four and a half years. I knew that the game was a complete mess internally. The code was a disaster and completely unmaintainable, the art was *bad*, and the game mechanics were frustrating to play even though the core concept was actually pretty decent. I knew that I couldn't continue with the game as it was, but I was increasingly busy with work and school as I hit my junior year. Coupled with my discouragement at how the prototype turned out, I didn't have the will to keep trying. I basically felt like a failure who had nothing to show for all that work, despite the fact that I really didn't have a good reason to. The demo was essentially finished, something a lot of people can't say they've done! And, I created all of my own music and art as well. While the sprites were amateurish at best, I did learn something about creating pixel art even if I didn't know it at the time.

But even though I graduated, moved across the country, and started my life and career in a new place, I never forgot about that project. The sting of perceived failure faded as time passed and I could assess my own efforts more objectively. And when I made the decision to transition into software engineering last year, during the interviews I dredged up the prototype and talked extensively about all of the lessons I had learned from making the prototype. I realized that I still felt really passionate about the whole process, even if it had turned out the way that it did. And I think the interviewers saw it too, because I wound up receiving two offers for software engineer positions at my company!

Talking about that project and answering questions about programming and game design lit a fire under me that I hadn't felt since I first downloaded Gamemaker so long ago. I was eager to step back into my old role and make the game that I had originally envisioned, and successfully switching into software engineering gave me the confidence to give game development another try. It was in October 2022 that I began work on the title screen of Battle Tower Royale. But this time would be different - I had gained a lot of skills and knowledge that made me far more prepared to execute my vision the way I intended to all those years ago.

-------------

At its very core, Battle Tower Royale is the same game that I made in 2018. But the execution and style of it is far more developed, feeling like more of an actual game instead of a proof-of-concept. Many of the prototype's core elements and features have been carried over; the combat and spell casting system is fundamentally the same, as are the game's mechanics. I kept most of the main characters, though many received substantial changes. Redox is the same character only in name, and Sabrina received some significant changes as well. All of them received new sprites and animations. The inventory and store system were also carried over, but I added in a number of enhancements and features that were missing in the prototype, largely due to my lack of programming skill at the time. A great example of this is hotkeys - several of my original playtesters complained about this!

I also introduced a slew of new characters, as well as a story that existed as little more than a set of ideas at the time. Gale, Talokha, Larimar, the Immortals, and various others are all new characters created for the full game, who join the cast introduced in the prototype. The prototype introduced the teleporter and combat rooms, but Battle Tower Royale contains a defined narrative and story that gives a sense of structure and purpose to the player's actions. I have also included elements of world building and lore that were only vaguely hinted at back in the prototype. While the art style is still crude, I have a (slightly) better grasp of color theory, perspective, and anatomy that has enabled me to draw sprites that don't look like total eyesores anymore. I always intended the game to have an Undertale-esque look to it, though I think this applies a bit more toward the characters than the background art.

I've included a few examples below to illustrate how the sprites and animations have changed from the prototype to the full game.

-----------------
This is Alabaster, one of the dragon characters from the game. Her sprite is a massive improvement over the original, and now looks more or less like what I intended originally but didn't know how to draw. Her personality and role is essentially the same as in the prototype, though I did tone down her jerkiness a bit.




This is Minotaur Mike, who is the owner of the magic shop in the game. His sprite is also substantially better than before, and I changed it from a 3/4 perspective to a head-on perspective. His personality was shifted to be less jock-like and more quiet and introspective, which I think better fits his role within the game.



This isn't any particular character, but it is one of the NPC bases used throughout the game for several different characters you can interact with. This character's species is a Yuan-ti naga, though it isn't drawn to resemble any particular kind of snake. The changes are much more subtle than the first two examples, but the outline has been cleaned up and and better defined. The lines look smoother and the sprite received a black outline that offers better contrast.



This is the main player character, who also received a much-needed facelift. The same general features have been preserved, but the proportions look better and the character doesn't have this weird "sunken-head" look. He does still have the same mitten hands that many of the other characters have, though I'm fine with that since there isn't enough resolution to draw proper fingers. The PC was originally named Marcellus in the prototype, but in Battle Tower Royale he doesn't have any given name.



Animations have received a substantial improvement overall. I found some tutorials online that showed how to animate walk and run cycles, and I followed those to make the PC's movements much more fluid and better-defined. The difference between the prototype and proper game is quite striking:

 


----------

These sprites all represent the state of the game as of the time of this post. I may still make some small changes and revisions, though the vast majority of the work has already been done.

The sprites and animation are obvious to the player, but what is less obvious is how much better the game's code is. I was completely ignorant of any basic coding practices back in 2018, and I lacked any awareness of what object oriented programming was. Working on software development and reading books on the subject (I highly recommend Clean Code!) has enabled me to write code that is cleaner, better structured, more efficient, and easier to maintain. Some of these changes are simple, but they make such a difference. For example, the prototype had dialogue that required newlines to be inserted manually whenever text would wrap inside the dialogue box. They would have to be changed by hand if I rewrote anything, and determining where these newlines had to go was pure trial-and-error. But in Battle Tower Royale, I wrote a basic text-parsing algorithm that handles this for me, making the process of writing dialogue so much smoother. It's a big part of why the game contains so much more dialogue than before!

I remember using global variables for almost everything. I had no concept of what the scope of a variable meant. If the game crashed because of a variable, my fix was often to switch the variable to global. Nearly everything was hard-coded, including all display values and text. I didn't know anything about classes, and the concept of child/parent relationships and inheritance was completely foreign to me. Every weapon and spell had to have separately defined behavior for every enemy; even 2018 me knew that this would get out of hand very quickly as more weapons, spells, and enemies were added. The sorry state of the game's code is a major part of why I made the decision to stop development at the point that I did.

If anybody who knows me at work reads this, I promise I learned from all of my mistakes!

----------

I think that when I get into the weeds of game development and find some detail that I struggle to create in the way I want, it's easy to believe that I'm just a bad game developer is in completely in over his head. Writing this post has been a great way to remind me of how far I've come and how much I've accomplished. The game really does look, feel, and play so much better than before, and while I still feel a lot of uncertainty and insecurity over what I've made it really isn't for nothing. The very worst that can happen is that I walk away as a far more competent and self-assured developer than before, with the knowledge and skills to bring many of my other ideas and thoughts to life.

I don't expect that Battle Tower Royale will become the next smash indie hit. I would bet that the art style alone will likely exclude it from such a consideration. But it is something that I have made with an undeniable sense of passion and vision, and whether or not the final product is well-received by players I know that it is the game I intended to make. I've got so many ideas and thoughts for what I want to create in the future, and the experience and knowledge I've gained from working on Battle Tower Royale have prepared me to meet that challenge in the future.

----------

The vast majority of Battle Tower Royale consists of completely new material. There are new songs, new enemies, a massive amount of new art, and even most of the dialogue is brand-new. The few things that were imported over form the heart of the game, but even the things that were brought in were changed and adapted as needed to fit the vision of what Battle Tower Royale is meant to be. I re-played that prototype as I was designing the game to not only remind myself of how much progress has been made, but also to avoid making all of the same mistakes as before! Seeing the state of the prototype and reviewing some of the old code really makes me feel better about how things look in Battle Tower Royale, and it gives me some much-needed perspective that I often lack as a self-critical perfectionist.

Thank you for taking the time to read this, and I greatly look forward to hearing what your impressions are of the game!

Files

Battle Tower Royale Alpha v0.015.zip 48 MB
Apr 17, 2023

Get Tower of the Immortals

Comments

Log in with itch.io to leave a comment.

(+1)

Good luck with Battle Tower Royale, BynaryFission!

Thanks, man!