All work
Game Jam

Roses And Mud浪漫的不是玫瑰是泥

A two-player battle game about bursting out of the ground at just the right time to make the villagers laugh.

Genre
Two-player battle game
Role
Core mechanics design with the team; mainly responsible for development and visual effects
Team
Team of five
Tools
Unity, Rewired
Event
Global Game Jam 2024
Theme
Make Me Laugh
Key art: the blue Chinese title 浪漫的不是玫瑰是泥 curves through a red rose crossed out with a red X; below it, a grinning head with green cloud-like hair on a thin stem, and a row of small red roses with red crosses on their stems along the bottom.

Overview

Roses And Mud is a two-player battle game. You’ll play as a mysterious creature lurking beneath the earth, bursting out of the ground at just the right time to make the villagers laugh. Mind you, if you make some unusual villagers laugh, they may do things you can’t imagine.

Highlights

  • Game mechanics designed with “Laughter is infectious” at their core.
  • Performing charges up: the show’s area keeps growing, so the player has to pick the right moment and scope, because some NPCs do bad things when they laugh.
  • Three NPC types: villagers to make laugh, a killer who hunts villagers once he laughs, and hoodlums who scare villagers away.
  • A much simpler input system built with the Rewired plugin: play with a controller or keyboard without having to restart the game.
On this page
  1. Background (Game Jam)
  2. Teamwork
  3. Brainstorm
  4. Inspiration
  5. Background (Story)
  6. Core Mechanic
  7. Objective
  8. NPC
  9. Development
  10. Code Sample
  11. Screenshots

Background · Game Jam

Global Game Jam 2024 logo in yellow graffiti lettering on a neon purple and blue background.

The game was created during the 2024 Global Game Jam and was developed by the Unity engine. The theme of the Jam is “Make Me Laugh”.

Teamwork

This is a game designed and developed by a team. I was in a team of five members. After the team members and I completed the design of the core mechanics of the game, I was mainly responsible for the development of the game and the production of visual effects.

Brainstorm

After the topic was published, everyone in our group had a brainstorm. Here are our ideas.

Part of the team’s brainstorm mind map, written in Chinese (described below)
Read the diagram as text

Part of the team’s brainstorm mind map, written in Chinese: an orange branch on spreading laughter (who can be infected, how laughter spreads) and a dark-blue branch on player actions such as moving, charging a big laugh and planting roses.

Inspiration

Frame from a social media video: a man in a black coat whose head is a large red rose, holding a green stem topped with a small photo of his own face.

Our game was inspired by a funny video that was widely circulated on social media. A young man is trying to show his affection to the screen audience by handing them a bouquet of roses. But unexpectedly, his head became a rose, and the place where the rose originally stood became his head. We decided to design the game’s mechanics with “Laughter is infectious” at its core.

Background · Story

Sadness and unhappiness pervaded the village, and all the NPCs were very sad. As a magician with the ability to make people laugh, you need to make the villagers laugh, but there are also some special people in the village, if you make them laugh, they will do some bad things.

Core Mechanic

The player has two actions, one is to move, and the other is to perform funny tricks. The first action is very simple, the player needs to move to find a place where there are more villagers to perform.

The second action has a cooling time, when the cooling is complete, the light will turn red. When the player performs, it accumulates power. The scope of the show will gradually increase, and the player needs to perform in the right scope, because there are some NPCs who will do bad things when they laugh.

Objective

Players need to use their roses to make as many frustrated villagers laugh as possible. At the end of the countdown, whichever village has the most infected villagers wins.

NPC

Here are the three main NPCs we designed. They have different functions. They all affect the player’s experience.

Villager

Two portraits of the villager, who has green cloud-like hair: on the left with blue skin and a sad frown, on the right with pink skin and a wide toothy grin.

The most number of NPCs in the game. Players need to infect as many villagers as possible to win.

Killer

Two portraits of the killer, who has red hair and holds a knife: on the left with blue skin and a worried frown, on the right with pink skin, a wide grin and blood stains.

When infected by laughter, the killer will start looking for villagers to kill, and if any villagers are caught by the killer, they will be killed by the killer.

Hoodlum

Two portraits of the hoodlum, who has a dark brown bowl cut and round white eyes: on the left with blue skin and a grimace, on the right with pink skin and an open-mouthed laugh.

When infected by laughter, hooligans will begin to harass innocent villagers, and frightened villagers will flee from them.

Development

Input Manager

This is my first two-player game. In addition to keyboard input, I expect players to be able to play with a gamepad. So I started looking for solutions about multiple players controlling different gamepads.

Rewired’s store listing: the Rewired “Advanced Input” logo with input device icons, beside a five-star user review.
Rewired, a plugin which can solve my input problems.

By using the plugin ‘Rewired’, I implemented a much simpler input system where the player could play the game using a controller or keyboard (without having to restart the game). At the same time, changing the key mapping is easier.

With the help of the Rewired plugin, I was able to create the effect of the joysticks vibrating.

C# snippet: while the player’s rigidbody is moving, player.SetVibration drives two motors with a cosine-based strength.
Vibration Code

Split Screen

In addition to input, splitting the game’s screen into two also gave me a big challenge. After my research, I went through the following steps to create a split screen effect for my game.

Unity Inspector for a CinemachineVirtualCamera, with the Follow and Look At fields set to Player_0 outlined in red.
Create two separate cameras and let them follow and focus on the characters the two players are controlling.
Unity camera settings with Viewport Rect set to X 0.5, Y 0, W 0.5, H 1, outlined in red.
Adjust the Viewport Rect parameters of the camera. Make the two cameras occupy the left or right side of the screen.

Camera View

Although the art was drawn in 2D, we copied the game Don’t Starve’s camera view in order to create a sense of dimension and space. All 2D sprites are perpendicular to the ground.

Iteration of the Digital Prototype

Code Sample

Screenshots