The Base Evil Necessary for Commercial Success

Section 1: An Introduction

Well, I guess I should write a little bit of an introduction before getting into the past month’s work, given I’ve never written one of these before, and I might expect there to be some among those reading whose only context for all this is some neat-looking screenshot or animation that somehow linked back here. Well, if that doesn’t describe you, you should just move on to the next section, as you likely know most of the following bits already.

For those who’ve stuck around for this portion of the blog, I’m Tyo, as you might’ve guessed. I’m a 20-something who’s closer to a 30-something than he wants to admit, and I’m trying to make at least one game, but hopefully more. I’ve been working at this task for a while—about 5 or 6-ish years, with varying degrees of activity. It’s not really accurate to say I’ve been working on any one project for that long; I’ve had more than a few overlong pauses in all game dev-related activities. I wouldn’t say I’ve ever been burned out, but let’s just say I’m looking into getting mentally evaluated and leave it at that for now.

The important part is that I’ve never given up on any of my projects, not really. I don’t think I’ve made it far enough into any of them to know that I should. They’ve rarely gotten far past the testing phase and never get a second go at serious scrutiny outside of my own head. So, I continue to work at at least one of them, here and there, as my motivation allows.

Aside from this, I work as a software engineer and an adjunct instructor at a local university, both of which I use to afford my rather comfortable standard of living. I don’t really see myself doing either for a significant portion of my life, especially the software engineering job. It’s been very utilitarian for my own material needs and comforts, and I’ve learned plenty of engineering chops in my 4-ish years of working with it. The day-to-day isn’t terrible by any stretch of the imagination; in fact, from what I’ve heard of others’ working conditions in corporate America, I seem to have it very easy. But I find it distasteful to work at some huge conglomerate in general, and it happens that the huge conglomerate I work for is one I’m particularly unhappy to be working for. It’d be much easier to abide if I worked for, like…

Well, it’s kind of hard to think of a huge conglomerate that isn’t evil, but if you just think about the most evil ones, the one I work for is probably in your top 3 guesses. I digress.

I mostly reveal all this to you as to explain why I continue to do gamedev and, in particular, pursue it commercially. I could just keep it as a fun hobby to do in my spare time and go about my day-to-day and live comfortably, probably for the rest of my life. But that’s not what I want to do. As stereotypically American as it sounds (I say this with equal parts chagrin and sincerity), I want to live off my own work. As corny and perhaps naïve as it sounds, I want to know that what I do makes people feel joy. Most of all, as normal and obvious as it sounds, I want to do what I’m passionate about. So, here we are.

The particular subject of most of my gamedev energy is probably the project that most likely brought you here, Rose and Thorn (I quite like the title, tentative though it may still be). This project is my one-of-a-kind 2D platformer pixel art metroidvania game. I say this with all the sincerity in the world. I’m one of those. But since you’re here, I assume you, on some level, kind of agree that what I’m making is pretty cool, so I’m not gonna try to convince you and just trust in that. If this somehow doesn’t describe you, uh, well, there’s gotta be some other dev blogs that talk more in-depth about that by now. Finding this organically in the first few months would be wild. With that said, I’ll likely be covering more than just my work on that game, but this blog should be mostly concerned with it. If you are entirely uninterested in the development cycle of an almost-6-year-old game idea from someone with zero game industry credentials, this probably isn’t the blog for you!

finally, a horoscope for libertarians

Section 2: Casting Glitterdust on the Invisible Hand

As hinted by the title of this section, we’re not starting with cool aspects of game development in this dev blog. Well, okay, I’ll get into some stuff that’s pretty cool later (and I urge you to skip ahead to the next section if you find the next sentence repulsive). But for now, we’re talking about marketing.

Marketing is the bane of many a game dev. I’m not unique in this regard. In fact, it’s anathema to everything I believe in. I’m only joking a little. Regardless, if I want to actually make a living doing this, getting my nose to the grindstone and acquiring at least some basic knowledge of marketing increases my chances of being able to do so. And so, I started doing just that.

