Mål: At kunne implementere en spilmekanik som ud fra mit design siger at man skal have 3 ord, 2 af dem er forkert stavet 1 af dem er korrekt. Hvis man vælger det forkerte så bliver det fjernet så man har 2 valgmuligheder osv. Når man vælger det rigtige ord, så får man en ny runde med ord. Dette fortsætter X antal runder.
Jeg tager udgangspunkt i det Game Loop som jeg præsenterede i mit delprodukt Delprodukt: Spiludvikling, Game Design Document, og implementerer det I Unreal Engine med hjælp af C++.

Jeg har dog opdateret det så det er mere præcist hvad der kommer til at ske, når man vælger det forkerte ord.
Når jeg skulle til at implementere dette I Unreal Engine, stod jeg rimelig blank, for jeg havde ikke prøvet at kode et Game Loop på denne måde før. Først skulle jeg finde ud af hvordan jeg fik skrevet ord I en 3D verden, der fandt jeg inde I Plugins I Unreal Engine et plugin som hedder Text3D, som gjorde præcis det jeg ville.

Jeg havde så tanken at man brugte ens mus, eller Touch hvis det var på en IPad til at vælge det ord som er korrekt, så det skulle jeg også have sat op at mouse click events skulle være sat til. Det kunne man så gøre hvis man lavede et nyt PlayerController Blueprint.

Dette PlayerController blueprint som hedder PC_WizardShop, skulle jeg have ind på min GameMode instans, som hedder GM_WizardShop.

Så gik jeg i gang med at lave selve koden for denne spilmekanik. Jeg skulle have en klasse som stod for at lave selve ordet, det vil sige en klasse hvis formål er at ændre ordet, og håndtere når den registere at den er blevet klikket på. Denne klasse har jeg kaldt for WordChoiceActor, og denne klasse nedarver desuden fra Unreal Engine’s Actor klasse.
Det kode som får hele logikken til at virke ligger I en delegate som jeg benytter mig af, igennem Unreal Engine’s event system.

Der laver jeg en delegate type som hedder FOnWordClicked, og med to parametre som er en type af AWordChoiceActor pointer, og så en boolean. Når jeg så klikker på et ord så eksekvere den alle de metoder som er tilføjet til min delegate, og alle disse metoder skal have samme mængde og typer af parametre.

Det er ved OnWordClicked.Broadcast(this, bIsCorrect) at den eksekvere metoderne. Det smarte er så at den sender sig selv som AWordChoiceActor videre og det samme med den boolean som fortæller om ordet er rigtigt stavet. Disse informationer sender den videre til min AWordChoiceGameManager, som står for al logik omkring mit game loop.

Her er logikken for at den skal vælge et tilfældigt rigtigt ord, og derefter to tilfældige forkerte ord, og så skal den blande dem så de ikke er i en forudsigelig rækkefølge. Derefter spawner den alle de AWordChoiceActors som jeg skal bruge, og tilføjer metoden HandleWordClicked til den OnWordClicked delegate som jeg har lavet.

Her ser man så den metode der bliver eksekveret når man trykker på et ord.
Produkt:
