![Heaven's Shores](https://static.wixstatic.com/media/7640d2_0fa266b4e7604a40bea530c1c49bc00e~mv2.png/v1/fill/w_608,h_500,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/Screenshot_9.png)
About
Heaven's Shores is an action adventure hack and slash. Play as a pirate that plunders his way through heaven to get his treasure.
Role
Lead Engineer
Year
2020
![Heaven's Shore Trailer](https://static.wixstatic.com/media/7640d2_5c0a527d86164c27ba88fdfcff299118~mv2.png/v1/fill/w_980,h_551,enc_auto/file.jpeg 1x, https://static.wixstatic.com/media/7640d2_5c0a527d86164c27ba88fdfcff299118~mv2.png/v1/fill/w_1960,h_1103,enc_auto/file.jpeg 2x, https://static.wixstatic.com/media/7640d2_5c0a527d86164c27ba88fdfcff299118~mv2.png/v1/fill/w_2940,h_1654,enc_auto/file.jpeg 3x)
Heaven's Shore Trailer
Breakdown
Player Controller
The player character is what we consider to be the most crucial part of the game. Since the user will be controlling them for the entire duration, the team felt that we needed to make the character feel good to play. We took the time to break down and carefully examine different aspects of the player character. When developing, we broke down the controller, the stats, and the interfaces.
First, we developed the character controller; this is an essential part of the character since it makes the character feel responsive and fun to play. The controller went through many iterations. We initially started with the character controlled directly through Blueprint. Doing this caused many issues when implementing animations. Sometimes the player would clip through walls or other collisions when an animation played. To resolve this, we turned to Root Motion. Root Motion allows animations to dive the character controller's position during runtime. While Root Motion solved the problem of the character clipping through walls, it introduced another issue. We needed to reanimate many of our pre-existing assets. While this was not ideal, we feel it made the character play better in the end.
Next, we developed how we define the player's abilities and stats. I wanted a way to access and change numbers so balancing would be smoother. To facilitate this, we implemented a blueprint component that sits on the character controller Blueprint. This component is a data container the holds thing like health, mana, speed, ammo, and damage amounts, to name a few. The character controller can use these values to drive different mechanics, as well as the designer has easy access to edit values to get the balance they desire.
![Screenshot_10.png](https://static.wixstatic.com/media/7640d2_7ea80c2d3de84c068bffb83807a54a51~mv2.png/v1/fill/w_292,h_342,al_c,q_85,enc_avif,quality_auto/Screenshot_10.png)
Lastly, we needed a way for other Blueprints and Actors to talk to the character controller. For example, we needed a way for the enemies to damage the player in a consistent manner. I solved this issue by implementing a Blueprint Interface on the character controller. This interface allows other blueprints to quickly call functions without the need to cast. This setup dramatically reduced the memory allocation for the character controller and made the game less memory intense.
![Screenshot_11.png](https://static.wixstatic.com/media/7640d2_3e61d83106cd4272bc94fe9baeef1ccf~mv2.png/v1/fill/w_333,h_235,al_c,q_85,enc_avif,quality_auto/Screenshot_11.png)