Tuesday, December 15, 2015

Zookeeper DJ - Dec Game Jam - Ludum Dare 34

The theme for Ludum Dare 34 was either "Growing" or "Two Button Controls". After brainstorming a variety of ideas I settled on the idea that the player is a Zookeeper feeding animals so that they grow. I remembered playing an old Game & Watch game Fire when I was 10 years old and decided to do a modern take on the game.

Historically my experience in design has leaned towards games that leverage strong systems such as progression systems, level ups, inventory, skills and upgrades. This game jam I decided to focus on a completely different area of design which some designers refer to as Synesthesia. Strictly speaking Synesthesia causes people to experience one sense as a different one - but in video games people sometimes colloquially use the term to describe games which base a large amount of their fun on the sensory experience: music and rhythm games being chief among them.

If you haven't played the game yet - now's a good time to try it out. Click here to check it out! (If you're a Ludum Dare participant please vote for me too!  .

I knew I was on to something really early on because my first playable after the first night had terrible art, almost no sound presence but was already pretty fun.

The game after 6 hours of development.
The basic game mechanics did not change after the first 6 hours of development. The next 42 hours was entirely focused on polish, content, and tuning/iteration.

When I was adding bounce sounds to the food objects I knew I wanted the bounces to sound slightly different from each other and then took the idea a bit further to make the bounces play different sounds. Unsure of what sounds to make them play I tried grabbing 6 sound samples on the Pentatonic scale and had the trampoline choose among them randomly on each bounce. I had become familiar with the Pentatonic scale from watching Bobby McFerrin's TED talk which I highly recommend if you haven't seen it already.

I knew I wanted people to play the game for 5-10 minutes. I didn't want a game experience that was only 1 minute long, but I also didn't want people to grind out endlessly on progression systems. Since the bouncing of the balls meant that the gameplay was deterministic the answer seemed obvious to me: art content.

Players like to be surprised. Sometimes you can surprise them with a cool new enemy, or a new ability, and players tend to really love dramatically new art. I decided right away that the game would focus on 5 tightly tuned levels that each featured their own art. I didn't know at the start that I would eventually also do custom music and sound samples for each stage.
The panda level got drawn first and took about 4 hours. This made me confident I could draw 4 more levels before the end of the game jam.

A big challenge was getting the notes to fall in interesting patterns. For about half of the game jam I just had the notes generated according to a fixed pattern that repeated over and over. I realized right away I do not want people having to be in 2 places at once, that is simply too frustrating. So I feel back on my tried and true game jam technique - using pixels in an image to specify level data. In this case, black and white pixels in a Photoshop file would specify the spawn points for food.

The image is read from left to right, top to bottom. The black pixels represent "spawn food".
Every beat was represented by 2 pixels. That meant that each row was 1 bar in 4/4 time. Since each food took 3 and a half bars to cross the screen then every 4 lines became a natural breaking point for knowing a new sequence of food was dropping. One really neat consequence of this is that anytime two black pixels were within 4 rows of each other it meant the player would have to be in 2 places at once! This made the level design much easier - I could fill the level with black dots and visually watch for 2 black pixels that were too close together.

In case that's confusing I drew the following illustration to show how the pixels turn into food spawns.

In order to use this technique effectively in Unity you need to make sure you import your textures with filtering and compression turned off - otherwise your image obtains compression artifacts or anti-aliasing which causes the information to get lost.

After playtesting a lot I realized that part of allowing a level to feel satisfying and "complete" I needed to end on a closing note on the Pentatonic scale so whenever you reach the end of the level the animal ALWAYS forces the lowest note to be played. This tiny change made the game feel WAY better - prior to that the level would often end with the player having this sense that the level was not truly complete.

Another polish detail to really give that closing sense of satisfaction to every level is to make every level end with a very easy sequence of notes. I don't want the player to mess up and drop some food near the end causing the song to feel like it came to an abrupt end. This doubles down on that sense of completion at the end of every level.

Selecting which level to play next was very challenging with two button controls. This is the part of the game I'm least happy about. I really don't like the 2-second delay. I had debated making it so you spin the 5 levels on a carousel by moving right and then 'select the level by pressing left but I felt really strongly that the player needed to learn how to move their character consistently from the very beginning. Had it not been for the 2-button restriction I definitely would not have done the level select this way.
Level select is definitely sub-optimal but at least it fit the 2 button controls restriction.

It's interesting in watching people playtest the game since the game jam ended how many players I've seen instinctively reach for their mouse as soon as a level ends and the congratulatory screen comes up.

A minor crisis occurred Saturday night when I uploaded a WebGL build and then discovered the background music was not sync'ing to the action! I don't know if the latency was due to WebGL in Unity or Chrome's implementation but either way the desync between the rhythm and the bounces was unacceptable. I fiddled with various appraoches for about 5 hours and finlaly settled on generating all the drumline music for the levels as a single 4-bar clip that is forcibly started at the start of each measure by the game object that spawns the food. This helps to ensure that if the audio of one of the systems does desync, at least they desync together.

The finishing touch on the game was adding the score and trophy system. Since the game has a strong Rock Band vibe to it, even though the mechanics are different, I knew that players would enjoy getting 100%. I added the code to award a silver trophy for finishing the level with at least 60% and a gold trophy with 100%.

Tuesday, December 8, 2015

Mad Scrap - May 2015 Game Jam

Name: Mad Scrap
Date: May 2015
Team: Zaven H, Mike H
Duration: 48 hour weekend game jam

I did this jam with two co-workers. We did it the weekend Mad Max was coming out on theaters, hence the name of the game. Zaven is a designer with an art background and Unity experience which is fantastic for a game jam. It’s great when your artist creates art and hooks it up without any assistance – things just magically show up in the game! Mike was our core programmer – he had some prior Unity experience.

From a design POV I wanted to play around with random level generation. The levels are generated from hand-designed pieces.

The level pieces are bitmap images where each pixel in the bitmap represents a tile type. This allows us to use Photoshop as our level editor. Here are some sample level bitmaps:

Phase 1 Level

Phase 2 Level

Phase 3 Level
In the images above, black represents an open pit, red is spikes on the ground, blue is a rock wall and green is a pushable wall. The magenta and cyan represent power-ups and health pack spawn locations. These simple bitmaps are basically a makeshift level editor. This is a game jam technique I learned last year that basically lets you transform Photoshop tools you're familiar with (copy-pasting, drawing, etc.) into a poor dev's level editor.

All of the tiles are 16 pixels wide (which translates to 16 grid units wide in the world) and any number of pixels tall – the random level generator adjusts automatically for variable heights.
The level is generated in Phases. Each phase has a set of tiles available to it and a length
  • Phase 1: 
    • Tiles 1-1, 1-2, 1-3, 1-4, 1-5, 1-6, 1-7 
    • Duration 3 Tiles long
  • Phase 2: 
    • Tiles 2-1, 2-2, 2-3, 2-4, 2-5, 2-6, 2-7, 2-8, 2-9, 2-10, 2-11, 2-12, 2-13, 2-14, 2-15, 2-16, 2-17, 2-18, 2-19, 2-20  
    • Duration 5 Tiles long
  • Phase 3
    • Tiles 3-1, 3-2, 3-3, 3-4, 3-5, 3-6, 3-7, 3-8, 3-9, 3-10
    • Duration 5 Tiles long
The tiles can be reflected horizontally and vertically for additional variety.

We used Perforce for revision control and Trello for task tracking.

You can play the game here.

Tuesday, November 3, 2015

Jan 2015 Game Jam: Need a Night Light

Name: Need a Night Light
Date: January 2015
Team: Solo jam.
Duration: One weekend that spilled into the following week. Since doing this jam I’ve set a self-imposed rule that I am allowed to work on it for 30 more minutes whenever I show the game to somebody new. It’s important to set a hard deadline when it comes to jam games as they otherwise turn into black holes of time. There’s a laundry list of things I’d still love to do with the game if I decided to work on it more.

Unfortunately the game doesn't work under the new Unity WebGL player yet, so I can't provide a web build, but here's a YouTube:

At the core the game jam was inspired by the question “How would you work fear into a twin stick shooter?” This lead to the addition of the flashlight mechanics

Things I learned:

  • This was my first time making a game in Unity, so there was straight up huge lessons there. From hooking up both input sticks, doing basic collisions and UI menus.
  • A big design takeaway is the upgrades were actually harder to design that I thought. The main design challenge is that many attractive upgrades actually take away from the core game play. For example I initially had a proximity light that showed everything around you in a 360 degree radius. This very quickly detracted from the fear of having a zombie sneak up behind you. To compensate I turned the radius of the light down to mitigate this, and it resulted in playtesters commenting that the upgrade was barely noticeable and felt like a waste of money. This eventually got redesigned into the strobe light, which retains some of the fear and uncertainly of what’s behind you but ultimately still feels underwhelming for the cost.

What I’d change if I revisit this idea in the future:

  • The core concept is rich for future exploration. I’d like to explore different enemy types – particularly enemies that move perpendicular on their approach, or adjust their movement based on the light.
  • Level geometry would be awesome. Buildings, or hallways. It’s hard to know right now what the right balance would be between reasonable obstacles vs. the player being able to put their back to a wall but I’m pretty sure the gains would outweigh the challenges.
  • There’s lots of explore in terms of just amping up the tension. Audio would be huge here – with zombies making a distinctive sound when they are within a half second of reaching you – or a particularly threatening enemy with a distinctive sound so you know it is coming.

Monday, November 24, 2014

Minecraft Minute - Industrial Craft 2 Experimental

One of my side hobbies is making Minecraft videos.  A series I did way back in January/February of 2014 was the Minecraft Minute for Industrial Craft 2 Experimental.  When I want to know how to do something in Minecraft I often appreciate videos that are short and to the point.

Here are 33 videos I made on various topics in Industrial Craft 2 Experimental.

Saturday, October 18, 2014

Vanilla Reloaded - Authoring a quest driven experience

Minecraft is one of my great gaming loves for the last year.  I've played countless hours of vanilla, as well as modded packs.

However, when I try to introduce friends to Minecraft, sometimes it doesn't stick.  I think it doesn't stick for a variety of reasons

  • Some players hear that Minecraft is an "open world undirected game" and decide it's not for them before they even start.
  • Some players try it for 20 minutes but get stuck and frustrated and drop out.  The early game experience is not kind and they don't know what they're supposed to do.
  • Some players are so used to a directed game experience they simply can't play games anymore without a task list.
To try and solve these problems I've begun work on a questing pack for Minecraft.  I am using the Hardcore Questing Mod (HQM) by the Hardcore Questing team.  Don't let the name fool you, it does not have to be Hardcore.  I'm mostly interested in the Questing component of it.

Before anybody says I'm "destroying the magic of Minecraft" by creating a directed experience, let me say - I love the Minecraft open-ended experience.  However, I believe many gamers simply don't know how to play without a task list anymore.  An important rule in game design is "don't fight the player psychology."  Or at least, if you're going to fight player psychology, you better have a good reason to do so.  I contend that most of the people who are ready for an open-ended experience already enjoy Minecraft.  I'm not making this mod for them. This mod is for people who haven't been able to enjoy the game in it's native state.

Have you noticed that Minecraft tends to be more popular with kids than adults?  One reason for this is that children's brains naturally look wide. They are easily distracted, naturally curious, and always looking around them.  Adults on the other hand have a greater ability to focus, but that ability to focus comes at the cost of our brains filtering out distractions.  We're also more task focused as adults, more satisfied when we feel like we've gotten things done.  I believe many adults who are able to pick up Minecraft are the ones who've been able to retain some of that child-like, unhurried curiosity of the world.  Many who don't would still love Minecraft if there was a quest log focusing their attentions towards the next task at hand.

I'll close with a teaser shot of Vanilla Reloaded during development.

Saturday, November 3, 2012

Election War Room 2012 Strategy Tips

My friend Chris released his game Election War Room 2012 on the apple store last week and I've been playing it quite a bit.  If you haven't played it yet - what's stopping you?  It's free between now and election day!

Here are a few strategy tips I've picked up along the way

You only need 15 million dollars to get through the last 2 rounds of the game as long as you're in a decent position.  The last 2 rounds see cards like Freelancer's Union and Occupy Wall Street.

Although it can be very attractive to get a total of 8 or 9 influence for a single action, simply campaigning with a full 5 million dollars in 2 states, 2 turns in a row, is often enough to lock down the key states to win.

Here's a good example of a game I had recently

I'm playing as Obama.  I'm barely winning in 4 states, but winning nonetheless.  My best play is to actually bid 5 in Florida and 5 in Pennsylvania or Washington.  Although it doesn't get me as much total influence, moving either of those states to blue will win me the game.

Don't bother doing anything to influence Florida in the first half of the game.  In the mid game the card "End Embargo" will show up.

  • If your opponent is significantly pushed in Florida, you can bid End Embargo and equalize it.
  • End Embargo is extremely hard for your opponent to stop.  If you win the bid, it happens.  If your opponent outbids you and wins, it still happens.  The only way to stop it is for both players to bid exactly the same amount.
  • If Florida is pushed in your opponent's favor then End Embargo becomes a mind game that's basically skewed way in your favor
    • If your opponent is new, just bid 1 and win it.
    • If your opponent has played a bit, bid 1 because they'll think "I don't want to equalize Florida" and they still won't win it
    • If your opponent is pro, then bid 2, since your opponent will know the only way to stop you is to tie your bid.  But this never happens because pros know that you don't touch Florida until after End Embargo has passed.
Opposition Research is super strong.  You want to win this.  It always shows up early in the game.

You're probably thinking "Seems too situational, why would I spend a lot to sometimes get +3?".  The reason is (again) Florida.  As we've already covered, End Embargo will show up in mid game.  On the same turn that End Embargo equalizes Florida, campaign there for 5 million.  You have now locked down Florida for the rest of the game and guaranteed yourself 30 votes.  Anytime your opponent tries to make a move on Florida, just bid 5 there again to keep it solidly on your side.

Making a bid costs you one of your two actions.  If a player makes a bid but loses, it still uses up their action.  Use this to your advantage!  Always ask yourself what your opponent's best move is.  Sometimes one of the best plays you can make is to win a card that is not necessarily great for you, but you're denying your opponent the free play.  A great example of this is Big Oil on turn 1.

Very often Republican players will bid 1 or 2 on this.  It's only worth 5 million, and ties go to the Republican, so generally you figure hey - free money right?  If I'm playing Obama I'll happily bid 3 or 4 on this.  Yes, it's an action to win 1 or 2 million dollars, which is normally terrible, but my opponent almost certainly bid on the card, so I'll also be negating their action.

Similarly, you want to think about what your opponent's best move is.  If your opponent has two moves that are clearly amazing for them then you can assume they are going to bid on both of those cards and you can pick up the third card for a 1 million dollar bid.

Sometimes, if one move is clearly amazing for my opponent and only mediocre for me, I'll go ahead and dive for an aggressive amount.  No, it's not great for me, but the deny is super valuable.  For example, consider Mainstream Media when I have 4 states and my opponent has 1, with 1 state tied.

That's worth a total of 10 influence for my opponent and only 4 for me.  I know my opponent is going to bid on the card.  If I am already in a winning position it is worth bidding a solid amount to negate my opponent's action and deny them the money.

Sunday, May 13, 2012

Avengers as League Champions REVISED 2.0

So I wasn't going to make a whole other post about my LoL Avengers Champions, but I went to see the movie a second time!  I figure hey - if I can see the movie a second time, doesn't that mean I can do a design pass on my Champions too?  Besides, design is about iteration - we'll consider my first pass a piece of garbage, and we'll call this one cleaned up garbage.

For convenience I did strikeout over deleted sections and posted new things in revision purple.

The Hulk
PassiveWhenever the Hulk takes damage, his attack damage is increased by 5% of the damage sustained.  This effect can build indefinitely, but resets when the Hulk has not taken damage for 5 seconds.  The hulk gains 2 Armor and 2 Magic Resistance every second while dealing or receiving damage.  This effect can build indefinitely and resets when the Hulk has not dealt or taken damage for 3 seconds.
Punch Smash![Q]: On an enemy, deals 30 (+AD) damage and knock them back.  When used on an ally Punch deals no damage but can still knock that ally back. 8 second cooldown.
Inspired by the great Ally Punch scene in the movie.  In this context it can be used to punch an ally to safety, to catch up to an enemy, or to push your ally through a  thin brush line, etc.
Leap! [W]: Leap to a location, dealing 60 (+AD) damage to enemies where he lands. 14 second cooldown.
Mighty Roar! [E]: Passive: The hulk regenerates 2 Life per second.  Active: The Hulk lets out a mighty roar, removing all CC effects from himself and nearby allies. 25 second cooldown.
Melee range allies, mostly used for waking up allies who just fell from the sky after redirecting nuclear missiles
Adopted God Flip Flop [R]: Grab an enemy and toss it back and forth dealing 40 (+AD) per slam. 90 second cooldown.
Works a bit like a Singed Toss, but with a Warwick/Skarner style CC to it as well as it lasts for a second or two.

Iron Man
Passive: Iron Man's suit uses energy to bolster his defenses.  Iron Man gains 5% of his AP as Armor and Magic Resist.  Intelligence Gathering.  Iron Man has superior tracking and sensors.  Iron Man gains vision of enemies affected by Laser Torch or Missile Barrage for 3 seconds.
Laser Torch [Q]: Fire a Laser Beam that deals 120 (+AP) damage to the first target in its path and mark it with Guidance System for 3 seconds.  Laser Torch deals 50% more damage if the target is also suffering from Missile Barrage. 8 second cooldown 15 second cooldown
Missile Barrage [W]: Launch 3 missiles at nearby targets for 80 (+AP) damage over 3 seconds. If there is an enemy with Guidance System on it, all 3 missiles will launch to it. 8 second cooldown
Billionaire Philanthropist [E]: Passive.  Gain an additional 1/2/4/6 2/3/4/5 gold every 10 seconds. Does not work while Active portion is on cooldown. Active. Drop a Sight Ward.  Cooldown 180/150/120/90 seconds.
Orbital Unibeam Targeting Array [R]: Lasers from overhead satellites instantly damage all enemy heroes for 50 (+AP) damage, places the Guidance System debuff on them and reveals their location on the map for 
3 seconds. 120 second cooldown. 
Rocket Jet Boots [R]: Take flight for 5 seconds increasing movement speed by 20% and allowing you to ignore collision.  120 second cooldown.
Feedback that his ult was too much like Karthas I think was totally valid, and I think it's more interesting to try and play out some targeted missiles mechanic.  He doesn't have any mobility yet, and while watching the movie I realized Iron Man was the only human that can "fly". I'm not sure how the LoL engine handles collision with trees, since no other hero can currently fly over trees I'm assuming there are issues?  If you lose flight while over trees I'd search the closest open landing spot and land there.

Passive: Thor wields the mighty Mjolnir. While wielding Mjolnir, 15% of Thor's Ability Power is added to his Attack Damage
Mjolnir Throw / Mjolnir Return [Q]: Throw your hammer dealing 70 (+AP) damage to all enemies along the path.  The hammer will remain at it's ending location until you cast Mjolnir Return, which brings the hammer back to you dealing 70 (+AP) damage to all enemies along the path..  6 second cooldown.
Mjolnir will sit on the map indefinitely.  The hammer is a visible object in the world, but players may not interact with it.  Mjolnir Throw has a standard medium-range skill shot range, but Mjolnir Return has infinite range (it returns to wherever Thor is at the time he casts it).  Slight variant to Orianna's ball.  Thor has a small sight radius around Mjolnir.
Control of Lightning Lightning Burst [W]: Toggled.  Melee attacks discharge a chain lightning dealing 40(+AP) damage to 3 targets.  8 mana cost per swing.  Let out a burst of lightning that electrocutes all enemies for 40 (+AP) in a cone in front of you.
Dimensional Portal [E]: If you are wielding Mjolnir, drops Mjolnir on the ground.  If you are not wielding Mjolnir, instantly teleports you to Mjolnir and you pick it up.  25 second cooldown.
Mjolnir Smite [R]: Only usable if Thor is wielding Mjolnir, Mjolnir falls from the sky and smashes target Champion for 300 (+AP) damage and stunning the target for 2 seconds..  Usable anywhere on the map. 90  90/75/60 second cooldown.
I realized that the "usable anywhere on the map" doesn't actually add anything.  A simple ranged stun move, combined with the rest of the kit, is plenty.

Captain America
Passive: Enemy Champion ranged basic attacks that pass through Captain America hit Captain America instead.
Shield Throw [Q]: Throw your shield at an enemy for 60 (+AD) damage.  The shield will bounce at up to 2 additional enemies before returning back to you. All targets struck will be silenced slowed for 2 seconds. 10 15 second cooldown.
Vibranium Dissipation [W]: Captain America can no longer move or attack but becomes immune to all damage and spells in front of him for 1 second. 18 second cooldown  Lasts until Captain America attempts to move.  8 second cooldown.
The spell is activated like a short-range skill-shot nuke, which is done primarily to help determine the facing of Captain America.  He puts his shield up and faces the direction cast.  All damage originating in a 180 degree angle from that direction is negated. 
Shield Slash [E]: Slash an enemy with your shield for 30 (+AD) damage and silence that enemy for 2 seconds.  9/7/5/3 second cooldown.
Defensive Roll [E]: Roll to target location.  Any enemy at the target location is pushed back and slowed for 3 seconds. 8 second cooldown.
Most of the kit is built on his passive, which blocks ranged basics.  To really make use of this Captain America benefits from a skill that lets him get in between enemies and his teammates, as well as a way to create a distance to help peel enemies off his friends.  The small knockback on enemies at the target location is intended to be extremely small, probably just the width of Captain America himself (like if a melee hero is on an ally, he can just inserts himself in between them)
Personal Sacrifice [R]: All damage done to nearby friendly champions is redirected to Captain America instead for 2 seconds. 120 second cooldown.
Beacon of Hope [R]: Captain America inspires his team, decreasing all damage taken by 15% for 5 seconds.  20 second cooldown.
I'm still not happy with this Ultimate.  Needs more work still.