Games Maken Wouter Baars
www.gamesmaken.startpagina.nl www.wouterbaars.net
Game productie wat hoort daarbij? • Graphics: – – – – –
• Software:
3D modelling Textures 2d Artwork Animaties Fonts/interfaces, enz.
– 3Dmax – Maya – Photoshop
• Of open source:
www.gamesmaken.startpagina.nl www.wouterbaars.net
– Blender – Gimp
Gameproductie vervolg Programmeren:
Property schipangle,radius,richting,snelheid --later energy en dergelijke toevoegen on getpropertyDescriptionList me list = []
- C (++) - Scripting talen - Speciale platforms (bv webgames)
www.gamesmaken.startpagina.nl www.wouterbaars.net
addProp list, #richting,[#comment "richting in hoek",#format #float,#default0.05] addProp list, #snelheid,[#comment "snelheid",#format #integer,#default5] return list end on exitframe me -- verplaatsing schotel radius = sqrt(power(abs(sprite(me.spritenum).lochsprite(2).loch),2) + power(abs(sprite(me.spritenum).locvsprite(2).locv),2))
Gameproductie vervolg Concept design: • • • •
Verhaallijn Storyboard Level design Spelregels
www.gamesmaken.startpagina.nl www.wouterbaars.net
Gameproductie vervolg Audio:
Software:
• Midi • Audio
• Logic • Cubase • Protools
www.gamesmaken.startpagina.nl www.wouterbaars.net
Resumé • • • •
Graphics Programmeren Concept Audio
Maar ook: • Projectleiding • AI • Physics engine’s www.gamesmaken.startpagina.nl www.wouterbaars.net
Management van verwachtingen
www.gamesmaken.startpagina.nl www.wouterbaars.net
3d: Hoeveel vrije tijd heb je?
www.gamesmaken.startpagina.nl www.wouterbaars.net
Hoe belangrijk is 3d voor een game?
www.gamesmaken.startpagina.nl www.wouterbaars.net
Leuk spel
www.gamesmaken.startpagina.nl www.wouterbaars.net
Ook een leuk spel...
www.gamesmaken.startpagina.nl www.wouterbaars.net
Hoeveel vrije tijd heb je? vervolg Programmeren in C of in een scripttaal?
www.gamesmaken.startpagina.nl www.wouterbaars.net
Scripttaal versus “C” typedef struct { double x,y,z;} XYZ; /* Rotate a point p by angle theta around an arbitrary axis r Return the rotated point. Positive angles are anticlockwise looking down the axis towards the origin. Assume right hand coordinate system. */ XYZ ArbitraryRotate(XYZ p,double theta,XYZ r) { XYZ q = {0.0,0.0,0.0}; double costheta,sintheta; Normalise(&r); costheta = cos(theta); sintheta = sin(theta); www.gamesmaken.startpagina.nl www.wouterbaars.net
Scripttaal versus “C” q.x += (costheta + (1 - costheta) * r.x * r.x) * p.x; q.x += ((1 - costheta) * r.x * r.y - r.z * sintheta) * p.y; q.x += ((1 - costheta) * r.x * r.z + r.y * sintheta) * p.z; q.y += ((1 - costheta) * r.x * r.y + r.z * sintheta) * p.x; q.y += (costheta + (1 - costheta) * r.y * r.y) * p.y; q.y += ((1 - costheta) * r.y * r.z - r.x * sintheta) * p.z; q.z += ((1 - costheta) * r.x * r.z - r.y * sintheta) * p.x; q.z += ((1 - costheta) * r.y * r.z + r.x * sintheta) * p.y; q.z += (costheta + (1 - costheta) * r.z * r.z) * p.z; return(q); } www.gamesmaken.startpagina.nl www.wouterbaars.net
Scripttaal versus “C” XYZ ArbitraryRotate2(XYZ p,double theta,XYZ p1,XYZ p2) { XYZ q = {0.0,0.0,0.0}; double costheta,sintheta; XYZ r; r.x = p2.x - p1.x; r.y = p2.y - p1.y; r.z = p2.z - p1.z; p.x -= p1.x; p.y -= p1.y; p.z -= p1.z; Normalise(&r); costheta = cos(theta); sintheta = sin(theta);
www.gamesmaken.startpagina.nl www.wouterbaars.net
Scripttaal versus “C” q.x += (costheta + (1 - costheta) * r.x * r.x) * p.x; q.x += ((1 - costheta) * r.x * r.y - r.z * sintheta) * p.y; q.x += ((1 - costheta) * r.x * r.z + r.y * sintheta) * p.z; q.y += ((1 - costheta) * r.x * r.y + r.z * sintheta) * p.x; q.y += (costheta + (1 - costheta) * r.y * r.y) * p.y; q.y += ((1 - costheta) * r.y * r.z - r.x * sintheta) * p.z; q.z += ((1 - costheta) * r.x * r.z - r.y * sintheta) * p.x; q.z += ((1 - costheta) * r.y * r.z + r.x * sintheta) * p.y; q.z += (costheta + (1 - costheta) * r.z * r.z) * p.z; q.x += p1.x; q.y += p1.y; q.z += p1.z; return(q); }
www.gamesmaken.startpagina.nl www.wouterbaars.net
Scripttaal versus “C” In scripttaal (bv. lingo):
Kubus.rotate (30,30,30) (30 graden roteren over de x,y,z as)
www.gamesmaken.startpagina.nl www.wouterbaars.net
software voor het maken van games • Zie: www.gamesmaken.startpagina.nl Bv.
Gamemaker Macromedia director Darkbasic Pygame Torque Blender gamekit e.v.a......
www.gamesmaken.startpagina.nl www.wouterbaars.net
Gamemaker
Zie: www.game maker.nl www.gamesmaken.startpagina.nl www.wouterbaars.net
Wat is wel haalbaar...
www.gamesmaken.startpagina.nl www.wouterbaars.net
Game Concept
Waar moet een ‘goede’ game aan voldoen? www.gamesmaken.startpagina.nl www.wouterbaars.net
Wat is eigenlijk een game? Lees Rules of Play voor heel veel definities.....
A computer game is a software program in which one or more players make decisions through the control of game objects and resources, in pursuit of a goal. (Mark Overmars) Is ... een game? • Speelgoed? • creatief programma? • een puzzel? www.gamesmaken.startpagina.nl www.wouterbaars.net
Waar op letten? • • • • • •
Videogame = computerprogramma Er is interactie met speler(s) Doel Beslissingen kunnen nemen Controle kunnen uitoefenen ... over objecten
www.gamesmaken.startpagina.nl www.wouterbaars.net
Doel van een game bereiken • Verschillende paden naar het doel (beslissingen) • Balans tov het spel (voortdurend!): ‘easy to begin, hard to master’ • Balans tussen spelers • Balans tussen gamefeatures (bv wapens) • Tussentijds belonen (punten, skills, goodies) • Dienen de ‘subgames’ het uiteindelijke gamedoel? www.gamesmaken.startpagina.nl www.wouterbaars.net
Easy to begin..hard to master
The holy grail of game design is to make a game where the challenges are never ending, the skills required are varied, and the difficulty curve is perfect and adjusts itself to exactly our skill level. Someone did this already, though, and it’s not always fun. It’s called “life”. Maybe you’ve played it Raph Koster- a theory of fun www.gamesmaken.startpagina.nl www.wouterbaars.net
Easy to begin...easy to master
www.gamesmaken.startpagina.nl www.wouterbaars.net
Hard to begin...
Home world 2
www.gamesmaken.startpagina.nl www.wouterbaars.net
Heel hard to begin... • (Lange)
uitleg nodig voordat je kan spelen---> NIET DOEN! • Gesproken uitleg ---> NIET DOEN!
www.gamesmaken.startpagina.nl www.wouterbaars.net
Balans in je game
www.gamesmaken.startpagina.nl www.wouterbaars.net
Balans - symmetrie
www.gamesmaken.startpagina.nl www.wouterbaars.net
Balans symmetrie voorbeeld starcraft
www.gamesmaken.startpagina.nl www.wouterbaars.net
Uitdagende games...Checklist • Verschillende voorbereiding (strategieën) mogelijk • Een ‘ruimte’ waarin het spel afspeelt • De ruimte moet de uitdagingen beïnvloeden • Een solide set van basisspelregels • Diversiteit in uitdagingen • Verschillende spelelementen (features) mogelijk of zelfs nodig om verder te komen in het spel www.gamesmaken.startpagina.nl www.wouterbaars.net
Uitdagende games...Checklist2 • Verschillende vaardigheden vereist om de verschillende mogelijkheden toe te passen • Wisselend reagerend spel op spelersacties (multiplayer) • Verschillende statussen van ‘succes’ • Krijgen gevorderde spelers geen voordeel (punten) bij gemakkelijke uitdagingen?
www.gamesmaken.startpagina.nl www.wouterbaars.net
Didactiek Game Play
www.gamesmaken.startpagina.nl www.wouterbaars.net
Aantrekkelijke game
Immersion: • Geluid • Grafics (een wereld,karakters, effecten) • Een verhaal...
www.gamesmaken.startpagina.nl www.wouterbaars.net
Retro stijl
www.gamesmaken.startpagina.nl www.wouterbaars.net
Cartoon stijl
www.gamesmaken.startpagina.nl www.wouterbaars.net
Cartoon stijl
www.gamesmaken.startpagina.nl www.wouterbaars.net
Graphics- vector stijl
www.gamesmaken.startpagina.nl www.wouterbaars.net
Realistische stijl
www.gamesmaken.startpagina.nl www.wouterbaars.net
Variabelen • Objecten---->Instances---->variabelen • Locale variabelen (properties) • Globale variabelen
www.gamesmaken.startpagina.nl www.wouterbaars.net
Variabelen Objecten -> instanties -> locale variabelen (property’s) Bijvoorbeeld: Het ruimteschip (object) heeft twee instanties (2 kopieën) in room 3. Instantie 1 heeft 50 eenheden ‘brandstof’ en nog 2 levens. Instantie 2 heeft 83 eenheden ‘brandstof’ en 3 levens. Instantie 1 bevindt zich op positie 200, 313 (x en y variabelen) Enz.
Locale variabelen in blauw www.gamesmaken.startpagina.nl www.wouterbaars.net
Variabelen • Globale variabelen (in het hele spel, voor alle objecten in elke room) b.v. De achtergrond kleur van de room is rood (rgb waarde (255,0,0)
www.gamesmaken.startpagina.nl www.wouterbaars.net
Game logica (AI) If ... Then ....else Als de speler de sleutel heeft dan opent de deur anders (else) deur blijft gesloten Vb. De cowboy moet drie keer geraakt worden voordat hij dood gaat.
www.gamesmaken.startpagina.nl www.wouterbaars.net
Scroling Shooter
www.gamesmaken.startpagina.nl www.wouterbaars.net
Contact:
www.wouterbaars.net
www.gamesmaken.startpagina.nl www.wouterbaars.net