BACHELOROPPGAVE: Project NORS A Multiplayer Online Battle Arena Game Implemented in Unreal Engine 4. FORFATTERE: Jonathan Ness Aleksander Olsen Marius Rødland Chris Andre Sand DATO: 15.05.2015 ProjectNORS AMultiplayerOnlineBattleArenaGame ImplementedinUnrealEngine4. Sammendrag av Bacheloroppgaven Tittel: ProjectNORS EtFlerspillerNettbasertKampArenaspill UtvikletiUnrealEngine4. Dato: 15.05.2015 Deltakere: JonathanNess AleksanderOlsen MariusRødland ChrisAndreSand Veiledere: SimonMcCallum Oppdragsgiver: HøgskoleniGjøvik Kontaktperson: ProjectNORS,[email protected] Nøkkelord: Norway, Norsk, Nors, Unreal Engine, Bachelor, MOBA, IMT Antallsider: 204 Antallvedlegg: Tilgjengelighet: Åpen Sammendrag: NORS er et nytt MOBA spill med spennende egenskaper som det å kunne mestre naturens krefter. Med denne kraften kan spillern endre miljøet til sin fordel i denne episke kampen om Storbritania mellom de brutale Vikin- gene og Saxons. Denne oppgaven vil beskrive prosessen vi brukte når vi skulle lage NORS og hvordan det hele startetsomenideogendteoppsometfullverdigspill. i ProjectNORS AMultiplayerOnlineBattleArenaGame ImplementedinUnrealEngine4. Summary of Graduate Project Title: ProjectNORS AMultiplayerOnlineBattleArenaGame ImplementedinUnrealEngine4. Date: 15.05.2015 Participants: JonathanNess AleksanderOlsen MariusRødland ChrisAndreSand Supervisor: SimonMcCallum Employer: HøgskoleniGjøvik ContactPerson: ProjectNORS,[email protected] Keywords: Nors,UnrealEngine,Bachelor,MOBA,IMT Pages: 204 Attachments: Availability: Open Abstract: NORSisanewMOBAgamewithexitingfeaturessuchas, controlling the elements. With this ability, the player can controlandchangetheenvironmenttotheirbenefitinthe epicbattleforGreatBritanniabetweenthebrutalVikings and the Saxons. This thesis will describe the process we usedtomakeNORSandhowitstartedasamereideato acompletegame. ii ProjectNORS AMultiplayerOnlineBattleArenaGame ImplementedinUnrealEngine4. Preface WewouldliketoextendourthankstoSimonMcCallumforbeingtheprojectsupervisor. Heprovidedvaluableguidanceandencouragementthroughouttheproject.Abigthanks toEpicGamesandtheUnrealEnginecommunityforvaluabletutorials,pluginsandhelp thatwereusedthroughouttheproject.NotableonesbeingtheVaRestpluginbyVladimir AlyamkinandtheVideoTutorialsbyEpicGames. iii ProjectNORS AMultiplayerOnlineBattleArenaGame ImplementedinUnrealEngine4. Contents Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv ListofFigures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 ProjectDescription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.2 Goal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 ProjectAudience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.1 ProductAudience . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.2 ThesisAudience . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 AcademicBackground . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.5 DevelopmentFramework . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.5.1 SoftwareDevelopmentMethodology . . . . . . . . . . . . . . . . . 3 1.5.2 Schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.6 DocumentStructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 RequirementsandDesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.1 GameDesignDocument . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.2 InitialDesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.3 Psychology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.4 FinalDesign. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3 TechnicalDesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.1 UnrealEngine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 Blueprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2.1 Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2.2 Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 iv ProjectNORS AMultiplayerOnlineBattleArenaGame ImplementedinUnrealEngine4. 3.2.3 Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2.4 Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2.5 Macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2.6 ColapsedCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.7 ActorComponent . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.8 Widget. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.9 ConstructionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 VersionControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.4 Trackinganddocumentation. . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.5 Blender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4 DevelopmentProcess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.1 WorkingHours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2 DevelopmentTools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2.1 UnrealEngine4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2.2 Blender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2.3 Versioncontrol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.3 ProjectWorkflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.3.1 Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.3.2 Schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.4 DevelopmentWorkflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.1 Spells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.2 Items. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.3 GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.3.1 Inventory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.3.2 Shop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.3.3 Minimap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.4 BlueprintStructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.4.1 PawnsandCharacter . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.4.2 ChampionandProxyPawn . . . . . . . . . . . . . . . . . . . . . . 28 5.4.3 BaseMinions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.4.4 Minion_FootSoldier . . . . . . . . . . . . . . . . . . . . . . . . . . 29 v ProjectNORS AMultiplayerOnlineBattleArenaGame ImplementedinUnrealEngine4. 5.5 AI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.5.1 BaseMinions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.5.2 Minion_FootSoldier . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.5.3 JungleCreeps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.5.4 Pathfinding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.5.5 BehaviorTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.5.6 BehaviorTreeinUnrealEngine4 . . . . . . . . . . . . . . . . . . . 34 5.5.7 AIcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.5.8 MinionAIController . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.5.9 TowerTargeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.5.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.6 Physics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.6.1 Collision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.7 UserData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.7.1 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.7.2 BlueprintSolution . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.8 IngameNetworking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.8.1 ReplicatedVariables . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.8.2 ReplicatedFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.8.3 Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.9 Buildings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.9.1 Tower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.9.2 MainHall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.9.3 Barracks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.10 Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6 Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.1 Building . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.1.1 DifferentMachines . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.1.2 Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7 TestingandUserFeedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.1 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.1.1 Testingwithkids . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 vi ProjectNORS AMultiplayerOnlineBattleArenaGame ImplementedinUnrealEngine4. 7.1.2 TestingwithGameProgrammingstudents . . . . . . . . . . . . . . 50 7.2 UserFeedback. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.3 Balancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 8 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.1 Differentapproaches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.1.1 TestingandUserFeedback . . . . . . . . . . . . . . . . . . . . . . . 53 8.1.2 ClassStructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.1.3 CodeLimitation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.2 FutureDevelopment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.2.1 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.2.2 IngameContent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 8.2.3 FutureBachelorProject . . . . . . . . . . . . . . . . . . . . . . . . 54 9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 A ProjectNORS:Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 B ProjectNORS:ProjectPlan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 C ProjectNORS:DesignDocument . . . . . . . . . . . . . . . . . . . . . . . . . 71 D ProjectNORS:Ganttchart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 E ProjectNORS:ConfluenceWiki . . . . . . . . . . . . . . . . . . . . . . . . . . 81 F ProjectNORS:BusinessModel. . . . . . . . . . . . . . . . . . . . . . . . . . . 94 G ProjectNORS:Grouprules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 H ProjectNORS:DailyScrumLog . . . . . . . . . . . . . . . . . . . . . . . . . . 100 I ProjectNORS:MeetingNotes . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 J ProjectNORS:ToggleTimeTracking . . . . . . . . . . . . . . . . . . . . . . . 169 vii ProjectNORS AMultiplayerOnlineBattleArenaGame ImplementedinUnrealEngine4. List of Figures 1 Thedifferentclasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 Thedifferentelements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3 VariablesinBlueprint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4 FunctioninBlueprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5 WidgetDesigner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 6 BadBlueprintCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 7 BetterBlueprintCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 8 GoodBlueprintCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 9 Blender:BlenderStartViking . . . . . . . . . . . . . . . . . . . . . . . . . 17 10 Blender:ArmatureofViking . . . . . . . . . . . . . . . . . . . . . . . . . . 18 11 Blender:Weight-PaintViking . . . . . . . . . . . . . . . . . . . . . . . . . 19 12 Blender:VikingUV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 13 Blender:VikingAnimation . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 14 Blender:VikingApply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 15 Blender:VikingFbxExport. . . . . . . . . . . . . . . . . . . . . . . . . . . 22 16 Thespellsdatatable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 17 Theflowofthespells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 18 Tableexample. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 19 GUIExplained. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 20 Shopexample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 21 UMLDiagramofBaseMinion . . . . . . . . . . . . . . . . . . . . . . . . . 29 22 Creationofsubclasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 23 Minion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 24 UnrealEngineComponentsfortheMinions . . . . . . . . . . . . . . . . . 31 25 NavmeshPolygongraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 26 BehaviorTree:minionBehaviorTree . . . . . . . . . . . . . . . . . . . . . . 36 27 UMLAIController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 28 MinionAIControllerUML . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 viii ProjectNORS AMultiplayerOnlineBattleArenaGame ImplementedinUnrealEngine4. 29 CreatingofnewTraceChannel . . . . . . . . . . . . . . . . . . . . . . . . 40 30 SimpleCollisionbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 31 Collisionoptionsforobjects . . . . . . . . . . . . . . . . . . . . . . . . . . 42 32 AnimationStructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 33 Blendspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 34 ChampionStartAnimation . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 35 Feedbackdiagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 ix
Description: