Gamesmaken.startpagina.nl je eigen videogame Wouter Baars Demozone 2005
Gamesmaken.startpagina.nl Belangrijke Waarschuwing!
Gamesmaken.startpagina.nl Intro: Game productie wat hoort daarbij? Graphics: –3D modelling –Textures –2d Artwork –Animaties –Fonts, enz. Software: – 3Dmax – Maya – Photoshop Of open source: – Blender – Gimp
Gamesmaken.startpagina.nl Property schipangle,radius,richting,snelheid --later energy en dergelijke toevoegen on getpropertyDescriptionList me list = [] 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).loch- sprite(2).loch),2) + power(abs(sprite(me.spritenum).locv- sprite(2).locv),2)) Gameproductie vervolg Programmeren: -C (++) -Scripting -Speciale platforms (bv webgames)
Gamesmaken.startpagina.nl Gameproductie vervolg Concept design: Verhaallijn Storyboard Level design Spelregels
Gamesmaken.startpagina.nl Gameproductie vervolg Audio: Midi Audio Software: Logic Cubase Protools
Gamesmaken.startpagina.nl Resumé Graphics Programmeren Concept Audio Projectleiding AI, Physics engine’s
Gamesmaken.startpagina.nl 3d: Hoeveel vrije tijd heb je?
Gamesmaken.startpagina.nl Hoe belangrijk is 3d voor een game?
Gamesmaken.startpagina.nl Hoeveel vrije tijd heb je? - verlvolg Programmeren in C of in een scripttaal?
Gamesmaken.startpagina.nl 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);
Gamesmaken.startpagina.nl 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); }
Gamesmaken.startpagina.nl 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);
Gamesmaken.startpagina.nl 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); }
Gamesmaken.startpagina.nl Scripttaal versus “C” In scripttaal: Rotate (“kubus”, axis, degrees)
Gamesmaken.startpagina.nl Middleware voor games Zie: Bv. Gamemaker Macromedia director Darkbasic Pygame Torque Blender gamekit e.v.a......
Gamesmaken.startpagina.nl b.v. Blender gamekit
Gamesmaken.startpagina.nl Bv. (2d) Gamemaker
Gamesmaken.startpagina.nl Resultaten
Gamesmaken.startpagina.nl Designtips No1: Uitdaging No2: Doel duidelijk? No3: Interactie goed? No4: Easy to master, hard to learn No5: Balans in je game... De spelregels zijn het belangrijkste!
Gamesmaken.startpagina.nl De spelregels zijn het belangrijkste! Niet 2d of 3d Niet de schoonheid van de graphics Niet de verhaalcontext (b.v. fanatasy of space)
Gamesmaken.startpagina.nl Binnenkant of buitenkant? “Een game is als een mooie vrouw: een mooi uiterlijk is meegenomen maar als ze geen interessant karakter heeft, is de lol er snel vanaf”
Gamesmaken.startpagina.nl Leuk spel
Gamesmaken.startpagina.nl Ook een leuk spel...
Gamesmaken.startpagina.nl Iets minder leuk...? 1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8. h3 Bb7 9. d3 d6 10. a3 Na5 11. Ba2 c5 12. Nbd2 Nc6 13. c3 Qd7 14. Nf1 d5 15. Bg5 dxe4 16. dxe4 c4 17. Ne3 Rfd8 18. Nf5 Qe6 19. Qe2 Bf8 20. Bb1 h6 1/2-1/2
Gamesmaken.startpagina.nl Is het doel duidelijk? “Contest Arena Would someone please tell me how to play this game? And why does the instructions have to be like 10 pages long?...(enz. enz.) ”
Gamesmaken.startpagina.nl Uitdaging
Gamesmaken.startpagina.nl Easy to master, hard to learn Vermijdt een (geschreven/gesproken) uitleg De drempel om met een game te beginnen moet niet te hoog zijn (besturing) Zorg dat het interessant blijft (steeds iets moeilijker/verrassingen)
Gamesmaken.startpagina.nl Goede interactie? Zijn de handelingen duidelijk die je moet verrichten? Reageert de computer (snel genoeg) op je acties? Krijg je de juiste feedback? Enz. (zie diverse artikelen op het web/boeken over interactie of ergonomie)
Gamesmaken.startpagina.nl
Gamesmaken.startpagina.nl Feedback voorbeeld Quake III
Gamesmaken.startpagina.nl Balans in je game
Gamesmaken.startpagina.nl Balans voorbeeld starcraft
Gamesmaken.startpagina.nl Conclusie Welke discipline(s) wil je je in bekwamen? Welke instrumenten ga je gebruiken? Hoeveel tijd heb je? Alleen of in een groep? Inhoud is belangrijker dan de vorm!
Gamesmaken.startpagina.nl Vragen? Voor bronnen en startpunten zie: Nadere info/vragen/opmerkingen: via