vrijdag 20 december 2013

Merry Duckmass & a Frozen New Year

Heey Frozen Duckies, en welkom bij alweer de derde blogpost. Ook zo vlak voor de feestdagen krijgen jullie nog een update van onze game. Er is in de afgelopen weken natuurlijk veel bijgekomen en veranderd qua features in onze game R.U.L.E.

Maar wat is er dan zoal veranderd? Een aanpassing die op het eerste gezicht opvalt, is het perspectief. De vorige versie van de game bevatten nog een top-down perspectief, maar op dit moment hebben we een veel meer awesome perspectief. Je ziet de wereld namelijk een soort schuin. De game is nog steeds 2D, maar het is geen rechte projectie van bovenaf. Nu kunnen de spelers, de enemies en de projectiles ook voor en achter muren langs vliegen en lopen. De collision detection is hierdoor niet heel veel moeilijker geworden, wat deze werkt achter de schermen nog steeds met het top-down perspectief. Over collision detection gesproken, ook de enemies lopen nu niet meer door de muren heen. De rode enemies vinden hun weg nu d.m.v. onze nieuw toegevoegde pathfinding en steering.


Zie hieronder een awesome filmpje ter demonstratie van onder andere het perspectief.


Zoals te zien in de video zijn er ook coole explosies toegevoegd. Deze explosies zien er zo cool uit door de particles, die ook nieuw zijn! Ook hebben we alt fire toegevoegd. Tijdens het afvuren van deze en andere projectielen zul je merken dat we nu ook epic geluidjes hebben, voor zowel de explosies als de kogels. Bij het afvuren van kogels kan nu ook beter gericht worden, dit wordt medemogelijk gemaakt door een pointing laser. Een andere nieuwe feature is de screenshake. Als de alt fire een muur of een enemy raakt, explodeert deze waardoor er een screenshake plaatsvindt. Ook de doodgaan animatie van de speler is toegevoegd, en de doodgaan animatie van de enemies is aangepast. Deze animaties zijn nu super smooth! Ten tweede is er een spawn animatie van enemies gemaakt. Hierdoor faden enemies in aan het begin en tijdens een wave. Over waves gesproken, elke wave bestaat nu uit drie groepen van enemies. En na elke 3 waves begint een nieuw level.

Een andere nieuwe feature die gelijk opvalt bij het starten van de game, zijn de menu’s. Zo hebben we een startmenu, een optie menu en een pauze menu toegevoegd. Deze menu’s hebben opties zoals spelen in fullscreen of in windowed mode. Ook kun je de particle dichtheid aanpassen, en d.m.v. sliders kun je het gewenste muziek en geluid volume kiezen. Verder is er een optie op rumble aan of uit te zetten. Aan het einde van game, wanneer het game over is, verschijnt het highscore menu. In dit menu kan de speler zijn naam invoeren, als hij een plek in de lijst heeft bemachtigd. Deze highscores kunnen ook vanuit het startmenu bereikt worden. Verder zijn er meerdere highscorelijsten toegevoegd, zoals singleplayer en multiplayer. De highscore lijst bevat meerdere lijsten omdat we ook verschillende modi hebben toegevoegd, echter zijn deze nog niet geïmplementeerd. Deze modi zijn singleplayer modern, singleplayer carnage, singleplayer classic en multiplayer modern. Van deze modi hebben we tot nu toe alleen singleplayer modern en multiplayer modern geïmplementeerd.

Midterm presentatie:
Afgelopen woensdag was de midterm presentatie. Tijdens dit event was het de bedoeling om aan andere teams en de begeleiders te laten zien wat je zoal hebt uitgespookt de afgelopen weken. Dus ook Frozen Duck Games gaf hier een presentatie. Eerst vertelde onze eigen Herman en Victor iets over de progressie en de toekomstige plannen van het project. Dit werd vervolgd door een demo van de game. Na afloop van de 5 minuten durende presentatie, konden er vragen worden gesteld door het publiek. We werden o.a. gecomplimenteerd door Jeroen Fokker voor onze collision detection.

