ENPT
All projects

Onmyodoom

Game DirectorLead Game DesignerAssistant Programmer

No video here

Jump to01 The Game
01

The Game

You're an Onmyōji and your job is to explore different procedurally generated temples, slaying yōkai and evolving your spiritual energy in order to get stronger.

Onmyodoom is a game I'm developing with Noodle Gang where you use your elemental powers to exorcize wandering spirits and purify corrupted sanctuaries. Absorb the essence of the fallen yōkai to grow stronger, and restore balance to the spirit realm before darkness consumes it entirely.

The game comes from an university project that expanded to be developed with the scope of two semesters, functioning as our way to learn how to develop our first 3D game.

02

Inspirations

Onmyodoom borrows from a few games we love, each one shaping a different part of it.

Genshin Impact key art, with several playable characters mid-fight
Genshin Impact

A cast of playable characters split by element, each with their own weapon and fighting style, where elements matter when choosing who and what to hit.

Wuthering Waves key art, a close-up of a pink-haired character
Wuthering Waves

Fast and fluid combat, dashing in and out of fights while the movement stays responsive, which guided how our characters move and dash.

Ōkami HD key art, with Amaterasu and characters from Japanese folklore
Ōkami

Japanese folklore told through a painted, ink-like art style: yōkai, shrines and spirits drawn as illustrations.

03

Contribution

  • Game Direction:
    • Vision, scope and priorities of the project;
    • Keeping the team aligned;
    • Changes from a Doom-like prototype into a roguelite.
  • Lead Game Design:
    • Elemental system;
    • Player fluid movements;
    • Playable characters and their weapons;
    • Enemies;
    • Boss battle;
    • Level-up and upgrades;
    • Room generation;
    • Treasures;
    • Meta progression;
    • Skill trees;
    • Game balancing.
  • Assistant Programming:
    • Support on room generation implementation in Godot.
    • Other prototyping related things.
04

From Doom-like to roguelite

Onmyodoom started as a Doom-like prototype: a first-person shooter with procedurally generated rooms where all enemies and absorbable objects were billboards, flat sprites that always face the camera. It all started with a single playable character, Kiyome, a fire kitsune who fights by shooting elemental spells with her fan weapon.

Later, every enemy and absorbable object got a 3D model, and the game grew into a roguelite with four playable characters and progression between runs.

05

Elemental Affinities

Every character, enemy and projectile belongs to one of four elements, or is neutral. The elements form a cycle: fire → earth → wind → water → fire. Attacking things you have an advantage on deals ×1.5 damage; attacking against it, or hitting something of the same element, deals nothing. Opposite elements (fire and wind, earth and water) and anything neutral deal normal damage.

While some of these affinity choices are not readable at a glance for a beginner player, we've designed the enemies as things that can be coherent, for example the Tsuchigumo enemy being an earth spider that can be burned.

There is also a fifth element that does not appear as an enemy type but as a healing item, the void element. It's a ramen item that heals the HP of the player and can be dropped by enemies on kill.

  • Fire projectile

    Fire 火

    ×1.5 vs earth

  • Earth projectile

    Earth 土

    ×1.5 vs wind

  • Wind projectile

    Wind 風

    ×1.5 vs water

  • Water projectile

    Water 水

    ×1.5 vs fire

Kiyome's projectiles, one per element
Elemental affinity chart: fire, earth, wind and water in a cycle with ×1.5 arrows, and neutral in the middle
fire → earth → wind → water → fire graphic, also showing damage multipliers
06

Playable characters

As Kiyome was the first character designed for the game demo, one character for each of the other elements was added later, each based on a yōkai from Japanese folklore. I wanted to keep a fair balance between two that fight at range and two that fight in melee.

Each of the characters have their own personallity lore-wise while trying to get a different gameplay vibe for each one of them. While Kiyome uses a fan as a weapon, Kotaro uses a naginata, Hayato uses shurikens and Mizuki uses a katana. These characters can feel distinguishable during the gameplay by a number of factors, for example base attack speed and range, skill tree possibilities and abilities.

  • Kiyome, the fire kitsune

    Kiyome

    Fire · Ranged

    A kitsune (fox spirit) and the original protagonist.

  • Kotaro, the earth inugami

    Kotaro

    Earth · Melee

    An inugami (dog spirit) who fights up close.

  • Hayato, the wind tengu

    Hayato

    Wind · Ranged

    A tengu (bird spirit) who attacks from a distance.

  • Mizuki, the water nekomata

    Mizuki

    Water · Melee

    A nekomata (two-tailed cat spirit) who fights up close.

07

Yōkai roster

In the first version, each element has its own yōkai: Oni (fire), Kappa (water), Kasa-obake (wind) and Tsuchigumo (earth). They started as billboards; later the billboards were replaced by 3D models (that have yet to be painted), together with the addition of a boss, the Daruma.

These enemies are designed to have their own ability systems, different behaviours and unique traits.

