Museum Heist

 

A Weekly Game Jam game where participants had to create a game that falls within the theme of "Invisible".

A game about stealing valuable items from a museum while avoiding capture by the security guards.

Game Engine

Unity, C#

TEAM

 

Chaki, Evelyn, Haiyoooo, Timothy Cobb

MY RESPONSIBILITIES

  • Led the team and maintained the project hierarchy and Trello board.

    • Maintained Trello board schedules and daily sprints.

    • Kept the scope of the project reasonable while allowing new implementation of ideas.

    • Guided artists and sound designers through the challenge of creating a unique museum play space.

  • Scripted gameplay logic for NPCs and game conditions.

    • Scripted security guard behavior to include features such as line-of-sight, AI NavMesh Patrolling, and recognition of player invisibility status.

    • Scripted conditions to allow the security guards to play animations based upon which gameplay state they were currently on.

    • Scripted the conditions for winning the game.

    • Character selection

  • Level Design

    • Worked closely with the artists to determine the best way to place assets and highlight objects of interest.

    • Designed a top-down view of the museum in google draw to use as a reference for object placement.

    • Created a block mesh scene to test how security guards should move between navigation points placed in the level.

The Beginning

Museum Heist was a project that I had no idea what the end product would be. Within the first day of the weekly jam, we tossed around a few ideas and I ended up creating a simple prototype in Unity so we could keep coming up with ideas while in our prototyping phase.

Leading the Team

After showing off the prototype, the other members of the team designated me to be the leader of the team since I was the only programmer and they each wanted to focus on other areas of development such as shaders, visual effects, animation, and sound design. I was fine with this since it made each member feel comfortable which meant they could do their best work while learning and I would have the opportunity to test my programming and design skills in an environment where I would be put under some level of stress.

The first thing I tried to do was set up Trello and use the Scrum method for the project. We used it in school a month prior to this jam and I needed some way to stay on track with code, design, and making sure the team was making progress.

 

Trello ended up working extremely well, items that were put in the backlog were being moved into the current sprint column as they were being worked on and moved to the done section as they were finished. I kept Trello up on my second monitor to look out for any messages or feature requests from other members of the team.  

DESIGN CHALLENGES

Because I was the only member working on the game's design, I found it difficult for me to like any of my own ideas. Crazy right? I ended up taking some time to study The Legend of Zelda: Link's Awakening and asking myself what drew me to this game specifically? It eventually hit me that it was a top-down game and still had simple gameplay that was fun. I didn't need to come up with extremely complicated mechanics or features for our project. We knew we wanted the game to be top-down so I needed to find a way to build around that and our invisible mechanic. So the outcome was giving the guards line-of-sight and having them respond to the player's invisibility mechanic.

Once I got the basic functionality for the invisibility working, I ran into a problem. You couldn't see the player! This was a big issue for me because players need feedback when they use a mechanic. I spent the majority of the third day trying to solve this as there was now an issue with three areas of development. Programming, shaders, and 3D. The way the characters were modeled and exported from Blender gave them over 21 materials and that's a lot of materials to change for our invisibility mechanic. I had to find a way to iterate through each material, get their renderer, and change the alpha value while using a custom shader made by Haiyoooo that handled the transition. It was a frustrating challenge but also a learning opportunity for myself and our 3D artist. I ended up getting it to work and the artist that modeled the characters learned a simpler way to export his art while keeping material count low so everyone wins!

For the player visibility, we decided it would be easier to use a shader that highlights the player avatar blue to communicate to players that they are invisible. Although we could have found a better solution, no one on the team was very knowledgable about Unity's shader graph so we decided to stay true to the scope we set from the start and use simple visuals.

BROKEN AI

Two days before the jam was over the unthinkable happened. I broke the artificial intelligence! When trying to implement the line of sight feature I broke the very thing that made our game what it is. Without the security guards properly chasing the player, there is no game. This was the beginning of my self-inflicted crunch.

On the first day of my crunch, I spent countless hours trying to identify what I did wrong. There was no way I was going to scrap this idea this far in the jam I would let myself down and ultimately my team. I ended up reaching out to a friend for guidance as I was completely lost. After about two hours of bug hunting, we discovered the problem and he guided me through better methods of preventing and identifying these issues later in development.

LAST DAY

 

On the final day, I began designing the museum with inspiration from a screenshot one of the artists posted in Trello. Once I had the rooms all I would have to do is fill it with assets, place the collectibles, security guard nav points, and visual effects. Music was the very last thing to be implemented as we wanted to make sure we had the lighting just right so it would blend perfectly with the music and environment we wanted players to experience.

© 2020 by Timothy Cobb