You are on page 1of 14

TWISTED

UNREALENGINEPROJECTWORKFLOW

v0.1

VERSIONS

DATE VERSION AUTHOR

2017-03-22 0.1 JoostKamphuis

UNREALENGINEPROJECTWORKFLOW v0.1 2

TABLEOFCONTENTS

VERSIONS 2

TABLEOFCONTENTS 3

INTRODUCTION 4

VERSIONCONTROL 5
INTRODUCTION 5
SETTINGITALLUP 5
CREATINGAGITPROJECT 6
FORKINGTHETWISTEDUE4BOILERPLATE 6
STARTINGFROMSCRATCH 7
PROJECTCHECKOUT 7
PUSHINGCHANGESTOTHECLOUD 7

ASSETPREPARATION 8
TEXTURES 8
MESHEXPORT 8

OPTIMIZING 9
MESHES 9
TEXTURES 9
LIGHTMAPS 9
SCENES 10

UNREALNAMINGCONVENTION 11
FOLDERNAMES 11
ASSETNAMEMODIFIERS 12
COMMON 12
ANIMATIONS 12
MATERIALS 13
TEXTURES 13

UNREALTIPS 15
MATERIALINSTANCES 15
KEEPTHEPROJECTCLEAN 15
BAKINGLIGHTMAPS 15

UNREALENGINEPROJECTWORKFLOW v0.1 3

INTRODUCTION

AswewillstartworkingonprojectsinUnrealEngine,itisimportantweareallpointedinthesamedirection.
ThisdocumentisintendedtocreateaclearworkflowforUnrealEngineprojects.

UNREALENGINEPROJECTWORKFLOW v0.1 4

VERSIONCONTROL
INTRODUCTION
Whenworkingtogetheronprojects,itisveryimportanttoimplementVersionControl.Sincethe
developmentisalreadyworkingwithGithostedonBitBucket,itisgoodtousethatprotocolandservicefor
UnrealEngineprojectstoo.
Gitisafreeandopensourcedistributedversioncontrolsystemdesignedtohandleeverythingfromsmallto
verylargeprojectswithspeedandefficiency.
WithGityoucansimultaneouslyworktogetheronaproject.Everytimeyoufinishapartoftheproject
(feature,blueprint,animation,etc.)youwillcommitandpushallyourchangesandpushittothecloud
(i.e.BitBucket).Yourcolleaguesarethenabletopullyourchangesintotheirlocalenvironment.

SETTINGITALLUP
Firstoff,createanaccountonBitBucketthatyouwilluseforGit.LetJoost(joost@twisted.nl)knowwhat
emailaddressyouhaveused,sohecanaddyoutotheTwisted3Dteam.

TostartoffyourGitflow,youwillneedagoodGitclientforyourdesktop.GitKrakenisrecommended
(availableforWindowsandmacOS).
ThefirsttimeyouopenGitKraken,youwillbepromptedtocreateanaccountforGitKraken.Thisis
completelyfreewithtwosimplesteps.

UNREALENGINEPROJECTWORKFLOW v0.1 5

PROJECTCHECKOUT
NowitistimetogobacktoGitKrakenandchooseFile/CloneRepo.ChooseforBitbucket.organd
pickalocationwhereyouwanttoclonetherepositoryto.TheRepositorytoclonefieldhasasearchbox
whereyoucanlookfortherepositoryyouhavemadeinthelaststep.
Andfinally,clickonClonetherepo!.

PUSHINGCHANGESTOTHECLOUD
Wheneveryouhavefinishedmakingchangestotheproject,youneedtopushitbacktothecloud
(BitBucket)soyourteammatescanstartusingyourcreations.
Todothat,youfirstneedtocommityourchangeswithagooddescription(inEnglish)aboutthechanges
youhavemade.
InGitKrakenyouwillseeanewbulletpointintheoverview,ascanbeseenonthescreenshotbelow.


Thisistheplacewhereallyourchangesarestored,readytobepushedtothecloud.
Ifthe//WIPsectionhasntbeenselected,dosonow.Thiswillopenupasectioninthebottomofthe
GitKrakenoverviewscreen.
IntheUnstagedsection,youwillseethefilesthathavebeenchanged/added/deleted.Tostagethemfora
commit,pressStageallchangesorhoveroverthesinglefilestostagethoseonitsown.