Well, obviously, I started trying to figure it out years ago. But this time, I think stuff is actually sticking to more than a degree of “marketing make game sell more better.” The first thing I did was try to look up metrics about games I’ve heard about, games I’ve liked. It wasn’t really a conscious effort, but I found that doing so kind of got me an in to getting interested in the shit. Naturally, I started to compare. Oh, Iconoclasts made more than any one Shantae game? Oh, that’s not totally right; these metrics didn’t count 3DS sales. Wait a sec, Shove Knight: Specter of Torment made only made like $125k? Blasphemous 2… exists?

After such bombshells, I was more easily able to start getting into the crunch. I realized that games have pretty interesting meta-stories behind their success—stuff that doesn’t necessarily have to do with the developers directly. I started to formalize it all. I started making spreadsheets.

Uggggggggh.

I decided to take a rather short-term approach to the analysis, mostly considering the early revenue and analytics of various games in the genre. You might be able to guess, but this is because that’s most immediately relevant to me. It’d probably be smart to examine wider trends in income; however, that’s much more complicated to do, and besides, given I’m mostly a solo dev (for now anyway, to be sure), if I optimize early income, that positions me better to make the change I’m looking for more quickly. I don’t need to be rich; I just need to have enough to sustain myself with as little work outside of game dev as I can muster.

Given that, as you can see, I dug into launch campaigns. I evaluated their social media pages and their Steam pages. I noted what languages they released with and what languages were marketed to. I evaluated their trailers and took note of which channels released them. I noted where publishers took active and passive roles (as it turns out, they seem to do less overt stuff than I initially thought). I noted the game’s price and the player-side value of the game’s content. I noted how fast units sold per day dropped off and how fast revenue changed with time. I noted which games seemed to have a good apparent return on investment and which ones faltered. I assessed each game holistically, comparing them to other games where they were similar.

At the end of the day, I didn’t have any big epiphanies. Well, not yet anyway, but in either case, I wasn’t expecting to. I just reinforced what I already knew on a high level, the most valuable asset in selling a game is its marketing—"marketing  make game sell more better,” indeed. But in this research, I’m finding that I have a better understanding of how this actually happens—a better intuition about it. It’s one thing to hear, “You have to be consistently posting on socials to ensure growth,” and another to actually see and study the aftermath of successful and unsuccessful marketing campaigns. Obviously, this isn’t a finished exercise; I don’t think it’ll ever be finished, at least until I’m paying someone else to do it. For now, I’ll have to continue this when I find opportunities to, between true dev sessions. Sadly, and perhaps not without some relief on my part, I can’t afford to dissect each game at length and reverse-engineer each of their launch plans, or lack thereof. But I can at least get a feel for which decisions are right and wrong. Hopefully, I’ll be able to avoid where some developers fell short and channel what others did well for my effort. Or I’ll learn the hard way, I guess.

Section 3: Getting Back To It

So, a small confession. As I’m starting to write this in February 2024, I’m pretty much getting over one of those mental blocks that appear when working on Rose and Thorn and other projects periodically I mentioned before. Part of the motivation to write this is to help keep me on track. So far, with only 75% of the first blog post written, it’s been pretty therapeutic.

With that out of the way, this is some of the progress I’ve made since working on Rose and Thorn in earnest again.

I’ve been hopping back-and-forth between ironing the existing visuals and working on level design, with some intermittent code-cleaning as well. Let’s cover visuals first. I think I might have to hold off on more abstractions for a while what with the last section being what it is.

The viscerally coolest aspect of late is the enhanced attack animations; specifically, I enhanced the smear frames and added additional smears on Rose herself.

That’s pretty good, right?

I heavily referenced some AdamCYounis tutorials for the slash smear, the blue “wind” effect, but the smears on Rose herself were mostly my own intuition. I think there’re definitely some frames I could stand to look at more, but overall I’m quite happy. On top of the smears, I also added some subtlety to the wind-up and follow-through, whereas before the attack animation was all of 2 frames. For this I also relied on my intuition mostly. I think my sense of movement has definitely gotten better with time. It probably behooves me to show you all an example of what came before. Well, I don’t have anything of great quality, but you can check this old TikTok video I made which, incidentally, has the old animation!

And some audio to keep your attention to boot.

There is something to be said about how snappy the original animation is, but I think the subtler movements of the newer animations lend themselves more to the level of fidelity I’m grasping for with this game. I originally took a page from Hollow Knight with the old 2-frame slash, but Conveying movement is pretty important to me for this project. So, while I don’t believe I was necessarily wrong in looking to that aspect of HK this feels closer to the platonic ideal of what Rose and Thorn is, I think.

Sadly, I don’t have the vocabulary nor the low-level know-how to further analyze these animations, so I’ll have to move on. Keen eyes might have noticed that the colors between the two videos(specifically, the colors on Rose) are different. While the lighting engine does fuck with the colors quite a bit, there is an inherent difference underlying the lighting engine. I’ve changed the color palette!

This was because I wanted a few more colors to work with, but I’m honestly no good at color theory. I’m getting better at it, but I still tend to rely on other perspectives, and luckily lospec’s color palette library is right there to provide. The original palette was also a lospec palette, though with fewer colors, hence my dilemma. I hope that I can keep this palette for the rest of development. In this way, I can be certain that the entire game has a consistent color palette and I don’t need to screw around with post-processing as much to get different layers of the game to agree more and instead focus on letting post-processing add to each scene. It also gave me an opportunity to address that very issue in my in-progress demo scene. If you’ve heard of spaghetti code, you should try spaghetti scene hierarchies. That shit will have you on the proverbial toilet for weeks. I wanted less and less to work on background elements because of how much I had to tweak new ones so that they didn’t look alien to each scene. Now, though, I’ve reined the scene in and everything is mostly using the same resources to look the way they do with a few easily-modified exceptions.

Part of that was also a refactor of the shader code. It may come to no surprise for some, but most of the uniqueness of the game’s visuals comes from a strict adherence to toon/cel shading. I only break the rule in very specific situations that should go mostly unnoticed. Putting that aside, the shaders were also a bit of a mess. I originally wrote-and-rewrote the things in Godot 3.x (I’m using the Godot Engine, by the way) and back then, there was no concept of ShaderIncludes. But, I recently learned those are a thing now in the wonderful world of 4.1, which allows me to modularize shader code! Where before I needed entirely separate copies of the toon shader for different objects(for example, the shader that handled wind blowing the leaves in the trees and practically everything else were different shaders, but were 90% the same exact code), now I have exactly one shader with modular bits I can pick and choose and extend it with more modular pieces much more easily.

This. This right here. This gives my life meaning.

I understand there probably are less technical people reading this, but I hope you can allow a lil’ guy like me his small comforts of gushing techno-babble about shit nobody else cares about.

Anyway, I also created a new character! And she won’t even be part of the game at all for at least until the Kickstarter demo!

A correct use of my time.

Her fit was modeled after eastern armor, particularly some replications of Chinese lamellar armor… Allegedly. I didn’t really look too hard; I was just looking for inspiration and landed on a couple of those, and I think it came out quite nice. She’s gonna be a rival for Rose in the proper game. I’m still thinking through her name, but for now I’ve been calling her Azalea, keeping with the floral theme for names I intend to keep to in this game. I figure she’s on some sort of quest to prove herself, very similarly to Rose. But all that’s for another time. Moving on…

I also went back and redesigned my “tree” tileset - pictured above is the before and after. Well, the first one’s purple because the tree is supposed to be sick, but I decided to make a healthy variation. Here’s the two stages of illness I’m thinking of having:

I was very excited about this even if it seems sorta miniscule. I’d been trying to figure out a tree tileset I was truly satisfied with for, honestly, years. One of these days, I just decided to give it another shot and practically got it on my first try.