Teambuilding:
Gisteravond vond er een epic battle plaats tussen de props en de hunters. Ondanks alle rondvliegende kogels en gewelddadige crowbars, ging de overwinning toch over het algemeen naar de props. Nu hebben we het hier natuurlijk over de game prophunt! Gisteravond deed Frozen Duck Games aan teambuilding door gezellig samen te gamen. Na prophunt werd de strijdbijl nog niet begraven, en werd er wraak gezocht in de gamemode Murder. Blijkbaar schuilen er extreem sneaky murderers onder de Frozen Duck Games teamleden.
PS. Voor iedereen die nieuwsgierig naar de verloop van zaken tijdens onze vergaderingen. Hier volgt een foto met Victor’s extreem rechte handschrift. Plus een vurige discussie tussen Herman en Toby, die klaarblijkelijk is gewonnen door Toby met 99-1. 

Victor's fantastische aantekeningen
Dit is alweer het einde van deze blogpost. Frozen Duck Games wenst iedereen alvast een fijne kerst en een Gelukkig Nieuwjaar. See you next year!

-Frozen Duck Games

vrijdag 6 december 2013

Duckventures


Hallo fans, hier een update voor de nieuwsgierigen. Allereerst wil ik graag zeggen dat we een awesome wallpaper voor jullie hebben, gemaakt door onze eigen Victor. Vind hem hier.
Zeg, gaat het nou over robots of over explosies?
"Maar wat is R.U.L.E. dan??!", vragen jullie je natuurlijk af. We hebben de game een naam gegeven. Het heet nu officieel Robot Ultimate Laser Explosion (of: R.U.L.E). Waarom deze naam? Omdat je nooit genoeg lasers, explosies en laserexplosies kan hebben. Pew pew pew!

Een naam bedenken stelt in het grotere geheel natuurlijk niet zoveel voor. Gelukkig hebben we ook nog andere voortgang gemaakt. De eerste code is geïmplementeerd, taken zijn verdeeld, mysterieuze krachten roeren zich.



Hierboven zie je een van de eerste development-versies van RULE. Er zitten al gedeeltelijke random level en wave generation, player input, een domme AI en collision in. De rode enemies volgen speler 1 en de blauwe enemies schieten op een willekeurige speler. De spelers zelf zijn niet erg duidelijk te zien doordat ze zwart zijn op een zwarte achtergrond.

En dan nu wat behind-the-scenes. Om te kunnen beginnen aan de gamecode hebben we eerst de klassenstructuur besproken als team. Het design document beschreef hier en daar wel wat er geprogrammeert moest worden, maar dit was niet concreet genoeg om te beginnen.
Programmadesign 101 door Herman McAbstractiepants
Klassenindeling
De makkelijkste indeling leek ons een monolithische gamemaster, met daarin klassen voor allerlei kleinere taken. Zo is er een levelgenerator, wavegenerator, collisionmanager, playerlist, enz. Deze subklassen weten dat ze bij de gamemaster informatie op kunnen halen. Op die manier weet de collisionmanager welke objecten tegen elkaar moeten botsen en de enemies waar ze naartoe moeten lopen en schieten.

De heeft gamemaster ook een ruleset, waarmee verschillende gamemodes gedefinieerd worden. Zo staat in de singleplayer ruleset dat er maar één speler mag zijn en de speler een gelimiteerd aantal levens heeft. In de co-op ruleset staat dat er twee spelers zijn en dat een speler opnieuw kan spawnen als een wave begint.

Met deze kennis in onze eendenkoppen konnen we eindelijk eens gaan programmeren. Vol enthousiasme zijn we met level generation, wave generation, collision detection en adaptive difficulty begonnen.

Level generation
Onze laserexplosion containment areas worden gemaakt door een algoritme dat hier en daar een blob van muren plaatst. Bij het plaatsen van deze blobs wordt er rekening gehouden met waar er al muren staan, zodat er altijd zo'n 5 blokjes tussen alle bouwwerken. Ook zorgt het algoritme ervoor dat alle randen opgevult zijn met muren zodat je niet weg kan rennen, zoals te verwachten valt van human scum. Als laatste wordt het level gecontrolleerd op onbereikbare enkele lege blokjes, die vervolgens opgevuld worden.

Wave generation
Het aantal robots in een wave wordt berekend aan de hand van een aantal wavepoints. Hoe meer wavepoints er zijn, des te meer robots er in een wave passen. Robots worden niet los in waves geplaatst, maar als wave groups. Een groep kan 1 robot zijn, maar ook 5 tegelijk. Een wave group kan zijn carnage loslaten zodra er genoeg plaats is in het level, er is namelijk een limiet aan het aantal robots (wie bedenkt dit, meer robots is beter). De awesomeness van robots in een wave wordt bepaalt door de difficulty en het level van het spel. Hoe hoger, des te sterker de waves!

Collision detection
Met bloed, zweet en tranen is er een collision manager binnen twee dagen de grond uit gestampt. Het hoogtepunt van de collision detection is een SAT systeem. De capaciteit van dit systeem is van zo'n 20 detections tegelijk naar 100+ gegaan. No problemo jongens. Natuurlijk draait R.U.L.E. ook zijn hand voor simpeler zaken als pixel-perfect en rectangle collision detection niet om.

Adaptive difficulty
De adaptive difficulty heeft in een dag of twee een aantal mutaties ondergaan. Hierbij is het aantal benodigde klassen verminderd van 12 naar 5. De implentatie hiervan is op dit moment nog in een zeer vroege stage. Laten we zeggen dat het mogelijk is om statistiek te verzamelen en dat je eventueel deze data kan analyseren om de difficulty dynamisch aan kan passen. Misschien.

AI
Artificieel is het zeker. Intelligent? Niet zozeer. De robots hebben nog een beetje moeite met hun doel ("CRUSH LIFE", voor het geval je dat nog niet begrepen hebt) te bereiken. Ze schieten hier en daar wat en volgen de speler. Om muren heen lopen kunnen ze in ieder geval nog niet.

Code layout
Ook hebben we een aantal afspraken over de layout van de code gemaakt. Het is niet altijd even duidelijk wat iedereen in dit opzicht voor eisen stelt waardoor de indeling, al dan niet naar persoonlijke smaak, soms te wensen laat. Voorlopig is dit de volgorde die we aanhouden:

public class Robot 
{
 /* Public properties */
 public string Taunt { get; }

 // Constructor
 public Robot() 
 {
  taunt = "Y0U AR3 OBSoLETE.";
  version = "1.0.K.I.L.L.E.R.";
 }

 /* Public methods */
 public void UpgradeFirmware() 
 {
  version = "2.0-HUMAN_MANGLER";
 }

 /* Private methods */
 private void DESTROYHuMANS(Human scum) 
 {
  scum.ELiMINATE();
 }

 /* Private variables */
 private string version;
}

We zijn als team erg tevreden over wat we allemaal binnen een week hebben bereikt. Wees gerust, er is meer onderweg. Wat precies houden we zolang nog geheim.

