' Playground - FREE Destructible Construction System - WIP

wow, really nice work!

Very amazing! Looks hella fun! I wouldn’t suggests overcomplicating it, though. Best luck!

I’ll make a Repository on GitHub eventually
I like the idea of others contributing. But I don’t want to make this too much of a teamwork with allocated tasks, fixed goals etc.

Saw your android project a while ago. Hope you’re still on it cuz i like the idea alot :>

About the landscape:
Both.
First I get the nearst Vert. With a timed Event it loops through all affected Vertices and set its new Z Value.
While the timed Event is Active Iexecute “UpdateMeshSection” after each loop.
“CalculateTangents for Mesh” is very slow so its only executed once when Sculpt Key is released.

About imported mesh:
If its a Plane Mesh you can use Line Traces to get the height. Its not possible to access the Vertices of a StaticMesh with just Bps though.
But there is a function in Rama’s Victory Plugin that does just that. I haven’t used it but its theoretically possible to copy it with a ProceduralMesh and manipulate it.

Have a look in this Thread. Many helpful infos, especially if you can code, which I can’t ^^

I just saw a Picture of the Climbing System from the marketplace and was shocked. It was ridiculous.
My Bp Setup is far far away of being that complicated. I tend to do things apart from each other so the work seperatly with minor tweaks :>

thanks . i am still working on that android project, but that started out as a test i put together for a much larger multiplayer pc game. it just turned into its own android game at some point and i will finish it eventually.

thanks for the tips about the landscape. i only ever tried the first procedural mesh someone got working way back. its good to know you can just move vertices around (in a fashion), ill have a dig into it.

best of luck with your ace game

– this is fantastic work! Thank you for sharing! I am just starting to look into VaRest and would love to contribute in some way once I figure out how to persist things to remote storage.

Hey Guys

Sorry it took me so long.

I updated my First Post and added a new Overview Video and a new Download Link.

Incredible! This is huge amount of work right there.
Congratulations on getting it so far!

Thanks for the kind words :smiley:

hi,

thx for the share, it’s really good stuff and lot of time.

BP are clean and well commented.

i just have a little question :
Is there a way in your project for build floor structure on a mountain without have a part in the landscape ?

thx

Thx

Currently when you place something it does not check if something is blocking the Structure. But you can adjust the location while placing

If the Reference is set (Video 0:50-1:15) you can move it by the half grid length.
If no reference is set you can move everything 5 UUnits.

This Value can be adjusted here in the ConstructionComponent:

Little Sneak Peek
After a week off I started working on a simple Buoyancy Prototype yesterday.

The water has no waves so it’s a pretty simple BP only setup.
I use TestVectorPoints similar to the OceanProject and a pseudo Formula to get the upwards force.

The boat in the video is just for test purposes. The plan is that the BuildingBlocks from my “PhysicsObjectsMode” swim depending on the density.
Making it able to Build Vehicles for land, water and air.

this is sooooo cool. And it has an mazing potencial. Like you need to expand this. This is a goldmine

Nice project, i starter a similar project but multi-player. Unfortunately i recently discovery in multiplayer the collision not work when you spawn objects in all latest versions of UE4. (edit:was my problem fixed)

Hey…time for a bump and a sneak peek

Because I always get distracted I decided to rebuild my “PhysicsObjectMode” in a fresh project so I can concentrate on improving it.

Current Progress:

Before this, you could only spawn simple cubes with a fixed constraint. Now you can spawn A Cube, Cuboids, Wheels, Hinges and Suspensions/Springs with customizable constraints.
Also it’s possible to control the vehiclePawn without having to possess it.

My next goal is to make vehicles save-/loadable, add another Hinge for steering and add a physics handle to lift the vehicle into the air for easier building (something like in scrap mechanic)
Once I’m happy with it I will implement it in my main project and update the download link.

(If you feel like experimenting with my current progress —> Link. But be warned this is only a rough prototype;))

Looks cool! I like how stable everything is. Good luck with the rest!

awesome work man!! very impressive…
so much potential… :slight_smile:

let me say your work is impressive, i’ll download this and play with so i can reach how to save the level and make other player see it
i think i can make a small thing in it like :
player1 make Level A
player2 make level B
and there is Level Z they can fight in it so like every player make his castle and go fight other players in another level :smiley:

@BoredEngineer &
@yanzco

Thanks

Hey
Good luck with it and let me know if you need some help. (Or if you have some improvement suggestions.)

Hey guys

Got a bit carried away from my last goals but for good.
I was able to improve three things that bugged me from the beginning.

1. Structure Rotation:
If you watched some earlier videos, you might have noticed that the placed Structures did not rotate. (Weeeeellll…they did rotate but had to be 0°,90°,180° or 270°).
My building system relies on a grid function that takes a certain distance and rounds the x,y,z values with a defined gridsize.
For this to work the placed mesh and it’s reference location cannot be rotated.
GridFunction:
[spoiler]GridFunction:


Solution:
[/spoiler]
I just couldn’t figure out a way to solve this limitation
… Till the day before yesterday. I spend literally 5 hours building my main function from the ground up and trying and trying… just to realize how easy the solution was :smiley:
The key to it all was to invert the transform rotation and revert it back after calculating the Grid.

2. Improved “Air” Placement using CollisionBoxes:
Till now it wasn’t possible to place Structures like in similar building systems with a click in the “air”
I didn’t want to use CollisionBoxes at first because I wanted to be able to build from far away, relying only on the grid, without them beeing in the way.
but it was getting annoying having to manually transform Structures every time just so the could be placed where I wanted them. (manual transform seen in OverviewVideo from 0:50-1:15)

I found a Compromise:
[spoiler]

[/spoiler]
This function takes a predefined number of CollisionBoxes that are stored in an Array and places them at available socket locations of the InstancedMesh at runtime. Like this I only have Collisions where I want them to.
(What I mean can be seen best from 0:55-1:06 in the latest video while the debug mode is enabled.)

3. The Way Instances are Saved:
This is by far the biggest and most important improvement for me because it enables access to InstanceData MUCH faster then previously.
It now doesn’t matter if you have 50 or 50k instances. You only have to loop through 40 something Indices (current amount of different Structures). By using Tags I could theoretically reduce the Loop even further.
[spoiler]Saving Data:


Retrieving Data:

[/spoiler]
Till this post I have only implemented Health & Owner, but I have plans for different building materials and Structural Integrity.

The way I see it: Every Structure will have two values for Load (example: 200kg, 250kg).
0-200kg=fine, no damage,
200-250kg = still holding, but losing Health till it breaks or gets stabilized
250kg+=immediate destruction

PhysicsObjectMode is on hold because this is more fun to make :3

Also…I won’t Update the Downloadlink just now, because there are some things that I want to change and comment.

Looking good man, you have to love a good Macro/function.

I’ve implemented sockets into my workflow now, building lots of lovely macros to implement things.

And you had to include the floating boats in the video, typical :stuck_out_tongue: