UE3 to UE4 Transition Guide
Here you can find a list of procedure and terminology differences between UDK and Unreal Engine 4 gathered by the community. Keep in mind that some of those may be subject to change in time with newer UE4 releases.
General Editor & Terminology
UE3: 1uu == 2cm
UE4: 1uu == 1cm
UE3: World size = 10.48km x 10.48km
UE4: World size = 20km x 20km
Assets and Packages
UE3: Packages are used to store a collection of assets. Package format .upk - Map format .udk
UE4: Each asset is stored in its own file. Maps are still packages as they need to store a collection of assets. Asset format .uasset - Map format .umap
Mesh/Skeletal Mesh & Animation Import Formats
UE3: .psk & .psa / .FBX
Collision naming : MyMesh, UCX_MyCollision
UE4: .FBX(same Export procedure - Mesh and Skeleton split into 2 separate asset after import)
Collision naming : MyMesh, UCX_MyMesh_## (_## is a number in case you have several UCX in there)
Disabling Decal Render on Skeletal/Static Meshes:
UE3: Go to decal properties (F4) and disable bProjectOn.
UE4: Select your Mesh in Viewport.
- In details panel search for Decal
- Uncheck Receives Decals.
Spline Loft Actor
UE3: Created by dragging and dropping from Actor Classes tab. Continue drawing a path by holding Alt and dragging the icon.
UE4: It appears in the landscape editor as Spline Tools when you create a landscape. Click Manage > Edit Splines > Ctrl+click to place one then continue drawing by placing control points with Ctrl+click, finally hit Apply Settings button in the landscape editor.
UE3: Touch and Block
UE4: Overlap and Block
Navigation, Maya Style
considering UDK <=> UE3
UE3: L + left or right mouse button
UE4: Alt + left or right mouse button
Kismet > Blueprints(Matinee included)
Creating a Matinee
UE3: Open Kismet, right-click the canvas and select New Matinee.
UE4: Search for MatineeActor in Modes tab > All Classes, and drag it into your level.
Attaching Actors to Specific Groups inside Matinee
UE3: Create a variable for the object inside Kismet and attach it to Matinee.
UE4: Select the object in the map, open up Matinee, right click on the group you want to attach > Actors > Add(or replace) selected actors.
Sequential or random activation of multiple outputs
UDK: Switch node in Kismet.
UE4: MultiGate node in Blueprints.
Adding a SkyLight
UE3= Actor Classes - Lights - Sky Lights
UE4= Modes Tab > Lights > Sky Light
Adding a dynamic light
UE3= Actor Classes > Lights > AnyLightMoveable.
UE4= Add a normal light into your level - in the settings you can find Transform > Mobility > Moveable.
Lightmaps and photons
UE3= Emissive material enabled in object in the level, photons will fire from any shape: material based.
UE4= For dynamic emissive lighting, needs to be enabled in advanced material properties(for LPV.) For static emissive lighting, enable Use Emissive for Static Lighting in the object's details panel.
UE3: Achieved with transmission mask
UE4: Achieved with SubsurfaceColor - choose MLM_Subsurface in the Lighting Mode
Adjusting a Particle's Color in Cascade
UE3: By multiplying the texture with a Vertex Color node in the material.
UE4: By multiplying the texture with a Particle Color node in the material.
Soft Edge for Particles and Translucent Materials
UE3: Attach the opacity mask to Alpha input of DepthBiasedAlpha and set Bias scale for fade distance.
UE4: Attach the opacity mask to Opacity input of DepthFade and set Fade Distance.
UE3: By pluging the colored specular texture to Specular input.
UE4: By giving metallic value(Constant - 1) to the material
var Actor MyActor; MyActor = Spawn(class'ActorToSpawn',Location,Rotation);
FActorSpawnParameters SpawnInfo; SpawnInfo.bNoCollisionFail = true; ASoulHunterWeapon* NewWeapon = GetWorld()->SpawnActor<ASoulHunterWeapon>(Weapon, SpawnInfo);
There are several versions of Spawn one with and without templates.
If you want to use location and rotation make sure you make variables that are const.
const FVector* SLocation; const FRotator* SRotation; GetWorld()->SpawnActor<ASoulHunterWeapon>(Weapon, SLocation, SRotation, SpawnInfo);
This can be used to create instances (or more accurately, pointers to instances of) classes derived from Object.
var MyObject MyObjectRef; MyObject = new class'MyObject';
UPROPERTY() MyObject *MyObjectRef;
MyObjectRef = NewObject<UMyObject>(this, UMyObject::StaticClass());
Also see Documentation - Objects for a detailed description.