Bulletpattern Game design, Flash and Unity development

11Jun/200

Animal Crossing Birthday Scavenger Hunt

For the past few years, I've been designing scavenger hunt parties for my daughter's birthday party. This was originally born out of her love for Gravity Falls and all the secret codes throughout that show. So far I've made parties for Gravity Falls, Warriors (the cat books, not the colorful gangs), and Yo-kai Watch. This year it was time for everyone's favorite pandemic obsession – Animal Crossing!

Due to the pandemic, we could not have an actual birthday party with her friends, so I decided to go the extra mile and make this party special (maybe too special, more on that in the summary). Also, my girlfriend's daughter is 6 years younger than my daughter but I wanted to make sure she was included.

THE SET UP

There's a whole new game – it's Animal Crossing: Birthday Island. My daughter was greeted with this card.

THE PLANNING

Wait, before I get ahead of myself, let me talk about the massive amount of planning that went into this. I knew a few things I want to accomplish:

  • Use the tools from Animal Crossing in real life (IRL).
  • Have IRL parts of the scavenger hunt and parts *in* the Animal Crossing game.
  • Harder puzzles for the 12yo and easier puzzles for the 6yo so they could work together.

I sketched and planned over and over (using Paper by 53 in my iPad)

After a couple weeks of planning off and on, I settled on this flow and started filling in the gaps with puzzles and activities.

back to THE GAME

I designed and printed mats to emulate Resident Services and The Museum. Amiibos of Tom Nook and Blathers were manning their respective areas and guarding the horde of Bells. These Amiibos were the first small presents of the day.

THE RULES

  • Each coin is worth 100 Bells
  • Finding a bug/fish/fossil grants you the coin(s) from the space
  • Hints are 500 Bells
  • Filling entire museum section grants 10k Bells (the bags of Bells)
  • You must follow the tool rules! No catching bugs without a net, no fossils without a shovel, etc.
  • The birthday presents cost 40k Bells!
  • Getting the last 10k Bells is a secret and must be discovered!

The back yard was decorated with tents, mailboxes, campfires, and even real floating balloons with presents hanging from them! In addition to hosting, my wonderful girlfriend did an excellent job with the decor both in and out of the house!

FISHING

The girls were given the first DIY Card for free – fishing rods. They had to solve puzzles and catch critters to find the rest of the DIY cards. They were also given some bamboo, string, and hooks made from wire coat hangers to assemble their fishing poles.

I put little toy fish, some bad puns, and pieces of a 6-part puzzle in little paper bags. They had to get all the cards and stack them to reveal the code. Half the bags had big hook-able rings, the other half had paperclips only (for the future fishing rod upgrade). Six fish means 600 Bells and the fish area of the museum half-way filled up!

I used Discovery Kids Puzzle Maker to create a word search for the younger girl that revealed a clue "STACK THE CARDS". After stacking the cards correctly, the puzzle solution revealed to be "FLOWERS FRONT HOUSE" written in the Animal Crossing font, which meant the next clue was in the game!

I made this set up as a clue to where the next DIY card was hidden in the real world. You see that DIY card hiding behind the far-left flower?

Behind the IRL house are some big, decorative metal flowers with the same color arrangement. The next DIY Card was taped behind the corresponding flower. The next tool was the shovel!

FOSSILS

I ordered this dinosaur skeleton set on Amazon. I divided the skeletons up into 9 groups, along with a puzzle piece. I painted back of some deep paper plates to look like the little "dig spot" from Animal Crossing and taped printouts over the mouth of the plates to hold everything in, so the girls had to rip them open to get to the goodies.

She had to assemble the dinosaur models to get the full 10k Bell credit from the museum. I have to admit, my mixing the dinosaur bones up made this overly difficult but she completed the fossils for her first bag-o-bells!

Along with each fossil was a piece of a roughly drawn treasure map. Once she put it together, it was clearly her Animal Crossing Island! She had it comically upside-down at first before she recognized it!

Buried in the Animal Crossing game, at each marked spot, was an item. I told her to carefully track which grid (A1 - F7) she found each item and its exact name. The names and locations of the items, paired with the maze below (for the younger girl), revealed the next clue. The correct path of the maze outlined the right sequence of grid and letter.

  1. B1-7 (sand doLlar)
  2. B7-4 (corAl)
  3. F7-4 (wooD)
  4. D2-4 (claY)
  5. C2-6 (tree Branch)
  6. F4-4 (venUs comb)
  7. C5-1 (Gold Plaque)

Ladybug? Let's go look outside for the next DIY card!

BUGS

The net DIY Card was hidden under a decorative ladybug in the back yard. Nine little toy bugs were hidden (too well) in the back yard. Another 10,000 Bells for completing a museum section! Each bug had a few letters painted on the bottom. Arranging all the bugs in alphabetical order revealed the next in-game code – COUNT THE BUGS BY GRID

Oh yeah, there was also a hint tarantula, if you didn't have the Bells for a hint.

With the Animal Crossing design tool, I made a few bug stamps (1 bug, 3 bugs, 5 bugs) and stamped the ground with a number of bugs. The count of the bugs on the grid corresponded to another puzzle grid.

