top of page
  • LinkedIn
  • GitHub
  • X
Search

(Game Jam) - Read the Room

  • Writer: Roberto Reynoso
    Roberto Reynoso
  • Oct 11, 2024
  • 5 min read

Updated: Aug 7

Engine: Unity Engine | Genre: Dungeon Crawler | Platform: PC | Timeframe: 3 days


Role: Gameplay Engineer


Read the Room

PLAY THE GAME ON ITCH.IO


Overview

This project was created during a 3-day game jam, with the theme Fight or Flight. Our team brainstormed several directions before settling on a concept that emphasized player choice, specifically the decision to stand their ground and fight, or flee to survive another day.


That idea evolved into Read the Room, a dungeon crawler with a unique twist. As players explore the dungeon, they encounter various doors that can be opened at their own pace, slowly or quickly. The mechanic encourages players to peek inside each room, assess the danger or reward, and then make a critical choice: enter and engage, or back away and move on. This added a layer of tension and strategy that aligned perfectly with the theme.


Team

Design - Harry, Cook

Engineering - Roberto Reynoso, CsOH_QAQ

Production - Steven Pasinsky

Art - Cay


The Doors

Opening Doors

The doors are the central mechanic of the game, allowing players to peek inside rooms and decide whether to process or turn back. Several systems work together to create this experience. In the PlayerMovement script, we check for collisions with interactable objects, doors being one of them. Doors implement a shared Interactable interface, allowing us to identify and interact with them specifically.


Once we detect that the player is interacting with a door, we trigger animations that make it appear as though the player is physically pushing the door open. The door's movement is direction tied to the player's input, controlled via the scroll wheel. This input adjusts the door and hand positions by interpolating between their starting points and maximum open positions. This was exactly the result we were looking for and choosing to use the scroll wheel for this mechanic, made it a much more immersive interaction.


Enemy Detection

Detection

When opening the door, if an enemy is present in the room, they begin to gain awareness of the player's presence. This is tracked by an awareness meter, which fills up based on how much the door is open. The more the door is opened, the faster the meter increases. If the player flings the door wide open from the start, the meter fills rapidly, often triggering combat almost instantly. While it may seem like combat begins automatically, it's actually a direct result of the player's reckless decision to slam the door open. This system reinforces the core tension of the game.


Movement

Movement

The PlayerMovement script handles player navigation and interaction within the world. Movement is entirely grid-based, and I designed it so the player moves from tile to tile, maintaining the feel of being "on rails" or following a track. Movement and rotation are each handled through coroutines, allowing for smooth transitions and better control over timing. The scroll wheel moves the player forward and backward, while left and right mouse clicks rotate the player accordingly.


To manage interactions with the environment, I used raycasts to detect when the player collides with objects such as walls or chests. When a collision is detected, a bounce-back effect is triggered via a coroutine to add extra polish and feedback. However, since this effect could occasionally nudge the player slightly off-grid, I implemented a SnapToGrid function to correct the player's position and keep movement aligned to the grid. This also helps preserve visual consistency and reinforces the grid-based structure of the world.


Additionally, footstep sound effects are triggered during movement to enhance the tactile feel and add more "juice" to player actions.


Combat

Combat

Combat is managed through a centralized Combat Manager, which factors in the player's currently equipped items when calculating damage dealt and received. When combat is triggered, a TakeTurn function is called to process each action in the encounter. This function also triggers the appropriate animations in the combat UI, whether it's the player attacking or an enemy making a move.


If multiple enemies are present in the room, the player will face them one at a time in a sequential order. Combat continues until all enemies are defeated or the player is killed. Once the encounter is resolved, the system exits combat and returns control to normal exploration.


Chests

Chests

The chest functions as an interactable object, similar to the door, and is detected using raycasts. When the player collides with it, the chest switches its sprite from closed to open, signaling interaction. Opening and closing animations are handled through coroutines to give the chest smooth, dynamic behavior as the player interacts with it.


Chests are populated with randomized items, one of which can optionally be a bomb, based on a designer defined rule. If a bomb is present, it plays a flashing animation and explodes shortly after, triggering a sound and visual effects for added impact. This explosion can damage the player if they don't move away in time, and it also destroys the chest.


Each item (or bomb) is displayed hovering above the open chest. If it's a usable item, it will automatically be added to the player's inventory. The chest will continue to open and close if the player interacts with it, displaying a new item each time, until it runs out of items or is destroyed by a bomb.


Items

Items

Items are categorized into two main types: consumables and equipment. The inventory system is split into two sections: bagged items, which are generally items the player holds, and equipped items, which are actively in use.


Consumables, such as health potions, have a use option available. When used, their effects are immediately applied, and the item is removed from the bagged items list.


Equipment items, on the other hand, have an equip option. When selected, the item is placed into its designated equipment slot. If that slot is already occupied, the new item replaces the old one, automatically returning the previously equipped item to the bag. All changes are reflected in real time within the inventory UI.


Reflection

Read the Room was the first game jam I ever participated in, and it gave me a clear look at just how different development feels under tight time constraints. With only three days to design, prototype, and polish, every decision had to be focused and intentional. It was a challenging process, but also an incredibly valuable one and has inspired me to join more game jams in the future.


I was lucky to work alongside such a hardworking and driven team. We collaborated well, iterated quickly, and ultimately created something we were proud of. I believe we full embraced the Fight or Flight prompt, delivering a unique take that stood out, something that was recognized during judging when the game received an award for best fitting the theme.

 
 
 

Recent Posts

See All

Comments


Roberto Valentino Reynoso

bottom of page