top of page

TRAILER

WHAT'S

PRAISE THE OGRE

Praise the Ogre is a 3D isometric game, where the player must manage his resources to survive and defeat the ogre.

​

During the day you have to adapt to the ogre's characteristics and invert your resources correctly to decrease his fury level.

​

During the night he will wake up and depending on how did you manage your resources, he will take action and destroy some houses of your village or not.

​

You can buy multiple resources to obtain gold, food, poison, houses, guards and training spots for the guards.

​

There are 4 types of Artificial Intelligence. The ogre, guards, villagers and goblins. 

​

Made with Unity 3D and C#.

​

SERVICIOS
NOSOTROS
PROYECTOS
CONTACTO

PRAISE THE OGRE

​

THE GAME

THE TEAM

Adrián Lopez 

Francisco Ruiz

Título secundario
Título secundario

The tree starts with a binary selector to see if it's night time (sleeping) or not (!sleeping). If he's not sleeping, we will dinamically check if his house is active (Check If Active is our own ConditionTask to see if a GameObject, in this case "myHouse" from the blackboard, is active). If his house is active, he will enable himself in case he wasn't active, and then will proceed to check if the amount of crops he's carrying is lesser than a set amount. If he is, he'll Go To Object (with the FoodBoxDeposit as destination) and Deposit said amount on the box, reseting his carrying to 0.

If he can still carry more crops, he'll do a parallel dynamic Wander and Look for Crops. Look for Crops will end on success when finding the nearest crop, and then the farmer will go to it, activate his gathering icon, pick the crop (resulting on more gold or increasing the carrying amount depending on the crop he's gathering) and deactivate his gathering icon.

In case he's set to sleep, he will first check if he is in his houseEntrance. If he isn't, we will activate his going to sleep icon, deactivate the gathering one just in case he was gathering, and he'll go to his house, setting the onHouse bool to true when he arrives. Once he's home, we'll deactivate the icon and himself (meshes) so it looks like he's inside sleeping.

​

The tree starts with a binary selector to see if it's night time (sleeping) or not (!sleeping). If he's not sleeping, we will dinamically check if his house is active (Check If Active is our own ConditionTask to see if a GameObject, in this case "myHouse" from the blackboard, is active). If his house is active, he will enable himself in case he wasn't active, and then will proceed to check if the amount of crops he's carrying is lesser than a set amount. If he is, he'll Go To Object (with the FoodBoxDeposit as destination) and Deposit said amount on the box, reseting his carrying to 0.

If he can still carry more crops, he'll do a parallel dynamic Wander and Look for Crops. Look for Crops will end on success when finding the nearest crop, and then the farmer will go to it, activate his gathering icon, pick the crop (resulting on more gold or increasing the carrying amount depending on the crop he's gathering) and deactivate his gathering icon.

In case he's set to sleep, he will first check if he is in his houseEntrance. If he isn't, we will activate his going to sleep icon, deactivate the gathering one just in case he was gathering, and he'll go to his house, setting the onHouse bool to true when he arrives. Once he's home, we'll deactivate the icon and himself (meshes) so it looks like he's inside sleeping.

​

Ancla 1
Ancla 2

BEHAVIOUR TREES

FARMER

The tree starts with a binary selector to see if it's night time (sleeping) or not (!sleeping). If he's not sleeping, we will dinamically check if his house is active (Check If Active is our own ConditionTask to see if a GameObject, in this case "myHouse" from the blackboard, is active). If his house is active, he will enable himself in case he wasn't active, and then will proceed to check if the amount of crops he's carrying is lesser than a set amount. If he is, he'll Go To Object (with the FoodBoxDeposit as destination) and Deposit said amount on the box, reseting his carrying to 0.

If he can still carry more crops, he'll do a parallel dynamic Wander and Look for Crops. Look for Crops will end on success when finding the nearest crop, and then the farmer will go to it, activate his gathering icon, pick the crop (resulting on more gold or increasing the carrying amount depending on the crop he's gathering) and deactivate his gathering icon.

In case he's set to sleep, he will first check if he is in his houseEntrance. If he isn't, we will activate his going to sleep icon, deactivate the gathering one just in case he was gathering, and he'll go to his house, setting the onHouse bool to true when he arrives. Once he's home, we'll deactivate the icon and himself (meshes) so it looks like he's inside sleeping.

​

OGRE

As the farmer, the ogre will check if he's sleeping or not first. If he is, he'll deactivate his fury icon (just in case), go to his house and set the animation to a resting one.

If he isn't, he'll take away the resting animation, go to the food box and get his food. If the amount inside the box is less than the amount he needs, the action will end with failure (if not he'll go back to sleep).

When getting food ends with failure, he'll activate his fury icon and look and go for the nearest house, deactivating it when he arrives. After that he'll go back to sleep.

GUARD

The guard will always start deactivating his sword icon just in case he fought something. Then he'll do a dynamic parallel wandering and looking for goblins and training spots. If he finds either of them, he'll activate his sword Icon and prioritize the goblin. If there's no goblin, he'll go and train.

Pursue Task: Pursues another GameObject. When he's within the minimum distance, he'll kill it. Train: When the task is finished (using a timer) his maximum speed will increase a given amount.

GOBLIN

​

Goblins have a boolean "Dead" that is set to true by the guards when they get them after pursuing. If they aren't dead, they'll do an action list of: looking for the nearest crop, going to it, stealing it, going back to spawn, and destroy themselves.

​

However if they are dead they will play a death animation and destroy themselves after a short timer.

DESIGN

Ogre is designed to have random characteristics every game, so it doesn´t feel repetitive and are leveled to don´t feel them unfair.

​

Deppending on the level on each section, player must use his gold to produce one resources or others because each bar have a puntuation that impacts the level of ogre's fury (fluctuating between 1 - 5 points), wich determinates the amount of houses he'll destroy when the night comes down.

​

Fury level is determinated by: 

                                                        fury_level = gluttony_score  + bravery_score + intelligence_score

​

There are 3 different characteristics:

​

- Gluttony: Amount of food ogre can eat. If the player produces less than the food level indicated will generate more fury, else will puntuate 0 points.

                                                                        gluttony_score = (gluttony - food_amunt)

​

- Bravery: Security level needed on the village to intimidate the ogre. If the player have less security than indicated will generate more fury, else will puntuate 0 points.

                                                                        bravery_score =  (bravery - security_level)

​

- Intelligence: The ogre's poison perception on the food. For each mushroom given, the fury will increase. If there is no mushrooms will puntuate 0 points.

                                                        intelligence_score =  (mushrooms_collected * 0.20f * intelligence)

                                                             

This fury level will affect on the daily puntuation (1 to 5 points), where the player can have a C, D, B, A, S, S+ grade. 

There is a different gold rewards on each grade and is generated this way:

​

                               score = (food_collected + security_level + mushrooms_collected)/3 + purchases - fury level

​

Where purchases variable adds +0.25 for each purchase and +0.5 on each house purchase.

​

​

All this variables generates a complete new strategy every game and forces the player to improvise, adapt and overcome different situations.

bottom of page