The count of the bugs by the grid revealed the code revealed UNDER TRAMPOLINE, which is where the Fishing+ DIY card was held!

FISHING+

This time for fishing they had little magnet lures, so they could catch the rest of the fish! Another 6-part code (cut vertically, little dots at the bottom show the order it must be re-assembled) with another hint! This time a grid puzzle but the connect-the-dots puzzle reveals the path in which she had to follow to grid to get the answer (it's just a swirl).

This revealed the code LOOKxRESIDENTxSERVICESxBULLETINBOARD.

On the Resident Services Bulletin Board in Animal Crossing, I put a zigzag (a.k.a. rail fence) puzzle. There was A LOT of confusion and frustration with this puzzle. I think there was also some "code fatigue" (more on that later in my summary), so I just gave the answer – UNDER STEPS ZIPLINE.

THE SLINGSHOT

This was (supposed to be) the ultimate fun end to the adventure! Shooting down real floating balloons and presents with a real slingshot! But the balloons had been sitting in the hot sun for about 3 hours and had deflated considerably, making them *very* difficult to pop. This led to a lot of frustration. It was a huge bummer. There were some tears.

We skipped this puzzle but here is. There was a 6-part Atbash puzzle in the boxes the balloons held. They were cut up horizontally and had to be put back together in alphabetical order of the Animal Crossing characters' names.

This said START SOUTH BEACH THEN FOLLOW GNOMES, but I just told her the solution.

I had 3 gnomes pointing in a path around her island in Animal Crossing that eventually led to her mailbox, where there was a simple "skip every couple letters" to reveal the secret to getting the final 10,000 Bells – GIVE DADDY HUGS. Yes, very self-serving. I DESERVE IT!

EVERYONE WENT ALL OUT!

It wasn't just me going nuts. Everyone involved in the party took it took to the extreme!

We had awesome decorations, and my daughter's mom made a crazy spread of food. My girlfriend's sister is a straight cake boss and made this amazing cake! The cake was mean to look like Punchy but colored like my daughter's cat.

My ex's boyfriend even dressed up like K.K. Slider and set up a DJ Booth (but it was really hot outside).

SUMMARY

All in all, a good time was had by the girls but I made some big mistakes.

Mistake #1 – I'm used to have 6-10 kids working on these puzzles. Their combined efforts tear through these puzzles quickly. Having all the puzzle solving on one kid by themselves was way harder and not as much fun. This meant the puzzle sections were taking a really long time and became a chore. Also, this just made the game take too long.

Mistake #2 – The balloons. Well before the party, I tested shooting the balloons with a slingshot and it worked like a dream. I could pop the balloons with no effort. However, I'm an older guy and had slingshots a good part of my childhood.

Now compare that to a kid who has never shot a slingshot and is shooting at deflated balloons. It was a recipe for frustration.

Hopefully next year we won't be under quarantine and my daughter can have a group of friends take part in the puzzles. I already have my eye on a 3D printer to make physical puzzles for next year!

28May/200

Yo-kai Watch Scavenger Hunt Party

For the past few years, I have designed and created an elaborate scavenger hunt for my daughter's birthday. As I started this year's, I realized I never documented last year's Yo-Kai Watch Scavenger Hunt!

The Set Up

My girlfriend's sister is an amazing cake artist, so I know what I wanted to do – a Yo-kai hunt that would unlock a legendary Yo-kai (i.e. her cake). I had recently invested in a new craft printer and I was excited to use it!

I bought a "mystery kit" and some red-film decoders. I dressed the decoders up to look like the Yo-kai Watch and made a bunch of kids codes and hid them behind the red/yellow/blue noise that red-film sees through. I even made special Photoshop brushes for each Yo-kai type, so the noise was made up of the different Yo-kai Watch symbols.

It was difficult to get the printing just right so the red film worked well. It would often look totally see through on screen but then impossible to see though when printed or vice-versa. It took quite a bit of trial and error to get it just right.

I used the ring decoders from the kit to make a few puzzles and made a few others myself. Using classic kids ciphers like skip-letter code, morse code, grids, and the "tilted letters" puzzle, I had quite a few codes.

The Final Hunt

Hidden through out the house were little bags with the following:

  • Red-filmed version of the Yo-kai (looks easy to see here, but in print is harder to discern)
  • A red-filmed code for the next location
  • Code-breaking tools as needed

After the Yo-kai was correctly identified, I handed over a Medallion version of each Yo-kai (with a sticky back) for entry into the Legendary Medallium. Once the Medallion was filled, the Legendary Yo-kai would appear!

STEP 1

The hunt started with some Yo-kai coloring pages and sets of water colors I had set out for the kids. I had written a single letter on a few of the coloring pages in white crayon. As the kids competed their pages, a code was revealed. They quickly worked together to sort out the first clue – CLEAN.

STEP 2

Washogun is hiding under the kitchen counter in the cleaning supplies!

Along with his medallion, was 2-part red-film code (there were lots of kids and I wanted to divide up the work) and a cipher disk.
When decoded –
I LIKE TO BE ALONE
AND PARTY AT HOME.

Step 3

Hidabat was in my daughter's closet! His medallion was accompanied by a red-filmed grid code.

When decoded:
ZREE IN A TREE (this is a bit of an inside joke about Yotsuba)

STEP 4

To the back yard! Cadin was hiding in a tree!

With his medallion obtained, another code needed to be solved. This was a simple "skip every other letter" code which revealed –
LET'S STAY UP LATE AND PLAY VIDEO GAMES

STEP 5

Hidden among the video game systems was Wydeawake! Such a bad influence.

His medallion was accompanied by a book cipher. My daughter was obsessed with the number 42, so The Hitchhiker's Guide to the Galaxy was the book she needed for the code –
ME WHERE YOU PEE

STEP 6

Toiletta was hiding, well, by the toilet.

She was accompanied by number/alphabet code – 
YOU MAKE ME TREATS WHEN YOU SLEEP

STEP 7

Baku was hiding under my daughter's pillow ready to snack on some dreams!

Along with a morse code puzzle –
ALWAYS HUNGRY

STEP 8

Hungramps was hiding the pantry!

Along with the long letter code – 
ME ME ON THE WALL

STEP 9

Mirapo was hiding on our big mirror!

And now, the final code – a mirror text code –
Imaginary !Incendiary! Flip flip, squiggle boom, slim slam, LEGENDARY!
Presenting! Jibanyan!

And with her Legendary Medallium filled, out came the cake!

27Aug/180

Input Queues for Better Controls

Note: Input queueing is a basic technique of controls, which may seems like it doesn't warrant a write-up, but it's come up in three separate projects over the past few months, so I felt compelled to write up an article I can easily point to for an explanation.

Introduction

What constitutes "good controls" in a video game can be many nuanced bits of code handling of inputs that aggregate into one hard-to-describe system. However, one easy measure is, "I hit a button and the game did what that button is supposed to do". Sometimes even when coding controls "correctly", players will hit buttons and what they expected to happen doesn't happen at all.

The Culprit? Finite State Machines

A cornerstone of game programming is the finite state machine (FSM). FSMs organize game code into a set number of states where only one state can be active at a time. FSMs must transition to a different state to perform different actions and specific actions can be taken at the beginning and/or end of these transitions. If you are unfamiliar with FSMs, there is a great deal of information elsewhere.

FSMs are excellent for organizing AI but are also often used for character controller code. While state machines are wonderful for compartmentalizing code, they are the primary reason for needing input queues.

The compartmentalizing of control inputs is definitely an advantage of finite state machines – an input cannot be accepted unless a character is in a certain state. However, players cannot always tell what state a character is in. Or they cannot tell the moment a transition from one state to another occurs. Or maybe they cannot react quickly to a state change.

Imagine this scenario for a controllable character:

  • Our character has two states: running and jumping.
  • The code will not accept a "jump" input if the character is already jumping, only in the running state.

Now imagine your player is jumping and wants to jump again the instant they land. However, the player hits the jump button 1 frame before landing on the ground and entering the running state. No jump occurs. Due to your correctly functioning FSM, that input will be ignored.

In a fast-paced, 60 fps game, will your player say to themselves, "Oh, maybe I hit the button 16 milliseconds too early"? Or will they say, "This game has garbage controls"? I think any game developer knows the answer to this.

Queues

Enter input queues.

Here is a simple ruleset for an input queue

  • Inputs go input a single-slot queue
  • An input in the queue expires after [aNumber] of milliseconds (this must be tweaked for need & feel)
  • Anytime an input is taken from the queue, the queue is cleared
  • When the FSM transitions to a new state, the input queue is checked and if there is a viable input, the action for that state is instantly executed.

Now let's look at our above example with a input queue where inputs have a 33 millisecond expiration time. Our player can hit jump 2 frames too early and the jump will still occur as quickly as possible. Our player will feel like the controls are more responsive and won't feel the need to mash buttons.

Where I have been seeing the need for input queues recently is in combat systems that have multiple attack types. For example, players will have:

  1. A basic attack that can chain into itself for combinations
  2. A super attack.

The player will hit basic attack a few times and then super but their super input gets lost because they hit the button during the final few frames of animation of the basic attack. An input queue makes the attacks flow seamlessly into one another even when a player's timing it a bit off.

Conclusion

Finite state machines are one of the best tools in the game programmer's toolbox but a strict implementation without input queues can lead to controls feeling like they are losing inputs. More complex input queues can be created, like using multiple input slots with FIFO (first in, first out) execution. You can also make separate queues for different inputs types, like moving and attacking.

Some players will never even notice because they just mash buttons like crazy but more deliberate players will notice this issue instantly and, quite rightly, become frustrated with your game.

 

Filed under: Uncategorized No Comments
5Jun/176

Code game for kid’s birthday party – Gravity Falls

Party Time

My daughter turned 9 this past week and she wanted a Gravity Falls themed birthday party. For some unknown reason, we continue to torture ourselves by hosting the birthday party at our house. At least this gives me the opportunity to make a Gravity Falls-style puzzle game for my birthday girl.

If you haven't seen Gravity Falls. it's like X-Files meets Twin Peaks for kids. It's a great show and is rich with cryptids, mystery, and secret codes. I took it upon myself to make a scavenger hunt/code breaking adventure for my daughter and her friends. It was a bit last-minute thrown together but I think it turned out pretty good.

Threat from Bill

Bill Cypher is the big bad of Gravity Falls. He left a threatening note taped to the outside of the back porch door. I left it there and waited for someone to notice it.

Contained in the envelope was a threat from Bill on a notecard and and other notecard with holes in it.

The kids needed to align the two cards to find the next puzzle. This took some direction as their immediate instinct was to start Googling the solution to the puzzle. Once I put them off of that, they started looking throughout the house for some kind of hint. I had to tell them multiple times they had everything they needed to solve the puzzle. They finally got it.

 

Cipher Time

Taped to wall of the bathtub behind the shower curtain was the next clue.

There was also the Masonic cypher key along with this. When making the puzzle, my plan was to tie using Google and making the kids find they cypher key themselves. You see, one of the main characters of Gravity Falls is named "Dipper" but that's his nickname. His real name is "Mason", which is a bit of trivia my daughter is very proud of knowing. I wanted her to search for a cypher key using "Dipper's real name" but there were too many variations of the masonic cypher on the internet. I couldn't risk them getting a different one than I used, so I had to provide the correct key.

Cryptid Hunt

The message says "MONSTERS IN THE BACKYARD". The five bars at the top represent how many to find. The count of how many to find took them a while to figure out. They had fun hunting in the yard for the figures.

The five cryptids were found. I had to point out Bigfoot, as his brown color and where I placed him made him incredibly difficult to find.

Each cryptid had a letter written on the bottom. They kids had to unscramble the letters and find the word "shell". A large, pink, conch shell is one of my daughter's prize possessions, so she knew immediately where to look.

 

Shell Game

Inside the conch shell was a long strip of paper with a code on each side. One was a seemingly random set of letters, the other side had another Masonic code.

The code says, "USE PAPER TOWEL ROLL". This was accidentally more difficult than I meant it to be. I didn't take into account the code can be "read" from any direction! So they had a few false starts on the code. When turning it the right way, a real word appeared and they were off to find a paper towel roll, which I had placed among the party supplies. Of course, at first they overlooked the provided tube and attempted to just unroll a full roll of paper towels to get at the tube 🙂

Finally some smart cookie figured out to wrap the strip around the paper towel roll and the finally code was revealed, "LOOK UNDER THE MAT - YOU WIN"!

 

The End

Bill had a final note admitting defeat under the back door mat. He was there the whole time!

I have to admit the end was little anti-climatic. The kids already had tons of treats, so I couldn't think of a good prize to put at the end. While I put all this together pretty last minute, the kids really enjoyed the hunt. It was a nice break to get the kids to stop eating candy, get outside, and use their smarts.

 

Filed under: Uncategorized 6 Comments
24May/170

How to Hire a Game Designer

Hiring a Game Designer?

A question came up on Reddit/r/gamedev the other day, "How do you go about hiring a game designer?" This can be a difficult process. An artist can have a portfolio that clearly defines their skills but a designer's work is intertwined with all aspects of a game's execution. It be difficult to tease out their individual contribution. You can give the designer a test, which can be useful, but it only tells you a small parts of their skills.

I have a set of questions I put to potential game designers and vendors to identify what I think is the most important question – do they think like a game designer, and not just a game player?

A few points before the list:

  1. I am systems designer. I am looking for designers who can design compelling gameplay systems. I don't deal with more soft skills like character and narrative design. I work for Cartoon Network, those aspects are usually filled in for me 🙂
  2. I don't think there are too many "right"answers but I am often looking for "wrong" answers. I'll note what I identify as bad answers where I can.

 

Game Designer Interview Questions

To you, what is a game designer?

Is their vision of a designer role match your workflow? Or even better, can they offer something new and exciting? Or does it totally conflict with your culture?

 

Where do your designs start?

This identifies their process and where they get inspirations. Do they start with code? Pure mechanics design? Sketches? Do they challenge themselves with limitations? Do they need to take walks every day to think about design?

 

What discipline led you to game design?

This could be art or programming or more non-game disciplines like product design or architecture. This can expose their thought process on the aspects of design.

 

What would you tell someone else who wanted to be a game designer?

Does their ideal path to be a designer match yours? Do they talk about collaboration or solo? Do they talk about finishing something and getting it out?

 

What education or experiences would you recommend?

What are some things in their life that have been instrumental in shaping them?

 

What is your favorite type of fun?

Trying to see if they are familiar with the formal concepts such as LeBlanc’s 8 Types of Fun, Lazzaro’s 4 Keys of Fun, Koster’s Theory of Fun, Bartle’s Types of Players, etc. I know some designers hate the word “fun”, even to the point where people are not allowed to say it, but I want to know a designer recognizes the differences and can speak to them.

 

What are your main tools for design?

This is just to figure out people’s workflow and specific skills. Are they an artist? Scripter? Prototype maniacs? Excel masters? Writers? Paper prototypers?

 

What are your primary, secondary, and tertiary responsibilities?

This is where I am trying to see if they are “I write a GDD and hand it off” or “I constantly collaborate with everyone throughout the whole project” type of designers. Also, if they are designer/scripters, designer/producers, etc.

 

What is the greatest game system ever designed?

Looking for them to speak as a formal designer and not just a player. My favorite answer ever was “rock, paper, scissors” 🙂

 

What is your least favorite common game system and how would you fix it or replace it?

Again, looking for thinking and speaking like a designer, not just a player. Big red flags are generic gamer terms like “better multiplayer”, “better framerate”, and other common gamer complaints.

 

What is one of our games you liked? How would you improve it?

Did they do a bit of research about your company? Are their suggestions good? Do their suggestions align with your sensibilities?

 

What is one of our games you don’t like? How would you fix it?

Can they speak rationally and candidly about your work they think could be better? If they bring up something you already is bad, and the good candidates will, engage them in the process that produced that bad result and see how they would have handled the situation.

 

What is your greatest success and failure?

This is a standard interview question but what I am looking for is a candidate to be able to speak to their failure and say, 1) I messed up and 2) It was 100% my fault. If someone puts all the blame on someone else for their failure, that’s a big red flag.

 

