Darker... Darker... Dar- WAIT THAT'S TOO DARK!


When designing this game for Mini Jam 140, I aimed to focus on the design choices. I had the idea to make a horror point-and-click style game and wanted to try to make something in 3D, but other than that had no idea on the direction this would go.

The first thing I found when beginning the design was the wonderful shader created by Rogue Noodle. 3D modeling is not my strong suit. I took a few week elective in college where I made the person model used in the game, but other than that and some basic Blender knowledge, couldn't rely on fancy 3D graphics. This shader made the look low-poly but still feel like a somewhat polished product. Between this shader and the creative ways played with the lighting in spots, the atmosphere I was going for came by rather successfully!

The basic control scheme consists of a camera flash that allows the player to see where they are going and point-and-click movement, where the player will move to the boundaries of one position, then the camera will shift someplace else. This limitation is meant to give the player a claustrophobic feeling and keep the player focused on important items on the map.

The monster was the trickiest part, which I regrettably could not nail in the time of this jam. Below is a quick code snippet to highlight an important part of the monster's AI. The first method is for the monster's chase mechanic, and the other function is meant to respawn the monster after catching the player or running away.

Monster Chase Function:

    private IEnumerator ChasePlayer()
    {
        agent.SetDestination(PlayerController.Instance.transform.position);
        if(agent.pathStatus == NavMeshPathStatus.PathComplete)
        {
            if(CheckPathLength(PlayerController.Instance.transform.position, MAX_CHASE_DISTANCE)) 
            {
                GameSounds.Instance.PlayChasingSound();
            }
        
            agent.speed = 3.75f - (1f * (catchCount));
            if(!GameManager.Instance.hasSeenMonsterChaseTutorial)
            {
                GameManager.Instance.hasSeenMonsterChaseTutorial = true;
                TutorialCanvas.Instance.DisplayTutorial(Tutorial.RMB);
            }
            while(true)
            {
                yield return null;
                if(CheckPathLength(PlayerController.Instance.transform.position, MAX_CHASE_DISTANCE))
                {
                    agent.SetDestination(PlayerController.Instance.transform.position);
                }
                else
                {
                    ChangeMonsterState(MonsterState.Wandering);
                }
            }
        }
        else ChangeMonsterState(MonsterState.Wandering);
    }

Monster Respawn Function:

private void RespawnMonster()
    {
        float maxDistance = 0;
        Vector3 position = respawnPoints[0];
        foreach(Vector3 point in respawnPoints)
        {
            float distance = Vector3.Distance(point, PlayerController.Instance.transform.position);
            if(distance > maxDistance && distance <= MAX_RESPAWN_DISTANCE_FROM_PLAYER)
            {
                maxDistance = distance;
                position = point;
            }
        }
        agent.Warp(position);
    }

The problem with the above code is in how rushed it is in design. Of course, no game jam entry is perfect, and this code is far cleaner than most jams I've completed in the past, but the design choices I made in the monster do not fit the polish that the rest of the game has. The monster in this game is supposed to seem intelligent, mysterious, and terrifying. Instead, the player may go through most of the game, not run into the monster in the long corridors of the game, and then, when they finally see the monster once, it teleports away never to be seen again because of how far away the furthest respawn point in range is.

Given more time, the monster would definitely get some work. I like the atmosphere, the sounds (besides the monsters) work well, and the level design can present some dreadful anticipation about what corner the monster might be hiding behind. Of course, the same puzzle over and over may also get tedious, but for the length of the game, I feel I added enough variety to pass for a worthwhile experience.


As far as next steps are concerned., I want to participate in another Mini Jam in a few weeks. This is my third one of these Mini Jams, and I find they present the exact level of challenge I'm looking for as a developer. In the meantime, I'll keep looking out for my next opportunity.


Until next time!

Robbie Wagner

Files

dungeon-win.zip 29 MB
Version 4 Sep 04, 2023
dungeon-win.zip 29 MB
Version 4 Sep 04, 2023

Get Dungeon

Leave a comment

Log in with itch.io to leave a comment.