That’s about it for the visuals. The final topic of the blog is level design, yet another aspect of game dev I’ve not been intuiting too well. I decided, thus, that this next section will be a bit more kinetic. It’s not quite a stream-of-consciousness, but I figure I’ll try my hand at some proactive level design.

Might have to re-think this…

Section 4: Let me Level with you…

This is still something I’m trying to grasp and am in desperate need of resources for. I don’t think having the first level of Super Mario explained to me for the umpteenth time is going to help too much.

But maybe I’m moving too fast. I do have the mechanics I am giving to the player for the current release target well-defined at this point. Let’s start there. What can Rose actually do?

So, the basics first. Rose can move left and right, and she can jump. Pretty basic platforming stuff. But we shouldn’t take it for granted that the player will automatically assume this, should we? There are games that play with fundamental player expectations. Let’s make sure the player knows we’re not doing that for now.

In this case, I think I want to be pretty precise. The game is an action platformer. I shouldn’t be too arbitrary when teaching the fundamentals. I also have to keep in mind art direction, since a major draw of the game is meant to be its unique visuals. Let’s decide on a room size and build from there.

The screen is 480x270 pixels, pretty standard as I understand pixel art games (of course, however, we render to 1920x1080, but let’s focus on the resolution we designed for). Rose’s body (excluding extraneous parts of the sprite) is about 16x39 pixels.

This is actually very close to Hollow Knight’s character-to-screen ratio, with Rose taking up just under .5% of the screen and the Knight taking up just over .4%. I think we can safely reference Hollow Knight for overall level design with this in mind. It is also pretty convenient since Hollow Knight similarly relies on atmosphere and a unique visual aesthetic to draw in an audience. Note: For now, I’m just speaking to the design of individual “rooms.” We’ll focus on overall map and zone design later.

Now in Rose and Thorn, I’m not going to be using tiles in the traditional sense, but for our purposes in level design I’m going to focus on 16x16 tiles.

Hollow Knight starts with an open, flat area; it acts as both a set piece and also a small sandbox, allowing the player total control over experimenting with the game’s base mechanics. There’s no pressure to even move, let alone progress. This in itself is a lesson, subtly telling the player they should take in the sights and promising there’s more to come. I think we should probably just steal the idea wholesale, to be honest…

An aspect we’ll be missing, though, is the destructibility of the environment Hollow Knight allows. This gives kinetic feedback as the player experiments with their mechanics and can even teach some players a hidden mechanic: you can use some pieces of the environment to bunny-hop with your melee attacks, effectively giving the player a limited double-jump long before the player acquires any movement ability. It’s unlikely for the player to figure this out, and the mechanic isn’t required at this point, but if they do, they’ll be rewarded very shortly with a charm.

Let’s not get ahead of ourselves, though. It’d be cool to have kinetic feedback for player experimentation, but bunny-hopping isn’t available in this game to begin with, at least not in this scope. Let’s keep focused on the more fundamental aspects of this starting area.

All there is is a wall to the left, so the player goes right and encounters their first daunting obstacles: static, decrepit walls. Using the Knight’s basic attack, the player easily bursts through with satisfying impact, spraying wall gore all over the floor. There’s three of them: a clear adherence to the Rule of Three (essentially, just the idea that humans, for whatever reason, when presented with an arbitrary number of things, prefer three). After the third, the player finally finds the first creature they can actively engage with charging right for them. Most will see this as aggression and immediately attack, defeating the foe in two swings and collecting some apparent currency for their efforts. Those who do not will simply be harmed in a very violent-looking fashion, with black streaks, screenshakes, and, of course, a mask (representing HP) being lost. There is another wall, after which the player will be presented with a harmlessly small drop and another enemy on the other side. The enemy is incapable of reaching the player, so the player has the opportunity to observe its behavior more carefully. They may discover that these creatures do not chase the player but instead idly move back and forth.