What *don’t* you do?

Identify candidates missing skills or potential areas of improvement: writing, scripting, music, etc. This can also reveal red flags you may take for granted even talking about. I once had a seemingly good candidate tell me he had some grudge against programmers and wouldn’t talk to them! :O

 

I am holding a robot under the table, what does it look like?

This is a creativity test. Do they give a generic description? (e.g. “It’s metal and had some lights”) or do they go nuts (“It’s purple and yellow and has tank treads for legs and probably shoulder missiles. You gotta have shoulder missiles!”)

 

What is design?

Inspired by the book, The Design of Everyday Things, I am looking for an answer along the lines of “problem solving”. Extra points for “problem prediction”.

 

What is Your Ideal Job Entail?

This is to tease out a candidate who only want to do the fun parts of design – the initial concept and design. Do they want to bail when the process of execution, compromise, and collaboration becomes difficult?

 

Game Design Test

A common game design test is to give candidates a number of physical items and give them an hour or two to come up a game. That is a sound idea. I have another approach.

Give the candidate a relatively simple game design, like a simple runner or a shooter, and ask them design deeper systems. What I am looking for here is true depth. An inexperienced designer will start layering features (power-ups, classes, more levels, etc.) instead of depth on the core feature.

A good test for a level designer is to give them a core system, like jet packing or dashing, and ask them to design levels around the core mechanic. Do they ramp up use of the mechanic well? Do they provide clever twists on the design you didn't even think of? Do they pace use of the mechanic well?

