Lamentum – Let’s talk about the AI | Dev Log

Hi!

We have not been able to upload a dev log for a while, but it is not because we have frozen but, on the contrary, we are advancing and improving Lamentum day after day.

In the devlog of today we are going to talk about AI in depth since last week we have been very focused on improving and expanding this topic.

The AI ​​of our enemies has been programmed as a state machine and we have developed it through independent modules so that we can create different patterns of behavior following some basic rules.

The states on which our AI is based are:

– Inactivated: The AI ​​is not active in the scene, it needs an external factor to start.
– Rest: The AI ​​is active but has no objective.
– Alert: AI can move between routes with points of interest.
– Attack: AI in action fighting.

They may seem like basic states but these allow us to have different types of AI depending on the type of enemy, for example, some enemies in the Attack state will seek to reach the target according to their range of action while other enemies will maintain distance because their role is to spawn new enemies.

We previously showed how our AI was behaving in motion and explained that we had programmed a raycast system that would allow it to detect if the direction of movement was adequate or if it had an obstacle and needed to reposition itself to move forward. This in theory worked fine but not as well as we would have liked, in some cases with several enemies simultaneously strange situations were generated and some corridors with enough obstacles did not take a clear route and could lead to loops, so we have discarded that part and we have implemented a pathfinding algorithm that in turn takes into account the size that we want to define our enemies.

We have simulated a quite rare situation with several equal enemies in the same room, although we really doubt that such a case is in Lamentum, we wanted to put this algorithm to the test and we liked the results:

NavMesh1

NavMesh2

The good thing about having structured the AI ​​into independent modules is that by discarding a part of the work that we had before with the raycast movement system, we did not have to redo the entire AI since it was only the module that we used for the movement. In fact the previous system we have left to some enemy that we want to look more “dumb”.

Lamentum, Decisions will mark your path | Dev Log

Hi!

We continue to work hard in Lamentum and today we would like to talk about the importance of decisions in our survival horror.

From the beginning of the development we were always clear that Lamentum has several finals available depending on the decisions we choose while we play. But… How are decisions made in Lamentum?

During your gameplay, you will meet several characters that may influence the course of the story and that will force us to decide what we want to do.

Some decisions will be presented through a system of elections in the dialogues.

NPCGhoul

The Lord of the Maggots

But this is not the only way to make decisions in Lamentum … To whom will you give the object? Which way will you choose? Did you solve the puzzle correctly?

We do not want to make spoilers but your way of playing will influence the story…

mosquete

Lamentum already has a Steam page! Store.steampowered.com ! Support us by adding to your wishlist!!

wishlist

IMG_2131

Lamentum already has a Steam page

Hi!

Lamentum already has a Steam page https://store.steampowered.com/app/1033950/Lamentum/

We would appreciate it if you would support us adding us to your wishlist!

wishlist

IMG_2131

We have also updated our website with much more information about Lamentum

Dev Log: 10 Improve Lights

Hi!
We had been some time since we wrote a devlog, the main reason is that we have been working on a new trailer.

Do you like it?

One of the most representative changes with respect to the previous trailer is that we have improved our lighting system by combining our shader to illuminate diffuse materials with particles and the truth is that we liked the result.

The main reason why we have worked on creating our own shader for the treatment of light instead of using the Unity lighting system is for the performance. When working with 2D pixel art graphics we do not need the light computations that generate the Unity lighting system by default and we can use a greater number of simultaneous lights with a lower cost of performance, this led us to consider… How did we get that the light had a little volume? The answer is the particles, with a bit of love we have managed to make the lights have more visual presence in the scene apart from the main objective of light, illuminate.

 

Instantánea - 2.png

Lamentum – New Trailer | Pixel Art Survival Horror

 

Lamentum is a pixel art survival-horror game that takes place in New England in middle of the 19th century.

You will play the role of, Victor, a young aristocrat looking desperately for a cure for a rare disease.

The game will focus on the exploration and resolution of puzzles, but without forgetting the action and combat.

Follow us:

E-mail: obscuretealesgames@gmail.com
Twitter: https://twitter.com/ObscureTales
Facebook: https://www.facebook.com/ObscureTalesGames
IndieDB: http://www.indiedb.com/games/lamentum

About the team:

Developing this game is a small team of two persons known as Obscure Tales, based in Spain.

Also, we have the collaboration of Black Light Sound our fantastic musician, in charge of music and sound effects.

Soundcloud: https://soundcloud.com/blacklightsnd

Dev Log: 9 Inventory and Item Box

Hi!

These weeks we have been focused on completing the development of the inventory and the item box (wooden chest).

As good survival horror our inventory will be limited and we will have to manage it well.

The inventory has nine spaces. The first three are special, the objects that we place in these positions can be used immediately by pressing the quick access
buttons.

InventarioDevLog1

Another thing that we have finished is the item box (wooden chest) . In certain areas we will find a wooden chest where we can store objects in an unlimited way.

BaulDevLog1

Also, we have improved the interface of the game, always bearing in mind the possibility of playing with keyboard + mouse or with a controller.

InventarioYBaulDevLog1

 

Dev Log: 8 Hiding System

Hi!

The last days we have been working on a new game mechanic, hiding from the enemies.

In Lamentum combat will not always be the best option. Sometimes hiding will be vital to survive.

 

 

Our character can use the environment to go unnoticed, however not all enemies can be deceived in this way. Some creatures will use other senses to find you and sometimes it can be a very bad idea to turn off the lamp … 😦

Features of the hiding system:
– New hiding points (e.g. Furniture).
– You can not hide with the active lamp.
– You will not be able to move while you’re hiding.
– You can not hide from all types of enemies, some can detect you even hidden.
– Hide is an option, you choose your way of playing.

Dev Log: 7

Hi!

In today’s dev log we want to show the changes we have applied to the game’s light and particle system.

Among the improvements we have achieved we can highlight:

  • Improved contrast between dark and light areas (avoiding a collapse of lights and optimizing their performance).
  • Greater depth to the light according to the layer in which it is placed.
  • Color enhancements in light sources.
  • Better control of the intensity and flicker of the lights.
  • Particles of dust.
  • More detailed rain.
  • New climatic effect, lightning.

Dev Log: 6

Hello!

During last week we have been ending the routes system and pathfinding of the enemies. We have also been working on the attack system of the enemies.

Pathfinfing by checking of collisions:

According to the video, we have the possibility of creating customized routes for each enemy (In this video, we have two created routes, blue and yellow points), besides, each enemy uses their own AI to dodge obstacles.

Attack system of enemies:

Now the enemies are able to attack the player. When the player go on their field of view, they leave the route that they were keeping and they follow him until they kill him.

The impacts of the attacks will change depending on the enemy’s strength (in some cases even they will push to the player, as in the previous video).

In future devlogs we will talk about the evolution in the player’s weapon system.

Dev Log: 5

Hello!

During the last few weeks we have been advancing in the development of the game and we have been focusing in the development of different AI for the monsters of Lamentum.

Mainly, the AI of the enemies is programmed like a state machine that it could split in three:
– Normal State
– Alert State
– Combat State

In the Normal State, the AI will have a patrol route defined by the map where it will be. When the state changes to Alert State, the AI will have located to the player and, depends of the type of monster, it will seek to reach to the next state, the Combat one.

Both to patrol and to reach to the player previously located, the AI must be able to find a valid path to reach to his goal.
To get this, we have developed a pathfinding based on the testing of colisions.

To do these checks of colisions, must be defined a volume for each AI, we like very much this, due to our monsters have varied sizes (since little monsters to humanoids and others big and fierce ones xD).

According to this volume and to avoid that the monster was trapped somewhere without knows how escape and goes out, we draw two triangles of 45 degrees in base to this pivot, pointing to the possible directions of movement, after the result, we do the testing of the colisions in base to these triangles.

The reason to use two triangles instead of only one is simple, the corners, each triangle informs us of the possible colisions that can have in its zone.

We like the result and we believe it’s right for the monsters of the game, which we don’t want that always search the best possible path, but that they will be able to avoid obstacles.

In the beginning we considered programming an algorithm A* search to the pathfinding, but according to the different possible volumes of the monsters and the fact that our stages aren’t completely based on tiles, we discarded it.