top of page

Inner Demons

Inner Demons is a 2D fighting game inspired by the original Mortal Kombat, both in style and gameplay. The concept centers around mental health, exploring the internal battles we face within our own minds. Players choose from different versions of the main character, "Carlos," ranging from a regular version to more stylized forms like a cartoon or dark variant, each representing different mental states or personas. The characters feature pixelated designs with a stop-motion animation feel, adding a unique visual identity. The game is built for local two-player matches, emphasizing face-to-face competition. 

Overview

Responsibilities: Game Designer and Programmer

​

Date completed: November 2024

​

Resources: Visual Studio Code, GitHub, Adobe Photoshop, p5.js

​​​

Details: Inner Demons was a collaborative project with two other designers to build a game inspired by the original Mortal Kombat series. 

​

Time completed: 48 Hours

ID_Menu_edited.jpg

Pre-Production

In collaboration with two other developers, we decided to challenge ourselves by creating a game within a short time frame. During the planning phase, we agreed to build a fighting game inspired by the iconic Mortal Kombat series.

 

While researching the history of Mortal Kombat, I came across some fascinating behind-the-scenes footage showing how the character animations were created. The team had a cast of actors who performed the in-game moves, which were then captured, edited, and programmed to match the player's input, giving each character their unique fighting style.

 

Armed with this insight, we discussed our findings and outlined our next steps. We brainstormed different ideas and how the game may look towards the end. Our final decision for the game was to craft a fighting experience that brings the player through some of the mental battles individuals face daily. We decided to center the game around a single character, with various personalities serving as the playable fighters. The game would be designed for two players, featuring simple mechanics like moving, jumping, attacking, and blocking. With this foundation in place, we divided the work and set out to bring the game to life.

Programming

As the designated programmer, I was responsible for building the core components of the game. Since it was a 2D fighting game, my primary focus was on basic movements: moving left, right, and jumping. Before I started coding, I had to address several key concerns, such as making sure the player can reset their position after each jump, ensuring they return to the ground after a jump, and preventing them from moving outside the boundaries of the screen.

​

I began by using p5.js to draw simple rectangles as placeholders for each player. After positioning them on the screen, I started coding the left and right movement, along with the boundaries that would keep the player within the playable area. The attacking mechanics were straightforward. I implemented a rectangle that extended from the player, allowing the other player’s character to detect if it was hit. 

​

Once the basics were in place, I shifted focus to coding the jump and blocking mechanics. The jump required careful tuning to find the right feel. I spent time adjusting the player's falling acceleration to smooth out the animation and avoid any awkward movement. While I was happy with the overall result, given the time constraints, I do wish I had more time to fine-tune some of the mechanics for an even smoother experience.

demo.gif

Visual Capture

Creating the motion capture for one of the characters was an enjoyable and hands-on experience. At the time, I had access to a small studio, which worked to my advantage, allowing me to control the lighting across all the shots without having to do much post-editing. With some prior experience in lighting, I had a clear vision for each scene. I carefully planned everything, from the types of movements I needed to the lighting setup, which helped streamline the process of capturing the animations.

​

Upon arriving at the studio, I quickly set up the scene. With only two lights at my disposal, I used a soft light at the front and a background light. While the lighting setup was limited, I made the best of it. After everything was in place, I began recording the moves. I spent about an hour setting up and capturing the animations, filming four separate clips for each move: walking, jumping, attacking, and blocking.

​

Once the recording session was complete, I imported the footage into Adobe Premiere for editing. In Premiere, I removed the backgrounds, applied filters to give the character a pixelated look, and exported each animation as a GIF. The decision to export them as GIFs was to ensure they could be easily implemented into the game by the other team members.

What did I learn?

This project pushed my team and me to step out of our comfort zones and take on tasks we hadn’t done before. My primary responsibilities included creating a video for one of our characters, turning it into an animation, and developing the core mechanics of the game. However, as the most experienced programmer in the group, I also acted as a resource for my teammates, answering any questions they had along the way and fixing any errors they encountered. 

 

One of the highlights for me was recreating the process used by the original Mortal Kombat team to bring characters to life in the game. I’m proud of how I was able to capture that nostalgic feel. While the process itself was straightforward, I’d love the opportunity to explore it again in the future.

 

Overall, while this project was more of a short experiment, I’d consider it a great success. In the future, I’m excited to dive deeper into new techniques, like photogrammetry, to capture real-world objects and integrate them into games. 

© 2025 by Carlos E. Sosa.

bottom of page