BeforeThe first enemy billboards: Oni (fire), Kappa (water), Kasa-obake (wind) and Tsuchigumo (earth)

The first enemies, drawn as billboards.

After3D models of the yōkai roster, with Tsuchigumo and the Daruma boss marked as work in progress

The 3D roster. Tsuchigumo and the Daruma are still in progress.

I The Oni

The oni is designed to be one of the current slowest yōkai, moving around with its kanabō and slamming enemies with it when there's an opportunity. It is fairly vulnerable when hit at its small head, taking bigger damage when it happens.

I The Kappa

It's an immobile enemy that shoots water projectiles at the player's direction. It can be shot with charged wind attacks to take it out of its hiding place.

I The Kasa-obake

It roams around the rooms with its tongue out, and can start flying and shooting wind projectiles if running after the player isn't working.

I The Tsuchigumo

A huge spider that doesn't attack the player at first, spawning its babies to slow you down so it can reach and attack you.

08

The boss: Daruma

The Daruma waits at the end of every run, in the boss room. It has three attacks, and the third one only appears in its second phase, once it drops below 50% HP.

The Daruma boss, a round red daruma doll with a painted face
Attacks
  1. Dash: charges straight at the player, with a long, readable wind-up.
  2. Jump: leaps to where the player is standing, and the landing makes rocks and pillars fall from the ceiling.
  3. Tremors (second phase): moves to the middle of the room and pounds the floor, sending out expanding rings of tremors that the player has to jump over.

Slaying the Daruma opens a portal that ends the run and leads to the results screen, where the numbers go up.

This is only the first boss planned for the game, therefore it's planned to have even more unique giants to be slain.

09

Leveling up

Slain enemies give experience for the run, and every level up offers a choice from four upgrades that buff your character during the run. Upgrades are scrolls that come in five different rarities: the higher the rarity, the stronger the buff.

These buffs were heavily balanced and still are being fixed during the development of the game and by studying and understanding how similar games do it.

Ame no HiThe Ame no Hi scroll in its five rarities, increasing fire affinity by 6%, 12%, 15%, 18% and 20%

Increases fire affinity, raising damage and defense. Common 6% · Uncommon 12% · Rare 15% · Epic 18% · Legendary 20%

The scroll selection rolls for its effects and rarity in two major steps, done for each of the scrolls shown when leveling up:

  • First, the game selects one of the entire list of effects that can be buffed by scrolls;
  • Second, the game rolls the rarity with a simple 0 to 1 random number, the result being according to this table.
TierChance
Common60%
Uncommon15%
Rare10%
Epic9%
Legendary6%
10

Room generation

Each floor is built around a critical path: a line of rooms that may not ever be straight, with a configurable length, that goes from the starter room to the boss room. Branches grow out of the critical path, and the end of a branch is where treasure rooms can appear. The boss room is only ever generated at the end of the critical path.

The generation is designed so that branches are only optional to get to the boss, but may have treasures at the end to make the run easier (with the cost of time spent on it).

Example floor layout with a critical path from the starter room to the boss room and branches ending in treasure rooms
An example of a generated floor
11

Room types

Every floor is made of four types of rooms, each with its own role in the run:

  • Starter room

    Start of the run

    Where the run begins, with no enemies, no danger.

  • Combat rooms

    Critical path & branches

    Has enemies to fight and objects to absorb.

  • Treasure rooms

    End of a branch

    A chest sits in the middle. The room locks as soon as the player walks in and only opens again once every enemy that spawned there is slain.

  • Boss room

    Final fight

    The Daruma fight, at the end of the critical path.

Once a treasure room is cleared, its chest can be opened for a treasure upgrade, a unique version of a level-up upgrade, working as a solution for things the player shouldn't stack too much of, like extra jumps (double, triple, quadruple) and skill upgrades.

12

Skill trees and character mastery

Each character has their own skill tree, whose nodes buff the next runs. Nodes are unlocked with character mastery, and playing as a character levels up their mastery, so each tree grows with the time spent on that character.

There are some important buffs in the skill tree aside from the basic ones (like more attack speed, more dashes). These unlock special features like the character's pet, a run revive if your character dies, a minimap, and more.

These trees are heavily balanced to only have a total of 220 mastery points spent to unlock the entire thing. The player is supposed to be able to get everything at the end, not locking them from 100%ing the game with a good amount of time spent playing.

Kiyome's skill tree, with all its nodes branching out from her icon in the centre
Kiyome's skill tree, with all the nodes. Focused on damage, dashes and DoT.
13

Meta aspects

Finishing runs also gives a meta-currency that is kept between runs and spent at the shopkeeper in the metahub. The shopkeeper sells things that buff the next run, like magic items that raise attributes and extra abilities.

These points are calculated by a number of factors, for example:

  • How much time the player has spent on the run;
  • How many enemies they have killed;
  • If the run is indeed finished (by killing the boss and entering the portal);
  • And more.

The metahub also is supposed to have other things, such as achievement trophies, tutorials and more that have yet to be developed.

14

Screenshots