Showing posts with label postmortem. Show all posts
Showing posts with label postmortem. Show all posts

Tuesday, February 26, 2013

Garage Zombie* (Game Jam Version) Postmortem


Garage Zombie* (including the asterisk where it's possible to use one in game titles) is the first game jam title I ever made with someone aside from Angel who helps with design and massively supports me throughout the experiences. Ariel Marsh did every bit of the art herself, all I had to do was line things up and place them! It was also the first game that I've made that had a person instead of a critter!

And, since I'm setting this up like a standard postmortem, let's kick it off!

By:
Code: Charlie Jackson (me!)
Art: Ariel Marsh
Design: Charlie Jackson, Ariel Marsh and Angelique Drummond

Developed: February 22nd-24th, 2013 for #1GAMCRUNCH (Hidden Surprises) and Mini-LD 40 (The Real World)


What Went Right

1. The Game's Art 
Somehow, the art for the main character made it really easy to add some personality to her  through the tutorial...

Normally for a game jam I make the basic art, get to work making the game, fix up the art and finally balance it as much as I can (which is usually very little by then.). This time, however, I collaborated with Ariel Marsh for development. She's a fantastic artist who I've worked with in the past on games, and as always she came through even better than expected!

The art in the game is not only of a great quality, it's bright and fits the game perfectly. With a garage sale, the items for sale are the star of the show, and they really are in this game as well. The main character worked out awesomely as well, it was just by chance that it ended up a she, but I love that it was (not because the game is about shopping, but because there really aren't enough female lead characters in games if you ask me!).
Some deals are likely to lose money, but you KNOW you want this thing!
2. An Awesome Title That Draws Attention
This is one of the main issues I face when coming up with a game name - making it both make sense AND draw eyes to the game. Early in development, Ariel Googled terms for people who do garage sales and found "Garage Zombie"! She joked that it should have an asterisk then say "*May or may not contain real zombies". This made it word-for-word into the game and gave the game a great base for humor from the start.
See? It even says it on the main menu!

And I KNOW the title works because I've already had numerous people jump on the game based on simply saying the name of it!

3. Working with Others Adds (Good) Pressure
Before it even began, I was really paranoid that Ariel would finish far before me, or that I wouldn't finish at all and she would. The nervousness of failure is always there with a game jam, but when working with someone else there's someone to let down if it happens. This was also Ariel's first game jam and I wanted to make sure she had something awesome to show for it.

Ariel had suggested getting on Skype (messaging) when it started so we could discuss ideas and then we simply left it on to chat the entire time, including sending each other work as we finished something up ("Check this out!", "How's this?"). Having someone you're working with frequently updated this way is not only fun, it adds to one's productivity: you want to have something awesome to show off!
Both of us having Flash made it super easy for me to set up art requests!

4. The Game Felt "Alive"!
One of my biggest issues as a game developer is that I get it functional and then I call it done. I've only made one "big" game, so while I've got about 25 done/partially done titles, they rarely contain all the things that a game should: sound and graphical effects especially. This time around, one of the first suggestions was having "special" items around the room that sparkle to show they're extra valuable or great money makers. It didn't make it in, but it really got me thinking about how to make it feel more alive, more fun.

She made an awesome main menu where you can interact with the boxes (they open when you mouse over them) and when items are purchased, they move toward the top where it shows how many items you've purchased (whereas 99% of the time previously, I'd just have made them disappear).

Box opens, box closes, box opens, box closes... WHEEEEE!!!!
Ariel even animated the girl with walk animations! It was her first time animating a character like that, and mine to that extent (even just the four frames in each direction!). It took some time to do, especially making her move around fluidly against the tables and such, but was very well worth it.

5. Sometimes Less is More...
When I started coding the game, the player lost $10 per day and the game's goal was to make some arbitrary amount. There was also a lose state if you you ran out of money. This was just a LOT of extra rules and effort in the long run, though, and deciding to make the game simpler (just gain as much as you can in five days) makes the game much more simple, easy to get into and replayable (trying to earn more each time)

I'll admit that I made the "game over" popup quickly :P
Also, the game originally allowed for two minutes per round, and I was considering adding to it even... But after trying different lengths of time, we went with 1:30. It makes the game much more hectic, non-stop and fun!

5b. ... Sometimes More is More!
On the flip side, I originally wanted the player to begin with $50 or $100, then as they played they'd earn enough to buy the more expensive things... I ended up going with $200 because it allowed for a good 10-20 purchases right from the beginning if the player shops carefully so that one can just dive right in right away.

6. Kept Track of Notes for the Future
I'm awful with thinking of the future when it comes to development... If I go back to a game, I have to search all over to find all the ideas I had for it, people's comments about it and so on. This time around, I have a text file with every idea for the game that didn't make it in, as well as an Evernote journal page for people's comments. I may have listed this last, but it's vital for any kind of future for a title if you want to stay sane, trust me.


What Went Wrong

1. SAVE THE GAME INTO MULTIPLE FILES!!!!
I swear I almost fainted at this point. First thought? "Screw this, whatever!"

With about two hours left the game was shared a bit for bug testing. When a few were pointed out and I went to fix them, I clicked on the section of my code with all of the functions and it was blank. I thought maybe Flash had messed up, so I closed it and reopened it, but it was GONE!!!! Luckily, I had done very little work since I'd sent the file to Ariel to show her the latest version, so she was able to send it back to me. I was VERY close to having 800 lines of code gone forever, though, and it was only the first or second time in years that I didn't save the game under multiple names as I went "just in case."

My strategy, by the way, is to save with a new name every time the game is fully functional and changed. For example:

  • Garage Zombie
  • Garage Zombie Movement Fixed
  • Garage Zombie Added More Items

This assures that if something goes wrong, the file spontaneously explodes, or you COMPLETELY screw things up when trying to change something, you'll have a version to go back to :) It's not a new idea, and I certainly didn't invent it, but it's so insanely important that I just had to go in depth!

2. The Game Wasn't as Alive as it Could Have Been...
While the game does have quite a bit of life to it, the #1 complaint is that it has no sound whatsoever. Angel and I got to talking about it after the jam ended, and she came up with the genius idea to have the main character whistle as the music and make small little comments on items when they're viewed, as well as a little noise when purchased or not. I really think that would have given the game, and the character, a lot more life in a unique, fun way.

The game also could have used a way to mix it up - different locations, goals and a story primarily. All of these things would have kept the game more interesting while giving it some more life at the same time.

3. Other Missing Features
There were a LOT of features that the game didn't have in addition to sound, story, goals and additional locales. I won't go into them all here, partially to keep the surprise alive when the game is finished, but it's easy to see how they would have kept the game more entertaining and added a lot more play time to for the average player!

4. It Requires Mouse AND Keyboard
As a person who plays a lot of Flash games, I've gotten used to using the WASD keys with my left hand and the mouse with my right, so I didn't even consider that there are a LOT of people out there who don't! Angel pointed this one out to me when she first played it, telling me that she was having to get used to moving around with the arrow keys and then moving her hand over to the mouse to either buy or not buy an item, then go back to move again. It not only gets annoying I'm sure, it's also tiring and time consuming in a game where you don't have much time to decide or look around.

Why should I have to click you?! I don't have enough time for this!

It wouldn't be difficult at all to allow for pressing ESC to say "don't buy" and ENTER/SPACE to buy. The same is true of the main menu - it'd be super easy to allow the player to use the arrows and the SPACE/ENTER keys to select. This way, the mouse wouldn't be required at all!

Sunday, January 27, 2013

Escape from the Afterlife: Game Jam Postmortem

Before I say anything, you really should try the game out! Even if you only play it for a couple minutes, it'll give you a great feel for the game and what happened with it. Play Escape from the Afterlife here!

