Showing posts with label 1GAMCRUNCH. Show all posts
Showing posts with label 1GAMCRUNCH. 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!










Friday, January 25, 2013

1 Hitpoint Game: More Details!

8x8 play space. The bottom squiggles show the latest things that have happened ("Picked up 10 coins; defeated a skeleton and lost 40 courage; found the seal!). Right side displays HP (ALWAYS -1), Courage/Max Courage, XP (leveling up adds to your max courage, and XP comes from beating enemies) and Money. The squiggled-out section will be there after all - they're your usable items, click to use them. Equip won't be there, you'll automatically equip the most powerful flashlight), Shop allows you to open the shop screen and buy new goodies any time!

Okay, so to keep true to not liking the idea of people actually getting hurt, battle works like this: enemies are scared of light, since they've lived in the dark for so long. You, as the ghost, are easily scared (people live in harmony in this crazy realm, after all, and so you aren't a fan of being scared).

Enemies have HP and Frightfulness, the player has Courage and Light (from their flashlight and any possible artifacts they might have).

Let's say that enemy skeleton has 200 HP and 10 Frightfulness, and the player has an Everlasting Glowstick (50 light). The amount the player gets scared is simple --> (Enemy HP/Player Light) [rounded up] * Enemy Frightfulness. In this case, the player would lose 40 courage.

This is NOT turn based, it happens in a snap whenever the enemy is found.

And HERE is a list of all the goodies in the game!

Flashlights
(Start With) Everlasting Glowstick --> 50 light
(Buy Only) Mini Flashlight --> 100 light
(Buy Only) Standard Flashlight --> 150 light
(Buy Only) LED Flashlight --> 200 light
(Buy Only) Lantern --> 250 light
(Find Only) Portable Sun --> 350 light

Items
(Find Only) Light Bomb: Clears a 4x4 area, scaring off all enemies in that space
(Find/Buy) Confidence from Concentrate: Grants up to 100 courage
(Find/Buy) Serenity Now, In a Can: Grants up to 250 courage
(Find/Buy) Insta-Courage: Grants up to 500 courage

Artifacts
(Find Only) Disco Ball: Colored lights clear 8 random squares at the start of each floor
(Find Only) Bravery Badge: +15% courage
(Find Only) Metal Detector: All money is displayed immediately on each floor
(Find Only) Attachable Laser Pointer: +75 light
(Find Only) Headlamp: +175 light
(Find Only) Attachable Magnifying Lens: Adds 50% of the flashlight's light score
(Find Only) Seal Seeker, Alpha Version: Picks four locations that MIGHT be the seal. puts question marks on the squares
(Buy Only) Seal Seeker, Newest Version: Reduces the possible locations to two, MUST HAVE Seal Seeker, Alpha Version first

Enemies still need to be added, and I'm sure some of that will change, but there it is!

#1GAMCRUNCH - The REAL Theme & My Concept

So apparently "Loose" wasn't the theme, the lead was simply saying that the theme was being let loose and being posted. I didn't get to it til after 6 (over an hour after the competition began), but I've got my idea down now (about 35 mins later)

Theme: "1 Hit Point"

The competition actually has two themes "1 Hit Point" and "Golden Gun". Technically the two are very similar; the golden gun is infamous from James Bond, and in Goldeneye, the Golden Gun would kill any (bosses even? Dunno) with one hit, thus technically acting as if they had 1 Hit Point.

I am skipping the gun because I don't really like the idea of shooting one another, particularly with the violence in video games issue heating up so badly!

You play as a ghost, making your way back to the realm of the living. Between you and the exit, though, are 50 floors of terror. You must make your way through each, finding treasure, collecting money and treasure, finding bonuses and the seal on each floor that will allow you to ascend one floor higher.

Why 1 Hit Point? Because, as a dead being, a ghost has negative hit points, and is "passed out" at zero. If you can get through all 50 floors, you'll become a living being once more, with 1 Hit Point (barely alive, but ALIVE!).

Game Play

Each floor is an 8x8 grid , with every square shrouded in shadow except for the one you start in. As you take a step, you find out what's in the new space... If it's a treasure, money or a story page (note: story pages probably won't make their way into the game in 48 hours), you simply collect it. Seals allow you to travel to the next floor, bonuses let you play a little bonus game of some sort, and enemies begin a battle.

Bonuses: Bonuses are little bonus games (note: maybe just one in such a short amount of time). You get extra treasure or money from them!

Treasures: Equipment can be bought at stores at any moment in the game (ghosts can travel anywhere, since they're ghosts and all, it's just the seals that keep them away from living again), but they can also be found! Equipment includes sheets (armor), weapons and artifacts that do special things (reveal x random squares, automatically jump to the next floor, etc)

Story Pages: Who, or what, are you? Why do you want to go back to the land of the living so badly? How did you die? What is this place? You'll find out!

Battle: Ghosts are fine and dandy, happy with one another, as long as they don't try to escape... But these 50 floors are guarded by all sorts of enemies. They'll be as much of a surprise to you as they are to me at this stage, but they'll be there! I'm not quite sure how battles will be handled yet, it's the one thing I haven't really figured out... But it's not even an hour in for me yet, I'll come up with something :)