UE3 to UE4 Transition Guide
Contents
Overview
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
Scene Scale(Units)
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.
Collision Terminology
UE3: Touch and Block
UE4: Overlap and Block
Editor
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.
Lighting
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.
Materials
Subsurface Scattering
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.
Colored Speculars
UE3: By pluging the colored specular texture to Specular input.
UE4: By giving metallic value(Constant - 1) to the material
Coding
Spawning Actors
UE3:
var Actor MyActor; MyActor = Spawn(class'ActorToSpawn',Location,Rotation);
UE4:
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);
Spawning Objects
This can be used to create instances (or more accurately, pointers to instances of) classes derived from Object.
UE3:
var MyObject MyObjectRef; MyObject = new class'MyObject';
UE4:
In YourClass.h:
UPROPERTY() MyObject *MyObjectRef;
In YourClass.cpp:
MyObjectRef = NewObject<UMyObject>(this, UMyObject::StaticClass());
Also see Documentation - Objects for a detailed description.