Retrospective

Professionele werkhouding

Tijdens de gehele CLE heb ik een leidingevende rol aangenomen. Dit heb ik gedaan omdat ik mij hier fijn bij voel en dan weet dat ik betrokken ben bij het project. Ik zorgde dat anderen op tijd wisten van mijn afwezigheid, als deze voorkwam. Daarnaast hielp ik mijn teamgenoten met de taken die ze hadden en nam deze over zodra het nodig was. De feedback die we kregen op onze game heb ik samen met mijn team besproken en verwerkt in de game.

Creativiteit

Op de eerste projectdag kregen we de opdracht om het beste arcade spel ooit te maken. na het maken van groepjes van drie mocht ik met mijn team gebruik maken van een randomizer die ervoor zorgde dat we drie willekeurige onderwerpen kregen die we vervolgens zouden moeten verwerken in ons spel. De volgende onderwerpen kwamen eruit:
– Lead
– Monkey
– Expression

Nadat we deze onderwerpen kregen, hadden we al meteen een idee om een spel te maken dat gebaseerd is op een platform game waarbij een aapje banaantjes moet verzamelen.

Toen we taken gingen verdelen op basis van de nog te behalen buildingblocks, kwam ik erachter dat het handig zou zijn om een brainstormsessie te leiden zodat ik vervolgens ‘Concepten block’ zou kunnen halen.

Na deze brainstormsessie te hebben gehouden, bleek dat we uitkwamen op het maken van een ander soort spel. Deze is gebaseerd op een dungeon craweler in plaats van een platform game. We hebben hiervoor gekozen, omdat ik denk hiermee uniek te zijn in deze jaarlaag. Daarnaast leek het voor beginnende programmeurs, onder andere ik, een goede manier om kennis te maken met de programmeertaal en het maken van games. Doordat het een dungeon crawler is, hoef je bijvoorbeeld geen rekening te houden met zwaartekracht in de game.

Door de keuze te maken om van soort game te veranderen hadden we minder tijd over om er daadwerkelijk aan te werken. Dit loste ik op door zo volledig en snel mogelijk mijn taak te volbrengen, het maken van de sprites, en hulp aan te bieden aan mijn teamgenoten. Het aantal levels die we wilden maken hebben we ingekort zodat we meer aandacht hadden voor de levels die we wél zouden maken. Hierdoor hadden we meer tijd om over het leveldesign na te denken en ging de kwaliteit ervan omhoog.

Bij het opleveren van de game kregen we veel positieve reacties. Spelers vonden het spel uitdagend en leuk. Ze vonden het er goed uitzien en kwamen al snel met feedback om de game te verbeteren. Dit waren kleine verbeteringen zoals extra levens of meer soorten vijanden. Ik ben zeker van plan om wat met deze feedback te doen en zo de game nóg leuker te maken voor iedereen. Ik ben tevreden met het eindresultaat, al had ik wel gehoopt dat we de game nog meer konden uitbreiden op vlak van meer levels, andere soorten aapjes en extra levens. Al met al ben ik blij met het resultaat en wil ik hier graag verder aan werken.

Baas over je leerproces

Aan het begin van dit project was ik erg enthousiast over het bedenken en maken van het spel (leveldesign/sprites en programmeren). Toen mijn teamgenoot zei dat hij erg graag wilde programmeren ivm buildingblocks, heb ik de taak op me genomen om de sprites te maken. Aangezien deze taak niet heel intensief is en ook niet veel tijd kost, heb ik mijn teamgenoten geholpen waar nodig. Ik heb geholpen in het maken van de leveldesign en in de laatste sprint nog flink wat geprogrammeerd. Dit kwam omdat de programmeur in ons team het niet lukte. Ik nam zijn taak over en programmeerde vervolgens het spel verder. Ik heb wat nieuwe vijanden toegevoegd en de levels aantrekkelijker gemaakt.
Uiteindelijk heb ik me dan toch bezig kunnen houden met mijn leerwensen (leveldesign, nieuwe programmeertaal leren) en heb ik de sprites gemaakt, meegeholpen met het leveldesign en de game afgemaakt op gebied van code. Ik had me liever meer bezig willen houden met deze wensen, maar ik moest ruimte maken voor mijn teamgenoten zodat zij ook voldoende leerde van het project.

