Teritium
 

Pompous Trash 2021 Entry

Game Info:

  • Players: Single Player

  • Genre: Adventure, Exploration

Development Info: 

  • Role: Creative Director, Programmer

  • Core Team: Size: 5

  • Genre: Third Person, Adventure, Exploration

  • Jam Development Time: 2 Weeks

Quick Summary

Teritium is a single player open world survival exploration game about a small hermit crab that needs to make it to the ocean. In order to accomplish that goal the player (hermit crab) must collect trash items in the world and bring them to the various npc crabs to aquire new shells and further their journey. 

Project GOals: 

As an excuse to work on a system for a seprate project, the real goal of this jam for me, was to create a pictoral dialogue system to let players get information from npcs without using an existing written language. 

As the team and the idea grew, the goal of this game became to engross the player in the world and have them navigate the world with intentionallity while having them emotionally respond to feedback loop. 

I feel we accomplished this through the use of a handful of core gameplay systems and post processing that I will be going over in this writeup and hopefully gain a better understanding of the successes and failures of this project. 

System Breakdown

The following is a handful of Systems that I wrote or designed for this project. While there is many room for optomisation and imporivment I am proud of what I and the other programmer, Edward Newton, managed to accomplish in the 2 week we were given for the jam. 

Dialogue

Every NPC has 3 "sentences" that can be activated by the player. A dialogue pop-up is instantiated when the player activates them  and the assicuated dialoge data is passed to it. It was intended for one sentence to be said at a time so pooling dialogue pop ups was not concidered for the sake of time. One shortcomming that would be fixed post game jam, would be to prevent additional pop ups being spawned if an existing conversation was active. 

Dialogue pop-ups and associated Data

This is the prefab set up of a text bubble.  The DialoguePopUpBehavior holds all the needed refrences and logic. 

This is a sample of the Dialogue Data that is passed to the DialoguePopupBehaviour upon instantiation. It holds all words and their timings.

This is a sample of the WordData that is stored in DialogueData. It holds the mesh, material, size, and rotation offset of each word. Both NounData and VerbData inherit from WordData but differ on type for ease of production. 

Ultimately, the result looks good. For the jam, alot of the additional feeback systems were cut. But with more springing, rendering over the depth, and camera angles for the dialogue I feel this could be a very compelling interaction without spending time creating additional assets for converrsations. 

Application

Now that we have our Scriptable Objects for both sentences and words we just need to iterate through our sentences one at a time, with a timer. 

While simple I found it very effective below and I learned alot about this system, and the tools I'd need to support a system like this. A key note is that the dialogue data has 2 arrays that need to be the same length and made manually. Ideally id create a custom Dialogue Timeline Window to create and edit these. 

Interactables 

There are 2 things in the world the player can innteract with directly by pressing the E key. We handle it all with an Interaction Manager and some inheritance. 

The Manager

The manager has a list of all the interactables that are in a sphere collider in front of it, and upon pressing E, it quickly finds the closest one to the player, then calls its InteractionAction method. 

Also depending on the type of the interactable, it pauses further interactions to prevent the player from picking up more than one item at a time. 

Items and Shells

The manager has a list of all the interactables that are in a sphere collider in front of it, and upon pressing E, it quickly finds the closest one to the player, then calls its InteractionAction method. 

Also depending on the type of the interactable, it pauses further interactions to prevent the player from picking up more than one item at a time. 

This is the base class for all interactable. The interaction manager calls the InteractAction which really just calls the Action. Items and Shells both overide the Action method with their unique functionality. 

This is the Action for the Item Class

This is the Action for the Shell Class