Switch Hitter Development Log

Behold as I pretend that I am a game developer.

Previous Page

Sprint #16: "The name of the game."

November 18th, 2018

Here at Rain Delay Games, time is fleeting. I mean, I guess it's fleeting everywhere but, for my specific situation, we're very much getting to the point when I'm going to have to make a decision on how much further I want to spend full-time (and no-paycheck) effort on this whole thing. I've given myself until the end of the year to fully focus on RDG projects but the days and weeks surrounding the holidays have a way of making that time disappear. As such, I've come up with a plan for the remainder of year and something to shoot for at the end.

Ensue's ensuing name

In an effort to not bury what was clearly the most important thing I did in Sprint #16, Ensue will no longer carry that moniker. Henceforth, you are playing Switch Hitter.

I made a list of at least fifty name ideas, most of which were utter garbage, but Switch Hitter is the one that I kept coming back to. I loved the combination of it being descriptive of a big mechanic that the game will use (i.e. hitting switches to affect something else within the level) and being what you call a baseball player who can swing the bat both left-handed and right-handed.

Less important to you but meaningful to me, I'm no longer going to be referring to this whole thing as a "prototype". I think we're clearly beyond the prototyping phase--and probably have been for a while--so I think it's a good time to stop using that phrase.

Goal-oriented development

For the past several years, I've made the trip to Awesome Games Done Quick to be with my speedrunner buddies (shout-outs to the Yoshi's Island community). The event always happens in early January, which will be very convenient for me this year as I consider wrapping on Switch Hitter. I've decided that, by the time AGDQ rolls around, I need to have a not-obviously-unfinished version of the game to take to the event and get feedback from, frankly, anyone who'll play it there.

In recent days, I've been very significantly doubting whether this game is actually any fun to play. I mean, I have fun playing some of the insanely hard levels I make but it's not clear to me that others do. I've committed myself mentally to the idea that if, between now and AGDQ, people just don't really seem to like this game all that much, it'll be time to release whatever I have and move on to a different project (along with, almost certainly, finding a new day job). After all, if it's not fun, what's the point?

Action items

I have several things that need to get done before I consider Switch Hitter AGDQ-ready, though. The first was, you know, giving it a real name. Check!

The second, third, and fourth things are that I feel like this game needs three worlds by January: a world that establishes the basic platforming mechanics, a world that goes a little further with the platform and establishes the projectile mechanics, and then a world that mixes them all together. It's less about making it feel like the game has structure and more about making sure that I'm introducing all that the game has to offer in a reasonable way. I don't need the worlds to be super-polished but I do need them to be assembled.

During Sprint #16, I was able to, for the most part, get World 1 assembled, and you can play it right now. It's not very challenging (which is the point) but I think it does a much better job of introducing switches and the basic jump mechanics that the game uses. My hope is that, within a few weeks, I'll have Worlds 2 and 3 in a reasonable spot as well.

Finally, I think an AGDQ-ready build needs to have at least some sound effects and some music. During the development of Deleveled for the Seattle Indies Game Jam, I learned first hand just how much some simple sounds can add to how a game feels. Despite having absolutely no background in creating my own sound effects, I'd, nevertheless, like to give it a try. I'm prepared, however, to just use Freesound again if I end up not liking what I'm able to make myself.

The cutting room floor

I've all but decided that Switch Hitter will be ditching the balls and strikes mechanic for AGDQ. I may end up keeping the whole "three strikes and you're out" thing but the concept of having to collect four balls to reset your strikes is just too confusing and too pointless for me to want to continue pursuing it. It's a real blow to my perception of the game because I feel like that unusual take on a platformer health system was really the only original contribution Switch Hitter was making to the genre. Alas, if it's not fun--or, unfortunately, if I just can't figure out how to design around it to make it fun--I can't keep forcing the issue. The AGDQ-ready release will not be featuring balls and may very well not feature strikes either.

Pre-Thanksgiving leftovers

One thing that I totally forgot to mention in last sprint's post is that I've added smoke trails to enemies when they get launched by the bat and to the hero when a triple jump is executed.

Besides adding a bit of visual flavor to the game, I'm hoping that the triple jump trails will help emphasize to a new player that something different is happening when you time three jumps in a row. The height boost you get is certainly not obvious so that's what's motivating looking for other ways to communicate the triple jump's effect to the player.

Closing thoughts

I'm not sure I have many closing thoughts for this sprint. It was a ton of rapid-fire level design--I'm now sitting on over a hundred very short levels--and a dash of soul-searching, trying to figure out what I really want to accomplish with this project in the near term. I'm certainly to the point where I'd love if I could somehow carve out a career as an independent video game developer but, I mean, I'm still a long way from being able to do that.

Next sprint

Thanksgiving will cut into Sprint #17 a bit so I've decided to halt original development and try to focus purely on getting Worlds 2 and 3 out there, if in a rough format. I surely have enough levels to draw from but I'm also willing to create new ones as needed. Two weeks from today, I hope to be able to show you all 81 levels I intend to take with me to AGDQ.

Sprint #15: "I'll have a jam sandwich."

November 5th, 2018

Going in, I knew Sprint #15 was going to be a creative one. I decided to spend the two weeks focusing, once again, on assets: artwork, levels, and music. If that weren't enough to take me out of my comfort zone, looming over my head were two game jams I'd signed up for, each of which would task me with creating a brand new game in accordance with a theme. It was a good reminder that there's no rest for the weary.

Background art was always off in the distance

In the first few days of the sprint, I was able to create a horizontally tileable background image for use in Ensue's levels. There was a false start where I sort of forgot that backgrounds tend to, in fact, be tileable but, once I remembered that, this is what I came up with.