Sprint 3

17-06-2019

Vandaag was ik jammer genoeg ziek. Ik heb aan mijn team aangegeven dat ik vanuit huis kan werken zodra het nodig is. Er werd voor een afbeelding van level 3 gevraagd. Deze stuurde ik meteen op en ik ging vervolgens weer verder met uitzieken.

19-06-2019

Vandaag wilden we de game zo ver mogelijk af hebben, eigenlijk helemaal. We wilden zo ver komen dat we maandag alleen de controls nog moesten regelen. Vanaf de ochtend waren wij al goed aan het werk. Ik ging verder met het level design. Vandaag was mijn doel om ervoor te zorgen dat er verschillende vijanden in de levels komen ipv slechts 1. Vervolgens heb ik er ook voor gezorgd dat de levels er goed uit zien. Er ontbraken bijvoorbeeld nog hoeken van de muren. Deze waren niet van toepassing op de gameplay maar door deze er in te verwerken zag het level er toch wel beter uit. Tussen het werken door heb ik de game bij verschillende klasgenoten getest. Ik heb ze meteen gevraagd om feedback. Deze feedback heb ik verwerkt in de game.

24-06-2019

“Alles kapot”. Dat zou een goede samenvatting kunnen zijn van deze dag. Afgelopen weekend ben ik namelijk bezig geweest met het interessanter maken van de game door extra vijanden en een paar kleine details toe te voegen. Dit bestand heb ik vervolgens gepusht op GitHub. Vanochtend toen ik op school kwam hoorde ik van mijn teamgenoot dat hij de controls al gefixt had. De besturing deed het inderdaad, maar tot mijn verbazing was de game niet zoals ik hem had achtergelaten.
Het bleek dat hij de controls gefixt had op de oude code waar ik nog niet aan de details had gewerkt. Doordat ik eigenwijs ben wilde ik perse het werk waar ik het weekend aan gewerkt had in de game hebben. Dit heeft me vervolgens de rest van de dag gekost om dit voor elkaar te krijgen. Uiteindelijk deed, om een onbekende reden, de code het helemaal niet meer. Ik werd hier vrij geïrriteerd van en nam even afstand van het project.

26-06-2019

Vandaag kwam ik terug op de code die maandag kapot was gegaan. Het was de opleverdag dus het moest echt vandaag geregeld worden. Tot mijn verbazing was dit niet zo lastig als ik dacht. Ik vond een backup op GitHub van het werk dat ik in dat weekend gedaan had. Vervolgens verplaatste ik de code van de controls van de oude code naar de nieuwe en het bleek geregeld te zijn. We waren klaar voor de oplevering.
Uiteindelijk kregen we positieve reacties van de mensen die onze game speelden. Uiteindelijk was alles niet voor niks geweest.

Retrospective

Het bloggen is in deze sprint naar mijn idee beter gegaan. Ik heb elke projectdag geblogd en uitgebreid uitgelegd wat ik precies gedaan heb. Hiervoor vertelde ik slechts de hoogtepunten. Daarnaast heb ik een professionele werkhouding aangehouden door goed contact te houden met mijn teamgenoten en feedback te geven waar nodig. Als ik deze ontvang sla ik deze natuurlijk niet af. Daarentegen kijk ik of ik er wat mee kan.

Mijn creativiteit heb ik laten zien door de levels die al gemaakt zijn door een teamgenoot, gezamenlijk te veranderen als dat beter uitkomt. Daarnaast hebben we ook wat aanpassingen gedaan aan de “rode draad van het spel”. Hierdoor laat ik zien dat ik open sta voor nieuwe ideeën en mij niet vast houd aan de oude.

Door de baas te zijn van mijn eigen project heb ik ervoor gezorgd dat ik op de details let. Iets afraffelen zorgt niet voor een goed resultaat. Daarnaast heb ik er natuurlijk ook op gelet dat ik niet te veel bezig ben met de details, maar dat het geheel uiteindelijk ook op tijd af is.
Daar komt het plannen van te pas. Ik heb samen met mijn teamgenoten geplant wanneer iets af moet zijn zodat we dat achter ons kunnen laten en het project kunnen vervolgen.

Sprint 2

27-05-2019

Vandaag was de eerste dag van de nieuwe sprint. We gingen weer verder waar we gebleven waren. Ik had inmiddels bijna alle benodigde sprites voor het eerste level af. Deze heb ik derest van de dag afgemaakt. Vervolgens heb ik een demo gemaakt in photoshop. Hierbij is het volledige level te zien.

De onderdelen van het level heb ik als aparte afbeeldingen opgeslagen. Deze heb ik vervolgens in de game geplaatst waar ze horen. Het aapje heb ik ook veranderd. Het eerste level kan nu gespeeld worden maar nog niet worden gehaald. Het programmeergedeelte heb ik overgelaten aan een teamgenoot. Ik ben slechts verantwoordelijk dat de sprites er zijn. Daarentegen ben ik altijd bereid om diegene te helpen wanneer nodig.

3-06-2019

Naar aanleiding van de workshop die 29-06-2019 gegeven werd over makkelijk levels maken, heb ik geprobeerd om dat te doen met onze eigen game in gedachten. De afmetingen van het scherm en de pixels waren erg in gewikkeld om goed voor elkaar te krijgen waardoor we moesten accepteren dat er 4 zwarte pixels zouden overblijven aan de zijkanten van het spel. Het voordeel van deze methode is dat het level makkelijker te maken is als je het programma eenmaal begrijpt.
Dit programma genaamd ‘Tiled’ is vrij nieuw voor mij en het zou best wat tijd kosten. Hierdoor heb ik er voor gekozen om verder te gaan met Visual Studio Code in plaats van Tiled.

Na het regelen van de sprites van level 1, heb ik ervoor gezorgd dat de grote banaan, die nodig is om het level te halen, je daadwerkelijk naar het volgende level brengt. Daarnaast was ik bezig met ervoor te zorgen dat de sleutel de deuren open maakt.

Retrospective

Voor deze sprint hadden we al kennis met elkaar gemaakt. We wisten hoe de ander was en de kwaliteiten van diegene. Indmiddels waren we al vrienden geworden. Hierdoor zijn we open naar elkaar en staan we altijd open voor feedback van een ander. Deze wordt in de groep besproken en vervolgens verwerkt.

Door een overzichtelijke takenverdeling op Trello hebben we ervoor kunnen zorgen dat iedereen zich met zijn building block bezig kan houden en tegelijkertijd met het project. We willen met dit project graag uitdaging maar darintegen ook genoeg tijd over hebben om de building blocks op een rijtje te krijgen.

Sprint 1

6-5-2019

wij kregen deze eerste projectdag na de vakantie de opdracht om een arcade game te maken die te spelen is op je computer en de arcadekast. Dit moeten we doen met drie personen en aan de hand van drie richtlijnen moeten een creatief en leuk spel maken.
Deze richtlijnen werden bepaald door de “Gaminator”, een programma die je drie willekeurige richtlijnen geeft waar je het mee moet doen.

Na zelf een groepje samen te stellen, kregen wij de volgende richtlijnen:

  • Lead
  • Expression
  • Monkeys

Wij moeten een spel maken waarbij de speler zijn eigen verhaal kan bepalen, deels gefocust is op beeldende vorming en daarnaast aapjes in voorkomen.

Toen iedereen zijn onderwerpen had, moesten we samenvoegen met een ander team en proberen hun game te schetsen. Zij deden hetzelfde bij ons en zo konden wij inspiratie op doen van een ander team. Het kwam er op neer dat beide teams een 2D-platform game wilden maken.

Dit is een concept geschetst van ons eigen team

Later hebben wij een globale planning gemaakt waarbij ik verantwoordelijk ben voor de “looks” van de game. Dit houdt in dat ik de sprites maak en de UI (User interfase).

20-5-2019

Voor vandaag heb ik een Brainstormsessie voorbereid die er voor zorgt dat we weten wat voor game we willen maken. Ik heb deze methode gevonden op de volgende website:
https://woordenbeeldclub.com/lessen-een-spel-ontwerpen/

Ik heb besloten deze brainstomsessie te gebruiken zodat ik mijn Concepten buildingblock kan halen. Vooraf hadden we al een concept in gedachten. We gingen ervan uit dat we deze ook verder zouden uitwerken.

Hieronder is te zien welke stappen we doorliepen om deze brainstormsessie tot een goed eind te laten verlopen:

  • Hoe moet het spel eruit zien? (individueel). Doel, vorm, spelers (individueel)
  • Maak elk drie tekeningen van jouw idee (individueel)
  • Kies de 3 beste ideeën uit (samen)
  • Vul deze ideeën aan met extra mechanics (individueel)
  • Kies de drie beste mechanics uit (samen)
  • Kies een uiteindelijke game die goed past bij de drie uitgekozen mechanics (samen)
  • Kies een naam voor het spel

Na deze brainstormsessie kwamen we op de conclusie dat we een Dungeon Crawler willen maken met puzzels die je moet oplossen voor je verder komt. Het verbaasde ons dat we op dit idee uit kwamen aangezien we van te voren gedacht hadden dat we ons concept niet zouden veranderen. Door deze brainstormsessie is onze visie veranderd en gaan we nu een Dungeon Crawler maken ipv een platform game. Hieronder zijn foto’s te zien van de brainstormsessie.

Retrospective

Zoals in de eerdere blogs te zien is, heb ik verteld dat we een takenverdeling hebben gemaakt binnen de groep. Deze bestond uit een team dat zich bezig hield met de webapplicatie (incl. api) en een team dat zich bezig hield met de hardware en software van de arduino. Ik hoorde bij het tweede. We hadden deze indeling gemaakt omdat ik al redelijk wat ervaring heb met websites maken. Hierdoor wilde ik nieuwe dingen leren door mij bezig te houden met de arduino en de bijbehorende harware en software.

Ik heb in deze sprint mijn creativiteit geuit door verschillende problemen effectief en snel op te lossen. Voorbeelden hiervan zijn, het bevestigen van de knopjes en lampjes aan de maquette. Wij hadden hier in eerste instantie niet over nagedacht. Door middel van onder andere mijn creativiteit zijn we er op gekomen om gaten de boren en de knopjes en lampjes te bevestigen met een lijmpistool. De knopjes waren nu op dezelfde hoogte als het de bovenkant van de maquette. Hierdoor staken ze niet uit en waren ze vrij lastig om in te drukken, daarnaast leken de knoppen ook niet op pianotoetsen. Deze twee problemen heb ik opgelost met het idee dat we voor elke knop een tegeltje maken van hout met een uitsteksel aan de onderkant zodat de knop wordt ingedrukt zodra er op de toets gedrukt wordt.

Ik ben van mening dat ik mijn team goed heb geholpen op gebied van creativiteit en effectiviteit.

Het bloggen ging deze sprint naar mijn idee een stuk beter dan de vorige sprint. Ik heb beter bijgehouden wat ik heb gedaan en dit in de blog ondersteund met de bijbehorende foto’s. Daarnaast hebben we onze voortgang bijgehouden via Trello. Zo konden we overzichtelijk zien wie met wat bezig was en wat al af is.

Zoals in eerdere posts beschreven, hebben we nog steeds veel contact gehad via Discord. We hebben besloten om deze sprint, ivm met overzichtelijkheid, een apart kanaal aan te maken voor documenten. Hieronder verstaan we bijvoorbeeld word documenten of powerpoints. Hierdoor is het uitwisselen van informatie een stuk gemakkelijker.

Hieronder is het eindresultaat te zien van deze CLE:

Sprint 3

25-03-2019

Aangezien de maquette zo goed als af is, heb ik de taak overgedragen aan een teamgenoot en heb ik mij bezig gehouden met de code van de arduino. Ik gebruik hierbij de Arduino Genuino Uno. De bedoeling is dat er verschillende tonen klinken bij verschillende toetsen met de bijbehorende led die aan gaat als je er op drukt. Hierdoor krijg je het effect van een piano met ledlampjes. Als hulp heb ik opgezocht hoe je verschillende tonen laat klinken via een speaker. Ik heb hierbij de volgende tutorial gebruikt en aangepast naar onze wensen.
https://create.arduino.cc/projecthub/rahulkhanna/arduino-tutorial-mini-piano-08f8b8

Hieronder is het resultaat te zien van de aangepaste code

#define T_C 262
#define T_D 294
#define T_E 330
#define T_F 349
#define T_G 392
#define T_A 440
#define T_B 493

const int C = 10;
const int D = 9;
const int E = 8;
const int F = 7;
const int G = 6;
const int A = 5;
const int B = 4;

const int Buzz = 11;
const int Red = 13;
const int Blue = 3;
const int Green = 2;

void setup()
{
  pinMode(Red, OUTPUT);
  pinMode(Blue, OUTPUT);
  pinMode(Green, OUTPUT);
  pinMode(C, INPUT);
  digitalWrite(C,HIGH);
  
  pinMode(D, INPUT);
  digitalWrite(D,HIGH);
  
  pinMode(E, INPUT);
  digitalWrite(E,HIGH);
  
  pinMode(F, INPUT);
  digitalWrite(F,HIGH);
  
  pinMode(G, INPUT);
  digitalWrite(G,HIGH);
  
  pinMode(A, INPUT);
  digitalWrite(A,HIGH);
  
  pinMode(B, INPUT);
  digitalWrite(B,HIGH);


//  digitalWrite(LED,LOW);
}

void loop()
{
  while(digitalRead(C) == LOW)
  {
    tone(Buzz,T_C);
    digitalWrite(Red,HIGH);
    delay(500);
    digitalWrite(Red,LOW);
  }

  {
    tone(Buzz,T_D);
    digitalWrite(Yellow,HIGH);
    delay(500);
    digitalWrite(Yellow,LOW);
  }

  while(digitalRead(E) == LOW)
  {
    tone(Buzz,T_E);
    digitalWrite(Green,HIGH);
    delay(500);
    digitalWrite(Green, LOW);
  }

  while(digitalRead(F) == LOW)
  {
    tone(Buzz,T_F);
    digitalWrite(Blue,HIGH);
    delay(500);
    digitalWrite(Blue, LOW);
  }



  while(digitalRead(G) == LOW)
  {
    tone(Buzz,T_G);
    digitalWrite(Red,HIGH);
    delay(500);
    digitalWrite(Red,LOW);
  }

  while(digitalRead(A) == LOW)
  {
    tone(Buzz,T_A);
    digitalWrite(Yellow,HIGH);
    delay(500);
    digitalWrite(Yellow,LOW);
  }

  while(digitalRead(B) == LOW)
  {
    tone(Buzz,T_B);
    digitalWrite(Green,HIGH);
    delay(500);
    digitalWrite(Green, LOW);
  }

    while(digitalRead(C) == LOW)
  {
    tone(Buzz,T_C);
    digitalWrite(BlueHIGH);
    delay(500);
    digitalWrite(Blue,LOW);
  }

 noTone(Buzz);
}

27-03-2019

Na het maken van de code heb ik vandaag alles aangesloten om te kijken of het werkt. Vervolgens ben ik alvast begonnen met het solderen van de hardware. Aangezien ik hier niet veel ervaring mee heb ben ik hier zo goed als de hele dag mee bezig geweest. Ik heb geprobeerd om zo ver mogelijk te komen en moest aan het eind van de dag nog vijf lampjes solderen.

01-04-2019

Deze dag wilde ik het solderen afmaken en verder gaan met het monteren van deze onderdelen op de maquette. Toen ik bijna klaar was met solderen, kreeg ik van mijn coach te horen dat ik het niet op de juiste manier deed. Hij gaf me een korte uitleg en deed het even voor. Ik zag wat ik fout deed en om het netjes te doen wilde ik wat ik gesoldeerd had opnieuw doen. Dit deed ik, maar er was jammer genoeg wel wat tijd voor nodig. Vervolgens ging ik nadenken met een ander teamgenoot over hoe wij de lampjes en knopjes zouden gaan solderen op de maquette.

03-04-2019

Nu het solderen eindelijk gelukt is hebben we besloten om alles nu op de maquette te monteren. Wij hebben ervoor gekozen om de knoppen en de lampen vast te maken met de lijmpistool. Het ging een beetje klunzig maar is uiteindelijk wel gelukt. De knopjes zitten vast genoeg zodat ze er niet af vallen wanneer ze ingedrukt worden.


