New Hell - UE5 Environment built using Kitbash assets and Blueprint Toolset This is an overview of how I approached building an environment from modular pieces using Blueprint tools to place them
New Hell is an Unreal Engine 5 Project set in a near future in post-apocalyptic diesel-punk wasteland (satanic), that utilizes many modular pieces and Blueprint tools to construct all assets using splines and instancing. The pack was made with kitbashing in mind so all modular pieces uses Nanite and can be scaled up by orders of magnitude. Dynamic materials will scale the textures on the materials accordingly. Materials are procedural and are using curvature/ambient occlusion/cavity information from vertex colors of the meshes to add details like rust/erosion/cracks. So all materials can be assigned to any of the meshes.
StaticMesh assets has curvature, ambient occlusion and cavity information baked into their vertex colors. This allows for erosion, color effects without creating separate textures for this many modular pieces. It works in favor when changing assets material, for example, from brick material to metal material, the details like rust or cracks will be drawn procedurally using information in the vertex colors of the StaticMesh.
This class is for assembling buildings using other BP Tools like BP_NH_BuildingWall, BP_NH_RadialInstancer, etc. To create a new building create a Child Actor Class of BP_NH_Building And then add ChildActorComponents like BP_NH_BuildingWall or BP_NH_RadialInstancer. If it needs a spline, the ChildActorComponent must be attached to the spline and BP_NH_Building class will handle constructing it
For building walls from a spline, with options to add corners (can align to angle), change spacing, height etc. The position of doors and windows can be controlled with volumes like BP_NH_DoorWindow_ChildDoor and BP_NH_DoorWindow_ChildWindow. Pieces in these volumes will be switched to meshes from WallsDoors or WallsWindows StaticMesh Array variables. Optionally Actors can be spawned for example opening doors or shattering glasses using DoorActorClass or WindowActorClass Class variables (ChildActorComponents will be added using that class)
BP_NH_DoorWindow_ChildCustomPiece
This volume can be used to add custom pieces inside it or leave it blank to remove pieces
Similar to Array modifier in Blender to instancing pieces and offsetting them by a certain amount (for example stairs)
Layes out electricity poles with connecting cables using a spline
Tool for adding a huge pole with cables attached to a spline (external or internal Splines)
For making cliffs like walls using Spline
Dynamic elevator that can lift or lower players. Uses moving ramp and overlap volumes for triggering
A circular ramp that acts like stairs for a player, uses BP_SidewalkActor to create a metal ramp with specified height, radius, and start/end times
Tool to create smooth SplineMeshes using a spline like pipe or road. Can provide distribution meshes like junctions for pipes. Parameters for making generated meshes only draw in Virtual Textures, for example roads. For optimization there is OptimisationDot float variable that specifies how aggressively to add straight StaticMesh instead of creating SplineMesh. With option to exclusively layout only HISM instances using PlaceOnlyHISMs? bool
Generates a metal staircase with specified Height, Length and width (Scale Y). Optionally can add boolean mesh to make holes for BP_SidewalkActor which works for floors generated by BP_NH_Building or BP_NH_BuildingWall
Dynamically generated support leg that traces ObjectChannels snap its feet to the surface. Will regenerate on BeginPlay to snap to dynamically constructed actors like buildings or platforms.
Uses DynamicMesh component and GeometryScript to instantiate meshes using edges from the input StaticMesh, for instancing beams for example. Also places junction meshes on vertices of the input mesh.
Instantiates pre-built pipe pieces StaticMeshes along a spline. Adds corners from Corners StaticMesh array, corners has to be provided in equal intervals from 0 to 180. Various parameters for scaling/offsetting pieces to make it fit. It sometimes has gaps but it works very fast and doesn't use SplineMeshes
Instantiates BP_NH_PipeActors along multiple splines provided externally from the level. Used to create sets of multiple cables follow a certain path.
BP_ModelViewer Tool to go through an array of static meshes, used for inspection.
Instantiates floor StaticMeshes along given width and length, separately scales them to specified height. For making floors and platforms.
Instantiates StaticMeshes or Actors with given offset from center, start and end degrees, num instances, transformation. Also options to snap to ground, offset pivot.
BP_Satellite and BP_SatelliteTarget
Generates a satelite from modular pieces with options to specify its rotation on construct or during runtime, BP_SatelliteTarget used to focus multiple satelites to a specific point
Constructs a roof/shield using BP_NH_HydraulicTracedLeg and a spline for length
Makes a cable from actor location to specified snap point (actor) with offsets. Also adds specified meshes on each end.
Snaps SnappedScene SceneComponent to an externally provided Spline location closest to actor location. For example pipe holding legs or junctions.
Distributes meshes along a spline. For example railings or fences.
Uses DynamicMesh and GeometryScript to generate a plane mesh from the shape of a Spline. For example huge planes that go into distance in the back of the level
BP_NH_StaticCableActor and BP_StaticCableActor_ChildSpline Makes a cable from provided WorldLocations or Spline
Instantiates StaticMesh or Actors in the area of the spline with provided distances from each other. Can snap to ground. Uses GeometryScript