Archive for games programmeren

(mobile) gamedevelopment – refactoring

Zoals de vaste lezers van dit blog weten, zijn we bij Gameskool al enige tijd bezig een mobile game te ontwikkelen. Gisteren namen we een belangrijke beslissing: we ‘gooien alle code weg’ en beginnen we met een schone lei. De code was een grote bak spaghetti geworden en om dat goed te krijgen is (waarschijnlijk) meer werk dan alles opnieuw bouwen.

Refactoren van je game

Toegegeven, het is een pijnlijke beslissing omdat we als ‘zo ver’ waren met onze game voor Android en Ipad/Ipod, maar eenmaal genomen ook een enorme opluchting. En we gooien de code niet echt weg natuurlijk, we gaan alleen -zoals dat heet- “refactoren”. Alle programmeurs die de SCRUM methode volgen (en dat is echt iets voor gameprogrammeurs) kennen het: af en toe de boel opschonen, opruimen en opnieuw beginnen. Het is onvermijdelijk in een creatief proces. Af en toe de spaghetti rechtstrijken dus. Het is gewoon sneller om met een nieuw pak spaghetti te beginnen dan alle gekookte spaghetti recht te leggen. Binnenkort weer nieuwe berichten als we verder zijn met de mobile game.

spaghetticode

spaghetticode

Mobile Game Development

Ondertussen werken we bij Gameskool aan de release van onze eerste Mobile game. Omdat we zelf meer willen leren en wellicht ook om later te gebruiken in onze lessen gamedesign. Hieronder zie je de artikelen die we over onze ervaringen met het ontwikkelen voor Android en Ios hebben geschreven:

Tot het moment dat we onze game zullen releasen in de Apple en Google stores zullen we nog meer artikelen schrijven die je hier dan ook kan terugvinden. Hou het in de gaten!

game testing

Het testen van onze game op een Android FairPhone

Mobile gamedevelopment – testmachine(s)

Welke (test) hardware heb je nodig als je zelf een mobile game wilt gaan maken?

Deze tekst is een onderdeel van de serie over het maken van mobiele games, zowel voor Ios (ipad, ipod, iphone) als voor Android. In het vorige artikel hebben we verkend wat er allemaal nodig is om mobile gamedevelopper te worden. We zoemen nu verder in op de apparaten, de testapparaten om precieser te zijn, die je nodig hebt bij je gameontwikkeling. Het bouwen en ontwikkelen van de games doen we namelijk op een ‘gewone’ pc met Gamemaker studio. Er zijn natuurlijk meer ontwikkelplatforms, maar het ontwikkelen gebeurt eigenlijk altijd op een pc en mac en nooit op de android of iOs zelf (althans vooralsnog niet). Of je nu werkt met Unity op PC of Mac of rechtstreeks werkt in een taal als Objective C (Apple). Onze keus is dus Gamemaker studio, omdat dat een relatief makkelijk te leren platform is en omdat het je veel tijd bespaart bij het ontwikkelen van je game. Het werkt lekker snel en het ontwikkelen van een game is als zoveel werk….

We zoomen nu verder in op wat voor Apple en/of Android mobile device(s) je zou moeten hebben om goed je games te kunnen testen.


De testmachines

De neiging is natuurlijk als je een tablet of phone gaat kopen om het mooiste van het mooiste in de winkel te willen halen en het nieuwste van het nieuwste. Liever een Iphone 5 (6,7,8,…) dan een Iphone 4 of 3!  Alleen zijn de nieuwste tablets, iphones, Ipods eigenlijk minder interessant als testmachines. Want als je nieuwe game op een oudere, relatief slome tablet werkt, werkt hij vrijwel zeker ook op een nieuwere en snellere machine. Maar andersom niet.

Het beste is om je game en alle tussenversies van je game zo snel mogelijk te testen. Dus niet wachten totdat alles klaar is. Hoe eerder je merkt dat er iets niet goed loopt, hoe minder tijd het je kost om aan te passen. En dan moet je game dus werken op een mobieltje met minimale  specs, of de tussenversie van je game.  Dat maakt het ontwikkelen van je game soms wel lastiger (want het moet werken op een relatief trage machine) maar je weet dan zeker dat hij geschikt is vanaf die bepaalde ondergrens. Meestal werkt hij dan ook wel goed op hogere versies. Die zekerheid heb je trouwens minder met hogere versies van operatings systems. Als je game goed werkt op Android 3.x is het nog niet gezegd dat hij het ook goed doet op Android 4.x (of 3.x+1).

Minimale specs

Welke machine moet je dan nemen als testmachine? Gamemaker studio is geschikt voor het maken van Android 2 games (en hoger). Is het dan handig om een Android 2 tablet of phone te kopen om op te testen of maak je het jezelf dan te moeilijk?  Let op de volgende dingen:

  1. Wat is de officiële ondergrens van Gamemaker Studio?
  2. Is de testmachine redelijk gangbaar? Zijn er (nog) genoeg mensen die zo’n machine gebruiken
  3. Is de testmachine technisch gezien vergelijkbaar met nieuwere machines, of zitten die totaal anders in elkaar?

 

De voordelen van gamedesigner zijn, je hebt dit allemaal nodig

De voordelen van gamedesigner zijn, je hebt dit allemaal nodig

De ondergrens van Gamemaker Studio

Gamemaker studio ondersteunt mobile gamedevelopment vanaf Android 2.2 (Froyo) en Ios 3.4. Windows 8 wordt ook ondersteunt, maar dat laten we even buiten beschouwing tot (wanneer?) Windows 8 phone en tablets aanslaan bij het grote publiek of in ieder geval voldoende publiek.

De gangbaarheid van je testmachine

Kijk als je nu heel rijk bent, dan koop je alle testmachines om de hele range te bestrijken. Dus een Ipad 1 (op marktplaats), 2, 3, 4 Ipad mini, de hele ipod range en ook nog de hele Iphone range. Idem Android (haha)… Alle andere mensen zullen slim moeten nadenken welke testmachine het beste ‘alle’ andere machines ‘vertegenwoordigt’.

Een indicatie is hoe lang geleden het is geweest dat een machine nog verkocht werd. Als dat meer dan 5 jaar is, is de machine als testmachine ook wat oud aan het worden. Soms kan je op het internet cijfers vinden van gebruik van machines of versies van operating systems. Bv. cijfers van het bezoek van websites door tablets. Als je deze link bekijkt (begin 2013) dan zie je dat er nog veel mensen zijn die een Android 2.3 systeem hebben. Daaronder bijna niet (meer). Een testmachine met Android 2.3 is dan wellicht een mooie ‘ondergrens’. Overigens gebruikt bijna niemand meer Android 3.x en zijn de meesten over naar versie 4.x. Dus een testmachine 2.3 en eentje 4.x zou een hele aardige dekking geven.

Voor Apple ben je er snel uit: een Ipad 2 of Ipad mini en een Iphone 3GS of Iphone 3 of een Ipod tweede generatie en je bent klaar. Eventueel nog een retina machine erbij is helemaal mooi, maar niet strikt noodzakelijk.

Voor Android systemen is het verschillende redenen lastig een goede allround testmachine te kiezen. Er zijn veel merken en vele maten en soorten. Veel verschillende Os versies van Android en verschillende microprocessoren. Zowel in type als in snelheid. Ook de afmetingen van de beeldschermen en de resoluties van de schermen zijn er in vele soorten. Als je op Tweakers kijkt, krijg je een aardig overzicht van wat er allemaal beschikbaar is op Android mobile gebied: Op dit moment meer dan 284 toestellen (en let op deze lijst is niet helemaal volledig).

Waar je zeker op moet letten is of de Android een grafische chip heeft, omdat sommige ‘low end’ (oudere) Android systemen die niet hebben. Die tablets zijn dan bedoeld voor het browsen en versturen van emails, maar je kan er absoluut niet op gamen.  Een andere belangrijke indicator van geschiktheid is of een Android tablet of phone geschikt is voor de Google Play winkel (dit is een officieel keurmerk dat een apparaat wel of niet heeft). Je testdevice MOET dit hebben.

Hieronder zie je een lijst van Android devices waar Gamemaker games goed op werken (volgens de Gamemaker Community):

Iconia Tab A200 Nexus 7 Desire Optimus One Defy MB525 Galaxy Ace Tablet S Transformer Desire S Defy+ MB526 Galaxy Note Xperia Play Evo Galaxy Player 5 G2 Galaxy S Incredible S Galaxy SII One S Galaxy SIII One V Galaxy Tab One X Vivid en de Wildfire S

en deze doen het volgens een gebruiker weer niet goed.

Wij hebben hier bij Gameskool gekozen voor een Archos Gamepad. Niet een machine met het mooiste scherm noch accuduur, wel iets mindere processor dan de Google Nexus 7 (ook een goede allround testmachine trouwens), goed betaalbaar (+- 130 euro) en de knopjes erbij zijn een pre voor bepaalde soorten gameplay (al kunnen we daar in onze eigen games niet vanuit gaan, de meeste tablets hebben dit soort knoppen helaas niet.)

EDIT: we hebben de testmachine getest, en de Archos gamepad is (vooralsnog) niet geschikt als testapparaat voor je eigen android games. Ze crashen simpelweg de hele tijd, terwijl ze het (bij ons) wel goed doen op andere android apparaten. Alternatief is de Google Nexus 7 en of 10.

Je zou uit bovenstaande lijst een testapparaat kunnen kiezen met de minste specs. Of een ‘gemiddelde specs’ apparaat zoals de Google Nexus 7 en een low end ding met android 2.2 (kies er dan eentje uit van de tweakers lijst, maar let op dat hij wel geschikt is voor games/Google Play)

Concluderend stellen we dat als je een Ipod touch derde generatie of een Iphone 3GS dat je een prima testmachine hebt voor de ontwikkeling van je Ios games. Wat betreft Ipad: een Ipad 2 of Ipad mini (maar dan de eerste generatie niet die met retina scherm en snellere processor die binnenkort verwacht wordt). Als je veel geld hebt, is een toevoeging van een systeem met Retina (en snellere processor) wel fijn om te kijken of je game ook in HD er goed uitziet. Bijvoorbeeld een Ipad 3 (die je nog wel hier en daar kan krijgen).

Wat betreft Android: kies een machine die veel gebruikt wordt dan wel gebruikt is gebruikt en in ieder geval geschikt is voor de Google Play store.

Testen, testen en nog eens vroeg testen

Een goed geteste game is erg belangrijk voor je succes. Op het internet zijn veel horrorverhalen te lezen van games die goed waren, maar die veel negatieve feedback kregen omdat ze op een bepaalde device niet goed werkten en als gevolg van de negatieve feedback helemaal niet meer werden gedownload. Zelfs gratis apps vielen zo uit de gratie. Vooral als je ontwikkelt voor Android is het lastig dat er vele soorten apparaten zijn waarop je game allemaal het goed moet doen.

Concluderend: welke apparaten om je game op te testen?

Overweeg de volgende machines:

Ipad 2 of Ipad mini
Ipod 3 of Iphone 3Gs (check of je systeem minimaal os 4.3 aankan)
Google Nexus 7 of Archos Gamepad
Samsung Galaxy SII

Deze conclusies zijn geldig voor begin 2013, het moment van schrijven van dit artikel. Als je dit een (paar) jaar later leest moet je opschuiven in specificaties. Hoeveel? Daar kom je wel uit als je let op: minimale specs van Gamemaker, gangbaarheid en technische gangbaarheid. Kies een machine met minimale specificaties wat betreft processorcapaciteit en grafische capaciteit. Liever een testmachine van een jaar of 3 oud dan eentje van nu of een jaar geleden en koester je oude telefoons, pods en tablets. In de toekomst heb je ze nodig voor jouw testopstelling!

Gameprogrammeur

Dit is een artikel in een reeks over werken in de gameindustrie waarin de verschillende gameberoepen worden toegelicht.

Gameprogrammeurs

Gamesprogrammeurs zijn de mensen de techneuten van de industrie. Zijn doen het ‘echte werk’ nou ja, samen met artists dan. De gameprogrammeur is de hele dag in de weer met code en probeert de wensen van de gamedesigners en leveldesigners te vertalen naar werkende gameonderdelen. In onderstaande video zie je een interview met een van de programmeurs van God of War.

Alhoewel het programmeren specialistisch werk is, zijn veel gameprogrammeurs ook betrokken bij het design van de game. Met andere woorden ze denken vaak mee over hoe de game moet worden. Dit is ook logisch omdat de programmeurs de meeste kennis hebben van wat (technisch) wel en niet haalbaar is.  Soms helpen ze de gamedesigners met het maken van het gamedesign als het gaat om het bedenken van de AI (artificial intelligence) of om het opstellen van het wiskundige model dat (soms) achter een game zit. Bijvoorbeeld bij simulatiegames. In hun dagelijkse werk zijn ze veelal bezig met oplossen van ‘puzzels’ (programmeervraagstukken) als: hoe laat ik een object intelligent reageren op een spelersactie? Hoe kan ik de valversnelling van een object zo realistisch mogelijk programmeren? Hoe schrijf ik de code dat de game sneller, vloeiender loopt? Hoe kunnen we de code van de ene console porten naar een andere console?