However, there’s really still only one way to deal with it, and that is with more violence. In order to succeed here, they must learn to jump and engage the enemy when it’s most suitable—when the enemy is away from the opposite ledge. Technically, one could use their newfound jumping skills to jump over the thing and continue on, but this is not terribly likely for any player (except speedrunners, perhaps). There’s a final wall in the player’s path before the player enters a large room—the first platforming challenge. The only danger is the same sort of enemy the player is by now seasoned in dispatching, and if they do, they may then climb the platforms without worry. Many players likely do this without dispatching the enemy. However, if they do, they will more likely notice that the bottom-right of this room holds a treasure: a strange rock that, when struck, gives the player more of that strange currency they’ve likely started collecting by now. This teaches the player the game’s fundamental aspect of exploration, which will continue to be reinforced going forward.

For our purposes, I will consider the first open room, the platforming challenge, and the hallway connecting the two as one complete “room.” We have 3 “beats”: the sandbox, the basics, and the challenge. Looking at this section from this angle, these beats seem pretty proper. Let’s apply it to Rose and Thorn.

We already figured out the sandbox; for now, I’ll leave it simple and devoid of actual gameplay distractions. It looks plain from a level design point of view, but it’ll hopefully draw the viewer in by leveraging artistic direction, which is out of scope for this discussion. Next, we have to teach the basics beyond just moving.

Let’s present the player with three obstacles that can be dispatched by a single blow from one of their attacks. Rose has two attacks to start with, each being color-coded. There is a blue slashing attack and a short-ranged red blunt attack. There will be a third later on—a long-ranged yellow piercing attack. As you might guess, each one will be very important for the gameplay going into the future, but for now, I’ll keep my focus squarely on the two the player starts with.

Two of these obstacles will have a dull white as their primary color to subliminally signal that any attack will do. The third obstacle will be colored red; blue slashes will be entirely ineffective, forcing the player to figure out the relevance of color to this game. The player would have likely been using the slash attacks up to this point, so the change should be profound enough to stick with them, I figure. We’ll also include a small drop-off at the end just to make sure the player knows they can jump, just like Hollow Knight does.

Once they break through the final impediment, they will be presented with a platforming challenge, though we will seek to more directly teach them a couple more things. Rose’s jumps vary in height depending on how long the jump button is held, which is fairly typical of 2D platformers. But one more aspect is that Rose starts with the ability to automatically grab onto and climb up ledges. So, at the end of this platforming challenge, the player will be presented with a jump, which they can only cross by holding the jump button and successfully vaulting a ledge. This will be very forgiving; if they miss the jump, they will practically be guaranteed to fall directly down into a small hole. From there, they can easily jump back onto the platform before the long jump to try again, but the jump is just tall enough that they’ll be forced to vault it. This should tell them all they need to know to finally make it out of this room if they haven’t already. To wrap it up, we’ll have one more blue obstacle to hammer the color concept home before the player moves on to the next room.

A key of sorts: White, red and blue are the various obstacles mentioned previously. The grey bits are platforms. The green represents the transition to a new room.

Wait a moment, we didn’t teach them anything about exploration and secrets, integral staples of any metroidvania worth its salt…

Well, actually, I was a bit dishonest.

transparent purple represents obfuscation, while the green start is a secret reward of some sort to be determined!

A player with a keen eye might be able to tell an inconsistency with the far wall. If they try to jump over there, they’ll find themselves grabbing an alternative ledge—still teaching them the mechanic, but also rewarding their sense of exploration! Once the player vaults into this section of the room, the foreground element obfuscating this area will fade and reveal a secret reward. After collecting it, the player can then enjoy a platform from which they can jump to the end without any trouble.

Well, that’s my best attempt so far, anyway. Maybe I’ll have it put together enough to actually give something to people to test next time. That is to say, the blog is coming to a close. If you’ve read all of this, I really must applaud you and thank you for being so invested. If you were that into this, you can join my mailing list below. I’ll only be mailing you significant updates on the game, which includes more of these blog posts. Eventually, I’ll be using this mailing list as a platform to update people about the Kickstarter, so even if you don’t want to read more blogs, there is still a pretty good reason to sign up: to stay up to date with Kickstarter news.

That’s it for now. Thanks for reading!