Unreal Engine Project Workflow: Twisted
Unreal Engine Project Workflow: Twisted
UNREALENGINEPROJECTWORKFLOW
v0.1
VERSIONS
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([email protected])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
Level/Map
Blueprint BP_
Material M_
StaticMesh S_
SkeletalMesh SK_
Rig Rig_
Texture T_
ParticleSystem PS_
WidgetBlueprint WBP_
ANIMATIONS
MorphTarget MT_
BlendSpace BS_
AnimationBlueprint ABP_
AnimationComposite AC_
AnimationMontage AM_
AnimationSequence A_
LevelSequence LS_
UNREALENGINEPROJECTWORKFLOW v0.1 11
MATERIALS
Material M_
Material(PostProcess) PP_
MaterialFunction MF_
MaterialInstance MI_
MaterialParameterCollection MPC_
SubsurfaceProfile SP_
PhysicsMaterials PM_
TEXTURES
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