Download

[Submited]Modular Player Structure System in Blueprint

Hey there i noticed that many ppl have problems implemting this to their projects. And by further investigation it seems that something went wrong in the Submission process… I submitted it as a standalone project but somehow its now “Addable Content”, which means the DefaultEngine.ini, that holds all the custom collision data, is missing. So as a quick workaround ill post the stuff which has to be put inside the MyUnrealProject\Config\DefaultEngine.ini. It is important that you didnt modify any of the blueprints so far. If you did you need to readd the scripts. Anyway

Inside this Ini you will find a section [/Script/Engine.CollisionProfile] delete all the content there and paste the following:



[/Script/Engine.CollisionProfile]
+Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision",bCanModify=False)
+Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False)
+Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False)
+Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.",bCanModify=False)
+Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ",bCanModify=False)
+Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors",bCanModify=False)
+Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors",bCanModify=False)
+Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.",bCanModify=False)
+Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.",bCanModify=False)
+Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.",bCanModify=False)
+Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.",bCanModify=False)
+Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False)
+Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False)
+Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ",bCanModify=False)
+Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.",bCanModify=False)
+Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.",bCanModify=False)
+Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.",bCanModify=False)
+Profiles=(Name="LandscapeProfile",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=((Channel="TraceBlockingVolume"),(Channel="Brush"),(Channel="TC_Foundation"),(Channel="TC_Pillar"),(Channel="TC_Wall"),(Channel="TC_Window"),(Channel="TC_Door"),(Channel="TC_Ceiling"),(Channel="TC_Stair")),HelpMessage="Landscape Profile",bCanModify=True)
+Profiles=(Name="FoundationSphere",CollisionEnabled=QueryOnly,ObjectTypeName="TraceBlockingVolume",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap),(Channel="EngineTraceChannel1",Response=ECR_Overlap),(Channel="EngineTraceChannel2",Response=ECR_Overlap),(Channel="EngineTraceChannel3",Response=ECR_Overlap),(Channel="EngineTraceChannel4",Response=ECR_Overlap),(Channel="EngineTraceChannel5",Response=ECR_Overlap),(Channel="EngineTraceChannel6",Response=ECR_Overlap),(Channel="TraceBlockingVolume",Response=ECR_Overlap),(Channel="TC_Foundation",Response=ECR_Overlap),(Channel="TC_Pillar",Response=ECR_Overlap),(Channel="TC_Wall",Response=ECR_Overlap),(Channel="TC_Window",Response=ECR_Overlap),(Channel="TC_Door",Response=ECR_Overlap),(Channel="TC_Ceiling",Response=ECR_Overlap),(Channel="TC_Stair",Response=ECR_Overlap),(Channel="GameTraceChannel10",Response=ECR_Overlap),(Channel="GameTraceChannel11",Response=ECR_Overlap),(Channel="GameTraceChannel12",Response=ECR_Overlap),(Channel="GameTraceChannel13",Response=ECR_Overlap),(Channel="GameTraceChannel14",Response=ECR_Overlap),(Channel="GameTraceChannel15",Response=ECR_Overlap),(Channel="GameTraceChannel16",Response=ECR_Overlap),(Channel="GameTraceChannel17",Response=ECR_Overlap),(Channel="GameTraceChannel18",Response=ECR_Overlap)),HelpMessage="Needs description",bCanModify=True)
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,Name="TraceBlockingVolume",DefaultResponse=ECR_Ignore,bTraceType=False,bStaticObject=False)
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel2,Name="Brush",DefaultResponse=ECR_Overlap,bTraceType=False,bStaticObject=False)
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel3,Name="TC_Foundation",DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False)
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel4,Name="TC_Pillar",DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False)
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel5,Name="TC_Wall",DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False)
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel6,Name="TC_Window",DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False)
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel7,Name="TC_Door",DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False)
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel8,Name="TC_Ceiling",DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False)
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel9,Name="TC_Stair",DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False)
+EditProfiles=(Name="BlockAll",CustomResponses=((Channel="TraceBlockingVolume"),(Channel="Brush"),(Channel="TC_Pillar"),(Channel="TC_Wall"),(Channel="TC_Window"),(Channel="TC_Door"),(Channel="TC_Ceiling"),(Channel="TC_Stair")))
+ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall")
+ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn")
+ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic")
+ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor")
+ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic")
+CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic")
+CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic")
+CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle")
+CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn")
+CollisionChannelRedirects=(OldName="BM_Foundation",NewName="TC_Foundation")


