maandag 26 november 2012

De (niet zo) initiële post

Goedemorgen,

Er is al weer een weekend voorbij gegaan sinds onze laatste update en dit weekend hebben we niet zo veel werk verricht als we zouden willen. Yorick heeft wat plaatjes aangepast voor de inventory en multi-tiled items gemaakt, Kevin heeft wat aanpassingen aan de GameManagement gedaan, Vince is volgens mij begonnen met kisten en ik heb eigenlijk vrij weinig gedaan. Ik ben dan begonnen met de DungeonGenerator, maar dit bleek toch lastiger dan gedacht, dus ik ga er vanochtend in de gamehall weer tegenaan.

Kevin en ik waren nog eens goed de opdracht aan het lezen en toen kwamen we erachter dat onze eerste post niet aan de opdracht voldeed. In de opdracht stond namelijk dat we in de initiële blogpost moesten vermeldden wat we gaan doen en hoe we dat doel willen bereiken. Ik heb uiteindelijk gezegd wat we al hadden gedaan. Nu is de tweede post meer initieel dan de eerste, maar als blijk van mijn verontschuldiging wil ik hieronder alsnog de initiële blogpost doen. Voor meer informatie over ons doel wil ik jullie graag doorverwijzen naar onze analyse van Zelda, waar met meer diepgang wordt overlegd wat we gaan doen.


Gegroet,

Het spel vordert al aardig snel en ik durf te stellen dat we na een kleine week al hebben besloten wat we gaan doen. Ik had eerst al het idee om Rogue te gaan doen met willekeurig gegenereerde dungeons, maar de rest was het er eigenlijk nog niet helemaal mee eens. Daarna kwamen Kevin, Vince en David met het idee "Kirby" gecombineerd met een fighter. Hier waren Yorick en ik het niet mee eens en dus hebben we wat anders besloten.

Diezelfde vrijdagmiddag gingen we in de gamehall zitten om verschillende ideeën uit te werken. Met de goede raad van iemand die daar zat hebben we allemaal 2 dingen genoemd die we graag willen doen, waar David over na is gaan denken. Dit heeft geleid tot een top-down dungeon crawler in de trant van Zelda, maar omdat willekeurig gegenereerde levels al de hele tijd door mijn hoofd spookten wilde ik er ook iets mee. Daarom heeft de rest van Alpha Bros. ook gezegd dat het wel goed is om willekeurige dungeons te hebben, waar ik zeer tevreden mee was.

"Hoe zijn we dan op de naam 'Alpha Bros.' gekomen?", kunt u zich nu afvragen. Dit is allicht wel een interessant verhaal, aangezien wij gewoon op internet zijn gegaan met een willekeurige teamnaam generator. Dit hebben we een paar keer gedaan totdat er een leuke naam uitkwam, maar vreemd genoeg kwam hier nooit 'Alpha Bros.' uit. Wel Alpha en dat is ook zo goed bevallen dat we dit gewoon wilden behouden. Vince kwam toen met de naam Alphablenders, omdat we het leuk vinden om de alphawaarde van kleuren te mengen, maar de rest vond dit niet zo goed. Uiteindelijk hebben we er Alpha Bros. van gemaakt, als een hommage aan Luigi en Mario, van de Super Mario Bros.

Welk pad gaan we bewandelen? Alleen de tijd zal het vertellen, maar ik kan u al wel meedelen dat we er nog niet helemaal over uit zijn of we nu een eindig of een oneindig aantal levels maken. Hierover zijn de meningen nog sterk verdeeld, zo sterk zelfs dat we het beide gaan doen. David en Vince werken het eindige levelsysteem uit, waar Kevin en ik het oneindige levelsysteem uitwerken. En wat doet Yorick? Die houd zich lekker afzijdig van de inwendige problematiek van de Alpha Bros.

Stay tuned for moar!

vrijdag 23 november 2012

De inwendige politiek van de Alpha Bros.

Door onze studio zijn in de eerste week verschillende (hoofdzakelijk later verworpen) engine's gebouwd, namelijk een 2.5D engine (Sander, verworpen), een 3D engine(Vince), een lighting engine(Yorick, verworpen), een GameManagement engine(Kevin) en een inventory engine (Yorick).

Hoewel dit stuk voor stuk interresante zaken zijn, en een kort stukje over de werking op zich niet zou misstaan, zou ik toch graag de strijd tussen de 2.5D engine en de 3D engine uitlichten in plaats van grote lappen technische details op te ratelen.
Het spelconcept is immers om een top-down dungeon crawler te maken, waarbij inspiratie is opgedaan bij de Zelda games. Tijdens het maken van beslissingen over de vormgeving van ons introproject was voor onze gamedevelopers het uiterlijk van de muren van groot belang. (Jullie lezen het goed, het was makkelijker om het over de spelbesturing, gameplayelementen en het speltype eens te worden dan over het uiterlijk van muren.) Het plan was immers eerst om een 2D top-down spel te maken.

De muren kunnen dan op twee manieren getekend worden, namelijk zoals bijvoorbeeld gedaan wordt in Zelda: Minish Cap:

De muren worden in dit geval altijd getekend alsof ze van schuinboven gezien worden, ongeacht van de positie ten opzichte van de camera.

