[GAME] Gravewood High – an infinitely replayable stealth horror game with level destruction!

Hello fellow devs!

It’s time to talk about a very effective mechanic. And we also have great news right at the end of the post;)

One of the most important parts of our game is the level destruction. At the prototyping stage, our team really liked the idea of allowing the player to burn or blow up almost all of the interiors in a given location.

https://lh5.googleusercontent.com/BNFC6hCgm7fvGyI6YhMSFm8qmB3fUaJ-6WHcUfxIOcVTPeF-LxauFDvzol5XEBeyAZzrcfAJGh8dSatC6A1YIY7ED60Z2PHdG7KrgxQnXvBrapwnrfGEfpD9AHCbfnRGGlCYzQBB

We have retained this feature in the Alpha 1 build, replacing fire with an artifact that smashes through certain walls and objects. Even in a stealth game, destroying something feels fun and meaningful, as long as there are repercussions to such player activity.

https://lh4.googleusercontent.com/j5pddbee4NyARPzL0oFT_ixvsMakKfvA24URypdjLqWrX_602gQPoV8IEUtMzjGWLMlikUFq5GH5NMLomvxCbUpb-M-vjo8G0i8u1GcYlMZrR7J5qLxEexupymrVgqMozVpHlnez

To get things working, we’ve used destructible meshes (apex), with the combination of a custom optimization workflow to minimize draw calls.

When you first load a level, every destructible mesh is represented as a static mesh (for instancing purposes). An event command is sent to the static mesh, as and when needed, which replaces it with a destructible mesh.

The reason for doing it this way? Well, the destructible mesh is a child class of a skeleton mesh (skeleton meshes aren’t instanced, which can lead to a large amount of draw calls) and our team wanted to avoid overloading the player’s machine.

https://lh3.googleusercontent.com/CNkZISBY7UcL4966opnXTY2jMFKmkUZidm67kGbTADR2673lK3aI6q83gHdoNJx2_SUCwhi-7NGxH8AAdDpvhd4bW8K4rDkWR6u6o93_kRjRudsjdiC_z9DClrC-sY5b-ffHFnjF

A wall blueprint is displayed above. The non-destructible mesh Object (static) is enabled initially. After a collision with an artifact (upon destruction), this mesh is removed, and ObjectDestructibleA (movable) is turned on, which is blown to pieces. And we have ourselves a fully destructible wall.

There are also brick walls present in the game, which only show partial (one might say, superficial) destruction on their surface. The main difference with the previous wall type is that, at the time of destruction, in addition to replacing it with ObjectDestructibleA, ObjectB (static) is also included. This is the “ugly” carcass of the destroyed wall, which remains standing and does not allow the player to go where we don’t want them to go. Such walls surround the location and serve as boundaries for the area in which gameplay takes place.

https://lh6.googleusercontent.com/193PLvPxM-1laeIGBJ1xEbUc_JeM4QTiEKOZCjedaHlK2iHd-I7iY4071eeSOHzt8Vp6-KTd-HVPjTc989VAE_jHsFR3CJdSc229SM8IAU0vBnWRWnMW8qB57AUmFRMJyKDUDjFn

The single static mesh is changed to movable in order to save resources, since in the destructible version of each wall there are about 80-150 shard meshes with their own geometry. It is better not to draw all of this info all at once, until the destruction process begins. Afterwards, the fragments disappear (after 10 seconds), freeing up memory for the next destruction.

https://lh6.googleusercontent.com/MyptBMv7PCliDxR0MNnJGTwgSVQUBgfsZvM-XtPvXV8N1SZSAG-21tKE7VMYkLknjNhjxcSveZH3bUOJi0Ab7TUqQCwHwdTzy5gVc4rpss0-pJtMp6Ltp2KMxfnp5f2htf1KDHMM

Alpha 1 is available for everyone, you can independently evaluate the work with light and destruction, which we wrote about earlier. As well as other things available thanks to Unreal Engine.

Aаааnd one more exciting piece of news that we are proud to share with everyone - Gravelwood High will be released on the Epic Games Store.

https://www.epicgames.com/store/prod…wood-high/home

Be sure to add the game to your wishlist and follow the news! Development is progressing fairly rapidly, and our team will be sharing more info about Alpha 2, which is coming sooner than you think :wink: