aaronvark / PeerReview1819

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

Bas De Koningh - Eindopdracht blok 1 #17

Closed BeTheBase closed 4 years ago

BeTheBase commented 5 years ago

BubbleTrouble in 3D :D

Je speelt het spel in je eentje. Je bent een blokje die een straal van blokjes omhoog af kan schieten. Er zijn gekke objecten die door de wereld flowen waar aan je levens verliest als je in aanraking komt.

Referentie: https://spele.nl/bubble-trouble-1-spel/

aaronvark commented 5 years ago

Je hebt al een best aardige class setup met wat aardige compositie elementen (data / behaviour split bij weapons & players). De manier waarop de ObjectPooler referentie vanuit die abstract class meegaat naar alle andere dingen vind ik nog wel een discussie waardig. Dit heb ik bij anderen ook al voorbij zien komen, en een dergelijke samenkomst van verschillende pools van objecten klinkt handig in eerste instantie, maar kan uiteindelijk een probleem worden als de requirements voor het gedrag van die objecten radicaal gaat verschillen. Zo lang de class puur en alleen de game objects beheert blijft het beperkt, maar dan zou ik wel goed nadenken over wat de verwachting is van de gebruiker van de class (die het object ophaalt) op het moment dat er meer initialisatie nodig is dan alleen "zet aan".

Coding conventions deels goed aangehouden (local vars), maar de haakjes nog niet.

OnDeath geef je aan als een event, maar het is in dit geval eigenlijk gewoon een public function. Daar zou je beter een delegate voor kunnen gebruiken, zodat het echt een event wordt.

Als ik verder in de Player class duik blijkt deze waarschijnlijk te veel responsibilities te hebben. Beheren van de beurt, input handling, en het uitvoeren van de acties van elk individuele speler. Ik zou het beheren van de players hier minstens uit halen, en een echte "Player" class hebben die alleen 1 speler aangaat.

BeTheBase commented 5 years ago

Oke, ben er achter gekomen dat ik m'n png hier gwn in kan slepen dus nu hoef je niet helemaal naar m'n mapje te gaan :D FirstPhaseUML

BeTheBase commented 5 years ago

Blijkbaar als je een tussen space doet tussen het # en de 17 dan komt de commit niet hier. Hieronder mijn bericht van mijn laatste commit die bij het pull request is gaan staan:

17 Eventmanager om generic simpel listeners toe te voegen aan een b…

…epaald event en deze te broadcasten wanneer nodig. Level manager om de speler levels te laten voltooien na N aantal enemies verslagen te hebben en dan weer naar een volgend level te gaan. Nog wat andere fixes en een player en enemy manager die de entities kunnen neerzetten.

BeTheBase commented 5 years ago

Iterate OOP design voor vandaag deadline 1700

Wat ik nu heb: -Meerdere spelers -Blokjes die met parabolic curve omhoog schieten -Ballen die als je ze raakt in 2e splitsen -Meerdere levels -ObjectPooler global op 1 plek -EventManager die static delegates bewaard en die functionaliteit bied om ook met action events te werken. -LevelManager die bijhoud wanneer de speler verder mag ( als alle enemies p level verslagen zijn ) -Veel oude code die uitgecomment staat -Slordige plaatsing van: private / public fields en properties

Wat ik nog wil: -Game over gaan als je levens op zijn -Systeem voor het bijhouden van levens en score ( punten ) -Meerdere levels -Meer variatie per level ( verschillende enemy types / power ups ) -Code opschonen en refactoren waar nodig -Beetje UI -Beetje particle systems en post processing om het er leuker uit te laten zien. -Game won scherm -Achtergrond (EDIT) -Na een nachtje slapen en spelen met code kwam ik erachter dat ik graag de data van de levels wil opslaan. Dit wil ik in Json doen zodat je als je de applicatie afsluit nogsteeds opgeslagen staat welk level je voor het laatst hebt gehaald. -Dus ik wil een level selection maken en eventueel een editor window om mijn levels eenvoudig te managen en simpel nieuwe levels toe te voegen. -Serialization van data -werken met Json

EXTRA: -High score system -Clean UI -Editor Window voor m'n object pooler -Sound effects

aaronvark commented 5 years ago

Volgens mij ben je lekker bezig Bas! Goed om te zien dat je in je commit messages ook helder kan zien wat je precies hebt afgerond of waar je aan werkt.

Grappig dat je die damage interface generic maakt. Ben benieuwd wat je in je hoofd hebt als je vooruit kijkt naar hoe je die op verschillende manieren kunt inzetten. Zelfde voor de abstract avatar class.

Level loading kan je in eerste instantie prototypen met hardcoded data in het format waarin je het uiteindelijk zou willen hebben, en dan die data gaan serializen. Daarna overstappen naar bestanden inlezen bijv. Volgend blok gaan we daar sowieso wat meer op in (Serialization e.d.). Houd er vooral rekening mee dat je simpele data structuren gebruikt. Dictionary's e.d. serializen een stuk minder handig.

vmuijrers commented 5 years ago

Ik zie dat je de objecten in je objectpool opslaan aan de hand van een tag die gebaseerd is op de naam van een prefab. Deze methode kan gevaarlijk zijn aangezien Unity niet werkt met Unique Naming voor prefabs (twee prefabs met dezelfde naam kunnen in verschillende mappen staan en aan de pool worden toegevoegd, dit kan ongedefinieerd gedrag opleveren). Ik raad aan om ipv de naam te gebruiken het type van het script wat je erop hebt zitten te gebruiken aangezien deze wel unique is. (gebruik System.Type) Je kunt er tevens voor kiezen om het type als Value op te slaan ipv een GameObject, zodat je bij returnen niet nog een component moet zoeken op het GameObject.

BeTheBase commented 4 years ago

17 INLEVEREN tijd = 19-09-2019 / 13:35

Link naar eigen github repo met Full-project source en PDF documentatie: https://github.com/BeTheBase/KernModuleGameDev