About jrhee (twitter: @codagames)

Nerd bird

Entries

 
Ludum Dare 33

jrhee's Trophies

Great Idea Gold Star (for 'The Supper')
Awarded by BuffaloPhil
on August 25, 2015

jrhee's Archive

The Supper – Post Mortem

Posted by (twitter: @codagames)
Friday, September 4th, 2015 11:54 am

Hi! This was my first LD/game jam and I posted a bit about it right after it ended, but thought I’d spend a bit of time now to go a bit deeper into my experience and process.

Here’s the link if you want to give it a go first.

title3


 

The Live Jam

For most of the weekend, I was at a live jam site at Babycastles:

bc1

At first I was planning on just going to hang out with people and catch up on my own work, but once I was there and saw some of the cool stuff people were working on, I got swept up in the good vibes and decided to go for it!


 

The Concept

The theme was a curve ball for me. The first night I spent just thinking over different concepts and debating whether I wanted to go through with any of them. I had this  concept in my head for a weird action-y stealth game where you play a border crossing monster refugee in a hood and cloak, but by Saturday morning I still couldn’t get the ideas to line up. I thought about dropping the whole thing, but around lunch things finally started clicking: a murder mystery with turn-based, rogue-like movement, a simple charm/suspicion mechanic, and the original avoiding line-of-sight idea.

Then I started drawing a bunch of stuff out which is pretty close to what wound up in the final game:

1

2

3

 


 

The Mechanics

Once I had the basics down on paper, I started up Unity and made a fresh repo in Git. I purposely tried to keep the scope very small, and limited the player to doing basically three things (apologies for the massive GIFs):

Moving

move

Charming (lowering guests’ suspicion)

charm2

And Murdering!

murder

This sounded simple at the beginning, but eventually it became clear that there was a ton of hidden stuff I didn’t fully consider beforehand:

  • The player character and AIs needed to track line of sight with every other entity
  • Characters needed to track collisions with walls, furniture; furniture should block characters but not line of sight, etc.
  • The AI needed to disperse somewhat intelligently without needing a complicated pathfinding solution
  • The UI needed to do a lot more than let the player choose between the main actions (Charm and Murder).
    • Cancel actions
    • Inform the player that he/she’s in someone else’s line of sight
    • Inform the player of the guests’ suspicion levels
    • Enable transitions between game states: Title screen, pause, restart, dialogue, limericks, movement, action menu, etc.

Even while trying to keep things as simple as possible, coding everything up took longer than expected. I wasn’t ready to submit by Sunday for the compo as planned, but luckily was able to spill over to Monday for the jam.


 

The Environment

When I started the environment work, I started in full color, with lots of detail, and a slight, isometric tilt. About 20 minutes and one bookshelf later, it became obvious I didn’t have time for this. So I thought about how I could cheat, which is what led me to the black-and-white silent film concept. This worked out well since it cut the amount of time I’d need to spend on environments way down while adding more to the larger theme and mood.

tiles

 

Using a tilemap was super useful since it allowed me to iterate on different layouts very quickly, which played a big role in solving my limitations with AI movement.

board


 

The Characters

Before Monday, all the characters in the game were white squares. At first I planned on doing static board game-y pieces, but later decided I wanted the character designs to 1) give the characters distinct personalities and 2) inform the player about their suspicion level (to minimize UI and helper prioritize the murdering!).

With this in mind I spent a good part of Monday building a modular character facial animation system.

Base face – Suspicion level: 

suspicion

Character Overlays: 

chrs2

Giving the characters personalities was a lot of fun!

 


 

The Limericks, Audio, and Other Polish 

I wanted to establish some context at the start and end(s) of the game, but didn’t want lots of boring exposition. So I decided to go with silly, old-timey limericks:

limerick

 

Turns out coming up with passable rhymes takes time, since a) I’m not a writer and b) there needed to be a lot more than I had originally anticipated to support the various start/end states:

  • The intro
  • Getting caught in the act
  • Getting accused when a guest’s suspicion maxes out
  • Ending 1
  • Ending 2

Luckily I was able to recycle a bunch of the lines which helped cut down on the time.

Once this was done I hunted down a few last bugs and added the audio which added a lot to the ambiance and tied things together nicely.


 

The Result!

Here’s the again game if you’re interested in giving it a spin!

I had a great time making it. It was like a lovely little game-dev vacation that recharged me creatively for my real work.

Thanks for reading, hope you enjoyed. If you have any questions for me, throw them in the comments or tweet @codagames!

Woohoo!

Posted by (twitter: @codagames)
Tuesday, August 25th, 2015 8:56 am
Mr. Peanut is watching...

Mr. Peanut is watching…

Hey guys, this was my first game jam and Ludum Dare. I had a blast! It felt great to be able to start from scratch after hacking away at my full time indie project for the last two years.

My daily project is basically a grid based, turn-based tactical murder simulator, so I was hoping to get as far away from that as I could during this jam. Something light and twitchy and arcade-y. But after the theme was announced, somehow I wound up making another (albeit very different) grid based, turn based murder sim thing, this time in an even more literal sense.

3

Caught in the act!

 

Anyways, had a great time and feel like I learned more in the last weekend than I have in the last six months. Hope you like the game!

[cache: storing page]