NowyoucanwriteyourCommitMessage,beverydescriptiveandwriteyourmessageinEnglish.
Onceyourdone,pressStagefiles/changestocommit.

Finally,youhavetopressthePushbuttoninthetoolbarofGitKraken.

ASSETPREPARATION
TEXTURES
AlwayscreateTexturesabigaspossible,butscalethemdowntotherightproportionsbeforeyouimport
them.ThisallowsyoutousehigherresolutionTextureswhenneeded.
Targa(.TGA)isagoodformattostorelosslesstextures.InthepackagingprocessofUnrealEnginethe
so-calledcookingprocesswilloptimizethosetexturesforyou.

UNREALENGINEPROJECTWORKFLOW v0.1 6

Tip!
Alwayscreatepoweroftwosizedtextures,otherwisethevideocardwillup-ordownscaleit
foryou.So64x64,128x128,256x256,512x512,etc.

MESHEXPORT
UnrealEngineworksperfectlytogetherwiththeFBXformat.Makesureyouexportyourassetwiththe
FBX2014preset,whichcanbefoundattheExportSettingsdialoginallmajor3Dsoftwarepackages.

UNREALENGINEPROJECTWORKFLOW v0.1 7

OPTIMIZING
OptimizationisveryimportantwhenitcomestocreatingassetsforUnrealEngineprojects,sinceyouneed
tokeepthehardwarelimitationsinmind.Youcantinfinitelykeepstoringresourcesinthememory,youwill
eventuallyrunoutandtheprojectwillrunverysloworevencrash.

MESHES
Dontuseahighpolycountwhenyoudonthaveto.Thinkabouthowfarthemeshwillbefromthecamera,
orifitwillevergetclosetoyoureyes.YoucancreateLOD(LevelofDetail)mesheswithinUnrealEngine,but
itisalwaysgoodtoalreadyhaveaGameReadymesh.

TEXTURES
Thesamegoesfortextures.Dontuse4Ktexturesonmeshesthatareonly100pixelsbigonthescreen.
Textureswillbeloadedintothecomputer'smemory,whichcanstackupandcauseproblems.

LIGHTMAPS
KeepinmindthatLightmapswillalsobestoredinmemory,makesuretheLightmapDensityisnttoohigh.
YoucancheckyourLightmapDensityatalltimesusingtheViewmode.


LightmapsizecanbechangedwithineithertheMeshsettings

UNREALENGINEPROJECTWORKFLOW v0.1 8

OrasaLeveloverrideintheDetailspaneinyourWorldOutliner.

SCENES
Keepyourscenes(Maps)reasonablysmall,dontloadintoomanyroomsthatyoucannotseefromacertain
location.ItisbettertoworkwithmultipleLevels,whichcanbestreamedinfromaPersistentLevel(your
masterlevelwhichhandlesallthestreaminginformation).
https://docs.unrealengine.com/latest/INT/Engine/LevelStreaming/Overview/index.html

UNREALENGINEPROJECTWORKFLOW v0.1 9

UNREALNAMINGCONVENTION

Whenitcomestonamingfilesandfolders,itisveryimportanttosticktoacertainconvention.Agood
explanationhasbeengiventheUE4StyleGuide,whichyoucanfindat
https://github.com/Allar/ue4-style-guide.

Hereisashortsummaryofconventionswewillbeusing.

EverytypeofAssetorBlueprinthasadesignatedfolder.Youcanfindthebasicstructureinthe
TwistedUE4BoilerplateprojectonBitbucket,whichisexplainedfullyintheVERSIONCONTROL
chapterofthisdocument.
AssetnamesarealwaysPascalCase(e.g.DestertEagle,RocketPistoland
ASeriesOfWords).
AssetnamesconsistofthestructurePrefix_BaseAssetName_Variant_Suffix.Prefixand
SuffixaredeterminedbytheassettypethroughAssetNameModifiers,whicharefoundhere.

FOLDERNAMES

FOLDERNAME DESCRIPTION

AI ThiswillstorealltheArtificialIntelligencelogic,likeBehaviorTreesandAI
Controllers.