This weekend (January 25-27) was the #1GAMCRUNCH - a 48 hour game development challenge. The theme was golden gun/1 hit point. I admit that Escape from the Afterlife really didn't fit the theme very well... I was actually joking in the #1GAM IRC channel about 1HP being a goal instead of a limitation, and then it becoming like golf - the lower the HP, the better... And THEN it became "A ghost would LOVE to have 1HP because it'd mean they're alive again, since a non-living thing should technically have 0 or negative HP, even if games don't play it that way!"

So that's how 1HP fits into the game. Since it takes a whole paragraph to explain that, I think it's safe to say it really doesn't fit the theme too well...

What Went Right

1. Testing from Fellow Developers on Twitter
I love having people test my games, but typically what I get is "it's great!" or "not bad", etc. I DO love to hear compliments, trust me, it's like fuel that keeps me going! But this time especially, the game is FIFTY floors! Seriously! When I hit the point that it would be fully playable, there were less than 6 hours left in the jam and I still had to add a few things before it ended, as well as add as much icing to the cake as I could after that! "It's fun" wouldn't cut it, nor would testing it all myself...

Several people jumped right on the game and played it for me, letting me know what they thought, giving some great feedback and ideas and compliments for the game, as well as letting me know specific stats about where they ended up ("I have $2,000, 15 of this item, 12 of that one, this max courage on this floor", for example). This made it SO much easier to try to balance things out than trying to do it myself!

In fact, I'm going to list them right here! A big, huge thanks to these people!!!

@DarkestKale
@IndieGameHQ
@DreamWinterLab
@Playvue (who also hosted the jam!)
@Sara_coisa
@HollowSpecter
@chris_killabi
@Paddyzab
@MLautz
@CaffeineViking
@SudoRossy


2. Coding, WHEW!
Coding a new game ALWAYS scares me because there's a very long point where you can't run the game at all to start testing. Once a foundation is set, you can easily change things and test it, or add a new feature and test it, but at the beginning you're stuck waiting until enough foundation is complete to do so. I end up coding hundreds of lines of code, making all sorts of functions that work from different places, linking together, responding to one another, etc... And then when it's time to hit "Test Movie" (I use Flash)... Either it's crash and burn time, or it's "WHEW!" time...

In this case, I didn't even hit that stage until almost 24 hours into the jam (a 48 hour jam!!!!). I had about 500 lines of code total... And... It didn't work. Anyone who's a coder will know that's not a surprise at all, but it's still always sad. Luckily, it took less than an hour or so of fiddling around to make it work! Once that happened, most everything else added in quite easily code-wise, which is very unlike a jam for me!

Oh, and: I'd never made any sort of RPG before!


3. Graphics Weren't Too Shabby!
So, I spent the first... 4-5 hours coming up with an idea and making the menus... Normally I throw together a cheap, quick menu and call it done, but this time I wanted to make it something special. I had a game idea within an hour, and pretty much all of the details (and blog posts) within another hour or two... But it wasn't for another 2 hours or so that I managed to finish the menus! Why?

I later added a mute button to the bottom-right, once I realized I actually had time to add some sound!
That's why! It's easily one of the best menus I've ever made, and to have made it in such a short amount of time was pretty sweet to me! I'm not much of an artist, and I'd already made that ghost before, but the flashlight and making the menu interactive like this was very new. Yes, I realize the actual flashlight isn't great, but that beam of light was a "WHOA!" moment for me... Those of you who are artists are probably reading this and thinking "Pffft, whatever", but that was AMAZING to me!!!

Also, here's a lesson I keep learning over and over, and contradicts most everything anyone will ever tell you about making games... GETTING GOOD GRAPHICS INTO THE GAME EARLY IS VITAL!!!! SERIOUSLY!!! I started off with bad art and felt like my game was awful... But once I added more, spiffied things up a bit... It suddenly felt like a GAME! I was proud to be its creator! It inspired me to keep going and really energized me!


4. Random Level Layout
Note: Shop button was removed from final version, max courage was added and graphics were changed a bit in the final version. Each square is randomly selected as a type by percentage, and then the specific type of that type is selected by percentage as well! For example: On level 6, there's a 4% chance of finding an item; if it's an item, there's then a 70% chance that item will be a level 1 healing item, a 30% chance it's a level 2 healing item.

When I came up with the game idea, I KNEW I'd have to go the route of random levels... Heck, I wanted FIFTY LEVELS and all... And while I'd never done any sort of random levels before, and knew it'd take a LOT of crazy number jumbling to try to make it work right, Evolutionator (my August 2012 Ludum Dare game) taught me that personally coding each area in 48 hours AFTER MAKING THE ENGINE TOO is just absurd. I had about an hour to test that game out, and while it wasn't bad, it was very easy to make that game far too simple or far too difficult without the right upgrades.

While the game still needs tweaking for sure, I'm very happy to have 50 levels that work out pretty well and takes about an hour or two to fully play (and is easy to get sucked into) from about 35-ish hours of work!! Especially as opposed to Evolutionator, that ended up as maybe 10 minutes of play...


5. I Finished the Game! There's Even Music!!!
Out of about 25 games that I've made, no more than 5 have any sort of sound in them, and I've never, ever gotten music into a jam game before! I managed to get a LOT of what I wanted into the game, and it ended up being really fun to me (I'm always surprised when a game I make is actually fun to me!)

Plus, when it comes to game jams/compos/etc, just finishing ANYTHING is an achievement!!!


What Went Wrong

1. I Bit Off Too Much, Sorta...
Story is one of the main elements I wanted to integrate a lot more of, but all that I had time for was a little bit in the tutorial before the game.

Every time I do a game jam, there are three primary thoughts that cross my mind: come up with something unique, come up with something I can actually accomplish and COME UP WITH SOMETHING THAT WON'T END UP AS ANOTHER FUTURE PROJECT!!!

While the game was certainly finished - it has a sweet menu, a beginning, a long middle and an end - there are a few things I didn't get to integrate. For example, I came up with a list of artifacts to find (items that would only be found once in the game, then would give bonuses or change the game a bit). I actually listed all of them in another blog post, so I won't detail it all again here. There are also no sound effects, which would have gone nicely with the simple background music I managed to find.

But most importantly of all, I really wanted to get more story into the game. Who, or what, was this ghost before death? Why is leaving the afterlife so important suddenly (it's not a bad place, after all...)? If you beat the game, you'll get a few more hints, but they end up leading to more questions than answers! I really want to place collectible items throughout the game that somehow help bring memories about, so that the player (and the ghost!) can learn the truth.

It all boils down to this, though: Now there's another game that I REALLY want to continue and add more to!


2. Randomly-Generated Balancing
Balancing random levels is crazy! I'm sure that most games that do random generation use a much more wild formula, but in this one it seriously all comes down to "pick a number 1-100". Enemy stats, purchase prices, treasure finds, flashlight powers, etc all really make a HUGE difference when edited, it's amazing how vital numbers are in an RPG! This was the closest I ever came to making one, and now I know that...


3. Too Much Caffeine/Not Enough Sleep?
I have NO idea why I ended up shaky, with burning eyes and completely exhausted by 2pm today, but I sure did! I slept a good 6 hours last night and 8 the night before... I didn't go too overboard with caffeine, although I did drink a bit extra yesterday... Maybe it's just mental exhaustion, I have no idea... But I'm VERY happy that things were so close to done coming into this final day, I was working at about 20-50% strength all day...


4. No SFX
A game based in any kind of darkness/horror, even a very light amount like I was aiming for, needs music. I know that now... The second I started considering adding music in the last two hours, and especially once I heard it in the game, I realized just how vital it is. Unfortunately, just as I was getting excited about what kinds of sounds to use, I realized there was no way I'd find and code in SFX with 45 minutes left...


5. Off-Theme
If this were a Ludum Dare, or any other judged competition, instead of just a jam, this would have been a bigger deal... Like I said, the game really doesn't conform to the themes without a bit of explaining, and even then it's a bit of a cop-out, but once I got into joking about the concept I realized just how badly I wanted to make this game, so I did!










Wednesday, January 9, 2013

Kickstarter Postmortem: The Adventures of Rubberkid

The image that graced the top of the KS.
The "Get Extra Bonuses the SAME DAY!"
was added later on in the project, but I
didn't save the image separately. Oops!
For those not familiar, The Adventures of Rubberkid ran on Kickstarter from November 30th-December 30th, 2013 and had a goal of $750, primarily to raise funds for promotion and getting discs to libraries and schools, but also to pay for music and sound effects.

It's a video game, of course; more specifically, it's a video game for elementary-school kids that aims to fight bullying. The entire time the campaign ran, there was a playable version of the game available that had five of the nine total levels, although music/SFX/pausing were not in the game, and additional graphical touches still needed to be added.

I actually started off writing this like a standard postmortem (what went right/what went wrong), but really it makes much more sense to explain a Kickstarter in the two main pieces that make up a campaign.

Planning and Formation

With The Adventures of Rubberkid, I decided to use Kickstarter. I tried an IndieGogo campaign in the past that failed pretty hard, but I blame that on a bunch of different things and it would take just as long to go into all of that. The point is, I probably would have used IndieGogo instead if I hadn't tried it before since they accept Paypal as well, and you can set it to take whatever money is collected whether the campaign succeeds or not. I went with Kickstarter because I hadn't tried it yet, because it's the most popular (especially with the people I know!) and because a part of me was sure that a game about bullying would end up in the Staff Pick section at one point or another.

With my platform chosen, I did research about it. As of the time of writing, you can estimate roughly 10% of your total pledge amount will be sucked up by Kickstarter and Amazon Payments (which handles the credit card processing, and most importantly, paying YOU!), and another 20% will go toward fulfilling backer rewards.

As much of my spreadsheet as I could screenshot. The higher
amounts really aren't vital to show anyway.

I spent two solid days coming up with the spreadsheet to the left with the goal of ensuring the all-important 80% earning per reward tier. As you can see, it dips down quite a bit in the $40-$90 level, and my rewards were rather tame by most standards! Above all else, I'd say to keep this in mind.


Let's say that you need $7,500 for your project. If you don't pad your goals and set your goal at $7,500, even if you end up majorly succeeding and hitting $10,000, it's very possible you'll STILL end up below your original goal when all is said and done due to fees and reward fulfillment!

ONE OF THE BIGGEST THINGS I FACED WITH THIS CAMPAIGN WAS THAT THE GAME ITSELF COULDN'T BE A REWARD! The Adventures of Rubberkid is a free game. Seriously, let that sink in for a minute... Go check out 10 random video game projects. Heck, go check out ANY 10 random projects! Odds are, at least 9 of them include a reward level that gives you whatever they're making.
With a free game, that's not possible!

Promotion

Like I said before, when I started my campaign, I felt that it would become a staff pick for sure at one point or another. I also figured that it would get lots and lots of pledges since it's a free, noble game, despite how simple it is, just because of the topic it covers and how unique it is in that manner. I thought that, if I started it up and gave it a good push start (a week of promotion, maybe two, tops!) then I'd have time to work on the game, update it for everyone with new levels, and that'd bring even more attention to it! Plus, then the game would be mostly done by the time the campaign ended!

Ha ha ha... I'm funny sometimes!

Funding Referrers! One of many awesome pieces of data Kickstarter gives you to use the entire campaign
It never got above the tip of page three of the most popular in the video games category (which means that, even if someone clicked "games", then "video games", it was #30 at its peak, putting it in the 10th column from the top). Oh, and if that isn't enough to convince you that Kickstarter itself really didn't help it out, why not just look at that image above? The green-shaded lines are through Kickstarter... Of the $821 raised, not even 10% came from Kickstarter sources. Also, according to most everything I had read, the "48 hour email" is typically a pretty huge factor, but you'll see how untrue that was in this case. I'm thinking that's because I did post about it so frequently, but I can't be sure.

The ENTIRE 31 days of the campaign were spent promoting. Not just on Facebook but everywhere... I used various sources to find "mom blogs", as families are my target audience; I hit up all of the gaming news media I could find (thanks PixelProspector!); I spent a day pitching to libraries when Technorati (blog database) was down; I wrote to local media; hit up facebook groups, some celebrities (why not, right?), and when it got really close to time I wrote to individuals on Facebook (friends and family). Those last minute messages did NOT focus on asking for pledges, especially since it had already crossed the line into "successful"... These messages were to simply let people know what I was up to and ask them to pass the message on, since the game will need help getting to as many families as possible.

Also, and I cannot express this enough: DO. NOT. SPAM! When I posted in groups, I made sure to focus only on groups that made sense (game developer forums, but ONLY ones that had a "tell us what you're up to" area; groups focused on bullying, and I always expressed my thanks for letting me post, and letting them know I'm sorry if they considered it spammy and to delete it if so with my sincerest apologies).

The top portion of my OpenOffice Calc spreadsheet. You didn't think I'd screenshot actual websites and info, did you?

It is VITAL that you keep a database, in whatever way works best for you, so that you can update throughout as well. I updated twice throughout, and having a database made it easy to do so; plus, each time I updated, a couple more people wrote articles! I began each email with something like "I'm updating you on The Adventures of Rubberkid, a project I wrote to you about a few weeks ago that deals with fighting bullying" etc. I would also add the most relevant info at the bottom, whether I'd sent it before or not. Spam filters, people being busy with the holidays or simply not being interested at the time can lead to people not reading emails, and I'm certainly not going to force them to search for old emails!

While I won't show you any examples of my database beyond the header of it there, it should give you a good idea. I type the website in, without the www (so, for example, "TheCritterverse.com"), the contact method can be either their email address or their contact form URL, and then the contact name is pretty straightforward. In the blue, I keep each game as I pitch in a separate column, and when I write to someone, I put that in the column. So if I emailed someone about Rubberkid today, I'd put "Emailed 1/9/13 5:35pm". If, say, that person contacted back, I'd put "Contacted back 1/9/13 [said whatever]", and then if they wrote an article I'd put the URL to the article and highlight the square green. If they write and say they're not interested, I put that and change it red. This way, with future updates, I can sort that column and easily update.

Additional Info/Advice

  • If you're running a low-goal campaign like I did, keep in mind that any campaign with a goal under $750 that runs 30 days or less ends up in an additional area - "Small Projects". I would have been a part of that and could have told you what happened with it, but I didn't realize it had to be 30 days or less... Mine was 31... *sigh*
  • Most every crowdsourcing advice page states that you should promote ahead of time. It's difficult to do that, though, since you don't have a URL until it begins. My suggestion would be to do a lot of almost-promoting before starting. Get your press release written, plan out some days with some special promotional stuff to get extra eyeballs, prepare your email and contact form text, create your database, get it running well, save LOTS of email drafts so you can just hit "send" when it begins... And let friends and family know ahead of time, so that when the day hits, you'll hopefully have some good pledges on day 1. Nothing hurts more than having $0 after a day, or two, or five...
  • Don't be afraid to change things as you go! Update, update, update!
  • Since my goal was lower, my total number of pledges was lower. I took advantage of every pledge to thank the person on Facebook, which then made for an excuse to promote the campaign again. I'd share the link, and then in the text I'd say something like, "Thanks so much for pledging to Rubberkid, [whoever]! Now we're up to [however much/% number]". With a lower goal, too, it was more often I could easily say "Only $20 away from 40%" or "Only $5 away from $200!" People LOVE to be the one to get you to hit that round number!
I realize this is a LOT of information, and that I'm really not the best at expressing data, especially with being sick this last week or so and the data being a bit cold in my mind again... But if you have any questions, please don't hesitate to write to me, comment below or reach me any other way!