Conclusion

Some of this is not useful for hiring junior canidates. It's unrealistic to expect a recent college graduate to be able to speak to many game design aspects in a formal way. Sometimes you have to settle for a glimmer of greater than "just a game player" in their interview and work to make them grow into smart designers. A strong mentor to help young designers make progress is important. Having activities (such as weekly design challenges, game jams, etc.) that clearly measure progress in place for the employee and yourself is ideal. You also have to face the reality that some people in the games industry never make the leap from passionate game player to smart design creator.

I have other, standard interview questions mixed in ("Tell me about your last job.", "Why do you want to work here?", etc.) but this are my go-to list to determine if candidates have the mindset to be game designers.

 

Filed under: Game Design No Comments
7Apr/170

What’s Missing from Video Game Randomness

Random-mess

I am not a fan of randomness in games. I try to keep it to a minimum as a designer and as a player, it's a turn off for me. The idea of grinding for a loot drop will wear me out real fast. I'm looking at you Let It Die!

I've had debates with colleagues about randomness and it's often presented that randomness hits the same compulsion as gambling. Regardless of whether you think that's good or bad, it's an effective player compulsion. It can be mining for ore in Minecraft (that next block might be diamond!) or trying to get rares from loot boxes, the excitement of taking a chance and (maybe) winning keeps players coming back. There is also the idea that it's not much different from rolling dice in Dungeons & Dragons. Pen & paper roleplaying is where the core of many video game design elements come from, right?

This argument has never set quite right with me but I could not put my finger on what was missing in the transition from rolling dice at D&D to random loot drops in video games.

Predictably Irrational

I often consume behavioral psychology books, lectures, podcasts, etc. in an attempt to learn more about human behavior. So much interesting insights on human behavior apply directly to game design. I also like to think it makes me more forgiving of people's flaws and more aware of my own but let's not get serious about self-reflection. We are talking about video games!

Recently, an entry from NPR's Hidden Brain podcast filled in what's missing from video game randomness – almost winning. Their research shows that when people almost win, it's nearly as fulfilling as winning – even though, in reality, a loss is a loss.

Lottery tickets, slot machines, dice rolling, and every other real world randomness lets the player see if they almost won. You got 4 of the 5 numbers on the lotto ticket! You got 2 of the 3 slot machine reels! You rolled a 19 – almost a 20! This is what video game randomness is missing.

The Solution?

We've identified problem of what's missing but the solution is tougher. Games have done real-world correlates, like slot machines and similar implementations when players get drops. Good examples are Borderlands 2's weapons slot machines and Jetpack Joyride's Final Spins. However, these are done in times where the player is not really "playing" the core game. These kind of interfaces also require significant graphic design resources.

To me, the question is – how could we make random loot events in moment-to-moment gameplay (like killing an enemy who drops coins but sometimes drops a rare crafting material) communicate the desired "you almost won" state?