PS: Sinterklaas vieren is voor Frozen Duck Games natuurlijk een must. We hebben succesvol loot weten te verzamelen in het dobbelspel. De luitjes van Bulletproof Games waren er ook en zijn vol trots met de drankspellen vertrokken (ja, er zaten drankspellen tussen als kado's).

Blijdschap

vrijdag 22 november 2013

Frozen Duck Games: Een introductie

Hey, en welkom op de blog van Frozen Duck Games!

Wij zijn zeven studenten die Game Technologie studeren aan de Universiteit Utrecht, en als onderdeel van onze studie gaan wij de komende weken een game ontwikkelen. Omdat we uiteraard een fancy naam nodig hadden noemen wij ons "Frozen Duck Games". Wij zullen met je met deze blog op de hoogte houden over het spel, het ontwikkelproces en nog veel meer.

Maar waarom Frozen Duck Games? Toen we bezig waren met het verzinnen van een naam kwamen we al gauw tot de conclusie dat het woord "frozen" erg cool klinkt. Er zit namelijk een z in, en de letter z maakt ieder woord cool. We moesten dus iets met het woord frozen. We begonnen met namen zoals "Frozen Code", maar toen er iemand Frozen Duck riep wisten we dat we onze naam hadden gevonden.

Zoals we net al schreven, we gaan de komende paar weken een PC-game maken. Op moment van schrijven hebben we een goed beeld van wat we precies gaan maken, en in deze blog gaan we dat hopelijk duidelijk maken!

Onze game is geïnspireerd door de arcade klassieker "Robotron 2084" uit het jaar 1982. Waarschijnlijk heb je daar nog nooit van gehoord, en dat is helemaal niet raar, want de meeste teamleden hadden er ook nog nooit van gehoord. We zullen dus kort uitleggen wat Robotron precies voor game is.

Robotron speelt zich af in het jaar 2084. Robots hebben de Aarde overgenomen en de speler moet de laatste mensen redden. Dit kun je doen door, natuurlijk, robots neer te schieten. Robotron was erg revolutionair omdat het speelde met twee joysticks. Hierdoor kon de speler in één richting lopen, en schieten in een andere richting. Het spel was daarom ook erg populair en een groot succes. Robotron is dus een echte klassieker in het shoot 'em up genre.



Zoals je in dit filmpje wel kan zien, is Robotron echt een retro game. Wij gaan een game maken die sterk geïnspireerd is door Robotron, maar we gaan moderne technieken gebruiken om een moderner spel af te leveren. De bedoeling is dat het spel dus nog leuker wordt! Er zijn verschillende dingen die wij anders gaan doen.

Graphics en geluid
Hoewel Robotron voor zijn tijd erg indrukwekkend was, snappen we allemaal dat de geluidjes en graphics niet echt meer van deze tijd zijn. Daarom gaat ons spel er natuurlijk veel moderner uit zien. We hebben een obsessie met particles, gaan voor kleurrijke vijanden en donkere achtergronden. Ook bloom staat op onze verlanglijst. Het is voor ons belangrijk dat het spel echt juicy wordt; het moet er leuk en indrukwekkend uitzien, zonder dat het de gameplay verstoort. We gaan natuurlijk ook het geluid onder handen nemen.

Gameplay
Het is natuurlijk leuk als een spel er beter uit ziet en beter klinkt, maar de gameplay is natuurlijk nog steeds erg belangrijk. De gameplay van ons spel zal dan ook best wel veel verschillen van de gameplay van Robotron. Zoals we al eerder schreven, het spel is geïnspireerd door Robotron, maar het is wel echt een ander spel.

Zo zul je in ons spel 360 graden kunnen schieten ipv. 8 richtingen, zijn de levels groter zijn en gevuld met allerlei obstakels en voorwerpen, zijn er verschillende soorten wapens en is er ook een multiplayer modus. Onze game zal speelbaar zijn met een muis en toetsenbord, maar ook met een Xbox 360 controller (of andere controllers die Xinput ondersteunen). Dus, als je een controller inplugt kun je al met zijn tweeën spelen!

De vijanden
De robots in Robotron zijn al best slim en zijn ook leuk om tegen te spelen. Wat ze echter nog niet doen is samenwerken en rekening houden met de voorwerpen/obstakels in het level. In onze game zullen ze dat, uiteraard, wel doen! Vijanden kunnen samenwerken, kunnen paden om obstakels heen vinden en kunnen zelfs het level tegen de speler gebruiken! Sta je naast een explosief? Het zou best kunnen dat een vijand dat ziet en het opblaast door er op te schieten! Ons doel voor AI is dan ook best duidelijk; ze moeten slimmer zijn, maar nog wel steeds leuk om tegen te spelen.

En daarmee zijn we bij het einde gekomen van deze blogpost. We hopen dat jullie nu een goed idee hebben van wat we precies gaan maken de komende paar weken. Uiteraard zal deze blog regelmatig worden geupdate, dus hou hem zeker in de gaten de komende paar weken! Als je meer wil weten over ons team, check dan onze team pagina.

Bedankt voor het lezen, en cya next time!

Frozen Duck Games