Tuesday, March 20, 2018

Spaces in Time - Part 1: Time Rifts


If you have read any of my previous work, you'll know that I have a... "thing" for the 3D Platformer Collect-a-thon genre that was popular in the 90's.  These are the games that I grew up playing.  Last year we saw a good number of releases, most of which were met with mixed reviews (see Yooka-Laylee, Snake Pass, Freeze-Me).  There is one, however, that would surprise everyone and made it's way to being the 2nd highest rated game on Steam in 2017: A Hat in Time (referred to as "AHiT" from here on out).

For being the first game for the studio Gears for Breakfast, and the first game ever created by Jonas Kaerlev, there is so much that AHiT did right.  "Hat Kid", much like Mario on the Nintendo 64, is an absolute joy to control, with movements that were easy to learn and a bit difficult to master.  Badges could be purchased that manipulated gameplay in fun and interesting ways, like granting the player the ability to sprint or freeze time.

What astounded me the most, however, was the level design.  AHiT offers so much variety in it's spaces that I never grew tired of playing.  One moment you're at ease, exploring the open and inviting world of Mafia Town, and the next moment you're sneaking around on the Owl Express, gathering clues to track down a murderer.

I haven't been able to get this game out of my mind.  AHiT is a huge step towards what the modern 3D Platformer could become.  And seeing as it comes with it's own set of modding tools, I figured its high time I tried my hand at actually creating my own spaces to play in, rather than sitting around and critiquing the worlds that others have laid out for me.

Why Write This?

There is a fantastic opportunity here for me to expand my own design experiences and learn something new.  What better way to do this as a hobbyist than by modding a game I enjoy?  A Hat in Time offers it's own tool set for creating new levels, hats, skins, and other assets, all based in the Unreal 3 Development Kit.  Not only do I get the chance to design levels for a 3D Platformer, but I get to learn a new engine while I'm at it.

As I will be learning many things as I go, I figured it was a better idea to keep track of my progress through individual blog posts rather than one large essay, like I did with Yooka-Laylee.  I'll do my best to research particular aspects of AHiT's worlds as I attempt create my own, learning what ideas could work in practice and which don't.

Now then...

Time Rift Overview

The modding community over at the AHiT Discord strongly suggested that anyone just starting out with modding should take a look at the Time Rift template that can be used when starting afresh.  The template level is quite simple to work with; a small obstacle course with a spawn point, check point, time piece, a revolving platform and a couple of stationary platforms.

I bolded the term obstacle course in that last sentence because, in essence, that is what the most basic of the Time Rift levels often turn out to be.  There aren't any new move sets or concepts introduced in Time Rifts, they are meant to test the player's mastery of what they have learned so far.  The first two time rifts the player would typically come across are within Mafia Town (Sewers and Bazaar), neither of which require the use of additional hats or badges to complete. 

** Note, for the purpose of this particular post, I am focusing on the more basic rifts.  Purple (or cave) rifts, while similar in nature, have more complexities to them (collecting, narrative, sub-levels), so I will be saving those for another time.

Rather, they utilize Hat Kid's movement-based mechanics in interesting ways (wall climbing, diving, and of course running and jumping).  These time rifts aren't available right away - they only appear as the player progresses.  Looking once more at Mafia Town, the first time rift, Sewers, doesn't become available until after the player earns the time piece for "Down with the Mafia", the 4th act of the chapter, which provides the player with ample time and opportunities to learn and master that basic set of mechanics.

Time Rift Design

At their very base, platforming levels could be considered as string of obstacles or micro-challenges for the player to overcome.  The "Blue" Time Rift stages are a prime example of this, as each rift re-uses similar assets in new ways to put the player to the test.  There is only one objective (time piece at the end of the course), and, for the most part, the way to get there is fairly linear.  The first two rifts, featured in Mafia Town, take the average player about 1 minute to complete, and require nothing more than a firm understanding of Hat-Kid's base mechanics: running, jumping, climbing, dashing, etc.

"Bazaar".  You can see the variety of assets used in this level, and how they are grouped together to create individual challenges.

As the player progresses, however, mechanics that are introduced in a world are placed into their corresponding time-rifts.  The next pair of blue rifts the player would be expected to come across are in Battle of the Birds, both of which are a bit more complex than their Mafia Town counter parts.  "The Owl Express" uses the pressure-plate switches found in the Acts "Murder on the Owl Express" and "Train Rush" to create exploratory puzzles, while "The Moon" utilizes the band-following mechanic from "The Big Parade" and designs a level that discourages the player from taking the same route twice.

"Owl Express". Still a linear path to the finish, with switches and more complex structures introduced.


While creating a mod map doesn't necessarily require you to stick to the mechanics featured in particular Acts or Chapters, I've learned that simply focusing on a certain set of mechanics or a theme can often help with design direction, and give a more cohesive feeling to the level without throwing in too much.

When thinking of what sort of interactions I wanted in my own rift level, I was particularly fond of one set of actions: sliding, jumping, and ending on a grapple hook.  The idea of sliding made me think of ice, which in turn gave me a theme, "Mafia's Icebox".  I wanted to try to give the impression that the rift was taking place within an industrial refrigerator, without straying too far from the basic set of time rift blocks.  In the end I focused on the interaction with grapple hooks and slippery surfaces, doing what I could with Unreal Matinee and Kismet to create challenges around these concepts.  You could consider this both a bottom-up and a top-down approach to designing this level, as focusing on one set of interactions provided me with a theme to work with.

Ultimately, I wasn't looking to make a challenging level for the average player; I instead wanted to make a level that was more enjoyable and a little tricky to try to speed through.  In that mindset, the pathways ended up being extremely straight and linear, with only 4 hard turns until the goal was reached.

I do enjoy playing with the fog settings.

What has really become tricky is using materials and lighting to create the feel of ice and cold steel.  This is why there are individual jobs for lighting and environmental artists, neither positions of which I have much experience in...

The first iteration of this level re-used most assets at least twice:  
  • 2 sets of 3 rotating "ice cubes"
  • 2 sets of 3 rotating ice "pizza slices"
  • 2 sets of 2 rotating gears
  • 3 "slides"
  • 3 grapple-hook lifts
  • 1 static grapple hook point
While this helped to create the consistency I was looking for, it doesn't really have the right balance of variety to really keep the player on their toes as they progressed.  Simply increasing the speed that the gears would turn or changing the arrangement of platforms doesn't quite give the increasing sense of difficulty a linear level like this should.  I need to find a way to remix some of these obstacles to make the progression changes a bit more drastic...  Maybe add a few more static grapple hooks as a means of traversal.

Mid-Post Update

I had originally planned to complete this post and share it once the level was done.  However, during the process of designing this Rift and writing this post, Gears For Breakfast officially released the Modding Update for AHiT, and even started a $1000 mapping contest for the best Purple Rifts the community could offer.  This is an opportunity I am extremely excited about, and as much as I hate jumping ship in the middle of a project, I might have to make an exception for this one.  The contest goes until April 27, so after that point, I'll see about finishing this "Icebox Rift" and maybe write a reflection post about what I learned while creating my own Purple Rift.

See you in a month!

Monday, February 12, 2018

In Retrospect: Breakdown (and 2017)

I started off 2017 with one resolution: design and develop my own game, from start to finish.  After a lot of over-scoped projects and failed attempts at building consistent work habits, I finally finished my first game, Breakdown, on 12/21/2017.  It was much smaller than what I had originally pictured at the start of the year, but it was a complete game nonetheless, and solidified my passion for game design and development.

Breakdown could easily be summed up as the illegitimate child of Pong and Breakout.  There's isn't anything too spectacular or ground-breaking about it's design.  With that in mind, this retrospective post wont really focus much on the game itself, but of the lessons I learned during it's development and the effect it has had on me.  In many ways, the effort I put into getting one game published by the end of the year helped me to develop some healthy work  and creative habits, especially considering that I'm currently developing games as a hobby while I work full-time as an engineer.

Pen & Paper

The most important habit I developed over the last few years was carrying around a notebook for ideas and for free writing.  What became difficult, however, was keeping pen and paper with me at all times.  I wish I could recall what sparked the inspiration for Breakdown, but I remember it came to me during a party at a friend's house.  After the idea stewed in my head for a few minutes, I had to scramble around for something to write it down onto.  My friend had provided me with a pen and a small piece of cardboard - I believe it might have been the top of a Cheeze-It box or something.  The important thing was, I had it down, and it was now sitting in my pocket.

But I didn't only use my notebook for ideas.  I'm a bit embarrassed to admit that my brain had trouble keeping track of certain bits of the game logic, most notably collisions.  Having this visual representation helped keep me on track much more than I expected it would.  In short, when in doubt, draw it out.


You can read a lot online about daily routines that developers picked up in order to keep themselves motivated on their work.  Some people would attempt a minimum of 20 minutes a day on their projects, no matter what task you performed.  Others would look to set up deadlines for each step of their game, keeping lists and dates to push themselves to stay on track.

These are all great practices, but the truth is, there isn't one sure-fire ritual that works for everyone.  I had attempted many of these practices myself over the course of 2017, but between the unpredictable nature of my day-to-day life, and the lack of energy I had after work, none of them proved to be successful.  I eventually read a comment to a post on Reddit, from someone who had been in a similar situation as myself.  The suggestion was to simply wake up an hour earlier in the morning, and dedicate this time to development before getting ready for work.  It turns out that my brain was much more fresh at 5:00 a.m., and there were many mornings where I could go into work with a sense of accomplishment from what I had already managed to complete from my personal projects at home.

The key lesson I learned (maybe still struggling to learn) is the consistency of a ritual. Obviously, a ritual isn't a ritual if you don't do it ritually.  There were several development phases I hit that were less fun then others; that's expected.  But the key thing was that I didn't stop waking up early to work on the game when thing's weren't as fun as they were the week prior.  Some days I made less progress than others, sometimes I wouldn't make progress at all.  But keeping the vision of this completed game in my mind, sharing my progress with others, and keeping the hard deadline of December 31st helped me to stay motivated and see Breakdown through to the end.  

Scope, Cutting Content

This one was a bit harder for me, but it was an important lesson, and one every developer learns at one point or another.  Somewhere down the line, you are going to end up cutting features from your game that you were once certain would be a part of the final product.  There could be a number of reasons for this, but in my case, it was simply a lack of time.  I had originally planned to have features like a leader board, increased speed for paddles as they decreased in size, and more complicated physics overall.  Much of development involved learning new concepts and practices, every new feature becoming another google search, and thus becoming an even greater time sink.  Luckily, it turned out that finishing the game without some of those features not only made the project easier for me to digest as a developer, but even easier so for a player to digest when playing.  

Of course, the beauty of creating games in the internet age is the fact that I can simply add on those features and update the cart.  However, I chose to prioritize a completed game over a feature-rich one that may have never seen the light of day, and I'm more than happy with the result.  With this being "my first game", having some more of those complex systems would have greatly extended the dev time, and I would have no doubt lost interest in the game with the additional walls I could have potentially run into.

Consequently, at the time of writing this, there is a post on Reddit that offers a list of what NOT to have in your first game.  Kind of wish this was around when I had started off...

Get Involved

In January of 2017 I made the decision to skip a class and attend one of the early meetings of the Video Game Development Association.  I walked in late, much to my embarrassment, but after the meeting, I was greeted by the club administration and joined the Design team.  Getting my name in the credits of my first project as "Gameplay Designer" was such a great feeling, and seeing something in the Google Play store that I helped make was an even better one. Even after graduation, I've been continuing to attend meetings and contributing to the games the students put together.

Not Pictured: Me.  Having a full-time job unfortunately meant I would be absent from such gatherings.

The best thing that has come out of this experience, however, was the camaraderie among aspiring developers.  Each of us are consciously aware that we're here to learn, and that allows us to find the potential within ourselves and each other.  I've made several friends since joining this group, and we continue to build great things together even when the semester is over.  It's completely possible to do the solo game-dev thing, but joining a team of like-minded individuals proved to be most beneficial for a developer just starting out.  And, of course, it gives you the experience of working within a team towards a creative vision.

I set out to finish one game by the end of 2017.  Thanks to VGDA, I had the opportunity to work on 3 additional games that were completed and published last year.

Get it Out There!

I don't typically take a lot of pride in my work or accomplishments (just ask any one of my friends or family members).  I'm typically plagued by this idea that whatever I create, whatever idea I come up with, there is always someone out there who did it first, and has done it better than I ever could.  It's a mindset I still fight with from time to time.

Ultimately, your ideas and creations are worth sharing, even if you feel they're not your best work.  Two things can happen: you could receive compliments, which might encourage you to make more or improve, or you could receive criticisms, which, if handled properly, could still encourage you to make more and improve.

Breakdown won't make me any money, and I could probably count the number of people who played it with my fingers.  But someone else played it, and someone else liked it, and that was more than enough for me to keep this hobby up.  As I go into 2018, I'll be actively searching for new things to try and new things to learn.