I don't have the answer yet, but it's something I'll keep in mind moving forward on new projects.

Filed under: Game Design No Comments
18Jan/170

Creating Game Depth with Adverbs

Intro

One of the first game design books I ever read was Chris Crawford on Game Design. It's a great beginner design book and introduced me to the concept of "verbs" in game design. Crawford suggested that the more verbs a game has, the better the game. A game is great when you can run & jump, but being able to run, jump, AND swim is even better!

However, adding verbs is often very expensive from a development standpoint. No developer ever wants to hear, "Your game is great but could you just add jumping, swimming, shooting, flying, hiding, or something?" Hearing something like this is often a case someone giving you a solution (add more verbs) instead of identifying the issue (gameplay needs more depth).

 

The Pitfall of Power-ups

A common misstep in a "your game needs more depth" situation is to add gameplay modifiers such as power-ups or relying on more content.

A bunch of power-ups cannot save a shallow core game design. In our shooting gallery example (you'll see below in a minute), a 3-way shot might be pretty cool but your player goals don't change. A player would still run out of gameplay when hitting 20/20 targets. Power-ups can make a game more interesting but the game is still built on a base of sand. You must make gameplay deeper before you start layering in gameplay modifiers.

Lots of content looks appealing on the back of a box (More levels! More skins!) but they cannot save shallow gameplay. Again, your core gameplay has to be strong, and not easily exhaustible, before players will keep coming back for more and care about your expanded content.

 

Adverb-ing?

So following in the spirit of Mr. Crawford's verbs, I propose adverbs are the way to add depth to your verbs. It's not just what a player a can do, it's how they can do it. It's also when they can do it.

OK, let's make an example to show adverb-ing in action.

 

Example Game

Imagine you have a simple "shooting gallery" game where objects move across the screen horizontally in 3 stacked rows and a player  can move horizontally at the bottom of the screen and shoot the objects. The verbs here would be "move" and "shoot". This is a simple game type but you want to make it more compelling. The first step is to add a scoring system. (We are going to use this scoring system as a rough estimate of game depth.)

  • Every object you hit is worth 10 points.
  • Each round spawns 20 objects

Now the player has a score delta potential of 0 - 200 points in increments of 10. Players can replay the game but once they hit every object in a round, there is nothing else to do – i.e. no more depth to the game.

Now let's add some adverbs to "shoot". Let's do "shoot quickly". Now each object is worth more points the less time it has been onscreen. Let's say an object is onscreen for 3 seconds and now the score per object is:

  • 10 * (3 - timeOnscreen in milliseconds rounded up)

Now we have a score delta 0 - 600 with much greater granularity. Players are now challenged to shoot every object but to do it as quickly as possible. An additional layer of depth has been added to scoring, but more importantly, now the player needs to make choices since all the objects are not the same value at a given time. The player can ask themselves, "Should I shoot this object that has been onscreen for a while and risk missing one that just appeared onscreen? Or skip it and take a guaranteed shot at more points?"

This is a shooting game so clearly we need "accurately" as an adverb!

  • The more centered the shot, the more points it is worth
  • 3 concentric rings of score – 10, 25, 50.

Now our score delta is 0 - 3000.

Let's add a bit more depth with the adverb "far". The farther the player's shot travels, the more the object is hit is worth.

  • Objects in the back row are worth more than the front.
  • Row bonuses are x1, x1.5, x2

This adds depth in scoring and choice as well. Player's may try to "dodge" the front row objects to hit the more valuable back row objects. Now our score delta is 0 -4500.

Now for the big gun adverb, "consecutively". We are going to add a combo system! Let's say if a player keeps hitting objects within a 1 second window (i.e. no more than 1 second between objects hit) they get a combo bonus.

  • Combo bonus =  +0.1 per combo
  • 2nd object hit in combo = (50 (accurately as possible) * 3 (fast as possible) * 1.5 (average row bonus)) * 1.1 = 330
  • 3rd object hit in combo = (50 (accurately as possible) * 3 (fast as possible) *1.5 (average row bonus)) * 1.2 = 360
  • ...
  • 20th object hit in combo = (50 (accurately as possible) * 3 (fast as possible) *1.5 (average row bonus)) * 3 = 900

Now our score delta is 0 - 9,225. Now this is practically an impossible score. No player will be able to hit every target dead center, as quickly as possible, and combo the entire game. Or maybe they will. Players constantly surprise developers 🙂

 

Adverbs of Time

I am bending some grammatical rules here with adverbs of time, so bear with me.

Another power adverbs have is adding depth without adding buttons. This is especially useful in mobile development. One of the best ways is to add depth is creating actions done while performing other actions. For example, in our move & shoot game, shooting while moving could have a special action like curvy the shot or making the shot move more quickly. Or shooting while not moving gives the player faster rate of fire..

Nintendo are the absolute masters of hiding depth in their games but maintaining simple, often one-button, controls. Some of the best examples of this are in the 3D Mario games:

  • Jumping while jumping straight up does a butt bounce
  • Jumping while jumping forward does a dive
  • Holding jump while diving performs a belly slide
  • Jumping while changing movement 180 degrees performs a back flip

These kinds of actions don't have to be purely player controlled. The same verbs can be modified by the context of the action. Performing an action when hit by an enemy or near an environmental obstacle can modify core verbs.

 

Adverbs Add Depth

You can see by the above exercise how much depth can be added to a very simple game with a few adverbs. If we use our score value as a measurement, our 4 adverbs increased scoring depth by over 45x. The adverbs also added a number of choices the player will have to make to maximize their score.

You can modify actions and controls (without adding buttons) by using adverbs of time or context.

So they next time you have a game and it's feeling flat, ask yourself not what verbs to add but what adverbs you need.

 

Filed under: Game Design No Comments
25May/160

Scripting MOBA AI

I have recently gone back to our MOBA, Adventure Time Battle Party and it reminded me about how I wanted to write up a post about the AI. There were a number of important lessons we learned and I wanted to share them.

 

Ground Rules

We didn't have much time to pursue, what I would consider, strong AI on this project. However, I love working with AI so I made time on weekends to work on this. So to be economical, our explicit goal for AI in Battle Party was "don't be dumb", which is very different from "be smart". Also, my approach to AI is rooted in "make it fun" more than an academic approach to AI, where you might be trying to emulate an algorithm or advanced behavior.

Also, AI was an aspect a number of our team wanted to learn. To keep things simple, I set up and simple state-based AI system and wrote a number of tools for newbie AI scripters to use.

One thing that's important to me is: don't cheat. I try as much as possible to not leverage any data a real player would not have. I don't want to rely on letting the computer know every last detail of a player's state or inputs and make decisions based on that knowledge. There are times when the CPU overhead of certain checks are just too expensive, and in that case, I allow myself to cheat.

 

The "Danger" Measurement

The backbone of the system was a collection of systems that produced a "danger" value. This produced a simple integer that allowed the scripters to make decisions. This system took into account:

  • The number of alive players
  • The number of nearby ("nearby" being 1.5 screens IIRC) enemy players
  • The number of unaccounted players on the mini-map
  • The number of nearby enemy minions
  • How far ally/enemy minions are pushed. This was a +/- value depending on where the minions were pushed relative to the mid-point of the map.
  • A queue of when the AI sees a player use powers. This is a good example of not cheating. Instead of looking at the player cooldowns, when the AI sees an onscreen player use a power, it lowers the danger value by a specific value for a certain time. Higher value powers lower the danger value more.
  • The powers currently available to the AI
  • Player/AI health values
  • Player/AI buffs
  • Being close to an ally/enemy tower
  • Some other items as well.

 

Basic States

The basics were patrol, attack, and flee. Since the more danger there was, the more an AI champ would flee, the back and forth between and attack and flee states created some good dive in/dive out behaviors and some pretty good kiting. If the danger value got too high, the AI would flee to allies, health pick-ups, towers, or the base. If the AI had a power that created movement, it would use this power to run away if pursued (i.e. in a flee state and a champion was close).

If the AI didn't have a champ to attack, it would push minions, help allies, capture altars, patrol, or do special actions. more on social actions later.

 

Listen for Events

Loads of events can trigger a decision to change the state – taking damage, a tower being attacked, the base being attacked, an ally champion being attacked, the danger value changing significantly, altars being open or captured, etc. Many events. Lots.

 

Special Actions

In my experience, I have found you can throw in 95% of random behaviors and 5% of really smart decisions and player's will think your AI is a genius. With this in mind, I did a couple of one-off, hard-scripted behaviors to use occasionally.

  • Tower Dive – Very rarely, when the danger rating was very low and a player was hiding under a tower, the AI would tower dive. During this brief time, it would just go HAM and ignore the danger rating and try to kill the player.
  • Ambush – If the Ai had nothing better to do, it would hide in the brush for a time and wait for players.
  • Dodge – If the player used an aimed power and the AI had a power that could be used to dodge, it would do so.

 

Other Tools

I wrote a number of tools to facilitate other scripters. Things such as "do I have a clear shot to my target?" This mean you could fire a projectile without being blocked by minions. There was a similar check that informed the danger rating on the AI, "does the player have a clear shot to me?

There were quite a few utilities like "find closest safe point", "are targets in range of my powers", etc.

 

Leading the Target

One of the biggest lessons we learned was about the value of trying to lead the target when aiming powers. Every scripture's first instinct was to try to predict player movement and fire where the player would be in the future. This might be good for a game where player velocity cannot be changed instantly, like FPS or racing game, but in a MOBA a player can "juke" (i.e. dodge) in any direction instantly, so the value of prediction is greatly decreased. Experienced players will nearly always dodge. We found that it's statistically more likely to hit player just aiming randomly in a radius around the player than trying to lead their current movement.

 

Conclusion

The AI turned out pretty good considered the limited resources we had. Quite a few people got to try their hand at scripting AI and they only needed to worry about strategies around the character's power set, instead of learning about managing behaviors states & calculating distances.

Filed under: Uncategorized No Comments
24May/160

Multiplayer Ranking Systems vs. Declining Population

The Problem

A solid ranking system is required for a healthy, competitive online game. You want same-skill players to be facing each other – you want your newbies playing and your veterans playing veterans.

A good skill system will allow high-skilled players to quickly rise in the ranks and only face like-skilled opponents. You want these good players away from the lower-skilled players as quickly as possible.

The more granular the system you have, the better matched players will be. Having numerous ranks gives players goals to work towards and the more goals the better.

But what happens a couple years after release and your game's population dwindles? You may still have a small, but dedicated, set of players who can no longer find matches due to your ranking system. What was previously a great feature of your game has become a detriment that will kill your game's community all the faster.

This unfortunately affects the players at the top ranks the most. These are your most passionate players and they are already in the smallest population pool. They will be punished the most with the longest matchmaking times.

 

A Solution(?)

A system that adjusted the number of searchable tiers separately from actual ranks would be better to offset population reduction. These searchable ranks would  shrink and grow depending on average concurrent users.

In our previous game, we had 4 ranks and 14 sub-ranks. We did matchmaking between ranks, and then allowed to expand to more ranks after a set time. Five minutes per rank, if I recall correctly. This means a high-rank player might have to wait for 15 minutes to search the entire player base for a match.

What would be better is something along the lines of:

  • Player population high = Matchmake as 4 ranks
  • Player population low = Matchmake as 1 rank

And some couple gray areas in between. This would mean when the game is healthy there are loads of ranks and similar skill matches, but as population dwindles you sacrifice skill-matching for getting games started at all. I think this is a sound trade-off.

Filed under: Uncategorized No Comments
3Nov/154

On copying games (re: Battle Party)

"Why did you copy that other game? Don't you want to make something new and original?"

Of course (nearly) all game developers want to make something new and original but there are a great many factors that inform a team's decision on what game to make. I want to give my perspective on the decisions that may go into making an "in-genre" game. I hope I can change a few minds that think when a game is influenced by another game, that the developers are not just creatively bankrupt or making a "cash grab".

We are fans

This might be a surprise, but most game developers are game players too. We are fans of all the same games every one else is playing. You know when you sit around with your friends playing a game and say, "I like Game XYZ, but I would LOVE this game if it had this and that"? Well, game developers have those same conversations and we (sometimes) get to do something about it! We can make the game we would love to play.

For Battle Party, the team liked LoL, DOTA, and other MOBAs. However, we are filthy casuals and find the standard MOBA formula too complicated, too toxic, and find the games take way too long to play. We wanted to make a MOBA for people like us.

 

Existing Team & Tech

OK, so maybe you want to make a FPS with a grappling hook or, in our case, a super streamlined "Arcade MOBA". What existing game engines or code base do you have already? What does the current team have experience or expertise making? Do all of these things line up?

Our team had a lot of experience with 1) multiplayer competitive games and 2) Diablo-style isometric games – a perfect fit for making a MOBA.

 