fot the sake of completation you also can download the ini from
https://www.dropbox.com/s/xv8lxwllwttosxm/DefaultEngine.ini?dl=0

Iam working on a tutorial which shows how to set all this up by hand and i hope i get it done by the middle/end of the week.

I also uploaded the Original Demo Project. You still need to add the Modular Player Structure Assets from the marketplace to this project. Just unzip it to your User<yourname>\Documents\Unreal Projects folder.

https://www.dropbox.com/s/by8n6525q19t70s/Player%20Structure.zip?dl=0

Hey there,

This Blueprint-based Library enables the Player to Build Houses! Ideal for your Survival Game.
Its easy customizeable, expandable and heavily commented.

This Package includes

  • The Player Structure System itself
  • Demo “Playground”
  • 8 ready-to-use Static Meshes (and of course the MAX file)

Features:

  • High usage of instancing to keep drawcalls as low as possible
  • Actor Based Structures - 1 House = 1 Actor (keeping network load low for example)
  • Range check for “hostile” structures (you have to keep some distance to other structures)
  • Slope check to prevent building on to crazy terrain

Not yet in but to come in an update:

  • Networking example
  • Construction aspects like you actually have to build it after placement

To help People get Along iam curently writing a Documentation, which can be found here:
http://ruohki.gitbooks.io/modular-player-structures/

Trello Card: https://trello.com/c/clpysKSB/250-modular-player-structures
https://youtube.com/watch?v=UFpZgbJV04o

What do you mean with: - Actor Based Structures - 1 House = 1 Actor (keeping network load low for example)"
I have a similar system. I have 1 Parent Actor and the parts are childs. Is this what you mean by 1 actor? Cant think of another way in modular building. But nice work rly. :stuck_out_tongue:

1 House no matter how big is treated as 1 actor ingame so basically you dont need to replicate hundrets of bps

This looks really cool. Great work!

Looks really cool and the moment you are adding network and also the construction aspects I am going to buy and I am sure everyone gonna buy!
This is perfect for survival starters!
One question though, What is the price? I would recommend around the 25$ only if it has the network and the construction aspects.

Price will be at around 30$. And as i wrote the construction aspect may not be in right on (iam working on it right now), after that is done the network implementation is planed. Also the models are curently under maintance to make them look better (the submission to was 2 month ago)

#added emergency trubbleshoting

Just a little information for everyone that bought this thing or is thinking about. Iam curently rewriting the project do make it 4.8 compatible + adding features that were requested. Like doors and networking. Ill keep you guys informed

Great to hear, this seems like an interesting project.

hope to see the updates soon

any news on when the updates are comeing?

I also would like to know the status of the update. Thanks

I’ve contacted ruohki directly and asked him to respond to this thread with a specific date that his content will be 4.8 compatible. With 4.8 we instituted a policy where content creators have 45 days to update their content to the latest new engine version, and since this is a new policy, we’re allowing a little wiggle room for people to get everything together.

Update has been submitted to epic

Can someone post a review once the update has been uploaded?

Yea , I will post one

ive updated the controls so that it almost works out of the box. next update will include another technic instead of the trace channels

I can’t see this on the marketplace. Do you know when it will be available?

https://www.unrealengine.com/content/97ba0a7b0a9d466bb25690ced2fd0e0a

That’s it

Thank you!