﻿1
00:00:04,380 --> 00:00:04,920
‫Hoi.

2
00:00:04,920 --> 00:00:05,810
‫Welkom terug.

3
00:00:05,820 --> 00:00:11,610
‫We zijn klaar om ons spel af te maken, wat betekent dat er nog maar een paar dingen moeten gebeuren om ons spel op

4
00:00:11,610 --> 00:00:15,150
‫te poetsen en het in een staat te krijgen waar we blij mee zijn.

5
00:00:15,150 --> 00:00:17,730
‫Dus maak je klaar om dit spel af te maken.

6
00:00:17,730 --> 00:00:19,170
‫We zijn bijna klaar.

7
00:00:19,170 --> 00:00:21,450
‫We gaan gewoon een paar functies toevoegen.

8
00:00:21,450 --> 00:00:25,980
‫Ik zou de camerabeweging wat soepeler willen maken, dus daar gaan we mee beginnen.

9
00:00:26,010 --> 00:00:32,130
‫Ik heb ook gemerkt dat de torens nog steeds projectielen afvuren nadat de tank dood is, dus we kunnen de

10
00:00:32,130 --> 00:00:35,250
‫code gemakkelijk repareren om te voorkomen dat dit gebeurt.

11
00:00:35,250 --> 00:00:40,410
‫En ik ga ook een mogelijk probleem bezoeken met het spawn-punt van het projectiel.

12
00:00:40,410 --> 00:00:43,380
‫Dus laten we erin springen en dit spel oppoetsen.

13
00:00:43,740 --> 00:00:46,920
‫Het eerste waar ik naar wil kijken is de camerabeweging.

14
00:00:46,920 --> 00:00:50,670
‫Dus als ik doorga en op play druk, zal ik je laten zien wat ik bedoel.

15
00:00:50,820 --> 00:00:58,380
‫Terwijl ik rondloop, zul je zien dat de camera precies onze beweging volgt als we draaien en als

16
00:00:58,380 --> 00:01:03,210
‫we vooruit en achteruit gaan, volgt de camera gewoon automatisch mee.

17
00:01:03,210 --> 00:01:08,850
‫Nu is er een leuke truc die we aan deze camera kunnen toevoegen die hem een beetje soepeler kan maken.

18
00:01:08,850 --> 00:01:11,730
‫Laten we doorgaan en de BP-vijvertank openen.

19
00:01:11,940 --> 00:01:16,830
‫Nu hier in BP Pond Tank, ga ik onze veerarmcomponent selecteren.

20
00:01:16,830 --> 00:01:23,580
‫En als ik zoek naar cameravertraging, zie ik hier in het gedeelte vertraging dat er een selectievakje is om cameravertraging in

21
00:01:23,580 --> 00:01:24,360
‫te schakelen.

22
00:01:24,390 --> 00:01:28,440
‫Ik ga dat controleren en de rotatievertraging van de camera inschakelen.

23
00:01:28,470 --> 00:01:30,240
‫Dat ga ik ook checken.

24
00:01:30,240 --> 00:01:37,590
‫Dit stelt ons in staat om de camera achter te laten en soepel in te halen, wat een

25
00:01:37,590 --> 00:01:39,780
‫mooi soort professioneel camera-effect creëert.

26
00:01:39,780 --> 00:01:42,810
‫Laten we doorgaan en op play drukken en dit uitproberen.

27
00:01:42,810 --> 00:01:50,490
‫Dus merk op dat als ik beweeg, de camera een korte tijd nodig heeft om in te halen terwijl we bewegen.

28
00:01:50,490 --> 00:01:53,190
‫En hetzelfde geldt voor als we draaien.

29
00:01:53,190 --> 00:01:59,970
‫Dus het is alsof er een beetje traagheid is en de camera zich op een soort glijdende baan bevindt en het vertraagt

30
00:01:59,970 --> 00:02:00,840
‫tot stilstand.

31
00:02:00,840 --> 00:02:07,710
‫Nu kunnen we de veerarm selecteren en kunnen we de vertragingssnelheid van de camera en de vertragingssnelheid van de rotatie wijzigen.

32
00:02:07,710 --> 00:02:15,300
‫Als ik dit bijvoorbeeld op een kleinere waarde plaats, zeg vijf en vijf in plaats van tien, laten we nu eens kijken

33
00:02:15,300 --> 00:02:16,950
‫hoe het eruit ziet.

34
00:02:17,040 --> 00:02:21,450
‫Dus ik beweeg en je zult zien dat de camera wat meer vertraging heeft.

35
00:02:21,450 --> 00:02:25,170
‫Nu kunnen we dit naar eigen goeddunken verhogen of verlagen.

36
00:02:25,170 --> 00:02:31,170
‫Dit is iets waarmee u kunt experimenteren en de waarden kunt vinden die voor u werken.

37
00:02:31,200 --> 00:02:36,930
‫Hier hebben we een waarde van twee en voor mij is dat een beetje te veel vertraging.

38
00:02:36,930 --> 00:02:41,100
‫Dus ik denk dat iets tussen vijf en twee voor mij zou werken.

39
00:02:41,100 --> 00:02:46,290
‫Als je van dit soort waarde houdt, houd je het misschien op twee of misschien zelfs lager.

40
00:02:46,290 --> 00:02:54,360
‫Maar ik ga dit op een waarde zetten van, laten we zeggen, vier voor de vertragingssnelheid van de camera en vier voor de vertragingssnelheid van de rotatie

41
00:02:54,360 --> 00:02:55,320
‫van de camera.

42
00:02:55,350 --> 00:02:57,270
‫Laten we eens kijken hoe dat eruit ziet.

43
00:02:57,270 --> 00:02:59,850
‫Dus terwijl ik beweeg, blijft de camera achter.

44
00:02:59,850 --> 00:03:03,660
‫Er is duidelijk wat cameravertraging, maar het is niet te veel.

45
00:03:03,660 --> 00:03:09,660
‫Ik vind dit er eigenlijk best goed uitzien, dus daar ben ik best tevreden mee.

46
00:03:10,320 --> 00:03:15,960
‫Ons volgende item is de toren die afvuurt nadat de tank al dood is.

47
00:03:15,960 --> 00:03:18,930
‫Laat me gewoon doorgaan en je laten zien wat ik bedoel.

48
00:03:19,020 --> 00:03:19,740
‫Daar gaan we.

49
00:03:19,740 --> 00:03:23,880
‫De tank is dood en de torens vuren nog steeds.

50
00:03:23,970 --> 00:03:26,970
‫Dit komt omdat de tank nog steeds bestaat.

51
00:03:26,970 --> 00:03:31,290
‫En zolang het binnen vuurbereik is, zullen de torens blijven vuren.

52
00:03:31,290 --> 00:03:38,130
‫Dit wordt gemakkelijk afgehandeld door een soort variabele te hebben die we kunnen controleren om te zien of de tank is overleden.

53
00:03:38,520 --> 00:03:45,690
‫Dus ik ga hier naar de tankklasse en tank, en ik ga een Booleaanse variabele toevoegen die we kunnen controleren

54
00:03:45,690 --> 00:03:48,690
‫om te zien of de tank nog leeft.

55
00:03:48,690 --> 00:03:53,580
‫En ik ga dit openbaar maken omdat we van plan zijn het van buiten de klas te gebruiken.

56
00:03:53,580 --> 00:04:00,690
‫Dus ik ga hier een bull-variabele van maken met de naam Be Alive, en ik ga het standaard gelijk stellen

57
00:04:00,690 --> 00:04:01,500
‫aan true.

58
00:04:01,500 --> 00:04:09,270
‫Dus de tank begint in de levende staat en als de tank sterft, wordt levend ingesteld op onwaar.

59
00:04:09,270 --> 00:04:14,130
‫En dat kan gebeuren in tank CP bij handvatvernietiging.

60
00:04:14,130 --> 00:04:16,530
‫Dus laten we de vernietiging hier gaan aanpakken.

61
00:04:16,530 --> 00:04:23,070
‫En nadat we deze andere eigenschappen hebben ingesteld, ga ik B levend gelijk stellen aan false.

62
00:04:23,190 --> 00:04:29,730
‫Dus aangezien we B levend op false zetten, kunnen we weten of de tank dood is en dan kunnen we simpelweg voorkomen

63
00:04:29,730 --> 00:04:33,120
‫dat de projectielen worden afgevuurd door deze boolean te controleren.

64
00:04:33,120 --> 00:04:38,790
‫Dus laten we naar Tower Dot gaan, CP en hier in controlebrandtoestand.

65
00:04:38,790 --> 00:04:42,990
‫We kunnen ervoor zorgen dat de tank nog in leven is voordat we schieten.

66
00:04:42,990 --> 00:04:46,290
‫Dus eerst ga ik kijken of de tank geldig is.

67
00:04:46,290 --> 00:04:52,560
‫Ik ga zeggen dat als tank gelijk is aan null pointer, dan kom ik gewoon eerder terug.

68
00:04:52,560 --> 00:04:59,010
‫Op die manier weten we dat Tank geldig is en dan in onze controle om te zien of we binnen

69
00:04:59,010 --> 00:05:03,420
‫vuurbereik zijn, ga ik een toevoegen en kijken of Tank nog leeft.

70
00:05:03,450 --> 00:05:03,870
‫Als tank.

71
00:05:03,980 --> 00:05:05,830
‫leeft, dan kunnen we vuren.

72
00:05:05,840 --> 00:05:08,840
‫Als Tank niet leeft, zullen we niet vuren.

73
00:05:09,020 --> 00:05:14,900
‫Nu vraag je je misschien af of het wel of niet een goed idee is om de return op een enkele regel te zetten, zoals je

74
00:05:14,900 --> 00:05:16,610
‫me in eerdere video's hebt zien doen.

75
00:05:16,610 --> 00:05:23,960
‫En dit is een goede gelegenheid om Unreal Engines, beste programmeerpraktijken en aanbevelingen te bespreken.

76
00:05:23,990 --> 00:05:30,590
‫Unreal engine coding-praktijken raden je aan om accolades met een hoofdtekst te gebruiken voor al je

77
00:05:30,590 --> 00:05:33,080
‫if-statements, zelfs die met één statement.

78
00:05:33,080 --> 00:05:39,200
‫En de reden is dat als je van plan bent hier meerdere regels code aan toe te voegen, je de body

79
00:05:39,200 --> 00:05:40,190
‫hier al hebt.

80
00:05:40,190 --> 00:05:41,690
‫En het is ook duidelijker.

81
00:05:41,690 --> 00:05:46,160
‫En dat brengt me ook op een ander punt, namelijk mijn gebruik van auto.

82
00:05:46,190 --> 00:05:53,720
‫Ik heb hier een paar keer auto gebruikt in de projectielklasse, en hoewel dit efficiënt kan zijn,

83
00:05:53,720 --> 00:06:01,940
‫is het op het eerste gezicht niet zo duidelijk wat de typen zijn, daarom wordt het gebruik van auto ook

84
00:06:01,940 --> 00:06:04,220
‫niet aanbevolen bij onwerkelijke motorcoderingspraktijken.

85
00:06:04,220 --> 00:06:09,770
‫Als u zich wilt houden aan de door Unreal Engine aanbevolen coderingspraktijken, kunt u deze instanties van auto

86
00:06:09,770 --> 00:06:11,570
‫vervangen door het werkelijke type.

87
00:06:11,570 --> 00:06:19,460
‫Hier, bijvoorbeeld, get instigator controller retourneert een A-controller, zodat we dat kunnen veranderen in een controller en dat

88
00:06:19,550 --> 00:06:20,990
‫is een aanwijzer.

89
00:06:20,990 --> 00:06:29,210
‫Deze statische klasse, die je beschadigt, retourneert een U-klasse, zodat we je klasse hier kunnen gebruiken en natuurlijk krijgt de eigenaar hier een

90
00:06:29,210 --> 00:06:37,940
‫acteur terug, zodat we hier en nu een acteur kunnen gebruiken in plaats van auto. Als je naar deze code kijkt, is het veel

