We made an investigation game in C, in 48h

seb_degraff1 pts0 comments

-->

# Making a game in C for the Global Game Jam: Inside Job

At the beginning of this year I participated [once more]("ggj_25.md.html") in the global game jam. In this post I'll<br>talk about how my team and I designed a local multiplayer investigation game, how I implemented a<br>record-replay mechanic, the strange platform bugs we hit along the way, and how we still managed to make a game<br>we're proud of, using my engine written in C.

![]("res/ggj_26_title.png")

## Brainstorm

This year I teamed up with 3 other people: Sandro, a [game designer from the swiss scene]("https://www.sandrodallaglio.ch/"),<br>Camille, a [2d animator](https://camillebovey.com) (incidentally my girlfriend!), and David [a composer<br>and sound effect designer]("https://www.instagram.com/david_dg_music/") (incidentally my cousin!).

I was handling the programming side, using my C game engine as usual.

At 17:00, the theme was revealed: **Mask**. We started brainstorming right away.

In my experience, this phase of a game jam is rarely easy, but often quite exciting. We all suggested ideas,<br>bounced ideas off one another, spotted problems, proposed solutions... We also shared our own preferences in terms<br>of games, bringing up various references as we brainstormed.

![the team brainstorming]("res/ggj_26_brainstorm.png" width=90%)

It can be quite hard to know when to stop. Often a couple of ideas stand out, but it's tricky to get a sense<br>of whether a design will actually hold water once implemented. The best way to know is to prototype,<br>but the time constraint makes this impracticable. On the other hand, we want to start working on<br>an idea everybody is onboard with and that has a good chance of working.

Pretty early we had the thematic idea of the bal masqué. We figured we could take inspiration from cluedo, and<br>have a house with multiples rooms. "Mask" could have the double meaning of masking<br>information to some players. The game could be multiplayer, with one imposter that has a secret goal (e.g.<br>kill someone?). But depending on in which room the various players are standing at various points, they would<br>see different information and would have to piece it together (with the imposter potentially lying to throw off<br>their opponents).

We explored this idea a bit, and came up with a bunch of design ideas, but in the end we had one problem:<br>all of these ideas felt more like board games than digital games. Although we all like board games, we wanted to go for<br>and idea that made sense as a digital game and couldn't be done purely physically.

At some point in the brainstorm, I showed a prototype or a survival game I had been working on. In it, you<br>play a pixelized astronaut that explores an abandoned space station, riddled with monsters. A particularity<br>of that prototype is that there is a visibility system, where parts of the world that are not visible to the<br>character are darkened, like a shadow. This immediately resonated with Sandro, who could see our murder mystery idea<br>working in this context.

![my survival game prototype, used as a basis for our jam game]("res/ggj_26_survival.png" width=90%)

Here's the design we came up with:

The game plays with two players, locally on the same machine.

__Phase 1:__

One player plays as the inspector: they covers their eyes and "open their ears". The other person plays as the thief:<br>they takes the controller and move a corrupted guard around. They have a limited amount of time to steal as many<br>art exhibits as possible, preferably without getting spotted by other guards.

While the thief moves around, they make noise, potentially providing clues to the inspector. They walk on different kind<br>of floors, and have to break the glass of art exhibit displays.

When the time runs out, they have to blend in and position themselves as to pretend to be one of the guards.

__Phase 2:__

Now the inspector takes the controller. They must investigate, try to retrace the steps of the thief and arrest them.

On top of the auditory clues they got in phase 1, they can "interrogate" any guard which would then tell them<br>what they saw. We would realize that as a "replay" of what the thief did, form the point of view of the interrogated<br>guard. If the inspector interrogates the thief (who is also a guard), they would say they saw nothing.

With enough information gathered, the thief might be able to tell that one specific guard is lying and arrest them!

## "Proof of concept" prototype

At this point everybody was mostly convinced, and we figured we could quickly put<br>together a prototype using my space survival game as a basis, so we just got started.

Sandro made a level in the simple level editor that I had made for the survival game, I slapped a countdown<br>display in the top right, and we were already playtesting to validate our design. Instead of implementing the<br>snapshot feature right away (which would have been quite time consuming), we had a third person assist the<br>playtest and take literal screenshots every time the...

game prototype thief ideas time idea

Related Articles