350 likes | 482 Views
je eigen videogame. Wouter Baars Demozone 2005. Belangrijke Waarschuwing!. Intro: Game productie wat hoort daarbij?. Graphics: 3D modelling Textures 2d Artwork Animaties Fonts, enz. Software: 3Dmax Maya Photoshop. Of open source: Blender Gimp. Programmeren: C (++)
E N D
je eigen videogame Wouter Baars Demozone 2005 Gamesmaken.startpagina.nl www.wouterbaars.net
Belangrijke Waarschuwing! Gamesmaken.startpagina.nl www.wouterbaars.net
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 www.wouterbaars.net
Programmeren: C (++) Scripting Speciale platforms (bv webgames) Gameproductie vervolg 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)) Gamesmaken.startpagina.nl www.wouterbaars.net
Gameproductie vervolg Concept design: • Verhaallijn • Storyboard • Level design • Spelregels Gamesmaken.startpagina.nl www.wouterbaars.net
Gameproductie vervolg Audio: • Midi • Audio Software: • Logic • Cubase • Protools Gamesmaken.startpagina.nl www.wouterbaars.net
Resumé • Graphics • Programmeren • Concept • Audio • Projectleiding • AI, Physics engine’s Gamesmaken.startpagina.nl www.wouterbaars.net
3d: Hoeveel vrije tijd heb je? Gamesmaken.startpagina.nl www.wouterbaars.net
Hoe belangrijk is 3d voor een game? Gamesmaken.startpagina.nl www.wouterbaars.net
Hoeveel vrije tijd heb je? - verlvolg Programmeren in C of in een scripttaal? 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); 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); } 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); 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); } Gamesmaken.startpagina.nl www.wouterbaars.net
Scripttaal versus “C” In scripttaal: Rotate (“kubus”, axis, degrees) Gamesmaken.startpagina.nl www.wouterbaars.net
Middleware voor games • Zie: www.gamesmaken.startpagina.nl Bv. Gamemaker Macromedia director Darkbasic Pygame Torque Blender gamekit e.v.a...... Gamesmaken.startpagina.nl www.wouterbaars.net
b.v. Blender gamekit Gamesmaken.startpagina.nl www.wouterbaars.net
Bv. (2d) Gamemaker Gamesmaken.startpagina.nl www.wouterbaars.net
Resultaten Gamesmaken.startpagina.nl www.wouterbaars.net
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 www.wouterbaars.net
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 www.wouterbaars.net
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 www.wouterbaars.net
Leuk spel Gamesmaken.startpagina.nl www.wouterbaars.net
Ook een leuk spel... Gamesmaken.startpagina.nl www.wouterbaars.net
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 www.wouterbaars.net
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 www.wouterbaars.net
Uitdaging Gamesmaken.startpagina.nl www.wouterbaars.net
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 www.wouterbaars.net
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 www.wouterbaars.net
http://www.submarinechannel.com/louparadis Gamesmaken.startpagina.nl www.wouterbaars.net
Feedback voorbeeld Quake III Gamesmaken.startpagina.nl www.wouterbaars.net
Balans in je game Gamesmaken.startpagina.nl www.wouterbaars.net
Balans voorbeeld starcraft Gamesmaken.startpagina.nl www.wouterbaars.net
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 www.wouterbaars.net
Vragen? Voor bronnen en startpunten zie: www.gamesmaken.startpagina.nl Nadere info/vragen/opmerkingen: email via www.wouterbaars.net Gamesmaken.startpagina.nl www.wouterbaars.net