91
00:06:37,940 --> 00:06:44,840
‫duidelijker wat deze typen zijn, terwijl auto gewoon alles maskeert en je in staat stelt lui te zijn

92
00:06:44,840 --> 00:06:48,740
‫en weg te komen door de typen niet te typen.

93
00:06:48,740 --> 00:06:55,790
‫Soms weet ik niet zeker wat een grote uitdrukking teruggeeft, dus ik gebruik auto om te zien wat dat

94
00:06:55,790 --> 00:07:00,410
‫type is en later zal ik het vervangen door het daadwerkelijke type.

95
00:07:00,410 --> 00:07:07,880
‫Dus dat is een andere manier waarop u auto kunt gebruiken om u te helpen de typen te leren die terugkeren door lange, gecompliceerde uitdrukkingen

96
00:07:07,880 --> 00:07:08,540
‫zoals deze.

97
00:07:08,540 --> 00:07:14,120
‫Dus aangezien we ons in de oppoetsfase bevinden, ga ik auto vervangen door de echte typenamen

98
00:07:14,120 --> 00:07:15,350
‫hier in projectiel.

99
00:07:15,380 --> 00:07:23,390
‫Ik ga ook naar de basispion in de vuurfunctie waar we dit projectiel hebben en dit wordt teruggegeven van

100
00:07:23,390 --> 00:07:25,940
‫deze grote lange uitdrukking hier.

101
00:07:25,940 --> 00:07:34,550
‫Spawn-acteur gaat in dit geval een projectiel teruggeven, zodat ik dit kan vervangen door een projectiel.

102
00:07:35,640 --> 00:07:36,150
‫Oké.

103
00:07:36,150 --> 00:07:39,840
‫Dus dat gaat de code aan de C++-kant oppoetsen.

104
00:07:39,840 --> 00:07:41,850
‫Laten we doorgaan en dit compileren.

105
00:07:41,850 --> 00:07:47,910
‫En met een geslaagde compilatie gaan we terug naar de editor en gaan we op play drukken en

106
00:07:47,910 --> 00:07:52,890
‫ervoor zorgen dat die torens niet meer op ons schieten nadat we zijn gestorven.

107
00:07:52,890 --> 00:07:54,180
‫Er is dus één treffer.

108
00:07:55,050 --> 00:08:00,270
‫Er is er nog een, en ik wacht, en ik zie geen projectielen meer.

109
00:08:00,300 --> 00:08:01,230
‫Perfect.

110
00:08:01,260 --> 00:08:01,680
‫Oké.

111
00:08:01,680 --> 00:08:07,500
‫Dus het laatste punt dat ik wil bespreken voordat we dit afronden, is het spawn-punt van het projectiel.

112
00:08:07,530 --> 00:08:14,550
‫Laten we dat nu hier in BP Pond Tank selecteren en ervoor zorgen dat het ver genoeg van het vat verwijderd

113
00:08:14,550 --> 00:08:15,120
‫is.

114
00:08:15,150 --> 00:08:19,890
‫Voordat we dat doen, ga ik het heel, heel dichtbij plaatsen en je enkele problemen laten zien

115
00:08:19,890 --> 00:08:21,240
‫die zich kunnen voordoen.

116
00:08:21,270 --> 00:08:27,570
‫Nu, terwijl ik vooruit ga en op de linkermuisknop klik, zul je zien dat ik het projectiel niet zie.

117
00:08:27,570 --> 00:08:31,530
‫Sterker nog, ik zie het helemaal niet omdat het gewoon te dichtbij is.

118
00:08:31,530 --> 00:08:33,100
‫We krijgen al een aanrijding.

119
00:08:33,120 --> 00:08:35,970
‫Het wordt vernietigd voordat het iets kan doen.

120
00:08:35,970 --> 00:08:39,810
‫Zorg er dus voor dat het een flink stuk uit de buurt van het vat is.

121
00:08:39,840 --> 00:08:45,960
‫We produceren hoe dan ook wat rook, dus het zal lijken alsof er een rookspoor achter loopt.

122
00:08:45,960 --> 00:08:48,450
‫Dit ziet er dus nog redelijk realistisch uit.

123
00:08:49,970 --> 00:08:51,250
‫Dus dat ziet er best goed uit.

124
00:08:51,260 --> 00:08:58,040
‫En terwijl we op projectiel-spawn-punten zijn, is het misschien een goed idee om naar de BP-vijvertoren te

125
00:08:58,040 --> 00:09:01,010
‫gaan kijken en het projectiel-spawn-punt te selecteren.

126
00:09:01,010 --> 00:09:05,270
‫En als je problemen hebt gehad met het spawnen van projectielen uit het torentje, wil

127
00:09:05,270 --> 00:09:10,570
‫je er misschien ook voor zorgen dat het zich op een goede afstand van de loop van het torentje bevindt.

128
00:09:10,580 --> 00:09:11,810
‫Dus daar hebben we het.

129
00:09:11,810 --> 00:09:15,980
‫We hebben een functioneel spel en het ziet er fantastisch uit.

130
00:09:15,980 --> 00:09:21,650
‫We hebben de mogelijkheid om rond te rollen in de wereld, we hebben de mogelijkheid om projectielen af te schieten en

131
00:09:21,650 --> 00:09:22,760
‫ze blazen dingen op.

132
00:09:22,760 --> 00:09:25,190
‫Als we een toren raken, kunnen we hem vernietigen.

133
00:09:25,190 --> 00:09:28,430
‫Als de toren ons raakt, kan hij ons vernietigen.

134
00:09:29,380 --> 00:09:30,700
‫Gewoon zo.

135
00:09:30,700 --> 00:09:38,110
‫En we hebben voorwaarden voor winnen en verliezen met HUD-widgets die op het scherm worden weergegeven en ons vertellen of we

136
00:09:38,110 --> 00:09:40,330
‫de game hebben gewonnen of verloren.

137
00:09:40,330 --> 00:09:42,610
‫Dit is dus fantastisch.

138
00:09:42,610 --> 00:09:48,670
‫En als je deze game wilt verpakken, kun je dat eenvoudig doen door naar boven te

139
00:09:48,670 --> 00:09:56,710
‫gaan en op het platformpictogram te klikken voor Windows, als je een Windows-computer gebruikt of voor iOS, als je een Mac

140
00:09:56,710 --> 00:10:00,670
‫gebruikt. machine, dan heb je natuurlijk deze andere opties.

141
00:10:00,670 --> 00:10:06,640
‫Als je voor andere platforms wilt verpakken, raad ik je aan wat online onderzoek te doen om de verschillende platforms op

142
00:10:06,640 --> 00:10:08,980
‫te zoeken en hoe je daarvoor kunt verpakken.

143
00:10:08,980 --> 00:10:14,920
‫Ik ben op een Windows-machine, dus ik kan hier eenvoudig op pakketproject voor Windows klikken en het zal me

144
00:10:14,920 --> 00:10:17,410
‫vragen waar ik mijn spel wil verpakken.

145
00:10:17,410 --> 00:10:19,780
‫Nu heb ik mijn project hier in Tune Tanks.

146
00:10:19,780 --> 00:10:24,670
‫Ik ga met de rechtermuisknop klikken, een nieuwe map maken en ik ga deze build gewoon noemen.

147
00:10:24,670 --> 00:10:29,110
‫Dat is meestal waar u een verpakt project zou plaatsen.

148
00:10:29,110 --> 00:10:34,720
‫Dus ik ga die map selecteren en Unreal Engine toestaan mijn spel in te pakken.

149
00:10:34,720 --> 00:10:40,300
‫Het zal waarschijnlijk een paar minuten duren en als het klaar is, zou ik een verpakt spel moeten hebben.

150
00:10:41,080 --> 00:10:41,530
‫Oké.

151
00:10:41,530 --> 00:10:48,070
‫Dus als ik klaar ben met inpakken, zouden we de build succesvol moeten zien in het uitvoerlogboek en dan kunnen we

152
00:10:48,070 --> 00:10:51,970
‫kijken in de map die we hebben aangewezen voor ons verpakte project.

153
00:10:51,970 --> 00:10:54,670
‫Voor mij wordt het deze buildmap.

154
00:10:54,700 --> 00:11:02,220
‫Nu heb ik vier vensters verpakt, dus ik heb een Windows-map en hier is mijn tune tanks, dot xy.

155
00:11:02,230 --> 00:11:03,490
‫Het is een uitvoerbaar bestand.

156
00:11:03,520 --> 00:11:08,440
‫Ik kan erop dubbelklikken en hier is mijn eindproject.

157
00:11:08,440 --> 00:11:09,490
‫Ik kan schieten.

158
00:11:09,580 --> 00:11:11,260
‫Ik kan ontwijken.

159
00:11:11,990 --> 00:11:18,110
‫Het lijkt erop dat mijn vijandelijke torens op mij kunnen schieten en ik ze kan vernietigen.

160
00:11:18,110 --> 00:11:19,550
‫Ja, ik kan ze vernietigen.

161
00:11:19,550 --> 00:11:23,240
‫Ze kunnen me vernietigen, zo lijkt het, en ik kan het spel verliezen.

162
00:11:23,360 --> 00:11:26,990
‫En natuurlijk, als ik wat vaardiger was, zou ik de wedstrijd kunnen winnen.

163
00:11:27,170 --> 00:11:33,230
‫En voor je laatste uitdaging ga ik je de opdracht geven om je eigen smaak aan het spel toe te voegen.

164
00:11:33,230 --> 00:11:35,420
‫Maak dit spel je eigen.

165
00:11:35,420 --> 00:11:42,200
‫Vind wat nieuwe geluiden of effecten of meshes en creëer funky uitziende torens en tanks.

166
00:11:42,200 --> 00:11:48,410
‫Voeg meer torens toe, voeg misschien verschillende vaardigheidsniveaus toe, maak de torens steeds moeilijker naarmate je verder komt

167
00:11:48,410 --> 00:11:49,580
‫in je level.

168
00:11:49,580 --> 00:11:56,480
‫Misschien kan je de tank een hoger niveau geven, een niveau geven dat je kunt verhogen naarmate je meer en meer torens vernietigt.

169
00:11:56,480 --> 00:12:03,980
‫Misschien kun je een nieuwe niveaugeometrie toevoegen en de tank op hellingen laten klimmen en tanks proberen te vernietigen op

170
00:12:03,980 --> 00:12:05,330
‫moeilijk bereikbare plaatsen.

171
00:12:05,360 --> 00:12:09,050
‫De mogelijkheden zijn eindeloos, maar vooral: veel plezier.

172
00:12:09,050 --> 00:12:10,700
‫Terwijl je je games ontwikkelt.

173
00:12:10,700 --> 00:12:13,160
‫Je gaat de video niet pauzeren voor deze uitdaging.

174
00:12:13,160 --> 00:12:19,070
‫Dit is iets dat je vanaf dit punt kunt doen met je gameprojecten.

175
00:12:19,070 --> 00:12:20,630
‫Gefeliciteerd dus.

176
00:12:20,630 --> 00:12:21,980
‫We eindigden ons spel.

177
00:12:21,980 --> 00:12:23,750
‫Ik hoop dat je genoten hebt van deze sectie.

178
00:12:23,750 --> 00:12:25,460
‫Ik had een hoop plezier.

179
00:12:25,460 --> 00:12:28,790
‫Dit is een geweldig spelproject en je hebt een lange weg afgelegd.

180
00:12:28,790 --> 00:12:34,070
‫Je hebt tijdens dit gedeelte van de cursus een heleboel vaardigheden geleerd, dus ik hoop dat je klaar bent om

181
00:12:34,070 --> 00:12:35,930
‫door te gaan naar meer opwindende dingen.

182
00:12:35,930 --> 00:12:36,890
‫Heel erg bedankt.

183
00:12:36,890 --> 00:12:39,770
‫Ik ben Steven en ik zie je snel.

