Games Maken Wouter Baars
Game productie wat hoort daarbij? Graphics: 3D modelling Textures 2d Artwork Animaties Fonts/interfaces, enz. Software: 3Dmax Maya Photoshop Of open source: 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) 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
Gameproductie vervolg Audio: Software: Midi Audio Logic Cubase Protools
Graphics Programmeren Concept Audio Maar ook: Projectleiding AI Physics engine s Resumé
Management van verwachtingen
3d: Hoeveel vrije tijd heb je?
Hoe belangrijk is 3d voor een game?
Leuk spel
Ook een leuk spel...
Hoeveel vrije tijd heb je? - vervolg Programmeren in C of in een scripttaal?
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);
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);
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);
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);
Scripttaal versus C In scripttaal (bv. lingo): Kubus.rotate (30,30,30) (30 graden roteren over de x,y,z as)
software voor het maken van games Zie: Bv. Gamemaker Macromedia director Darkbasic Pygame Torque Blender gamekit e.v.a...
Gamemaker Zie: www.game maker.nl
Wat is wel haalbaar...
Game Concept Waar moet een goede game aan voldoen?
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?
Waar op letten? Videogame = computerprogramma Er is interactie met speler(s) Doel Beslissingen kunnen nemen Controle kunnen uitoefenen... over objecten
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?
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
Easy to begin...easy to master
Hard to begin... Home world 2
Heel hard to begin... (Lange) uitleg nodig voordat je kan spelen---> NIET DOEN! Gesproken uitleg ---> NIET DOEN!
Balans in je game
Balans - symmetrie
Balans symmetrie voorbeeld starcraft
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
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?
Didactiek Game Play
Aantrekkelijke game Immersion: Geluid Grafics (een wereld,karakters, effecten) Een verhaal...
Retro stijl
Cartoon stijl
Cartoon stijl
Graphics- vector stijl
Realistische stijl
Variabelen Objecten---->Instances---->variabelen Locale variabelen (properties) Globale variabelen
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
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)
If... Then...else Game logica (AI) 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.
Scroling Shooter
Contact: