Suggested Formal Description of a Shy Monster Living in the Dark

J Young Kim

New Member
Contributor
Design
Animations: An important thing to note is that this article cannot describe animations. For instance, a two legged monster would eat sitting down or standing up, with the food being delivered to its mouth using the hands, while a four legged monster would eat standing up with its mouth going directly to the source of food. Thus, when developing a shy monster living in the dark, animations should be decided by the animators based on the character model.


Note #1: The following descriptions of behaviors are suggestions, since they are behaviors I imagine a shy monster living in the dark would exhibit. If you’d like to challenge a certain behavior, please comment below because I’d like to also know what others imagine these monsters doing.


Note #2: I write monsters reacting to “animals and humans” a lot. If the monster created turns out to run away in every instance in its life because a human or animal always sees it, then change it so that the monster only acts to human encounters.


Note #3: An important thing to note is that when “is seen by the player or animal” is stated, it means that the monster has to realize it. Just because a player set his or her eye on the monster doesn’t result in the monster fleeing. If the monster notices that something is there (peripheral vision of monster) and could be watching the monster, then the monster will realize that it may have been discovered.


Naturally Occurring Behaviors

  • Default/Idle: By default, the monsters would probably stay in an area that’s not easily visible to the players or other animals in general and an area that is also pretty dark. However, no matter how shy the monster is, we cannot have it sit in one area forever. Thus, every once in awhile, it’ll traverse the lands (see next behavior). The monster is shy, so encountering humans or animals The monster will break out of the default/idle state until there is a need for something (see this page for an explanation of need-based AI http://forum.terasology.org/threads/ai-crowd-simulation.1682/).

  • Traversing: The Pathfinding algorithm of the shy monster would have it so that the monster would be searching for dark areas. After all, the monster favors the dark. A possible method of such algorithm would be to find the brightness of each block that it can go to next and to find the dimmest block. In the case that all the blocks are of the same brightness, then the monster will choose the block which will lead it closest to its destination. Traversing for aquatic monsters would be the easiest. Essentially, the monster would just have to travel in deep waters. For monsters which can dig to go underground, it can traverse underground (but the player will hear the digging if near where the digging is occurring).

  • Sleeping: These monsters, like all living entities, require sleep to function. However, these monsters should not be sleeping anywhere. Unlike most other living entities, these monsters, in addition to finding a dark place, would also need to find a place where other animals/the player would not easily find them. Thus, so example spots of sleeping spots would be in the trees, in a bush, in a cave, and in the dirt (for aquatic monsters, possibly sleep while hiding like flounders?). Since the monster favors darkness, the monster should be nocturnal to a certain extent. Luckily for monsters who can dig, it can just dig itself a hole and hide itself in it to sleep in

  • Eating: The shy monsters can be carnivores, herbivores, or omnivores. The players can hear eating sounds if the player happens to walk by a monster eating while hiding. The monster would not like risk getting spotted because it’s shy, so it’ll most likely gather the food and eat it while in hiding instead of eating it directly from the source. For instance, the monster can take deer meat back to its home after it has killed it instead of eating it in the open. For herbivores, the monsters can take the plants to eat back to its home. If the monster happens to be found eating, then it’ll leave its food and flee. However, in the case it’s an aquatic monster, it’ll most likely look for prey it can eat in one bite and then return to hiding, since it’s not well known for aquatic animals to drag food around in the waters.

  • Drinking (for land monsters): The monsters would most likely drink from natural water sources, but most likely in the night. Water is not something which can easily be brought back home, so the monster will be reluctant to drink, and will only drink when necessary. While drinking, if something spots the monster, then the monster will flee immediately. The action of drinking will take a long time because the monster will have to quench its thirst to the max degree so it won’t have to drink for a long time.

  • Breathing (most applicable to aquatic monsters): We cannot exactly see anything breathing in Terasology, for it’s a game (even high-end games don’t include breathing animations). However, if it’s an aquatic monster, if the player happens to see the monster, one thing the player should see is it’s gills moving (breathing). Naturally, breathing is important, and is one of the most natural tasks of all living species, and for living species which the act of breathing is visible, Terasology should also make it visible.

  • Climbing (most applicable to two legged monsters): A common thing for two legged monsters would be to climb, especially trees. This is due to the fact that climbing trees in some instances has very big perks for the two-legged monster. If the two-legged monster happens to be an omnivore or a herbivore, then it can climb a fruit tree, and enjoy its food while hiding in the trees. In cases where the monster feels sleepy, then it can sleep in the tree itself. Thus, if the situation is right, the two legged monster will not hesitate to climb a tree.
Situation Induced Behaviors

  • Fighting: The monsters can be programmed so that they turn aggressive to players or animals who attempt to either hurt it/capture it, or if the monster feels in danger in general. However, once the monster feels that the player or the animal has backed off, it’ll proceed to fleeing the scene. During the fight, screeches may be made by the monster. Thus, if the monster feels in danger by another living entity, keep attacking the entity and screech while the monster feels in danger, and when it stops feeling in danger, break out of the while-loop and start fleeing.

  • Hiding: This is a behavior which the shy monster exhibits when the player or an animal first sees the monster. The monster will attempt to hide in a variety of methods. Some examples include climbing up a tree, diving deeper into the water, running into a cave, jumping in a bush, etc. Of course, the method of hiding depends on the type of monster (in terms of build) and the available hiding spots (i.e. the monster should not attempt to climb a tree if there are not trees around). If no hiding spots exist, then start fleeing. Thus, if the monster is found and there are hiding spots, go to them immediately (spot whatever action the monster was taking before it was discovered). If there are no hiding spots, run away from the living entity that saw the monster.

  • Fleeing: This is a behavior which occurs when the hiding monster is found after the monster encountered a human or animal or if simply there is not hiding places. The fleeing is essentially the monster running away from whatever it was discovered by. The fleeing algorithm is important because we would not want the monster to just run in the open just for the sake of running away. The fleeing pathing should be made so that the monster is getting away from the discoverer while shrouded in much darkness and cover as possible. Thus, if the monster is discovered when it was hiding or if it was found and there were no hiding spots, then start running an intelligent path away from the discoverer.

  • Screeching: The screeching by the monster can be evoked when the player or another finds the shy monster initially. The screeching is an attempt to “scare” the entity which finds the monster and discourage it to follow it as it flees. However, if the finder follows the fleeing monster, the monster will start fight the follower until the follower stops following the monster. The screeching should also occur when it feels in danger. Thus, if monster in hiding found, then screech and proceed to flee. If followed, fight the follower until the follower stops following. Or, if the monster is in distress, start screeching and keep screeching until the distress has been resolved.

  • Suspicion: We have to acknowledge that like all animals, the monster should have a mechanism of being lured. However, the monster will start with an AI that will at least identify man-made objects (i.e. if a berry bush was placed by a player, the monster will know). The monster will circle around it, and attempt to eat whatever it’s being lured by via small nibbles. Of course, if the monster notices your presence, then it’ll flee, but if it doesn’t notice the player’s presence, it will take the bait and may get captured (which will lead the monster to start screeching). Thus, the if the monster encounters a “man-made” object, then start suspicion mode and set the suspicion meter to be 100. As long as the player does not expose himself or herself, the meter will decrease and once it hits zero, the monster will treat the man-made object as if it were natural. The rate of the meter decreasing should vary depending on different scenarios (a bush that has nothing should have a faster rate of decrease than a bush with ropes on it).

  • On the Hunt: This behavior is very rare for the monster (mostly carnivores) to exhibit. This is when the monster is malnourished, is in need of food, but cannot find any while being hidden. This will result in the monster not being shy and attack players/animals in plain sight. However, after finding ample food, then it’ll return to the default state. Thus, if extremely hunger and no food, then trigger “On the Hunt” for the monster.

  • Return to Discovered Area: This is behavior which is exhibited by found monsters who have successfully fled the discoverer if there was something which the monster left behind. For instance, if the player finds a monster and the monster was eating, it’ll leave behind whatever food it was eating for the player to pick up. Regardless if the player decides to pick up the food or not, the monster will eventually return to the place it was discovered and pick up what it left if it still remains. Thus, if the monster has successfully fled after being discovered from its hiding spot, then after X minutes, return to the hiding spot. However, if the monster senses the player near the hiding spot as it’s attempting to return to the hiding site, then the monster will just not return and forget about the hiding spot.

  • Bad Weather: During bad weathers (i.e. storms, snow, rain), the monster will most likely stay under cover, such as in the trees or in a cave (deep, not in the entrance). In other words, the monster will hide in an area that will provide cover for the monster while in an area that is not visible. Thus, if there is bad weather, the monster will pathfind to the nearest place where it’s quite hidden and provides cover (AI of the monster to recognize such places is required).

  • Breaking Out: I am going to assume that the monsters are very strong. If a player decides to capture a monster, after X minutes, the monster will escape and flee. This is intentional: the monster should not be captured by the player forever. The monster will be able to break walls, dig, cut rope, bend metal bars, and any other action which aids in escaping the bondage it’s in. The path/method of breaking out will be visible to the player (cutting rope = rope item on the floor, Thus, if the monster is in a state of capture, then the monster will start to break out of whatever is holding it. While held, the monster will making screeching noises to annoy the player.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Very nice write-up!

The Breaking Out part I support at least attempts for, but probably there should be a way the player can increase the odds of escape failure with the right tools, blocks, and so on, rather than it being a guarantee :)

These write-ups still seem such a great foundation to build on, like adding outright behavior tree sketches for the involved behaviors. Maybe a next layer GCI task there.

Finally this one in particular reminded me of one of my old design threads: http://forum.terasology.org/threads/the-night-is-dark-and-full-of-terrors.1067 - very similar behavior intended by the monster there, although the shyness diminishes over time as the nights grow darker ... ;)
 

J Young Kim

New Member
Contributor
Design
Very nice write-up!

The Breaking Out part I support at least attempts for, but probably there should be a way the player can increase the odds of escape failure with the right tools, blocks, and so on, rather than it being a guarantee :)

These write-ups still seem such a great foundation to build on, like adding outright behavior tree sketches for the involved behaviors. Maybe a next layer GCI task there.

Finally this one in particular reminded me of one of my old design threads: http://forum.terasology.org/threads/the-night-is-dark-and-full-of-terrors.1067 - very similar behavior intended by the monster there, although the shyness diminishes over time as the nights grow darker ... ;)
Thanks! The Breaking Out element was the one where I contemplated a lot on. The problem is that attempting to keep a monster from escaping to the wild would not be ideal for younger audiences since it's showing forced captivity. In order to counter-this, there should be a "taming" mechanism so that the monster would start to be loyal to the player. However, I wasn't sure if loyalty of monsters would be something that players would be striving for.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Thanks! The Breaking Out element was the one where I contemplated a lot on. The problem is that attempting to keep a monster from escaping to the wild would not be ideal for younger audiences since it's showing forced captivity. In order to counter-this, there should be a "taming" mechanism so that the monster would start to be loyal to the player. However, I wasn't sure if loyalty of monsters would be something that players would be striving for.
That's a good point and something we also think about from time to time. In the end it comes down to different gameplay templates (think "mod packs") having the choices to configure their gameplay as the author sees fit. There's a valid counterpoint of using a game to illustrate evil or similar behavior while connecting it to some sort of moral dilemma that might speak to the player somehow.

So ideally we'd want to to write systems that can support all available options and simply leave it up to authors to pick the details :)
 

AvaLanCS

Member
Contributor
Very nice definition!

I could only think of one scenario that was only hinted at: when the shy monster is cornered, and the only possible paths for escape lie close to the player/attacker. Maybe the monster could start screeching, and get louder as the player gets closer. At a certain distance the monster would turn to fighting mode, otherwise if the player disengages, then screech continuously quieter and eventually revert to default behaviour?
 

J Young Kim

New Member
Contributor
Design
Very nice definition!

I could only think of one scenario that was only hinted at: when the shy monster is cornered, and the only possible paths for escape lie close to the player/attacker. Maybe the monster could start screeching, and get louder as the player gets closer. At a certain distance the monster would turn to fighting mode, otherwise if the player disengages, then screech continuously quieter and eventually revert to default behaviour?
Yes, I would agree that this behavior is quite necessary and logical. It'd be better than the monster automatically switching gears to offensive behavior :p
 
Top