De programmeurs hebben vaak een logische kijk op zaken, een sterke achtergrond in (diverse) programmeertalen en veel kennis van wiskunde.  Je komt zowel mensen tegen die een ICT of wiskunde opleiding hebben gedaan als autodidacten.

Scripters en hardcore coders
Je hebt onder de programmeurs scripters en core programmers. De scripters werken vooral met (eenvoudiger) programmeertalen in een game-engine, terwijl de core programmers vooraal aan die game-engine zelf werken. Veel gebruikte scripttalen zijn: actionscript (Flash) en javascript (HTML5, Unity en vele andere engines), Python en Lua. De core programmeertaal is bijna altijd C++.

Opleidingen om gameprogrammeur te worden:
–     Wiskunde en informatica,
–     Wiskunde (zonder informatica)
–     Gametechnologie (UU)
–     NHTV (Breda)

werk
Over het algemeen kunnen gameprogrammeurs altijd wel werk vinden en als het (even) niet lukt bij een gamebedrijf dan is er bij andere ICT bedrijven altijd wel werk.

Boeken (voor zelfstudie):

Als  je nog helemaal niets weet van programmeren is het slim om met een makkelijk te leren programmeertaal zoals GML (Gamemaker Language) of Javascript te beginnen en daarna pas met een lastiger taal als Python of C (Objective C, C# of C++)

Cursussen
Gameskool
Javascript
Klik hier voor de andere rollen in de gamewereld 

Test Gamemaker studio

Vorige maand is Gamemaker studio 1.0 beschikbaar gekomen en ik ben ermee aan de slag gegaan om er een simpel online educatief spelletje mee te maken. Het is een spelletje waarbij je noten leert lezen door middel van het verschuiven van ‘kaartjes’. Niet een echte game, maar wel een applicatie die zich goed leent voor html5. Immers html5 werkt op alle systemen (of zou dat moeten doen) en zo’n eenvoudige game vraagt niet om hoge snelheid (waar html5 nog niet in uitblinkt).

De eerste indruk van Gamemaker Studio

Wie langer met Gamemaker werkt, herkent bijna alles in de studio. De layout is zwart met witte letters in plaats van wit met zwart, maar als je dat liever hebt (zoals ik) dan kan je dat met de instellingen terug zetten naar de ‘Gamemaker 8 skin’. Het grote verschil is de knop waarmee je HTML5, Windows, Mac en als je extra modules hebt gekocht ook Android en Ios games mee kunt compileren. Het grote voordeel is tijdwinst: je maakt 1x je game en daarna publiceer je in een keer naar 5 platforms (en YoYogames heeft beloofd dat er meer platforms in aantocht zijn). Vooral voor kleine gamebedrijven (eenmanszaken) en kleine studio’s is dit een aantrekkelijk ideaal. Want als je je game 5x moet programmeren moet je niet alleen al die platformen kennen (en kunnen) maar ben je ook vijf keer (nou ja x keer) zoveel tijd kwijt aan al het coderen. Tot zover het ideaal, nu de praktijk.

Formaat kiezen in GM studio

Gamemaker Studio in de praktijk 

Gamemaker is niet de enige -all in one- oplossing. Ook ontwikkelomgevingen als Unity en Flash kunnen exporteren naar meerdere platformen. Deze review is geen vergelijking van Studio met andere oplossingen, maar slechts een eerste impressie van Gamemaker Studio. Maar tussen de regels kan je wel wat vergelijkingen lezen. Het kiezen van een ontwikkelomgeving is een complex vraagstuk waarbij degelijkheid, prijs, mogelijkheden, taal, ondersteuning, soliditeit van de producer, kennis van de programmeurs, comptabiliteit, openheid, toekomstperspectief en gebruikersvriendelijkheid afgewogen moeten worden. Wat zijn onze ervaringen met een klein project in Gamemaker studio:

Wat ging er minder goed:

  • Publiceren voor veel platformen is een mooi ideaal, maar de praktijk wijst uit dat er veel kleine en grotere bugs in je product ontstaan op de verschillen in platformen. Het werkt wel in Chrome, maar niet op Safari of wel op Safari op mac osx maar niet op Safari in Ios.
  • Snelheid: html5 is traag, dus verwacht geen snelle shooters te kunnen maken. Of althans niet zonder meer. Je moet een stuk slimmer programmeren om de snelheid van je games te vergroten. Als je kijkt naar de html5 voorbeelden gemaakt door YoYo dan zie je ook relatief veel ‘puzzelgames’ waarbij snelheid minder belangrijk is. Flash games hebben dit probleem ook, maar zijn toch wel iets sneller. Naarmate HTML 5 verder ontwikkelt zal dit verschil wel verdwijnen verwacht ik.
  • Documentatie. Veel mogelijkheden en onmogelijkheden van Gamemaker Studio zijn nog niet gedocumenteerd. Dit is onhandig, maar gelukkig is er wel een actieve community die je meestal verder kan helpen.
  • Bugs. Gamemaker Studio zelf heeft nog best een hoop bugs. Tijdens mijn project heb ik er zelf ook een aantal moeten rapporteren. Het goede is dat de helpdesk snel reageert en dat ze met de bugs aan de slag gaan. (ik heb ook wel eens bugs aan Adobe gerapporteerd, maar daar heb ik nooit meer wat van gehoord). Maar voor mijn gevoel is Gamemaker Studio 1.0 vooralsnog meer een Beta product dan een 1.0 product.

Wat was er goed:

  • Gamemaker werkt lekker snel om in te ontwikkelen. In vergelijking met andere studio’s kan je snel wat in elkaar zetten. De omgeving is vooral handig voor het maken van 2d arcade achtige games en wat minder voor als je veel met tekst werkt. Alhoewel dat ook wel lukt.
  • De prijs. De prijs van het pakket is zeker vriendelijk te noemen in vergelijking tot andere opties.
  • Flexibiliteit. Er is gewoon veel mogelijk met de studio. Zowel in de zin van publiciteitsmogelijkheden als de mogelijkheden om dingen te maken.
  • Het enthousiasme van het YoYo team.
  • Je hoeft als ontwikkelaar niet meer rekening te houden met alle verschillen en typische dingen van alle platformen. Tenminste in principe. In de praktijk blijkt toch wel vaak dat je game op een of enkele van de platformen het niet goed doet. De helpdesk van YoYo gaat wel aan de slag met je problemen op een specifiek platform als die zich voordoen.

Conclusie

Gevoelsmatig zou ik zeggen dat -op het moment van schrijven- imho Gamemaker Studio eigenlijk nog meer een betaproduct is en niet een 1.0 product. Over een tijdje zal dit beter zijn, al is de lijst van issues en bugs nog best lang. Meer en betere documentatie zou ook een hoop helpen.

Het ideaal van 1 omgeving waarmee je voor verschillende systemen ontwikkelt is erg mooi, vooral voor de kleinere gamebedrijven en de kleinere gameprojecten. Het is ook een ambitieus ideaal: er zijn zoveel systemen en opties waar de makers van Gamemaker rekening mee moeten houden, dat het spannend is of dat ooit 100% gaat lukken. (Overigens klagen Unity ontwikkelaars en Flash ontwikkelaars over hetzelfde probleem: je kan lekker snel ontwikkelen, maar heel vaak loop je tegen problemen aan op een of ander specifiek platform. Je game werkt wel op windows maar niet op mac of wel op mac 10.5 maar niet op mac 10.6, enzovoort.). Gamemaker studio is in de lijst van betere gamepakketten zeker het overwegen waard, maar misschien nog heel even wachten tot het pakket en documentatie verder ontwikkeld zijn.

 

Werken in de gameindustrie

Voor wie droomt van een baan (of freelance job) in de gamesector ga ik een serie schrijven over de mogelijkheden, kansen en voorwaarden van diegenen die in de gameindustrie willen werken.

Welke beroepen heb je bij gamebedrijven?

Hieronder schets ik de belangrijkste beroepen (rollen) bij gamebedrijven. Natuurlijk heb je daar ook boekhouders, schoonmakers, PNO medewerkers, en dergelijke, daar heb ik het nu even niet over. Het gaat over de banen die rechtstreeks betrokken zijn bij gamedevelopment.

De belangrijkste rollen bij gamedevelopment zijn:

In komende posts zal ik deze rollen verder bespreken: wat je ervoor moet kunnen, welke opleiding(en) je ervoor kunt doen en hoe de kansen zijn op een baan. Wordt vervolgd.Kijk tot die tijd ook eens op www.gamesindustrie.nl voor wat er zoal in Nederland gebeurt op gamegebied.

Gamebouwers in actie