Destruction Update!
Welcome back Pioneers to the, checking notes, fourth community post since the launch of our steam page in mid-November. Our main subject this week is 'Destruction', arguably the most fun of Dawn Apart's three main features next to ‘super-complex automation' and the whole 'colonize a hostile alien planet’ aspect. Disclaimer: this post is going to be a little more on the technical/coding side but bear with us: We've added some cool footage of us breaking stuff that should enthrall dev dudes and players alike.
But before we start we want to thank our followers and supporters for helping us to hit another milestone: According to SteamDB Dawn Apart has entered the top 1000 of most wishlisted upcoming games! This means our dropship has left the darkest corners of the Steam Universe and is on course to safely land on the bright planet of Aurora in the spring of 2024. Of course we hope to pick up as many space cadets on our journey as possible, so please continue to recommend Dawn Apart to friends, neighbors or random strangers on the street and make sure to join our Discord server!

[h3]Calculating Fractures[/h3]
Destruction in Dawn Apart will be omnipresent. Not only are you destroying Aurora's surface by terraforming and extracting precious minerals but, depending on your choices, you will get attacked by the indigenous It'ak population or have a fall-out with your contractor, the greedy Kobayashi-Schwarz Corporation. Both factions usually react with criticism that is not really, let's say, constructive (rather quite the opposite!)
As we have hinted at in earlier posts, in Dawn Apart we have a system which takes in upcoming damage of an object and figures out how exactly it should fracture. So for example, when a space marine riddles an It'ak hood with bullets, each projectile will create rays with a given force and trace through the object decreasing its force based on the physical type of the voxel it hits.
Life on Aurora is harsh: One minute colonist Luke was enjoying the view, the next he was struck by a factory tile.
Not all materials can be destroyed by physical damage, and in that case the force vector will bounce off and continue on in the opposite direction giving way to much more interesting destruction. After the tracing we have a list of fracture points and match each broken voxel up with the point they are closest with to generate the resulting debris. (Not every damage type lends itself to raytracing. Electricity or fire wouldn’t have the same effect as a bullet so we are developing unique algorithms for each)
[h3]Making an Impact[/h3]
In the last weeks we have also overhauled our explosion systems. Previously we were using a very simple logic to gather fracture points - essentially calculate a random set of points within the explosion radius and call it a day. But after we had to admit that we ourselves were not, well, blown away by the unrealistic big honking chunk the system produced we came up with another way.


Now we cluster fracture points around the impact point and spread them out more as the distance from the center increases. We can do that by creating uniformly distributed rays and march over it using a given step size. For each step we use a modifier to gradually increase the step size. We also implemented some dynamic voxel material attributes to let us “heat up” voxels that burn by explosions, or fire.
For now with the holidays behind us, and us being the Grinches that we are, we wanted to show off the new explosive logic by burning this cozy holiday-themed cabin to the ground (this will be of course not in the game but is a scene adapted from "vox-models" by kluchek, used under CC BY 4.0; we also added a debug FPS controller to our debug fly cam but normal gameplay in Dawn Apart will be top down).
[previewyoutube][/previewyoutube]
TL;DR: Explosions go boom. While this post was all about things falling apart, we hope all those systems will ultimately come together to form one first-class base building, automation, and destruction experience. See you next week and don't forget to join our Discord server for more cool clips of things getting pulverized down to the last voxel!
But before we start we want to thank our followers and supporters for helping us to hit another milestone: According to SteamDB Dawn Apart has entered the top 1000 of most wishlisted upcoming games! This means our dropship has left the darkest corners of the Steam Universe and is on course to safely land on the bright planet of Aurora in the spring of 2024. Of course we hope to pick up as many space cadets on our journey as possible, so please continue to recommend Dawn Apart to friends, neighbors or random strangers on the street and make sure to join our Discord server!

[h3]Calculating Fractures[/h3]
Destruction in Dawn Apart will be omnipresent. Not only are you destroying Aurora's surface by terraforming and extracting precious minerals but, depending on your choices, you will get attacked by the indigenous It'ak population or have a fall-out with your contractor, the greedy Kobayashi-Schwarz Corporation. Both factions usually react with criticism that is not really, let's say, constructive (rather quite the opposite!)
As we have hinted at in earlier posts, in Dawn Apart we have a system which takes in upcoming damage of an object and figures out how exactly it should fracture. So for example, when a space marine riddles an It'ak hood with bullets, each projectile will create rays with a given force and trace through the object decreasing its force based on the physical type of the voxel it hits.

Not all materials can be destroyed by physical damage, and in that case the force vector will bounce off and continue on in the opposite direction giving way to much more interesting destruction. After the tracing we have a list of fracture points and match each broken voxel up with the point they are closest with to generate the resulting debris. (Not every damage type lends itself to raytracing. Electricity or fire wouldn’t have the same effect as a bullet so we are developing unique algorithms for each)
[h3]Making an Impact[/h3]
In the last weeks we have also overhauled our explosion systems. Previously we were using a very simple logic to gather fracture points - essentially calculate a random set of points within the explosion radius and call it a day. But after we had to admit that we ourselves were not, well, blown away by the unrealistic big honking chunk the system produced we came up with another way.


Now we cluster fracture points around the impact point and spread them out more as the distance from the center increases. We can do that by creating uniformly distributed rays and march over it using a given step size. For each step we use a modifier to gradually increase the step size. We also implemented some dynamic voxel material attributes to let us “heat up” voxels that burn by explosions, or fire.
For now with the holidays behind us, and us being the Grinches that we are, we wanted to show off the new explosive logic by burning this cozy holiday-themed cabin to the ground (this will be of course not in the game but is a scene adapted from "vox-models" by kluchek, used under CC BY 4.0; we also added a debug FPS controller to our debug fly cam but normal gameplay in Dawn Apart will be top down).
[previewyoutube][/previewyoutube]
TL;DR: Explosions go boom. While this post was all about things falling apart, we hope all those systems will ultimately come together to form one first-class base building, automation, and destruction experience. See you next week and don't forget to join our Discord server for more cool clips of things getting pulverized down to the last voxel!