Posts tonen met het label gamedesign. Alle posts tonen
Posts tonen met het label gamedesign. Alle posts tonen

dinsdag 22 september 2015

LOI Gamedesign

Afgelopen vrijdag gaf ik GameDesign op HBO niveau voor de LOI.
Als onderdeel van deze cursus zou men gamemaker moeten leren.
Aangezien gameDesign voor alle leerlingen niet echt een hoofdvak was, maar meer een verplicht nummer, besloten we de game in Javascript te gaan maken,
Gamemaker is leuk als je wilt gameDesignen, zonder iets te willen programmeren. Maar als je een multimedia/frontend opleiding doet, dan is javascript toch wel een vereiste.

Javascript zat tot nog toe niet in de cursus, hetgeen een extra uitdaging vormde:
naast basic gamedevelopment, moest ik ze ook leren programmeren.
Gelukkig heb ik dat vaker bij de hand gehad, dus op naa JSFiddle.

http://jsfiddle.net/wn8rq0m0/
var a=4;
if(1==3)
{
 a=a+1;
}
console.log("------------");
console.log("de waarde van a ="+ a);

Mijn controle vraag aan de leerlingen om het niveau in te schatten is: "Wat gaat er gebeuren?" en
 "Wat wordt de waarde van a?"
Als je hier een antwoord op wil kunnen geven moet je twee basis-concepten van programmeren snappen. Variabelen en Expressies.

var a=4;
Een variabele (in dit geval a) wordt gedeclareerd.
Dit betekent, dat je javascript verteld, hoe de variabele heet en (eventueel) wat zijn initiele waarde is.
Je kunt het zien als het maken van een doosje (met een naam) waar je iets in kan stoppen, maar het hoeft niet direct.
In dit geval heet het doosje "a" en stoppen we er 4 in.

if(1==3)
Dit is een voorbeeld van een expressie. Je kunt dit zien aan de dubbele ==. We vragen de computer of wat tussen haakjes staat waar is, of niet waar.
Dus 1=3? geeft niet waar.
Het blok code daaronder.
{
 a=a+1;
}
wordt dus overgeslagen. (Bij een ware expressie bijvoorbeeld (1==1) was het WEL uitgevoerd).
Dit is de functie van if. Na if volgt een expressie en een blok code. Is de expressie waar, dan wordt het blok uitgevoerd, anders wordt het overgeslagen.
Op deze manier kan een programma reageren op veranderende omstandigheden. De expressie kan namelijk wat complexer zijn dan 1==3? Want dat is een domme vraag.

console.log("------------");
Dan wordt de javascript gevraagd, een boodschap af te drukken, deze vind je in je console. Dat is een speciale plek voor programmeurs. Afhankelijk van je browser vind je deze op andere plekken, vaak is f12 of ctrl-shift-i een goeie plek om te beginnen.

console.log("de waarde van a ="+ a);
Dit betekent, dat er een boodschap wordt afgedrukt. Het eerste deel van de boodschap is letterlijk en staat dus tussen aanhalingstekens. (In programmeren heet dit een string). Het tweede deel van de boodschap is de waarde van a. Deze worden samengevoegd door een plus-teken.

Het resultaat van het programma is dus:
----------------------
de waarde van a=4

Als je dit snapt, heb je al bijna alles wat nodig is om een spel te programmeren.
Even vooruitspringend naar wat je in 30 stappen gaat leren maken:


Ik zal het nog allemaal uitgebreid beschrijven als ik tijd heb, maar voor nu kun je het proces terughalen met:

maandag 21 oktober 2013

Welk spel wil ik?

Spellen worden gebruikt voor de meest uiteenlopende doeleinden. Gek genoeg verloopt een gepsrek met een klant voor een serious game vaak lang dezelfde lijnen als met een klant voor een branded game.
De grote vraag is vaak: Is het budget leidend, of de doelstelling?
Een goede gamedesigner kan bij een leidend budget snel schakelen en zeggen welke onderdelen in het spel kunnen worden verwerkt voor welke prijs. Daarbij is het echter moeilijk vaste prijzen te geven, die zijn altijd afhankelijk van graad van uitwerking en combinaties van onderdelen.
Daarbij is het handig de volgende checklist in je hoofd te hebben:

 Welk spel wil ik? 

  1. Doelen

    • Doelgroep (leeftijd, computervaardigheid)
    • Doelstelling (gedrags modificatie, serious, education, reclame)
    • Emotionele waarden (Hoe bereik je de doelstelling, vertaal je deze naar de gamethematiek
    • Beleving: Gewenste speelduur, verslaving etc.
  2. Thematiek

    • Welk thema (aansluitend bij doelgroep)
    • Hoe uit de branding / sponsoring zich in thema en grafisch/ stijl?
    •  Beperkingen in gameDesign door wensen van sponsor/klant (bijv geen geweld)
  3. Budget

    • Game budget in geld
    • Game budget in tijd (deadline!)
    • Landingssite/integratie in bestaande site
  4. Spel elementen

    • GamePlay / gameEngine 
    • Levels (arcade style?)
    • Worlds (platform games, racing games etc)
    • Feedback: vrij te spelen, achiements, missions
    • Extra's: bonussen, lives, specials
    • GameShop
  5. Spel content /screens

    • Loading
    • Splash
    • Menu
    • Gameresults
    • Prijzenpagina
    • Options
    • Credits
    • Help / integrated help?
    • Walkthrough
    • Highscores
    • Invite friends (social, tellafriend)
    • Design traject: Karakters / Kenmerkende Game elementen
  6. Delivery

    • Context(s) (standalone/sitewarmer, campaign, nomad-, social-)
    • Platforms (App/web.. Flashfallback?, backward compatible)
    • Medium keuze (Unity, Flash, HTML5, Accelerated app, Native App, console, rig)

vrijdag 18 oktober 2013

javascript en Physics.

Ik wilde een physics object toevoegen aan een game voor het sinterklaasjournaal.


Het ging erom, dat er een physics object reageert op wat er in de game gebeurt.
 De blokjes verschuiven door acties van de gebruiker en hierop moet door de physics library adequaat worden gereageerd. Als het physics object onder een bepaalde hoogte komt is het spel gewonnen.
Leek me een simpele taak voor een physics engine, ik twijfelde of ik het niet gewoon zelf zou schrijven op het springbox principe. Maar omdat een van de objecten erg dun was, wilde ik toch liever voor een 'echte' library gaan, die al eerder en algemener getest was dan mijn eigen code.

Goden zij dank is er JSFiddle. Met deze bron voor een snelle opzet en heel wat lezen over verschillende soorten bodies en armaturen in box2d. Kwam ik eruit. Het Physics object kan nu alle vormen hebben, ook heel erg dun!

Dit is de bron in jsFiddle
Hier is de box2d download link