During its creation, it became an interesting challenge to choose colors and design it so that it truly exists behind the foreground. One criticism I have of Celeste is that I surprisingly often get confused as to what's in the foreground and what's in the background (i.e. what I can interact with and what I can't). Generally, I think this background image is representative of how I'll solve that problem. Soft colors and little, if any, outlining in the background; darker colors and more deliberate outlining in the foreground. If this sounds familiar to you, well, you may be on to something.

It's not a majestic piece of art or anything but, for someone who really doesn't know what they're doing when it comes to this type of thing, I like the way it came out and I look forward to making more of them in the future. What's more, just about anything provides a huge jolt of flavor to the basic look of Ensue. Here are some before and after screenshots.

In no uncertain terms, it's just a major boost in the "wow, this is actually starting to feel like a real video game" department. I also happen to think I nailed the outfield fence colors and I'm even really happy with the dithering I used for the warning track and grass.

Death to brown-ish boxes

Straddling the first game jam was the addition of two sorely needed animations: a swiping glove and a swinging bat. To be honest with you, I'm so embarrassed at how long it's taken me to produce this artwork--given the fact that I've produced any at all--I'm not even going to bother reminding you what things looked like before this. This is what they look like now.

The bat took an incredible amount of tweaking to get right (to the extent that I think it's "right") and I was actively using the Slugger's sprite as a reference image. The glove, thankfully, went a bit faster. Overall, I'm happy with the animations themselves but I'd like to tweak the hero's movement during the swipe/swing actions to sort of reinforce what's going on. That's for a medium-term sprint, though, I think.

As good as feedback gets

At the end of the first sprint week, I posted on the r/gamedev Feedback Friday thread, something I hadn't done in months. Pretty quickly, a player told me the keyboard controls weren't working. In my performance/optimization work, I'd actually introduced a bug that totally broke everything besides left and right movement. So I fixed that. A different player, however, recorded an amazing video of his completely blind playthrough experience. It's hard to overstate how incredibly helpful it is to actually see somebody playing and hear their thought processes. The notes I jotted down are too numerous to even consider including here but let's just say that several things are getting reprioritized up near the top of my list. I'll keep this with me: if I really want to offer some grade-A feedback to a game developer, this is the way to do it. If u/-PHI- happens to be reading this, again, thank you so much!

Jamming in a game jam

At some point during the first week, I decided to sign up for the Pizza Jam to act as sort of a warm-up to the Seattle Indies Game Jam that I'd be participating in the following week. I found the Pizza Jam by just going to itch.io's excellent game jam calendar and looking for one that had a decent number of people and seemed to take itself just the right amount of seriously. The Pizza Jam had about 100 entrants and offered a large pizza as a prize to be awarded to the top two vote-getters.

The jam theme was announced on Friday evening: "one of the seven deadly sins". Lately, I've been interested in making a puzzle game, so I did a little brainstorming to see if I could impose a vice upon that basic format. What I came up with was Getting to Retire. In this fast-paced puzzler, I attempt to establish the concept of greed as a bad thing, something that can very quickly lead to your demise. Going into specifics about the game deserves a post all its own, so I'll reserve those thoughts for later this week. Just know that I came away from the Pizza Jam very satisfied with my ability to produce a functioning video game in short order.

Trying to find structure

One of the recurring bloopers in the development of Ensue has been my complete inability--or unwillingness--to decide on how I want the game to be structured. Is it just a left-to-right platformer in the Mario style? Is it more of a one-screen-at-a-time Celeste-style affair? Long ago, I made levels to indulge the latter; then, I decided that I wanted to explore the former; now, I've basically swung the other way. I've arrived at wanting every level to have four distinct segments that are metaphorically represented as having to touch first base, second base, third base, and then home plate. For the most part, I think these segments are going to be very short and, more importantly, very numerous.

In order to link them up with each other, they need to exist. I've decided to allow myself, for the foreseeable future, to go on a "level design blitz" where I just focus on churning out levels that I can assemble into something more cohesive later.

To help me do this, I wrote a quick program that generates a set of constraints that I have to design a level around. The dimensions it factors in are a set of fundamental mechanics native to Ensue (e.g. "triple jump", "bat/swing", "enemy"), potentially combining up to three of them, and an overall difficulty (2-8, as I wrote about after Sprint #12). Everything's weighted equally when it's generated so it's a good challenge to try to think of ways to design levels around mechanics I maybe hadn't yet considered combining.

For now, I'm leaving these levels hidden from the prototype but for the release at the end of this sprint, I bet some of them will see the light of day.

Smoothing out the rough edges

I've somewhat specifically told myself that I'm not to use on-the-clock time for messing around with the camera, which works perfectly well. That, of course, doesn't prevent me from learning about how video game cameras work. During this sprint, I took half an hour to watch this absolutely incredible GDC talk by Squirrel Eiserloh that goes into detail about the math surrounding the way that cameras move in modern games. I've been loosely interested in smoothing out Ensue's camera for a while but I thought it was going to be a much bigger time investment than literally just multiplying a number by something. Anyway, I made that nearly trivial change while watching the talk and I'm very pleased with the results. So, for real, no more camera work.

The regenerative properties of strikes

At some point this week, I also decided to experiment with making collectible strikes automatically regenerate. I don't really know how to describe why I feel like this works but, when I tried it, I did feel like it worked. It's interesting how it influences level design, though, now that strikes can almost act as doors that lock behind you. In short, doing this sort of thing introduces more strikes into the system, which will eventually have the effect of making the game harder. We'll see how long this era lasts.

Bonus jam

Finally, I got to the Seattle Indies Game Jam. I was pretty intimidated going in, to tell you the truth. I very quickly got the sense that Unity was an almost standard language that you needed to know how to speak at these team jam events and, well, I've just never taken the time to learn it. I was able to find an awesome partner (who streams on Twitch and has a website of his own) that needed some help with his idea to make a platformer that lacked a jump button. I told him that I'd be interested in working on it and that, given my lack of Unity experience, maybe it'd be best for me to concentrate on level design while he did the programming.

That separation of powers ended up being perfect for us. Before anything was programmed by him, I actually started ripping apart Ensue to try to get a very crude prototype going so that I could start experimenting with the jump-less mechanics we were envisioning. After a night doing that, I was able to get Unity up and running on my computer and start designing levels natively. It all culminated in a game that we named "Deleveled". We think it came out pretty well, for what it is, and our fellow jammers agreed: we won the community choice award for the jam.

Closing thoughts

So now I have two game jams under my belt along with something that resembles a portfolio of video games that I've released. As somebody who still insists that he has no idea what he's doing, that's a pretty good feeling to take from this whole experience. I'll definitely be interested in participating in future jams (maybe the Global Game Jam this January?), even if I'm not still working full-time on a video game at that point. I also no longer have any ugly placeholder boxes in the portions of Ensue that are publicly available. Sprint #15 was pretty good to me.

Next sprint

Hopefully, Sprint #16 will be the same. It's going to be a pure level design blitz sprint as I attempt to make roughly five short levels every single day. Near the end of the sprint, I'll see if I can't assemble several of them into something that feels like a real thing. Wish me luck.

Next Page