Ida Rask

Game Programmer

Menu

Ida Rask

Game Programmer

Norowareta: The Three Treasures

Studio Crying Spider's logo

Me | Programmer

Jenna Toivonen | Producer, 3D Artist

Christopher Solis | Creative Director, 3D Animator

Mauri Rahkila | Art Director, Concept and Character Designer

Toni Tiilikainen | Programmer, Level Designer

Suvi Kanerva | 3D Artist

Miriam Lucenius | Concept, Storyboard and Character Designer

Noora Hovatov - Narrative Designer

Ufuk Özden | Game Writer

Alise Hirvonen | Cutscene Artist

Antti Keinänen | 3D Artist

Project Description

Norowareta is a 3D horror game for PC made with Unity, that is based on japanese folklore. Our team consist only of students and we're developing the game on our free time. Development started in January 2022 as a part of our designers' project course. They wanted to continue the project after the course and needed a programmer and I got invited because Jenna knew me from the FGJ22. I started working with the project in summer 2022.

We got our alpha version ready in December 2022 and are currently working with the beta version. The beta version will have a totally new map, more levels, enemies and collectables and will introduce a weapon. There's a lot of work still to get the game ready for release. Our initial schedule for the release was in late spring/early summer of 2023 but because we're students and have other obligations too, we ran into some issues with timing and the release date is currently unknown. At the moment we're trying to do as much as possible before our summer break.

Norowareta's aplha version can be found in itch.io as a downloadable.

My part

For the alpha version I added the first enemy type, Onryo, with some help from Toni, health system and everything included (healing items, death screen etc.), collectable items and sound settings.

Because the project was started by a group of designers who don't know how to program, they used Unity's standard asset FPS controller as a player controller and we haven't got the time to make a whole new one, we ran into some issues with Onryo's attack mechanics. When the Onryo attacks, it turnes the player so they're face to face and then licks. To be able to do so, the player controller needs to be disabled so the player doesn't just run away. This, however, somehow disturbs the mouse look the controller has and unexpected things might happen during the attack. So, a new controller is in the to-do list when we have time for it.

Another problem in the alpha, although a minor one, is some of the Onryos can't go through doors even though all the doors are set to be walkable in the navmesh. Haven't found any solution to this but I hope the new map solves it.

We (I, mostly, while implementing sound effects) also had troubles with sounds. For some reason the audio sources were not co-operating like I wanted. Some of them stop when you say Stop(), but some still keep playing the sounds. So I had to make some shady decisions while implementing the sounds, such as insted of Stop() I set the volume to 0 and let them play. Not the best practice in terms of optimization, but in order it to work in the alpha it had to be made that way. Sometimes even setting the volume to 0 didn't work so I had to disable the whole audio source. Handling different audio sources differently can be seen in some of my script examples.

Programming

  • Onryo AI is done with Unity navmesh. Each Onryo has their own area in which they patrol. They have a cone shaped field of view they can detect the player with. When player is seen, they start chasing the player in a slightly increased speed and when the player is out of sight long enough, they go back to their patrol. Onryos attack the player by grabbing them and then licking their face. Each Onryo is powered by a totem in their area and when they leave the area long enough, they run out of energy and are returned back to their own area.
  • To get rid of an Onryo in a certain area, the player can perform a purification ritual where they place a sacred rope on the totem. Ropes can be collected throughout the map. Because inventory wasn't implemented in the alpha, the player has to remember how many ropes they have collected, although there is a text prompt if the ritual cannot be performed.
  • Health system is really simple: player takes damage when an enemy attacks and gets more health by eating collectable mushrooms. In the alpha version the mushrooms heal on a pickup because of the previously mentioned missing inventory. Health system also includes visual and sound effects for being wounded or dying, and the death screen.
  • Sound settings are made with PlayerPrefs so the settings stay the same throughout the game.

  • For the beta version so far I have programmed and animated all of the new doors and drawers for the new A side map, the second enemy type, Onigumo, the weapon we're going to have, one puzzle element and started to design a state machine for the enemies, on a thought level, to possibly make them work a bit better.

    Programming

  • Onigumo AI is also done with Unity navmesh and it pretty much follow the same approach as I did with the Onryo. The only difference is that instead of only detecting the player by sight, they can also hear the player if the player is close enough and is not crouching.
  • Onigumos attack the player by grabbing their feet and cause damage through time.
  • To stop the Onigumo attack, the player must use the weapon they get, Kagura Suzu, or spam space button. Kagura Suzu works against multiple enemies also, it has it's own field of view and all the enemies inside get damaged. Kagura Suzu can be realoaded with Ofuda talismans.
  • The enemies can't be killed with the Kagura Suzu, though. Onryos get stunned for a while when the weapon is used. Onigumos on the other hand do have a health, but they get stunned each time the weapon is used until they run out of health and only after that, they retreat and get respawned after some time.
  • Kagura Suzu can be realoaded with Ofuda talismans.
  • The crank cabinet puzzle is a simple puzzle where you have a cabinet, that has another smaller one inside that's locked and the player needs to pull the crank to open the inner one.