Veni, Vidi, Video Game

Caveat lector: i write this through bleary, unslept eyes.

The third annual TOJam event wrapped late last night. This year, around 125 developers crammed into a scary warehouse at the edge of town to spend one weekend creating all kinds of video games about cheese. Cheese was this year’s theme. Some developers, like Shawn McGrath and myself were gung-ho to create non-cheese-related products (though for my part, my game contains poetry which is – at its core – terribly cheesy.)

Click to play the fruits of my labour, Here Be Dragons.

Ryan Henson Creighton at TOJam 3

Skilled shutterbug Brendan Lynch grabbed some great shots at the event. Click on the image of Yours Unruly to see the gallery.

Due to some project-related obligations, i wrote to the organizers on Friday and cancelled my participation, forfeiting my spot at the Jam. But fairy tales can come true, and by the end of the day, all the fires had been put out on the project. i packed an extra monitor into my knapsack and biked it down to a dodgy part of the city apparently dubbed “Corktown”, but better known by locals as “ugh.”

Dodgy Corktown

If you see this many dead-end streets and train tracks on Google Maps, don’t go.

Building Games in a Mafia Dumping Ground

When i rolled up to the derelict factory, it was immediately familiar. i had been there before, for a meeting with a pair of Facebook app developers called Refresh Partners. Back then, the place reminded me of the warehouse where Batman knocked Jack Napier (AKA the Joker) into a vat of acid. Apparently, scenes from Chicago were filmed there, as it offered that perfectly gritty bleak brick prison motif.

By luck of the draw, i had one of the better rented chairs in the building, because it had working wheels and armrests. Well – armrest, really, because one of the armrest cushions was missing. The chair owner had jury-rigged a new armrest by binding bunched-up bubble wrap to the chair with electrician’s tape. This assembly, as functional as it was, betrayed the danger of a hidden nail sticking straight up through the wrap. Thank God that my tetanus shots were up to date. i’m willing to suffer slings and arrows for my craft, but i draw the line at lockjaw.

We came and went via a back stairwell, which was home to a dead mouse and numerous other unmentionables that, fittingly, i won’t mention. The hundred-odd (and i do mean “odd”) participants were spread out between two rooms, one of which was stiflingly hot and the other which was freezing cold, thanks to windows that wouldn’t close. i was set up much better than most folks, some of whom were clustered around a shared folding table beneath a fluorescent lighting fixture that hanged precariously from one bolt.

Sleep When You’re Dead

After riding home for some sleep at 2:30 Friday morning, i stayed awake from Saturday morning at 9:30 to Sunday night at 11:00 PM, when the event ended. Being without my air mattress, which i found indispensable last year, i tried to take a nap while lying across three chairs lined end to end, but i was constantly awoken by the carpenter downstairs who spends his early mornings loudly slamming piles of wood together arhythmically. i troddled off to the hotbox room to snooze there, but that part of the building was emitting some strange beeping noise loud enough to keep me awake. At last, there came a vacancy on one of the dodgy couches in the nearby makeshift lounge, but by that time i was too tired to sleep.

That said, i was much more relaxed this year than last, although i think i stayed up the same number of hours. Compare and contrast this year’s photo from last year’s (also by Lynch):

Ryan Henson Creighton at TOJam2

Beware, Amish: spurning caffeine has its hazards

The key difference, i think, is that last year i was determined to prove myself. i wanted to show the world – and particularly my team supervisor – that locking me up writing game documentation for two years was a waste of my talents. To that end, i was dead-set on creating a finished, functional game if it killed me. And it nearly did.

My success this year started with my cancellation. i figured that having missed a day, there was no point in even showing up. With the pressure relieved, i was able to really take my time and tune into the game design process, without worrying so much about being perfect.

The Game

The game i chose to build was one from our internal game ideas wiki called Here Be Dragons. Here’s what the wiki entry looked like:

Sea Monster

It’s Like
That spider game in the junkyard where you pull the spider back like a slingshot to grab flies.

Overview
You’re a sea monster eating ships.

Not much to go on. The entry was in there just to remind me that i really wanted to make a sea monster game. Simple concepts make for simple games. Simplicity is crucial to turning out a finished title in a weekend.