Business Goals

Now you have the game you want to make and the team to make it, but does it align with your parent company's goals? Is anyone going to give you time and funds to make it?

In our case, CN needed a competitive online game with global appeal. A game where we could roll out new character-specific content over a long period of time.

We had been wanting to make our take on MOBAs for a long time and the opportunity finally presented itself. We had the right design for the business goals, we had the team and tech, it was a perfect fit!

 

Deadlines

Game deadlines almost always slip. However when making games for a television company, there is a lot on the line. There are episodes of shows being produced, commercials being made, worldwide marketing plans being created – the game has to go out on time. The is no wiggle room, not a single day.

Here is where the risk of something new is a huge gamble. We have to ask ourselves, "Can we make a game that's new & innovative, in a year, with this team, that's good, on time and in budget? Can you 100% guarantee that?" There is absolutely no way you can guarantee that.

I have worked directly on 50+ games and consulted on 100+ more and I have seen how many times something truly unique, something that sounds really exciting on paper, ends up either a) taking way longer to "find the fun" than you imagined or b) turned out being bad in development, no matter how much work you put into it.

 

Conclusion

The next time you see a "copy" of game, consider that it might be the game the team was really excited about making. Maybe they had the right skills and tech already in place so they could worry about the fun part of development – making the game fun and not having to worry about making it just work. Maybe their parent company's needs aligned perfectly with something they were passionate about. And maybe they had 6 months to make it.