De andere mogelijkheid was zoals het werd gedaan in bijvoorbeeld de pokemon spellen:

De muren zien eruit alsof ze allemaal vanuit de zelfde hoek getekend worden. Het nadeel hiervan is dat je nu een keuze moet maken tussen voorwerpen, vijanden en de speler soms achter de muur te moeten tekenen, waardoor je ze niet goed ziet, of niet rekening te houden met het overschaduwde deel grond achter een muur en de speler daar helemaal niet te laten lopen. Deze manier kost je ruimte in je levels.
Ook kun je zo alleen de muren van de noordkant zien, waardoor je eigenlijk alleen deuren en trappen kunt hebben op deze muren, een beperking die voor een dungeon crawler niet erg praktisch is.

De conclusie was uiteindelijk dat we top down zouden tekenen met een 3D uiterlijk. Voor een geschikt beeld hiervan zou ik graag naar de vorige blogpost willen verwijzen.
Kortom, zowel Sander als Vince gingen aan de slag met hun eigen soort Engine.
Sander bouwde in een paar dagen eventjes een 2.5D engine (doet ie effe in een handomdraai). Deze manier van tekenen kun je alleen in een top-down situatie gebruiken, omdat het niet echt 3D objecten zijn.
Vince pakte het nog drastischer aan en bouwde maar meteen een engine die echte 3D ondersteunde.
Nu zaten we dus met twee engines (de heren hadden immers niet overlegd wie wat ging doen, ze waren gewoon maar begonnen en schreven allebei in 2 dagen een engine waar menig beginnend programmeur jaloers op mag zijn).

Hier ziet men de 3D engine van Vince. Wie wil horen waarom er twee verschillende manieren gebruikt worden om tijdens het debuggen de framerate te berekenen moet daarvoor aankloppen bij Vince dan wel Sander. Ze willen het vast erg graag en uitvoerig uitleggen, en zullen daarbij vooral niet versmaden te benadrukken waarom hun eigen manier beter is dan die van de ander.

Uiteindelijk viel de keuze voor de 3D engine van Vince, onder andere omdat hierin de mogelijkheid van first-person niet direct werd uitgesloten, en ook omdat Vince heel hard en vaak heeft geroepen dat een lighting engine in een 3D omgeving veel makkelijker te maken was dan in een 2.5D omgeving (Mijn 2D lighting engine was onvoldoende bevonden en afgeschreven, maar het idee van lighting is nog niet van tafel geveegd). Misschien was de chaotische code van Sander ook een doorslaggevend element.

Sander moest wel heel hard huilen omdat zijn 2.5D engine niet werd aangenomen. Dat was heel zielig. Einde.

-Yorick

woensdag 21 november 2012

Een rollende start

Gegroet,

We zitten nu in de GameHall een beetje plezier te hebben en keihard te werken aan ons project. Het afgelopen weekend hebben Vince en ik (Sander) gewerkt aan twee verschillende engines, een échte 3D engine en een 2.5D engine. Uiteindelijk hebben we gekozen voor de 3D engine van Vince, waar we wel gewoon 2D sprites en waarschijnlijk nemen we de zogenaamde billboards voor de sprites. De wereld zal gewoon 2D zijn maar met fancy graphics om het mooier te maken.

David is ondertussen bezig met het uitdenken van de gamelogic en het ontwikkelen van de monsters en uitdenken van de statistics van monsters en de wapens van de speler. Yorick is aan 't spriten, wat veel tijd zal gaan kosten. Ik ben ondertussen aan het kijken hoe ik lighting toe kan gaan voegen aan de 3D Engine. Kevin is ondertussen bezig met het uitwerken van de Gamemanagement en het combosysteem. Het combosysteem is af, en nu moeten alleen nog de abstracte klasse voor objecten gemaakt, getekend en geüpdate moet worden.

Toen we nog bezig waren met het ontwikkelen van de 2.5D engine was Yorick al aan het spelen met lighting. Dit bleek nagenoeg ondoenlijk vanwege de representatie van de wereld. Een face 'wist' niet of hij belicht was en hoe hij belicht zou moeten worden. Schaduwen zouden wel kunnen, maar dan slechts in het 2d vlak en niet op andere objecten. Met de 3D engine kan dit makkelijker gedaan worden.

Hoe het eruit ziet in True3D, met lighting en fog. Lighting is echter default, maar we gaan gave lighting toevoegen. Dit is ook nog zonder DepthStencilBuffer en een sorting algoritme, waardoor de FPS bij +- 1000 blocks inkakt. Tevens zijn dit 505 blokken, waarvan veel blokken over elkaar heen getekend worden. Dit is natuurlijk niet in 't echte spel zo :)
Momenteel ziet het er allemaal best aardig uit en het zal er nog beter uit komen te zien wanneer de objecten goed getekend worden. Dit gaan we proberen middels de DepthStencilBuffer. Wanneer dit goed geïmplementeerd is wordt het ook makkelijker voor ons om lighting toe te voegen. Dit is natuurlijk erg leuk en voegt veel toe aan de atmosfeer van het spel. Het wordt natuurlijk een donkere dungeon waarin je een prinses moet redden... lekker cliché. 

 -Sander Verkuil