The spider game i referenced was a great little Flash game i remember playing a few years back. You play a daddy long legs in a junkyard. You click and drag the spider’s body to jump up in the air and eat insects. The game was technically very impressive; the spider’s legs programmatically contoured to the shape of the terrain. The artwork was also quite nice. If anyone has a link to the game, please let me know!

i figured the same pull-back-and-release mechanic would be great in a sea monster game. Your monster waits at the bottom of the sea. Pull back and release to swim up breach the water. If there are any boats in your way, you eat them. Bonus points for eating one boat on the way up, and another boat on the way back down.

This all sounded good in my head until i actually started looking at pictures of sea monsters. Somehow, i had forgotten that they were all slinky and snake-like. A mathematical springy game mechanic is one thing, but add to that some chain physics, and suddenly the task seemed daunting. i’m no math wizard, and i never took trigonometry (though i’m aiming to fix this gaping hole in my understanding within the year).

i thought about the game for weeks leading up to TOJam, and eventually conceived of a game where the sea serpent is stationary and the boats move past it. All i’d need is a locked chain mechanic. This seemed a lot more reasonable.

Math for the Numerophobic

i started with an excellent Flash chain physics tutorial by Alejandro Quarto. His example contained all the trig i’d need to find the distances and angles between the sea monster’s neck segments.

Alejandro Quarto's Chain Physics Example

i spent the first few hours of TOJam3 playing with Alejandro Quarto’s balls

In Alejandro’s example, the chain segments detect and prevent collision against each other. This was the first aspect i dropped, because it wasn’t important for my monster’s neck to collide with itself. Instantly, my chain moved much more smoothly. The trouble was that i needed a chain anchored to one point, but Alejandro’s chain was free-floating.

Here’s how Alejandro’s chain works: the last ball in the chain follows the mouse. As it’s being pulled around, all subsequent balls look for a larger-than-acceptable gap between themselves and the previous ball in the chain. If the gap is too large, a ball will tighten that gap by moving along the angle between itself and its companion ball. The gap that Alejandro set is the distance between the balls’ centrepoints, so you get a nice tight chain. (For the sea monster game, i tightened the chain even further so that the segments had more overlap.)

In order to affix the chain to one spot, i had to reverse Alejandro’s logic. First, i told the end segment to stay put. Then i told all subsequent segments to follow the mouse. Finally, i reinstated Alejandro’s logic to keep the each ball from straying too far from its parent segment. i kept the ball shape for the segments because circle segments look the most fluid when bent.

The end result is a really fantastic-looking and -feeling segmented sea monster neck. Thanks, Alejandro!

Programming in a Snap

Finishing off the rest of the game logic was a piece of cake. i made an early decision to angle the sea monster’s head as it followed the mouse, which players really reacted to. There was no magic to it:

Sea Monster Head Angles

i love it when graphics provide the illusion of technical prowess

i just chose a line down the middle of the sea monster, and chose a distance to either side. If the head was within that threshold, it showed its “forward” graphic. Otherwise, it showed its “left”- and “right”-facing graphics depending on which side of the threshhold it was on.

For the y axis, it was the same deal. When the head is within the middle threshhold, show the “straight” graphic. Otherwise, show the “up” or “down” graphic.

This provided the illusion of the sea monster looking around as its head follows the mouse. It’s not a technically brilliant scheme, but it is graphically labour-intensive, requiring nine pictures of the head (six actually, because the “left” pictures could be flipped for the “right” side). Then double that, because each head picture had to have a “mouthOpen” and “mouthClosed” state. Then add a few more pictures of the head with pursed lips for when the sea monster spits out the ship rigging. Finally, i lost the benefit of mirrored images when i added some shadows and highlights later.

Here are all the head images:

Here Be Dragons Head Images

Attention, mermaids: he’s single

Gameplay Polish

The game was pretty well finished by Saturday night, and i had the rest of the weekend to add polish and to playtest. i had a few TOJam organizers sit down with Here Be Dragons. Jim thought the sea monster’s tongue was a laser, and so he didn’t grasp the fundamental game mechanic or goal. To fix this, i took his suggestion and changed the monster’s tongue from purple to pink. Then i added a chunk of code to depict the things the monster was eating being retracted into its mouth; until then, you’d tongue-lash items on the boat and they’d disappear, leaving a more laser-like impression.

Emily wondered why she had to click to spit stuff out. Then i started to wonder that too, and i took it out – now you just have to look up to spit. Both Emily and Jim didn’t understand why the sea monster could eat the mast, sailors and crow’s nest, but not the sails. So i created a rule where anything fleshy was edible, and anything not-fleshy had to be spit out. (One exception is the ship’s hull, which is implied to be full of delicious, crunchy sailors).

Originally, there was only one sailor pacing around the deck. Jim wanted a whole pile of things to eat, so i added a sailor in the crow’s nest, a sailor belowdecks, and a captain in the stern of the ship. Interestingly, most players focus only on the pacing sailor, even though he’s more difficult to catch. i think this is because he’s the only sailor with a sound cue – footsteps on wood. Testament to the power of sound.

Early play tests revealed that it wasn’t clear that the sea monster was spitting anything out, so i added animation of things being spat and landing in the distance. i animated this programmatically, which took much more time than it would to hand-animate it.

When i conceived of the game, i thought the passing ships would shoot harpoons at the sea monster, and that i would have a lives/death/game over system. i asked the other developers whether the challenge of filling the monster’s stomach with hard-to-snag sailors was enough, and they said “sure”. “No scoring?” “Nope.” “No timer?” “Nope.” i came to regret listening to those opinions.

Graphical Polish

i had the luxury of sprucing up my flat graphics with a few more gradients and highlights. Here are some comparison shots:

Here Be Dragons Graphics Improvement #1

Ahh – much better

The Result

The Big Reveal on Sunday evening is always exciting. You have some teams kicking back, relaxing and adding the finishing sparkle to their title screens, while other teams frantically, desperately try to get their core game mechanic to function properly. It’s the thrill of victory and the agony of defeat everywhere you look. When you cruise around to different stations looking for games to try, it’s always a little sad when you find an abandoned station with nothing to show for a weekend’s worth of toiling.

As usual, there were a lot of games that were too complex for their own good. You’d roll up to a station, and the developer would be there, looking all nervous, unable to abandon his post because his game was too complicated for people to figure out on their own.

“Okay okay! So, you put your fingers on the WASD keys to control the movement of the black triangle. Move the mouse to kiss the zombies. Click the mouse button to increase the number of units on the screen, and shift-click to make a sandwich. If you need to drop your superbomb, step on the Rock Band drum pedal. And to look around the room, tape this Wii remote to your forehead.”

i was determined to let my game speak for itself, so i wandered away from my station and kept an eye on players from a distance. i did have to tweak the sailors’ deliciousness level for the demo, because it was taking too long for people to get to the end of the game. Players would abandon the game in the middle of a session, and the next person would sit down in the middle of the game and miss out on the silly poetry that bookended the experience.

In the end, the changes that came from that late-night playtesting served the game very well, but i should have added a scoring system. i implemented the “YOU ATE:” tally screen within the final hour, hoping that the “hulls eaten” tally would inspire people to go back and try to eat an entire ship (the most difficult task in the game), but no dice: there were just too many other games to play.

Tips for Future First-Time TOJammers

Designing a game to hold someone’s frenzied attention span in a room full of nerds n’ noise is slightly different from designing a game to captivate and engage the player across many hours and repeat visits.

i recommend a dead-simple control scheme. Mouse is preferable to keyboard, and single-clicking trumps click-and-drag. i’m already not a fan of clicking and dragging, especially for kids’ games, although all my kids teevee clients ask for it. Interestingly, in the two second timespan it takes for you to sit down to a game and then abandon it, all but one of the TOJam3 games that required clicking and dragging were too obtuse for me to figure out on my own, and i didn’t spend any time with them.

The one exception was Happy Goat Lucky, which used the pull-back-and-release spring mechanic that i had initially planned to use for Here Be Dragons.

And lo, it comes full circle.

17 thoughts on “Veni, Vidi, Video Game

  1. Jim McGinley

    That TOJam summary part of this entry was one of the funniest things I’ve ever read. Entirely accurate, extremely perceptive, and a great perspective. The people that attend TOJam really do put up with a lot, and it’s much appreciated. I like to think of our current growing pains as charm.

    You forgot to mention the delerium that set in Sunday morning at 5:00am. If memory serves, you suddenly burst out laughing at your machine. After several outbursts (followed by several apologies), you took off your headphones and said something like this…
    “okay okay okay… you HAVE to hear this… it’s the greatest burp sound of ALL time”
    (cue more laughter)
    I listened to it, and it was pretty damn good.

    “The Big Reveal” is a great name for the TOJam ending,
    I’m stealing that for T.O. Jam #4 unless you object.

    Some people were planning on naming the dead rat in the stairwell. I meant to remove it, but completely forgot. I think we may have just found a soulmate for our lonely GoatOnAPole.

    Reply
  2. Jim McGinley

    Forgot to mention… I’ll play your game tonight and get back to you. If any TOJammers are reading this, we would appreciate it if you could wait on posting your game. We’d like to have some “new” games to launch on the TOJam website to generate interest. I realize we’ve been unclear about this, but we’re finalizing plans as we speak and we will be in touch the next day or two. We don’t move as fast as Ryan, but he’s KARAZY.

    Reply
  3. Alejandro Quarto

    Hi!

    I’ve played your game for a while, and it looks really cool!

    I want to thank you for mention my tutorial at actionscript.org, and also use it to build a great game. You made a good job with it :D

    Thanks again, and you can visit my blog for more examples like that one.

    Cheers!

    Alejandro

    Reply
  4. Jim McAwesome

    I am one of the people that recommended against the scoring and timer options. I stand by that awesome decision. It doesn’t suit your game. You’re a freaking monster man!!! You’re eating sailors!!! You’ve lived for centuries!!! What do you care about time or score? You wear no watch. You answer to no-one. Adding scores and timers without context is for the weak and feeble minded. You’re better than that.

    One Idea: Start with a half empty stomach that’s constantly draining. You need to eat sailors just to stay alive (common problem in the animal kingdom). Your goal is to eat a ton of sailors quickly, so you can fill your stomach and rest. Two Endings: You die of starvation, or “win” the current ending.

    Be warned, I just played the final version, and I am offering more opinions.


    What I like:

    1. Controlling the monster’s head.

    2. Shooting the tongue – even if I miss.

    3. Grabbing a sailor with my tongue.


    What I think can be improved:

    1. There is really only 1 sailor to eat. Plus, there is only 1 ship.
    I wanted more ships, each with more sailors.
    Currently, I eat 1 sailor and then wait for more.

    2. I’m fairly confident that players only see the sailor that walks back & forth,
    since the other sailors (crows nest and portal) are somewhat invisible.
    I bet anything TOJammers thought they were eye candy or protected by the wood.
    When I said I wanted more sailors to eat, I meant I wanted 10 sailors on deck.
    Since the boat is already moving, I want 8 of the 10 sailors to be standing still,
    with only 2 fatter sailors (fill your stomach faster) walking back & forth.
    If I shoot my tongue quickly 10 times, and aim perfectly, I’ll clear the deck. AWESOME.

    3. Remove the ability to eat the boat. Who wants to tongue a boat?
    Plus, your graphics and animation are so good you’ve convinced me my flimsy tongue
    couldn’t possibly destroy a solid wood boat.

    4. Spitting and Chewing is really a penalty for using your tongue well..
    Spitting and Chewing prevent me from eating more sailors.
    You solved this by having only 1 boat with 3 sailors, but you solved the wrong problem.
    While I like the variety, currently I spend more clicking chew and flicking spit
    than I do firing my tongue. The problem? Firing my tongue is a LOT more fun than chewing or spitting.
    Anything that delays my ability to fire my tongue is bad.

    5. Once you have more sailors, spitting and chewing will become a huge issue. So…
    a) Remove spitting (I repeat, who wants to tongue a boat?)
    b) Require penalty chewing only after eating 10 sailors (10 fat or 10 regular for strategy).
    If you remove spitting, allow me to fire the tongue in the sky to grab bonus passing seagulls.

    Who am I?
    Just a man…
    standing in front of a monster…
    asking her to love him.

    Reply
  5. Ryan

    i agree on almost all accounts.

    During the Jam, i had to decide between adding more boat types, and polishing the graphics. i focussed on graphics, because too often during my career i’ve focussed on features. The result is that i have a really cool, deep game that looks like ass, and i’m embarrassed to show it. There’s one game in particular from my YTV days that i was REALLY proud of, but the graphics were so feeble, i didn’t like to show it to people.

    Topping the list of game improvements are additional boats (where “boats” can also include jumping swordfish, mermaids, and the seagulls you mentioned … i had that idea too). Numerous people requested fire-breathing, which was also rolling around in my head from the very beginning. If i have an idea, and everyone who plays the game brings it up, i’d be a fool not to implement it.

    The spitting/chewing thing is very interesting, and cracks open a big can of game philosophy. When i was building kids’ games for YTV, i’d have something like Pac Man, and the kids on the boards would say “i thouhgt it was a rully cool game. i liked eating the dots. i didn’t like being eaten by goasts. take teh goasts part out and the game well be good.”

    (kids can’t spell worth a damn, btw)

    Time and again, i’d hear this: keep the fun part of the game, but take out the challenging part. Occasionally, i’d do it, and then the comments would read “too eeeeeeasy!!!” It’s a fine balance. Do game developers know what players want better than the players do? i’m not sure.

    Spitting and chewing in the sea monster game both make the game more challenging, but less fun. The real trick, i guess, is to come up with a FUN challenge.

    Lucasarts did this with their beloved adventure games. Competitor Sierra On-Line built games that were all about killing the player whenever he tried to do stuff … in some cases, this just meant walking into a room. Lucasarts understood that the puzzles were the challenging part – not the deaths – and eliminated death from their games. To this day, i’m a much bigger fan of Lucasarts’ games than i am of the Sierra titles.

    There’s a shift afoot to build games that are more about fun and less about challenge and punishing levels of difficulty! Check out this article about two GDC 08 lectures for more:

    http://untoldentertainment.com/blog/2008/02/26/best-of-gdc-2008-best-panel-or-lecture/

    Reply
  6. Chad Elston

    I remember playing your game on Sunday (I did the Moon/Cheese game with the astronaut). I think yours was probably my favorite. I loved the gameplay mechanic of clicking and watching the monster snap it’s tongue like a whip at the little fisherman dudes. The whole “spit” and “chew” elements were really neat too. Great art! Great sound! fun game! Good job dude. :)

    Reply
  7. Pingback: TO Jam and Boys Noize « 4Chad

  8. Pingback: TOJam #3 and Boys Noize « 4Chad

  9. Ryan

    Hey – thanks a lot, Chad! If you have any suggestions for improving it, please let me know. i’m probably going to take another crack at it and build an enhanced version, taking into account all the feedback i’ve received.

    i’m frustrated that i didn’t even *see* your game at the end of the event, let alone get to play it. That’s the way it goes – it’s such a mad, crowded scramble on Sunday night, and i always miss at least half the stuff on display.

    i took a look at your screenshot – i DO remember sitting down with you as another pair of eyes while you figured out that your missing text problem came from not embedding the font.

    At that time, i suggested you embed small letters, capitals, numerals and punctuation. You took me by surprise and asked me whether including the 95 “Basic Latin” characters wasn’t the same thing. i said “no” because at the time, i thought that character set might have included accented characters like é, but dig it:

    http://jrgraphix.net/research/unicode_blocks.php?block=0

    So the accented stuff isn’t in there, but there are a few wasted characters in the top two rows. i think that’s why whoever trained me told to include just the four character sets. i’m sure it works out to a few milliseconds of load time, but life is short! :)

    Reply
  10. Jim McCoolio

    I’ve got to stop reading your blog, I feel compelled to respond.
    I think I’m addicted …

    – – –
    My suggestions, unlike the ones you mentioned, are SMALL and can ALL be implemented within 1 hour. You’ve already got the code for the ships and sailors, dump them in an array/collection and away you go. Don’t create a new type of sailor, just instantiate more of the existing walking sailor (and stop him from moving 8 out of 10 times). I believe most of my other suggestions can be implemented by deleting or tweaking existing code (no need for new graphics or substantial rewrites). You can quickly implement the ideas to see if they improve the game, and keep them if they do.

    I find tips like “have the dragon breath fire” entirely unhelpful since:
    a) No thought was put into it
    b) It could take a substantial time to implement.
    c) Once you added dragon breath fire, next up is dragon breath ice

    Here are some equivalent ideas:
    a) Let me build my own monster
    b) A Cruise Ship should sail by with tons of ladies sunbathing on deck.
    c) Record my game so I can play it back and upload it to my friends
    d) Use ragdoll physics for the sailors and aforementioned cruise ship passengers.
    e) Have an iceberg come out that crashes into the monster. Using my head, let me lob broken pieces at the ships.
    These ideas are yours free of charge!

    Plus, does adding fire really add anything to your game?
    i.e. If I can already destroy the ship with my tongue, why do I need fire?
    i.e. I’m already spitting, chewing and tonguing, how would the player even choose fire?
    i.e The game is short by nature, is lack of weapon variety even an issue?
    i.e. Would TOJammers have stopped abandoning your game if you added fire?

    It’s worth noting that my seagull “idea” is the most infeasible idea, and bordering on being crap as a result. I was figuring a 2 frame flapping V would be easy enough to do, which is why I suggested it. The seagull wasn’t the important part (it doesn’t suprise me you thought of it). What’s important was that when I click, I tongue. Switching to spit feels like the monster missed my click (since he’s not tonguing).

    – – –
    “Time and again, i’d hear this: keep the fun part of the game, but take out the challenging part. ”
    “Do game developers know what players want better than the players do? i’m not sure.”

    These hint at a broader issue. If you’re creating games for a business, and are targeting a market that isn’t game developers, then game developers don’t know what’s best. If you’re creating games for yourself (a la TOJam, a la my Hobby), you should create games that YOU want to play. If you think it’s fun, it should be in your game. Not only will like your game (no matter how crappy), but you’ll remain passionate about it. i.e. If you want scoring and timers in your game, put them in your game.

    It doesn’t matter what I or anyone elses thinks, there are plenty of games for us already. The games I remember most are the ones where the developer relentlessly stuck to his/her vision, and kept honing it. If you don’t think an idea is good, that’s all the justification you need to get rid of it. In that respect, games are starting to resemble music and film. Remember the immortal words of Maestro Fresh Wes, “Stick to your vision”.

    – – –
    I agree that more people are talking more about fun versus challenge. However, I don’t think it’s a shift, and it’s certainly nothing new (i.e. Bizarre Creations spent a long time deciding how much of Project Gotham Racing was available right away). The market is simply expanding, and different people want different things from games. The “new” style of non-challenging casual games (“I should be able to see everything regardless of my skill level”) will eventually replace existing TV shows and Movies. It’s also worth noting that some games are finding success by moving in completely the opposite direction. “I Want To Be The Guy” is unbelievably hard and patently unfair, but is very successful thanks to the expanding market of people who understand the language of games.

    Games are going to be bigger and more prevalent than anyone imagines. There will be more game categories than Movies, Music and TV COMBINED. It’s scary how big games are going to be, which is why some people are demanding a new word to represent games. Eventually, we’ll move past the basic terms like “fun versus challenging” to “romantic comedy versus intense drama”.

    Given all of that, I’m not sure why people think that games targeted at the 20-30 year old male market, that finds hard challenges fun, are broken and need to be fixed. Those games are fine for their market. People should really be talking about how they can expand the market further, so there’s an audience for less challenging games. Nintendo, EA (Pogo specifically), Oberon Games, Digital Chocolate, RealArcade are all doing this, and it’s working.

    Reply
  11. Ryan

    Wow! i feel compelled to offer you a guest spot here. Good comments, all.

    The breathing fire thing IS part of my original vision. All your questions will be answered and your doubts put to rest when i release a more refined version of the game. Get ready!

    With any luck, i may be able to offer both versions for the public event next month …

    Reply
  12. Pingback: TOJam #3 and Boys Noize

  13. Pingback: untoldentertainment.com » Here Be Dragons

  14. Pingback: untoldentertainment.com » Jammed

Leave a Reply

Your email address will not be published. Required fields are marked *