about-face : a post-mortem

It’s weird to go back to writing about smaller games, but refreshing.  As small as about-face was, it is a “finished” game (in quotations because I still have a patch that isn’t live yet).  Finishing things is pretty important – I don’t think it’s actually the most important thing, but it’s really high up there.  And every time you finish something, you usually learn some stuff, because it is one of the primary ways of getting feedback.  So, what have I learned this time around?


What went right

It’s always nice to start with the positive.  I think some things went well with about-face that are worth mentioning.

1. Scope was controlled

about-face never expanded in scope – there were some things that weren’t part of the original idea that made it in, but they didn’t lengthen the game’s development significantly.  There were huge delays in the game’s development, but more due to personal interruptions, losing focus and switching to different projects.

2. The mechanic worked

General feedback has been that people have had fun with the game and often play it to completion.  It isn’t a long game, but the mechanic was interesting enough to hold peoples’ attention and was a strong motivator for people to finish it.

The idea was to take a very simple mechanic that still had a lot of space to explore, and that didn’t require lots of other sub-mechanics to make it interesting.  This made the game very fun to design as well, because I was able to be laser-focused on that one concept and make everything around it.

3. The art/sound/motif worked

about-face palette
The game’s entire palette.

I wasn’t sure how people would receive the style of the game.  From a production standpoint, this game definitely isn’t my most ambitious work.  The game mechanics, art, and sound are all very minimal, and I wouldn’t have been surprised if that was counted against it.  Luckily though, people have appreciated it for what it is.

What went not right

1. The ending

I think this is a weakness of mine, because for pretty much every game I’ve made the ending has not been received as anticipated, for better or for worse.  In this case, some people were not even sure if the ending of about-face was actually the ending or not.  Granted some people liked what I did, but when something creates unintentional confusion that’s always a failure in design.  There are parts of the game that I had envisioned as cues for the game’s ending – the final areas of the game take a step back from the mechanics earlier in the game, and serve more as spectacles than anything else – to me, this was the game gearing up for an ending, but none of this was backed up by any other cues in the game.

I think ultimately, I made a lot of assumptions regarding what people would be thinking as they were completing the game, which turned out to be wrong!  I need to spend as much time with narrative cues as I do with the rest of the game’s design.

2. The resolution

This is a weird one.  The game was meant to be a pretty small resolution to complement the simple visuals, but what I ended up with was uncomfortably small and kind of a pain to look at.  The weird thing is that part of this is because my IDE was actually displaying the game at a larger resolution than I had configured and applying AA (despite my attempts to hard-code no-AA settings), so 99% of the time I spent playing/testing the game was with a larger resolution than it would be in reality.  This is particularly annoying, because without using AA, the only way to make the game larger is to just scale everything up 2X, which is unfortunately a bit too large.  So, the only real fix is to change the game’s aspect ratio, without messing up the gameplay by making the player’s vision too small.

I guess the take-away here would be to try the game out more on the actual platform it’s being played on, and not just in the dev environment.

3. The controls

Some of the feedback was on the game being too slippery, and the gravity being way too high.  The former was easy to fix, but the latter is tricky because all of the levels are designed around the player having a specific jump height/speed.  So obviously, changing the player’s physics can have consequences on level design.

These are pretty big deals, because moving left/right/jumping encompass all of the player’s controls.  If those aren’t on point, there’s a problem with the core of the game.  Ideally, I would identify any dependencies the game has – in this case, how the level design is very closely tied to the way the player controls – and get early feedback on those elements before they’ve become fleshed out.  In this case, the problem wouldn’t have been a problem at all if I had identified that gravity was too high before I designed and iterated through all of the levels.

You Defeated the Boss!

Some pretty good news this time around!

Never change, Ferdinand.
This is Art with a capital A, folks.

Where should I start?  Hmm, oh yeah – maybe with the fact that my game Why Am I Dead At Sea is basically done.

It’s kinda insane.  I almost don’t believe it.  After working on it for so long, and continuously pushing the finish line further and further back, you kind of forget that finishing is even possible.  I’ve gotten so used to adding things to Why Am I Dead At Sea, that the thought of not adding another thing to it just seems crazy.  There’s something I’m missing, right?

Well…Not really.  All the alternate endings are finished.  The epilogues too.  The dialogue in the game has been rewritten three times over.  I must’ve redone the menus half a dozen times.  There’s even controller support!

This realization comes with two feelings – relief, but also anxiety.  When I admit that the game is finished, I start to panic because a part of me still wants it to be better.  Surely there’s other things I can do to improve it even more, just that little bit extra that will put it over the top, right?  Imagine how much better the game could be, if I’d only add ______ .

The bottom line is, I will be moving forward with distribution/marketing on the basis that the game is in fact complete.  Yeah, at the same time I will also be making small tweaks here and there, if only to satiate a compulsion to tweak.  But don’t worry, I can stop whenever I want to.

…Moving on.


 

SteamworksIsAGo
woah

I’ve gotten all incorporated and everything, and now I can work on putting my game on Steam!  Well, technically it’s already on Steam, but there several extra things I need to do.  Namely, I want to implement Steam cloud saves, achievements, and trading cards, and make sure everything is working smoothly with both Windows and Mac downloads.  It’s a bit hard to say how long this will take, but progress has been very smooth so far.

Speaking of all that, this post is doubling as a bit of a recruiting call.  You see, I want a final wave of testing with a larger group before the game goes public, and I also need to test and make sure the game is actually working with all these Steam features.  That means I need some new testers!

If you want to get the game a bit earlier than everyone else, you want to get it for free, but most importantly if you want to help a solo developer in their hour of need, please email me at “pmcgrath@peltastdesign.com”.  Things to include in your email (for fun, but also so I know you’re serious about testing):

1 ) The operating system you run / will play the game on

2 ) Where you originally heard about Why Am I Dead At Sea

3 ) If you played the original Why Am I Dead – who do you think was the serial killer?

The last time I made a call for volunteer testers I was really impressed by how many people responded, and how dedicated many of them have been.  If you volunteered before and I didn’t get back to you, I apologize – but also know that this test phase will require much more people, so feel free to volunteer again!


 

Thanks in advance to any volunteers!  Next blog update I may be releaseing a date of some import.

Hello Steam!

Sorry everyone, no long blog post this time – just a short update for a bit of news.

But oh, what news it is.

AMiracle2

Why Am I Dead At Sea is going to launch on Steam!!!  Talk about a boost!

Thank you everybody for your votes, support, and kind words.  Now, I have a game to finish!

GreenlitButton

Influences

When people hear what Why Am I Dead At Sea is about and how you play it, they generally have a similar reaction: that’s like Ghost Trick!  Or some people will less frequently say, oh, it’s similar to Murdered!

Looking at those games, the parallels are obvious.  The funny thing is, I wasn’t even aware of Ghost Trick when I started on the original Why Am I Dead in 2012.  And Murdered came out two whole years after Why Am I Dead, so that clearly wasn’t an influence.  In truth, the real sources of inspiration that led me to make this game came from entirely different places.

What are those places?  Well no one really asked, but I’m about to tell you anyway, so get ready!

Free Flash Games

You were murdered, and you’re a ghost trying to solve their own death.  Hmm.  That must be from Ghost Trick, right?  Or Murdered: Soul Suspect!  What about that Ghost movie with Patrick Swayze?  Or is it The Crow?

Nah.

About two-ish years ago I wanted to practice programming in Flash and put something small online, so I was thinking up a little project to motivate myself.  The idea was to make something in a week that would teach me the basics.  Something really simple, but still interesting and unique.

So you know what I looked at for inspiration?  Other simple, interesting and unique free flash games!  These were the games that taught me you can create a truly memorable experience with hardly any visuals or assets – that you can leave an impression on people even if the playtime for your game is as short as 5-10 minutes.  And there are a couple such games in particular that gave me the little idea that led to today.

 

I Wish I Were The Moon

This is a small experimental game made by Daniel Benmergui in 2010, more well known for his games Today I Die and his upcoming Storyteller.  In it, you have a camera of sorts that allows you to take snapshots of certain objects in the game and move them around.  Depending on what you move and where, you can change the little story the game has.

You can play it here.

So in this case, there’s a girl on a boat looking up at a boy on a moon.  The girl likes the boy; the boy likes the moon.  This strange love triangle can be played out in all sorts of ways, and the game will respond to pretty much all interactions you give it.  For example, you can immediately dump both the girl and the boy in the ocean.  You monster.  Or you can swap their places, so the boy is on the boat and the girl is on the moon, so she is now also the object of his affection!  Yay!  (don’t think about it too hard)

If you’re quick, it takes maybe five minutes to discover all the possible permutations in the game.  So why am I still talking about it four years after it was made?  Because it was a completely different system than anything I had ever seen before.  I was able to manipulate pieces in the story and directly change it in a way no other game let me, and as short-lived as that experience was, it was very impressionable.

Oiche Mhaith

This is actually some of the more tame writing in the game.

Another experimental flash game made by Increpare and Terry Cavanagh, the latter of which is well known for VVVVVV and Super Hexagon.  You control a small girl who, well…I’ll link to the actual game before I really get into it.

You can play it here, but be warned that it contains adult language and themes and is very very dark.

Simply put, you control a small girl who is charged with the task of putting the minds (souls?) of her mother, father, doll, and dog back into their respective bodies.  The game doesn’t really make it clear which is which, and you have to figure things out by trial and error.  The cool thing is that the game has an outcome for every permutation – put the mind of the dog into your father’s body, and one thing will happen.   Put the doll’s mind into your father’s body, something else will happen.

Similar to I Wish I Were the Moon, this game allows you to manipulate things in the game in a strange new way.  In the former, you could actually move them around – in the latter, it’s much more abstract.  And both games allow for experimentation – you are encouraged to move things around in certain ways just to see what the result will be, even if it isn’t the “correct” interaction.

The defining thing in these cases is that you feel like you are creating meaning in the game.  You aren’t simply picking up and moving blocks – you are manipulating actors in a story, and creating what feel like emergent scenarios.

Creating Meaning

So I thought, giving the player the ability to manipulate story objects was cool…what if I allowed the player to do so by directly assuming control of things in the game?  Like in I Wish I Were the Moon, you could move them around to do different stuff.  And like in Oiche Mhaith, different combinations of characters could lead to different results.

Except in this case, it wouldn’t be a combination of mind/body pairs – it would be a combination between the character the player is currently controlling, and the character they choose to interact with.

This was the core that I started with, and at this point there was still no ghost stuff going on.  Instead, I was thinking of just arbitrarily giving the player this power to control people, without having a narrative explanation for it.  I also wasn’t entirely sure that you would interact with people by really talking to them – the interactions might be more abstract or exaggerated than that.

I believe it was my sister who came up with the narrative idea first.  I had voiced an incredibly vague and ethereal concept to her, and she thought it would make sense if the player was a ghost.  And since they have to solve some sort of puzzle, they could be a ghost detective, charged with solving a mystery.  I then made what now seems a somewhat inevitable last step – how about you’re a ghost solving the mystery of your death?

And the rest is history.

The first playable build.
The first playable build.

About Multiple Endings

I’ve been trying to put together a post focusing on the time where I was less active on the blog/online, and as a bit of an overview for the past year…but writing it out in a way that fits the nature of this blog has been difficult.  It’s a lot of material, so it’s a bit hard to decide how to organize it, and it’s a bit of a departure from game development.  Meanwhile, the days keep ticking away, so I thought I’d give an update on the game just to get a post out.


I’ve been more active than ever in development, and things are moving along quite well.  After taking a lot of time over the past several months to update visuals, add support for game options/configurations, and work on Rebirth, I’ve returned to filling out the game’s story.  Over the past month I’ve added in all of the art, dialogue, and scripting for the game’s story, all the way up to the ending.

The ending is done?!

Well.  One of them.  As I’ve opted to have multiple endings for Why Am I Dead At Sea, I’ll have to finish the “ending” to the game several times before I can say that it’s actually been completed.  However, what I have finished is the basic framework that the separate endings switch off from, which means that the remaining work is a bit simpler than what I’ve already done.

Given that all of this progress takes place at the game’s finale, it’s hard to show things I’ve worked on without immediately and blatantly giving away important details about the ending.  Like its original, there are some revelations and plot twists at the final hour – and they can vary, depending on the ending you get.

But I can speak in generalities and talk about the structure of the endings without giving away details.

Lifeboat
An object used in one of the epilogues.

I can be a very compulsive person.  As a result, I am all too familiar with player paranoia: when a player feels anxious about if they’re missing some content.  If you’re walking through a maze and find the exit, only to turn around and check every last dead end so you know you didn’t miss anything – that’s player paranoia.  When a game overwhelms the player with choices and gives them a clear right/wrong answer, it can be an unpleasant amount of pressure.  I recall playing the acclaimed Metroid Prime for the first time.  I was having a lot of fun with the game, until I learned from somewhere that there were multiple endings, and that they were determined in large by the amount of hidden upgrades you collected throughout the game.

…I never played it again.  That knowledge turned the game, for me, from fun exploration into obsessive item-hunting.  It’s exactly the kind of system I don’t want in my game – I don’t want to burden the player with the worry that they made the wrong choice or missed things early on and unwittingly doomed themselves.

Admittedly, there is a lot of story-telling potential to having the game remember the things that you do.  And I plan for that to be an element in the game.  However, the factors that influence the game’s ending will follow this pattern:

1) The more drastic a factor changes the story, the later in the story it occurs

2) Conversely, the earlier a factor occurs in the story, the less significant it is to the overall direction of the story

Some more objects used in the latter parts of the game
Some more objects used in the latter parts of the game

What this means is, essentially, there will be two types of variables that change the ending/epilogue that you see.  Conversations that occurred in the early/middle parts of the game could change additional, flavor dialogue at the end.  It would give a nod to some of the choices you made earlier on, but does not itself decide the direction of the story or the resolution of the mystery.  On the other hand, there are larger revelations and clues you can find, which will be available all the way up to the end of the game, which will decide the ending you get.

To reference what has to be probably my (and many other peoples’) favorite alternate ending design to date, the Suicide Mission in Mass Effect 2 has lots of smaller factors that decide who amongst your crew lives or dies – but ultimately, that isn’t what decides the climax of the story.  At the end, there is still a big choice you can make at the end regardless of what you’ve done beforehand, which means you don’t feel shoehorned.  It’s a good blend between acknowledging the player’s previous choices and allowing them to make new ones, and the ending of Why Am I Dead At Sea attempts to achieve that effect.

Greenlight!

In my last post I talked in detail about the reboot of my very first flash game. But what about its follow-up game, which I’ve been pouring way more time and resources into making? It’s been forever since I had a proper update about that!

First off, I’ve finally put the game up on Greenlight! If you want the game to be on Steam, I’d like to ask you to go onto its page and vote “Yes”. I mean it. Right now! You can read the rest of this post after you do that.

Greenlight Page

If you somehow didn’t know, getting on Steam is pretty important. Most indie games report that something like 80%+ of their revenue comes from Steam, and that’s not even considering the sheer amount of publicity you can get simply from being accepted onto Steam. And there are still plenty of good games that don’t necessarily get on Greenlight, so really, your vote is extremely important!

Okay.  That’s enough groveling.  Just kidding, did you vote yet?! Go vote now! I mean, unless you really just don’t want to buy the game, it’s not like I can force you. But otherwise, vote!

It’ll only take a second!

Alright, now that you have voted, I’ll continue. The only real barrier to getting the Greenlight page up was having a serviceable trailer to put up on the page. Having the right trailer is actually really important and very much worth being a perfectionist about, so I took my time putting one together. Since I have no experience or natural talent in editing videos or doing anything like this, it was a learning process. Here’s the final draft that I used for the Greenlight page:

I still feel like there’s a lot of room for improvement with it, but I was worried that I would just keep redoing it until the end of time. I’m also thinking about throwing together another trailer which shows off the cast of the game more. Any trailer should have a simple message, and this one aims to lay out the basic premise of the game: “You’ve been murdered, and you have to possess people to figure out why.” But to me, the most interesting part of the game is really the cast of characters you’re possessing, so it might not be a bad idea to have an additional, more optional trailer that showcases that.

We’ll see.

In other news…last time I talked about the game I mentioned that I would be submitting it to Indiecade. Well, I did, and bad news, it didn’t win anything. It was a bummer, but I sort of expected it after not hearing back for a while.

I have to say, though, that I was blown away by the sheer volume of feedback I received from the judges who viewed my game. They all clearly played through all of the content I had finished at the point I submitted the game, which I can only guess took hours and hours of playtime. In one case, I found two emails from a judge: the first one asking me how to get past a certain point in the game, and a second one, sent an hour and a half later, letting me know he figured it out!

In addition, there was a lot of very positive feedback. There was also a lot of criticism, but not only was it very helpful to hear it, it was also very fixable – the biggest areas of improvement were usually problems or bugs that were unintentional, or issues with the design that I didn’t originally notice but could improve without much work. And some of the positive feedback was extremely positive – the sort of positive that’s even a little inspiring! So all things said and done, I’m extremely happy I submitted my game and very grateful to the judges that reviewed it.

Next blog update, I’ll probably get a bit more personal and talk about development of the game in relation to the rest of my life, both looking back and going forward. Until then!

Rebirth

Hello world!  Remember me?  I wouldn’t hold it against you if you didn’t.  I’ve had a lot of gaps where I said “This time I’ll really be much more active on my blog!” and then completely wasn’t, but this has been a long absence even for me.

Well, let’s catch up.

For one, I’m back in America.  My time in China finished just over a month ago, though in many ways it feels as if I just stepped off the plane several days ago.  I only spent a year there, but it felt like much longer, and it was surprisingly hard to say goodbye.  My time in China, especially the time at the end of my stay, and my return to the US would be enough content to fill ten subsequent rambling blog posts, but I have other things to talk about, so if it waited this long it can wait a little longer.

Why Am I Dead: Rebirth

For another, I’ve gone and released a game “Why Am I Dead: Rebirth”, a remake to the original.  If it seems like this came out of nowhere, that’s because it absolutely did.  I didn’t mention it anywhere once…just sort of silently slipped it online one night.  It’s a pretty comprehensive update, I hope; all of the art has been completely redone with more time and experience put into it, and the dialogue/story has been edited or added to substantially.  Lastly, the game is running on the source code of “Why Am I Dead At Sea”, which means the characters can have AI, the environment is more interactable, there’s more support for scripting, and things tend to be a bit smoother.

If you haven’t seen it yet, you can play it on Newgrounds here.

The Why

Why did I remake the original game?  I don’t think I’ve ever seen a free flash game being remade, unless there is some direct profit involved.  Well make no mistake, I am making zero money off of Rebirth.  I didn’t even bother to put in any ads.  So…why?  The simplest answer is I wanted a break from creating the sequel, but I was afraid of any side-project running away and consuming all of my attention.  This was a side-project I knew I could finish, and, well, I knew I would eventually get bored of.

The Art

You know what I really love?  Before/after comparisons.  So here are some images from the original game and remake paired up to show you the difference in visuals.  To be honest, updating the visuals was by far the most gratifying part of this project.

First up, the character designs.  On the top are the originals, and the bottom has their updated versions.  Though the differences might seem subtle at first glance I feel like the remakes are miles ahead in terms of readability and aesthetics.

WAID Redux!

Here are the full sprite-sheets for every character in each game side by side.  They get automatically resized, so I just put up the thumbnails; you’ll have to click on them to get the full thing.  The style of animation has been updated to that of “Why Am I Dead At Sea”, which means essentially double the smoothness.

Character SpritesheetCharacter Spritesheet

The last thing I’ll show is two screenshots of the same place in each game.  Note the updated dialogue UI, the inclusion of shadows, and the tweaked environment.  The floor is darker and simpler, making it easier on the eyes, and the walls use their color much more efficiently.

WAID Screen3 WAIDR Screen3

The Story

There were some aspects about the original game that I felt dissatisfied with, but left in because I felt changing they were too inextricable with the rest of the game.  The premise of the game and its basic structure is the same.  But I did make some alterations about how you actually progress, relying more on interacting with scenery at the right time instead of what I thought were non-intuitive and somewhat repetitive interactions with characters.  Dialogue had to be rewritten for this, and so some characters have different conversations and relationships.

One clear example (spoilers!) is that in the original, Randy opens up to Cricket and spills the beans about his whole past.  For this, you have to possess Randy and use him to confess to Cricket.  Doing this possessed as Randy doesn’t seem right, since as the player your dialogue choices should be inquisitive in nature, getting information out of the person you’re talking to; not the reverse.  In the new game, you possess Cricket and find some letters which you can then use to pressure Randy into opening up.  This fits the design of the game better, as you are always the one asking questions, which the game then answers.  But notably, it has the side-effect of changing Randy and Cricket’s relationship.  Instead of Randy trusting Cricket and confiding in him, Cricket simply squeezes the truth out of Randy.

WAIDR Screen4

There are a couple other changes like this, but even bigger than the things I changed are the things that I added.  I won’t go into a lot of detail about the new stuff, since that’s supposed to be found out by playing – but I think it’s fair to at least say how many endings the game has now.  The original “Why Am I Dead” had only one ending, but I hastily added a second one after putting it online.  “Rebirth” adds yet two more, creating a total of four endings.

The new endings add context behind the initial mystery and answer some questions that were brought up in the original game.  I’m not sure they live up to my own expectations, but hopefully if you’re the kind of person who worked hard enough to see the endings, you’ll be the kind of person to appreciate the new context.  And just to be clear, the things brought up in the new endings were what I had in mind when I made the original two years ago – I didn’t just come up with them on the spot!  So it is really canonical to the first game.

WAIDR Screen5

The Timing

This game was sort of rushed out of the gate, and there’s still work to do on it.  Yes, sadly, by that I mean there are some pretty scary bugs…though I will say it’s way better than the original was on its release!  In addition I didn’t add any API support for Newgrounds, so there’s no medals or even tracking on the game.

But I released it when I did so that I could cross-promote in the game.  Cross-promote what, exactly?  Why, none other than my Steam Greenlight page for the upcoming sequel!  That’s right, “Why Am I Dead At Sea” now has its own Greenlight page, which I highly recommend you go to right now and vote “Yes” on!

In truth, I could have waited on both “Rebirth” and the Greenlight page, since I’ve been busy traveling recently and wasn’t able to capitalize on either.  I should have contacted press and various websites about both developments when the iron was hot, but I’m only catching up on that now.  So really…bad timing, I guess.  But it’s up and getting eyeballs, so I guess that’s a good thing!

This post is already really quite long, so I think I’ll leave a more detailed look at the Greenlight and any developments on the sequel for my next post.  Which I promise will be much more prompt than this one was!

Indie-cade and Eye-candy

If you’ve been following this blog for a while (specifically a year), you may remember when I set a goal for myself to submit my game to Indiecade.  Well, you see, though I may have implied that I was aiming for Indiecade 2013, I was actually planning on submitting to Indiecade 2014 the entire time!  That is to say, in roughly the next week I’ll be submitting my game to Indiecade, right on time, just as planned.

Hmm.  Yes.  That’s what we’re going with.

It’s pretty exciting to send the game off for the first time to a real critical “audience” (if only of one or several people) – and it’s exciting that I feel the game is at a point where it’s really presentable and can speak for itself.  Though aesthetics may or may not be critical for game competitions of this sort, I definitely took a lot of time recently implementing changes to the game’s visuals that I had been aching to for a while.

Let’s take a look, shall we?  (NOTE: Below are some GIFs which wordpress resizes, and it kinda messes with the image.  To see them in their proper resolution, simply click on them.)

 

1. Shadows!

Bonus included: The tiny "redesigns" that rooms go through over time
Bonus included: The tiny changes that rooms go through over time

Once upon a time, Why Am I Dead At Sea had no shadows.  It existed in a world with purely ambient lighting; light was everywhere.  It came from nothing and went nowhere, and therefore, no shadows!  Someone pointed out to me that shadows were a relatively easy change that could make everything seem more grounded.  It was obviously good advice, but at the time I wasn’t willing to go through every prop when I had a million other objectives, so I took a half-measure and added shadows to all of the characters.

Well now, all people and objects have shadows!  And as expected, it didn’t take a huge amount of work, and definitely makes the game look better.  Everything is less floaty and it’s much clearer where they’re positioned on the ground.  It also just kind of breaks up the flat colors of the floors and adds some much needed detail.

 

2. Additional Backgrounds

I never thought I'd be making these graphics when beginning the project...
The middle one, the sunset, was finished a long while ago and seems to still be the best of the three.

As the content for the game continued to be made, there were points in the story where it is made clear that time is progressing, either from one day to the other or from morning to night – and yet when you go onto the ship’s outside deck, it was always the same time of day – sunset!  That’s obviously because it was the only background I had made at that point.  For some points in the game, though, it seemed really important that I get the alternate backgrounds which show different times up and running.

They help set the mood for the story in a big way, so once I got to a certain point it became a really high priority.  But, that’s not all I did with regard to the outside-the-ship area!

 

3. Parallax Scrolling

I don't usually put GIFs directly onto the blog out of consideration for those with slow internets, but this just doesn't work in still image.
I don’t usually put GIFs directly onto the blog out of consideration for those with slow internets, but this just doesn’t work in still image.

If you’re not familiar with parallax scrolling, well, parallax is the effect of objects farther away not moving as much to us, thereby creating our perception of depth.  Parallax scrolling is the simulation of parallax in media whereby different objects scroll at different speeds to signify depth.

After creating my lovely backgrounds for the outer deck, I brutally chopped them up and put them in separate images.  I then created a special kind of Prop (ParallaxProp) that contains a set of images and has them scroll along with the game camera at different speeds.  It was actually really simple to implement on the code-side; it probably took more time overall just cutting up the backgrounds and making sure the end visual result was what I was looking for.

Because the area is so relatively wide, if the scrolling is too extreme things don’t really match up or work out how I want them to.  So, the scrolling difference is intentionally small, creating a subtle but still noticeable effect.

This one is particularly subtle, but the lowish FPS of the gif doesn't help.  In game it's more apparent.
This one is particularly subtle, but the lowish FPS of the gif doesn’t help. In game it’s more apparent.

This was one of those features where it was “really cool if I could implement this, but I don’t know…”  So, it feels really nice that I actually did end up getting it done!  And it really didn’t take me a huge amount of time.

 

3. Water Animation

splashgif
I tried to keep Darryl inside the ship for this shot, but he directly disobeyed my orders!

I always knew that the boat’s lower outline and the ocean were going to need some kind of…change.  A pure and unchanging blue rectangle didn’t quite cut it.  What I have now is still imperfect in several ways, but at least communicates what is actually happening and isn’t as blindingly static.

Figuring out how I wanted to do this and implementing it were surprisingly tricky.  For one thing, the water was originally a part of the map itself and I’d never made an animated object as large as this before, so there were a lot of possible ways I could implement the small waves in the water.  I could animate them tile by tile, in which case it might make more sense to make it an extension of the map itself, or I could make one huge animated object, in which case I would probably make it a prop.  The latter would most likely put much less strain on processing time, but would result in a really unwieldy and humongous bitmap.  I ended up taking the middle-ground and made some 7-8 animated props, each of which was a small but wide “strip” of the full thing.  The image files are small and simple, and there still isn’t a lot of labor that the game has to do to animate them.

I also had to decide how I could get animated water to agree with depth, since the part of the background above the horizon has objects (ie the sun and moon) that are far in the distance, while the animated water is completely flat.  Most ways of trying to actually get the water animation to obey depth seemed either ugly or way too hard, so I compromised again and simply had the opacity of the waves fade as they get closer to the horizon.  This was only possible because of the approach I took in cutting up the animation into small little strips, so it’s nice how the two issues fit together!

 

Actually this is not all of the visual changes I made, but they’re probably the most apparent ones, and they’re the ones I’m proudest of.  None of the changes I have made are huge, as I’m not looking to give the game a full make-over, of course…but they add up to a much prettier game nonetheless.  While there are still some things I really want to fix or renovate, the game is actually really close to how I expect it will look as a final product.

 

Now then…fingers crossed on the whole Indie-Cade business!

 

Stem to Stern #2 : Artificial Intelligence (part 1)

When it comes to programming Why Am I Dead At Sea, there is one feature that sticks out above all the others in terms of time investment and difficulty.  It has ruined many a day with debugging.  It has at times leeched me of all enthusiasm to get work done.  It haunts my very dreams (well okay, maybe it’s not that bad).

It is, of course, AI.

It’s not that I regret including it – I still think it’s almost a necessity for the game, and despite how much time it has wasted I’m sure it’s been a worthwhile investment.  However, I can confidently say that I would have designed other things in the game differently if I had been able to predict how much they would complicate the AI.

But those concerns are buried deep in the game’s systems.  Let’s start with a bird’s eye view of the game’s AI, and work our way down.

AIoverview

As you might imagine, one object being inside another symbolizes encapsulation – that is, they are literally an instance of that class contained within the other class.  The lines next to Behavior symbolize the classes that inherit from it (Behavior being an abstract class).

Not surprisingly, the Character class is at the top – it is one of the game’s linchpin classes.  It contains a CharacterAI class, which contains and handles everything pertaining to that given character’s AI.  In turn, CharacterAI contains a Behavior object and a CharacterCommand object.  The former deals with the higher level concerns of getting the character to move around – this generally means interpreting and/or setting waypoints, and then using those to create CharacterCommands.  The latter goes deeper into exactly how to get the character to move – it takes in waypoints and generates a path with the Pathfinder class, then interprets that information to figure out when the character should move, and in which direction.

To hit everything I’d like to talk about will take a lot of time and space, so I’ve decided to split this subject into multiple blog posts, possibly as many as three.  We’ll begin with an overview of the CharacterBehavior class and its children.

The Behaviors

With the main aim of creating human-ish walk patterns, I have three overall behaviors that are used in the game, ranging from simpler to more complex.

Random Behavior

Click to see an animated GIF version of this.
Click to see an animated GIF version of this.

Quite simply, under this behavior the character moves from tile to tile completely randomly.  Aside from allowing the option to set boundaries that will stop the character from wandering too far, there isn’t any other higher level of thought outside of the path-finding.

Probably 90% of the RPGs that I’ve seen or played , especially of the 2D variety, seemed to exclusively have randomly meandering NPCs.  It’s simple, but effective in breathing a bit of life into the background.

Pacing Behavior

Again, click to see a GIF version of this.
Again, click to see a GIF version of this.

Sometimes I want the character to have a bit more direction, but I still don’t need a particularly detailed behavior; in this case, there is the pacing behavior, which creates paths based on whether to go horizontal or vertical, and how far in each direction.  It is also good at demonstrating when a character is brooding, thinking or panicking, based on frequency and distance.

It might be worth noting that the behavior simply thinks of reaching the end-points in the pacing path, rather than explicitly in walking in a straight line.  This means that if there is a pacing behavior in a room with obstacles in the way, the character will still move around them rather than exclusively walk in a straight line.

Routine Behavior

Want to see this in motion?  Click.
Want to see this in motion? Click.

And lastly is the most versatile and communicative behavior, which is used (as the name implies) for when a character has a routine of some sort.  The behavior takes in an arbitrary number of way-points and information about them, and the character is then made to move through them in a certain order.

This has been the most commonly used mode since it can get a lot of meanings across.  On the smaller side, it could simply be getting across the idea of a single action: for instance, the cook has a routine where he walks from one kitchen appliance to the other.  On the larger side, it could mean a daily routine that takes quite a long time to complete: for instance, the first mate has a large circuit across most of the ship in which you can see him checking up on everyone.

This is only a rough idea of all the waypoints.  Click for animation!
This is only a rough idea of all the waypoints.  It’s a bit outdated.  Click for animation!

All of these behaviors are created before the game actually runs, and are stored in a separate place called the BehaviorLibrary.  This is generally done simply with Tiled; I put an AI object right on the map where I want the waypoint to be, then give it properties.  When the game loads the map file it also parses these AI waypoints and creates Behavior instances based on them.

AIGraphic5

When they are required in game, the CharacterAI sets its current behavior to one of them.  Every tick in the game, CharacterAI queries Behavior to see if the character needs to go somewhere new – if it does, a new CharacterCommand is created with information about the new destination.

There isn’t a huge amount of gritty detail in this post, since the Behavior classes themselves don’t care too much about the details. When we get into CharacterCommand and Pathfinder, that will be different!

Stem to Stern #1: Narrative/Gameplay Structure

I had originally planned on opening up my series of more informative posts with a big post on AI, but since I’ve been mostly doing dialogue and cinematic writing, I’ve been inspired to make a post about the game’s overall structure instead.

StoryScreen1

Let’s start by describing the game in the simplest and most basic way possible.  The gameplay involves me throwing a huge amount of writing and text at the player, and having them search for the important bits of information in there.  Unlike other adventure/mystery games, there aren’t many puzzles or problems that if you can’t solve, you’re stuck.  In WAID you always had access to everything you need.  If you felt up to it, you could always brute-force through the challenges of the game by triggering every single dialogue and dialogue branch.

The challenge is to find the hints I’ve scattered in order to figure out which character interactions will get you on the right track.  Of course, the non-vital dialogues are both an obstacle in that they obscure what you need, as well as a bonus in that they can flesh out the story and give further insight to the characters.

Let’s take a look at the structure of the previous “Why Am I Dead”.  There is a wide body of what I refer to as ambient dialogue: the sum of dialogue which obscures the way forward.  There are also smaller pieces of story dialogue which are actually needed to trigger the ending of the game.  The way the game was structured, it could take you hours to finish it, or two minutes.

Image

How does this structure look for a longer game, though?  I would certainly like “Why Am I Dead At Sea” to last longer than that, whether “that” is two minutes or two hours.  So how do we make that happen?

There were two challenges that I saw going into this project.  Firstly, it seemed to me that a longer/larger game would run into the problem of overwhelming the player with far too much ambient dialogue far too quickly.  As it was, the original WAID wasn’t extremely navigable and could bring the player down time-consuming dead-ends.  Some people enjoyed this, but some did not!

And secondly, for a larger story I would want time to pass as the plot moves forward – that is, things would have to be a bit more sequential in order to make sure there was some plot.  In the previous WAID nothing happens without player input except at the beginning and end, which was fine…but in this game that severely limits the kind of story I can tell!

So I decided I wanted to taper the beginning of the game, bringing the player into the ambient dialogue slowly.  I also wanted to cut up certain parts of the game into self-contained ‘chapters’, in which there was only one entrance and one exit, so that some modicum of stage-setting could be done.  The resulting structure for Why Am I Dead At Sea looks like this:

ImageThis is accomplished, admittedly with some awkwardness, by restraining who you can possess and where you can go at the beginning of the game.  For the first two major parts of the game there is a substantial amount of optional dialogue accessible, but not so much that the player is drowning in it.  Objectives are hopefully much more clear.  As each new character becomes available to possess, however, the amount of ambient dialogue also increases.

This also allows for that oldest of design tropes seen so often in LoZ dungeons – if there’s a new character you just unlocked, you can be confident you will have to use them pretty soon.  I wasn’t allowed to guide the player in this way before!

StoryScreen3

And just as importantly, having certain choke-points for the story allows me to do things such as have small periods of time pass, or move characters move around, and so on.  This isn’t trivial.  A weird thing about the last game was that, to preserve an interesting pace, characters had to spill their guts to each other very quickly, without knowing anything about each other!  It was possible to suspend disbelief, but definitely felt off.  This time around I want dialogue to feel more organic, which means at least the illusion of some time passing.

So that is, in a nutshell, the layout of the game.