aaronvark / PeerReview1819

Repo for peer review assignments for year 2 development class of 18/19
0 stars 0 forks source link

Pim Horeman - Eindopdracht Retro Game #12

Closed Pimmez closed 4 years ago

Pimmez commented 5 years ago

Concept: Binnen 1 a 2 dagen is het concept bedacht en geüpload.

Pimmez commented 5 years ago

Concept: I will combine Arkanoid with Pinball in this prototype. Combining the pinball 'start' mechanic, whereby the ball will launch from the side into the game. Also will there be pinball objectives where the ball can go in to for additional points.

add the bottom of the screen you don't have pinball flippers you have the arkanoid paddle to bounce the ball back up. Upon losing the ball you have to insert the ball in the game again with the pinball mechanic.

You can get score by destroying the arkanoid blocks or going through pinball objectives

aaronvark commented 5 years ago

Ik zou je files nog eens in een subfolder met je naam plaatsen, want dikke kans dat er meer mensen met een Script folder zijn.

In je UML staan volgens mij een aantal pijlen verkeerd om. Enum DifferentBricks bevat geen Bricks, toch? Volgens mij is dat gewoon een los element wat gebruikt wordt als type in een van de classes. Je kan ervoor kiezen om dit soort details weg te laten, als het 't begrip van de rest van UML niet in de weg staat. Je zou dan bijv nog een <<>> prototype achter de variabele kunnen zetten in Bricks.

Verder hebben PaddleInput en Paddle nu een double dependency. Het is beter om te zorgen dat de één een referentie naar de ander bewaart, en niet dat ze dat twee richtingen op doen. Mijn voorkeur gaat dan uit dat de Paddle een PaddleInput reference heeft, en die aanspreekt om bestuurd te worden. Deze zou dan evt. later ook door AI vervangen kunnen worden (aan de PaddleInput class kan je dan vervolgens bepalen wie het is die er bestuurd). Dat zou ook betekenen dat dit pijltje andersom komt te staan.

PaddleDirectionMath is typisch een utility class die geen MonoBehaviour zou moeten zijn maar een static class om bepaalde dingen bij elkaar te brengen (zoals dus wiskundige utility functies die je op meerdere plaatsen zou kunnen gebruiken). Als het echt alleen om paddles gaat, en alleen paddles ze gebruiken, kan deze net zo goed daar staan.

In de Brick class is er ook nog wat herhalende code (die gameObject.GetComponent bijv.) die je kunt cachen, en de relaties tussen enums en values zou je in een Dictionary kunnen opslaan. Bijv.: Dictionary< DifferentBrick, Color >. Dan kan dat hele stuk in 1 regel. En datzelfde zie ik als mogelijkheid voor de collision function, ook weer een Dictionary, die aangeeft wat de volgende kleur is: Dictionary< DifferentBricks, DifferentBricks >, maar nog simpeler is dat je de Enums op volgorde zet, en dan gewoon -1 of +1 doet, tot je bij 0 of het eind bent. Voor dat laatste kan je dan controlere of je niet al bij de laatste bent. Voor de eerste is "(int)diffBrick == 0" al voldoende.

aaronvark commented 5 years ago

Ik zie dat je al aan de slag bent gegaan met brick spawnen in een vaste structuur. Ben benieuwd hoe ver je daar deze week mee komt, dus als je morgen wil sparren is daar tijd en ruimte voor (ook bijv. over de dingen uit de feedback waar ik hier en daar wat verwerking van tegenkom).

Je IReset implementatie bij de ball class creëert nu een onnodige variabele. Je zou ook heel startPosition kunnen weghalen en gewoon met die ResetPosition werken, toch?

Verder is alles goed leesbaar. Als je meer ideeën hebt over wat je wilt doen, hoor ik het graag!

Pimmez commented 5 years ago

Feedback Changes: -Ik heb nog niet de IReset interface of de startPosition weggehaald (1 van de 2). Dit zal spoedig aangepast worden. -BrickSpawner werkt nu volledig en je kan aangeven wat voor type brick er gespawnt wordt op welke plek.

Overig: -ScoreManager is erbij gekomen, hierbij sla ik een localHighscore op via Playerprefs en heb je ook je tijdelijke score die gedisplayed wordt. -Ik heb een Bouncer toegevoegd wat hoort in een Pinball machine, dit zorgt voor meer variatie in het spel. -Er zit een kleine screenshake in, waardoor het spel wat meer player feedback krijgt (deze is te bereiken via Actions). -Ik ben nog bezig met een Random Itemdropper die af en toe als een brick kapot gaat er een item naar beneden komt. -Ik heb geprobeerd een Dictionary opnieuw toe te passen maar dat lukt nog niet helemaal (even naar vragen eerst volgende les). =-De bal kan nu ook maar 3x gebruikt worden en daarna (omdat er geen einde is) zit je nog wel vast in het spel.

Pimmez commented 5 years ago

Ik heb een flowchart van de game loop gemaakt, hopelijk is het duidelijk voor iedereen. Graag hoor ik Tips als het niet duidelijk is of anders kan.

vmuijrers commented 5 years ago

Hey Pim, check nog even de slides op de blog gi1819.hku.nl over datastructuren, daar staat in het kort hoe je een dictionary kunt opzetten. Bijvoorbeeld zoiets: Dictionary<DifferentBlocks, Color> bricktionary = new Dictionary<DifferentBlocks, Color>(); Nu kun je de verschillende kleuren aan de dictionary toevoegen: dictionary.Add(DifferentBlocks.Red, Color.red); etc. Je kunt eventueel ook een aparte class maken met de Kleur en eventuele andere stats zoals score etc.

Pimmez commented 4 years ago

Feedback: -Ik heb de dictionary toegevoegd en gekeken naar datastructures in de slides. -Hierdoor heb ik ook kort gekeken naar de collision en de enum integer die je kant aanpassen maar dit is nog niet gelukt.

Other: -Ik bezig met code te maken wat nog een prioriteit heeft en ik ben bezig met refactoren van code voordat ik mijn eind UML maak. -Ik heb Tooltips uitgevonden en Headers en ik ben dat aan het toepassen.

Nog te Doen: -Ik wil nog pinball model aanpassen indien tijd het ervoor over heeft. -Comments worden in de volgende update toegevoegd. -Audio? -StartMenu? -Pauze menu?

Pimmez commented 4 years ago

ik heb een particlemanager gemaakt, die kan je aanroepen door een action. je geeft een int en een transform (voor de positie) mee. de int kan je meegeven door een (int)particleEnum. hierdoor kan je in de hierachy zeggen welke particle je wilt afspelen.

Pimmez commented 4 years ago

Ik heb het 3d maya bestand van mijn pinball machine aangepast, hierdoor is het speelveld veel groter. Ik heb daardoor ook de brickspawner aangepast met een nieuwe rij bricks die gespawned worden.

Pimmez commented 4 years ago

De publieke functies hebben comments gekregen net als alle classes. 1 of 2 prive functie hebben een comment gekregen. Verder gekeken of de conventies aangehouden waren en nutteloze scripts weg gegooid.

Pimmez commented 4 years ago

Eigen Github Game: https://github.com/Pimmez/Sphaeristerium/tree/develop

Link naar Documentatie pdf: https://github.com/Pimmez/Sphaeristerium/blob/develop/Documentatie Kernmodule1.pdf