SAND CASTLE
PITCH
Sand Castle is a Tactical RPG where the player has to infiltrate an ennemie complexe without guetting caught
Theme: Stealth
​
Genre: Tactical RPG
​
Target: midCore Gamer
​
Number of player: One
​
Engine: Unity
PROJECT CONTEXT
SandCastle is Tactical RPG made in 1 month for the end of our Second year. Its a first demo that can be select for the "End of studies project". On this project we are two Designer, me and Gautier Dogneton.
​
GAME DESIGN
During this project i work on all Game design features with Gautier including:
- Differents Mode:
On the game, there is two way the Player can move on the map:
​
- The Free Mode, allow him to move without "Turn" restriction. Its the default mode when the Player is out of fight.
​
- The Tactical Mode is where the Player can deal when he is near guards and he gain more information of the situations. He can plan his movement and use abilities to help him avoid or kill the Guards. Its the main mode of the game.
Free Mode
Tactical Mode
- Character Abilities:
During the Tactical Mode, the Player have 4 abilities he can use to help him on his journey. Each of them are design to promote one style of gameplay (stealth or agressive).
Shoot
The shoot is the main abilities for Agressive Player. It allow the Character to shoot a Guards in his Field of View. But it will make a lot of noise and alerte Guards near the shoot.
Invisibility
The invisibility allow the Character to not get detect by guard, even when pass by their Field of View. The ability last two turn and has 3 turn cooldown.
Traps
Traps can be placed at a location near the player. When a guard step on of it, the trap will explode and kill the guard, but the guards around will get alerted with the sound.
Hack
The hack can be use on Devices presents on the map to distract guards. When a device is hack, all the guards near it will go on the Device to turn it off. A device can be hack only one time.
PROGRAMMING
On this project i was the Only one in charge of the Programming but i have a little experience of working on T-RPG because i made one a year before, learning of the mistake i made on the past.
TACTICAL MOVEMENT
During the Tactical Mode, the Character have a limited area of movement depending on his mobilty. To set up this, I create Tiles that determined the Scale of evry movement of the game in Tactical Mode.
- Grid spawn & tile set up:
Because the map is big, I fully automatised the Spawn and the set up of evry Tiles in the map.
​
First, i create a Spawner place above the map who check evry 1 by 1 meter if a tile is allow to be create depending of a Layer Mask and place it a the right location.
Secondly, when a tile is create, it check if it's position is on a slop and change is rotation depending if its the case.
​
Finaly, when evry tile where created they:
- add evry adjacent tile around them in a list. (for movement)
- check if they are in front of an obstacle & add a Sign to it.
​
- Character Movement's:
For moving in the Tactical Mode, the Character can only do it by using tiles around a certain Area.
​
First, to calculate the limits of the Area the Character can move in, i take the tile just below the Character, i take evry adjacent tiles of this one, increment an Index by one, and reapeat the process to a Max of 10. Evry tiles with an Index between 1 & 10 is the Area.
= Obstacle
= Player
Secondly, I show the Path that gonna take the Character with a Line Render that I refresh with the Path that the NavMesh i use give me.
Finaly, when the Player validate is deplacement, the NavAgent of the Character receive the middle of the Tile selected and he move to there and using a Action Point.
ARTIFICIAL INTELIGENCE
The Obstacle we encounter the most during the game are the Guards. They are here to defend the place and neutralise the Character when they see him. They have differents behavior depending of the situation they are.
​
​
The Algotithm is nearly the same i use for AI of my personal project:
(Switch slide to have more details)
- Behavior: Seek:
One of the most interesting part of this AI, is its behavior during the "Seek" phase. The NPC will start to seek the Character by using the last poistion he know of him, but will always try to have a Cover effective against him.
​
For that, at the start of his turn, the AI will add to a list all the Cover in his Area of movement, and determined if they are effective or not depending of the position of the Character.
After that it will look if the Character is close enough. If its the case, the Guard will rush the Character and Kill him, otherwise he will get the closest and best Cover against the Character.
TURN BY TURN SYSTEM
During the Tactical Mode, action made by the Player and NPCs are severed by turn. The Player can make two actions during his turn and gonna need to wait the end of the guards turn to continue. The Camera will follow the one who made the action.
- Area system:
Because the map have a a large number of NPCs, and for optimisation and compfort, I decided to severed the map by Area. Only NPCs on the Area of the player will have their Field of View active and play during tactical mode, the other made their patrole, but can't interact with the Player.
To do that, when the Character enter into a new Area, we refresh the Turn by Turn system with the new NPCs on it.
- Turn path:
A turn works always the same way:
​
To do that, after evry turn, the system will check if its still the turn of the NPCs and if no one is dead during the turn.
​
If the player is the only one alive, he will directly play again.
OTHER
​
SandCastle is an ambitious project with a lot of feature that i can't explain in details here, but they are not less important:
​
- Character Abilities, Including shoot, traps, hack devices and invisibility
- The Camera Controller, to give the Player an imersive way to play with shoulder Camera when a Character shoot, the translate & rotate, ect...
- Evry behavior of the AI, it will be to long to explain evry behavior the AI can have.
​
TEAM
Adelin Pufu
Evironement Artist
Baptiste Colin
Concept Artist / Animator
Quentin Fontanel
Textures
Gaultier Dogneton
Lead Game Design /
Level Designer