Blueprints AlltheBlueprintsthatwillcontainlogicandinteractivity.

Components Mainlyforreusablecomponents.ItwillalsostorethetypesofPlayer
Controllers.ForexampleaVR,FirstPerson,ThirdPersonandSpectator
Controllers.

Maps Alltheprojectsmapswillbestoredinhere.

Materials Alltheprojectsmaterialswillbestoredinhere.Youcancreatesubfolders
withinthisfoldertocreategroups,forexampleallwoodenmaterialswillbe
storedintheMaterials/Woodfolder.

Meshes SameastheMaterialsfolder,butforallmeshes.

Particles SameastheMaterialsfolder,butforallparticlesystems.

Sprites SameastheMaterialsfolder,butforallspriteslikeBillboards.

Textures SameastheMaterialsfolder,butforalltextures.

UI ThiswillstorealltheUIWidgetassets.For2Dand3DUIWidget/interfaces.

UNREALENGINEPROJECTWORKFLOW v0.1 10

ASSETNAMEMODIFIERS

COMMON

ASSETTYPE PREFIX SUFFIX

Level/Map

Blueprint BP_

Material M_

StaticMesh S_

SkeletalMesh SK_

Rig Rig_

Texture T_

ParticleSystem PS_

WidgetBlueprint WBP_

ANIMATIONS

ASSETTYPE PREFIX SUFFIX

MorphTarget MT_

BlendSpace BS_

AnimationBlueprint ABP_

AnimationComposite AC_

AnimationMontage AM_

AnimationSequence A_

LevelSequence LS_

UNREALENGINEPROJECTWORKFLOW v0.1 11

MATERIALS

ASSETTYPE PREFIX SUFFIX

Material M_

Material(PostProcess) PP_

MaterialFunction MF_

MaterialInstance MI_

MaterialParameterCollection MPC_

SubsurfaceProfile SP_

PhysicsMaterials PM_

TEXTURES

ASSETTYPE PREFIX SUFFIX

Texture T_

Texture(Diffuse/Albedo/BaseColor) T_ _D

Texture(Normal) T_ _N

Texture(Roughness) T_ _R

Texture(Alpha/Opacity) T_ _A

Texture(AmbientOcclusion) T_ _O

Texture(Bump) T_ _B

Texture(Emissive) T_ _E

Texture(Mask) T_ _M

Texture(Specular) T_ _S

Texture(Packed) T_ _*(where*is
combined,e.g.RS)

TextureCube TC_

MediaTexture MT_

RenderTarget RT_

UNREALENGINEPROJECTWORKFLOW v0.1 12

CubeRenderTarget RTC_

TextureLightProfile TLP_

UNREALENGINEPROJECTWORKFLOW v0.1 13

UNREALTIPS
MATERIALINSTANCES
YoucanuseMaterialInstanceswhenyoustartusingmultipleMaterialsthatusethesamekindofset-up,but
havedifferenttextures/parameters.Thisisveryeasytodoanditwillbeaboostinperformance.
WhencreatingaplainMaterial,rightclickonyourTextureSampleorConstantnodesintheMaterialEditorand
clickConverttoparameter.Givetheparameteranameandmaybeadefaultvalue.
Nowyoucanright-clickyourMaterialintheContentBrowserandclickCreateMaterialInstance.
WiththisMaterialInstance,youcannowfillintheparametersneeded.
ForexampleifyouwanttohaveMaterialsfor6differenttypesofwood,createonly1M_WoodBasematerial
withalltheTextures(diffuse,normal,specular,etc.)set-upasparameters.NowyoucancreateaMaterial
Instanceforeachtypeofwood.

KEEPTHEPROJECTCLEAN
Keeptheprojectascleanaspossibleandremoveallunusedfiles.Thiswillsaveupspaceanditwontcost
extracontenttobeloadedwhenpackagingtheproject.

BAKINGLIGHTMAPS
Bakinglightmapsisanexpensivetaskfortheprocessor.Tryoutlightsettingsonsmallersceneswithout
highpolypropsfirstbeforeyoustartbuildingafullscene.Thiswillsavetimeanddisappointmentinthe
end.

UNREALENGINEPROJECTWORKFLOW v0.1 14

You might also like