Game Dev



Universal Door Blueprint

Documentation for the Universal Door Blueprint available on Unreal's Marketplace.

10 images :: Gold Coast :: Unreal 4 :: 2020


Example Map

The Showroom_Examples level has many examples of different setups for the doors. One side has standard doors and the other side has sliding doors. There are also a few interactive doors. Please play around with the settings as much as you want.

There is a very simple controller used to test the auto and manually opening doors. You can play the level to test the interactivity. Check the blueprint setup in the controller to see what you have to do in your character or controller. More further down.

Finally a couple of doors are setup to work with the ArchViz user interface. You can't trigger material changes directly but you can use them as children to be triggered by other actors (like the skirting boards). See further down how to add the nodes needed for material changes. It's very easy. - The controller here uses the keys 1,2,3 as placeholders.


> General Settings
Door Size AU 820 x 2340 (M)

Choose the size of the door from the list. These are the most common sizes.

  • AU is Australian size
  • EU is European (German) size
  • US is for the USA in inches
Hinge on Right true Ticking or unticking this box will mirror the door. Use this instead of manually mirroring the door blueprint in the transform section
Door Rotation 0.0 Use this for static doors. It defines how far open the door will be. Don't use this for interactive doors.
Tip: Door Sizes The AU sizes are the base for all other door sizes which are slightly scaled. The scaling is minimal and not noticable.


> Door and Frame
Door Mesh P_DoorA2_2340_M When left empty the default door for the choosen size will be used. If you add a door mesh here then this door mesh will be used. The letter in brackets marks the size of the door. As a rule of thumb the standard door size is marked 'M'. This should fit most interior door openings. The entry door might be the larger 'L' variation and doors into bathrooms or wardrobes might be 'S' in size. The door you replace needs to be the same size chategory.
Frame Mesh None Usually the frame changes automaticly and should not be changed unless you need a thicker frame for an opening in a thick wall. There are a few thicker frames available P_FrameA25...
Shared Mmaterial false If ticked the "Material Shared" will be taken for both Door and Frame meshes, otherwise the individual Materials will be taken. If no material is set the default material (white semi gloss) will stay on the mesh
Material Shared 0 Array elements The Shared Material tick box is unticked. This array will be ignored. (See below how to add materials)
Material Door 2 Array elements The Shared Material tick box is unticked. This array will be used.
  0 M_DoorsA_W02_IHWdVeneer The first material ID of the door mesh. The name indicates for which door type the material is. The standard and all flat doors are named DoorA while the traditional doors (B,C) are using materials named _DoorB_
  1 Mi_GlassWindows_iTinted The second door material. It is only used for glass if the door has glass.
Material Frame 1 Array elements The Shared Material tick box is unticked. This array will be used for the frame
  0 M_DoorsA_W02_IHWdVeneer The first material ID of the frame mesh. It is the same as the door mesh so I could have ticked the Shared Material box and use the array for Material Shared. All default frames always use the material named _DoorA_
Frame Thickness Scale 1.0 A manual scale for the thickness of the frame


> Top Window
Top Window false tick this to add a top window mesh above the door frame
Top Mesh None

Add a custom mesh here. Otherwise the default mesh will be used.

Shared Mat Top false If the top frame should use the same material setup as the door and frame meshes.
Material Top Window 0 Array elements Add any custom material setup for the top mesh.
> Top Window Scale X 1.0 Y 1.0 Z 1.0 Custom scale for the mesh. Usually only Z scale needs to be adjusted
> Top Window Offset X 0.0 Y 0.0 Z 0.0 Custom offset if a custom mesh is used. Doesn't need to be tweaked for default meshes.


> Handles
Handle Mesh P_Handles04

Choose a handle mesh here. This can't be empty unless the handle mesh is already attached to a custome door.

Material Handle 0 Array elements Add any custom material setup for the handle mesh. Otherwise the default materials for the mesh will be used.


> Movable Door
Is Movable Door true if this is true the door will be interactive and can be opened.
Auto Open false There are 2 ways to open the door
true = door will open when the player gets close to it
false = a hint will appear when the player gets close. Pressing the interactive key will open the door.
Initially open false If true this door will be opened at 'Begin Play'.
Desired Rotation 92.0 The relative door rotation. '0' will be closed. '90' will be 90 degree open.
> Collision Location Offset X 0.0 Y 0.0 Z 0.0 Sometimes it can be necessary to move the collision box that triggers the door slightly to the side
> Collision Scale X 3.7 Y 1.5 Z 2.4 The default size works for most cases. It can be altered here.
> Text Offset In X 0.0 Y 0.0 Z 0.0 Offsets the text hint shown for none auto opening doors for the inside of the door
> Text Offset Out X 0.0 Y 0.0 Z 0.0 Offset for the outside of the door
Text Hint [ R ] to Open The text that will show up when getting close enough to the movable door
> Text Render Color   The color for the text hint
Note Movable Doors Lighting Movable objects are using a different lighting type than baked objects. If you have a movable door next to a static door they can look very different. Sometimes it helps when you tweak the material for the movable door. Generally a lighter color or white willl look more different to each other.
You can also try to force the door to use a lightmap. The frame shadows on the door will be permanent unless you disable shadows for the frame. In short - movable doors are not looking as good as static doors.


Using the door with the ArchVizUI

This section can be used if you want to integrate the door into the ArchVizUserInterface also available on the marketplace.

The door can be set as a child of another material swap actor like the skirting boards. If you don't have a parent then use a door mesh and hide it under the floor. Then make all door blueprints children of the hidden door by using the same Tag.

More info in the documentation for the ArchVizUI.

> Arch Viz UI
Swap with Arch Viz UI true enables material swaps. This will also disable all material settings above. You have to use the Variation Material section below to change the default materials
Default Material 0 Which of the below defined material sets should be loaded by default.
TagIn TagDoors The tag (name) that the door instance will listen to for changes.
Variation Materials 3 Array elements Add an array element per material set. Then add materials for each variation the same way explained above.
  0 4 members material set for the first choice


If you want to add your own logic to swap materials then simply add an Event Dispatcher to your character or controller and call this when you want the doors to swap their material. Seen in the grey section of the image. The Dispatcher needs to have these two variables:

  • TagOut - string that defines which door(s) should be changed
  • VariationID - Integer that tells the door to which material it should swap

    The yellow area is already set up in the door blueprint.

  • image

    Using an interactive key to open the door

    You have to set up another Dispatcher if you want to manually open the doors. The grey part shows the character / controller part. The Dispatcher has no variables.

    The yellow part is what is currently set up in the door blueprint.


    (1) From the 'Get Player Controller' remove the 'Return Value' connection. Drag off a new connection from there. Your player controller should show up in the list of possible nodes. Select it. (If it doesn't show up then you haven't assigned your controller in the world or project settings)

    (2) Replace the original node with your own controller node.

    (3) From your 'As Player Controller...' node drag off a new connection and choose 'Bind event to ... (your dispatcher)'. Then replace the existing dispatcher with your dispatcher.

    (4) Connect the red node to the 'OpenDoor' node. Now you should be able to open the door manually.

    NOTE: It won't let you connect your dispatcher to the 2nd dispatcher past the branch node on the other side. This is ok as you most likely won't use the colour scheme feature available in the SDot_Character and UI. Otherwise replace the existing 2nd dispatcher with your dispatcher as well.

    Top of page