Retrospective

Allereerst hebben we aan het begin van deze sprint weer een nieuwe takenverdeling gemaakt die aansluit bij de buildingblocks die per persoon nog te behalen zijn. Ik heb hierbij de taak gekregen om ervoor te zorgen dat de maquette gemaakt word en er goed uit komt te zien. Deze taak had ik samen met een andere teamgenoot. De andere twee teamgenoten waren verantwoordelijk voor de software die we gebruiken. En de bijbehorende code.
We hebben bij de taakverdeling ook rekening gehouden met de kennis van ieder individu. Hierom hebben we gekozen om iemand met minder kennis te combineren met iemand die meer kennis over het onderwerp heeft.

Het overzicht van het project heb ik behouden door regelmatig contact te hebben met mijn teamgenoten. Hierbij vraag ik dan over de vooruitgang en of er eventuele problemen plaatsvinden. Door dit te doen zie je mogelijk opkomende problemen op tijd onder ogen en kan ik er sneller wat aan doen. Als zo een probleem voorkomt leggen we die aan de groep voor en komen we samen met een oplossing.

Sprint 2

11-03-2019

Vandaag was de eerste dag dat we echt gingen beginnen aan de nieuwe sprint en daarbij ook aan onze maquette. We hadden aller eerst ons team opgesplitst, zodat er makkelijk taken verdeeld konden worden. Ik focuste me samen met een teamgenoot op het fysieke deel van de maquette. Dit houdt in dat wij ervoor moeten zorgen dat de maquette goed ontworpen wordt waardoor hij vervolgens moeiteloos in elkaar gezet kan worden.
Het andere team focuste zich meer op het concept dat wij als team bedacht hebben. Zij houden zich bezig met de software die nodig is om ons concept werkend te krijgen en de daarbij benodigde hardware.
Wij hebben de groepen zo ingedeeld waardoor we elkaar optimaal kunnen helpen.

Na de takenverdeling zijn we meteen begonnen. Ik startte Fusion 360 op (Een 3D-modeling programma). Dit programma gebruik ik, zodat ik gemakkelijk kan zien of het ontwerp klopt en hoe het er uiteindelijk uit komt te zien. Daarnaast zijn de onderdelen die ik erin maak gemakkelijk te exporteren naar Illustrator, waardoor ik het meteen kan laten lasersnijden. Wij hebben hierom ook gekozen om onze maquette van hout te maken. Dit is vrij stevig en gemakkelijk vorm te geven met behulp van de lasersnijder.
Hieronder is het ontwerp te zien die ik deze dag heb gemaakt.

De balk links aan de achterkant staat voor de buurthuis die ook aanwezig is. Omdat dit verder niet van toepassing is op ons concept hebben we besloten die niet uit te laten snijden. Hierdoor besparen we geld en hout.

Zoals je misschien ziet, staat de maquette op een verhoging. Wij hebben hier bewust voor gekozen zodat de arduino gemakkelijk aangesloten kan worden en kabels weggewerkt kunnen worden. Dit zorgt ervoor dat de maquette er netter en professioneler eruit ziet. Ons plan is om vervolgens nep gras en bomen op de maquette te plaatsen zodat er een duidelijk verschil is tussen de paden en het gras.

20-03-2019

Afgelopen vrijdag hebben we na de lessen afgesproken zodat we de maquette in elkaar kunnen zetten. We hebben de volledige maquette uitgesneden met de lasersnijder en vervolgens in elkaar gezet. Andere twee teamgenoten hebben vervolgens nep gras en kleine boompjes gehaald bij een dichtstbijzijnde maquette winkel. Deze waren vrij prijzig maar wel van goede kwaliteit. Na het in elkaar zetten van de maquette hebben we het opgeborgen in het lokaal.

Vandaag hebben we de laatste puntjes op de i gezet. We zijn naar de Action gegaan om daar verf te halen en kleine shotglazen die dienen als bloempotten. De bloempotten bleken achteraf te groot te zijn, dus hebben we ervoor gekozen om na de oplever dag, de bloempotten te vervangen voor zelfgemaakte potten van papier.
Hieronder is de uitkomst te zien van onze maquette: