Van Java naar iPhone: uitdagingen en oplossingen voor gamebouwers

Deze week worden in Keulen enkele grote Europese game-evenementen gehouden. Ellen doet voor iPhoneclub verslag en vertelt deze keer over het omzetten van Java-games naar de iPhone.
Ellen de Lange-Ros - · Laatst bijgewerkt:

galaxy on fireDeze week worden in Keulen enkele grote Europese game-evenementen gehouden. Naast de GamesCom, waarbij uitgevers hun najaarscollectie aan het grote publiek tonen, is er ook een developers conferentie waarin de industrie een kijkje in de keuken geeft. Namens iPhoneclub is Ellen bij deze GDC aanwezig en vertelt ze over de meest interessante presentaties over de iPhone en games.

In een lekkere technosessie tijdens de GDC vertelt Marc Hehmeyer, Chief Technology Officer van Fishlabs open over z’n ervaringen met het omzetten van een bestaande mobiele Java-game naar de iDevices (iPod, iPhone, iPad). Zijn bedrijf maakte al meerdere jaren games in Java en heeft daarmee 2 miljoen downloads gehaald sinds 2004. Dit was in een enorm versplinterde markt met maar liefst 160 verschillende operators en telefoons. Omdat dit zorgt voor een grote diversiteit aan contracten en afspraken besloten ze eens een game op de iDevices uit te brengen. Dat werd Powerboat Challenge, een game die in oktober 2008 werd uitgebracht en binnen twee jaren meer dan 30 miljoen downloads heeft gehaald. Vergeleken met de 2 miljoen downloads van Java-games, was het duidelijk een succes. Fishlabs had al verschillende mooie games op het Java-platform ontwikkeld. Daarom besloten ze een bestaande titel, Galaxies on Fire 2, naar de iDevices over te zetten. Wat komt er nou kijken bij het overzetten van een game van Java naar iOS? Hehmeyer vertelt de aanwezige ontwikkelaars uitgebreid over alle technische uitdagingen die z’n studio de afgelopen periode heeft overwonnen.

Totaal nieuwe concept art
Om de technische diversiteit voor de iDevices te beperken, koos Fishlabs er voor om de game alleen geschikt te maken voor devices vanaf de iPhone 3G en de tweede generatie iPod touch. In Java was Galaxies on Fire een titel met relatief mooie beelden en geluid. Daarom wilde men ook op de iDevices een hoge kwaliteit leveren. Men had daarbij zelfs het gevoel dat de hoge kwaliteit die men eigenlijk altijd al wilde leveren nu met de iDevices echt binnen bereik kwam. Het enthousiasme van de art director werd daardoor zo groot, dat men besloot om alle mood concepts opnieuw te maken en alles opnieuw te tekenen. Ook vanwege de grotere schermen van de nieuwe devices was een herziening van de graphics nodig.

galaxy on fireGrafische uitdagingen
Hoewel de iDevices veel meer kunnen dan Java, moet toch ook hier het detailniveau van beelden soms worden beperkt om de framerate (een term om aan te geven dat beelden niet haperend worden) goed te houden en moet de GPU worden gelimiteerd. Om dit goed te laten werken, werd een zogenaamde Level-Of-Detail-mechanism geïmplementeerd die het detailniveau van beelden kan aanpassen. Andere belangrijke verschillen in beelden waren veel meer pixels en textures die veel mooiere beelden mogelijk waren. Ook op het gebied van texture compressie was veel meer mogelijk. In het spel gaf dit bijvoorbeeld veel meer mogelijkheden voor het special effects, zoals het particle system, de engine, de animaties bij explosies en realtime belichting.

Uitdagingen bij de game engine
Naast de visuele aspecten, waren er ook op het gebied van de game-engine de nodige uitdagingen. Een belangrijk verschil is de sterke FPU op de iDevices waarmee een snelle float based engine mogelijk werd, in plaats van de integer based engine op de Java-devices. Om de prestaties van de engine te optimaliseren werd in Java een rendering strategy van immediate mode gekozen, zonder caching. Op de iDevices was dit, met veertig verschillende materialen en textures, niet mogelijk. Daardoor werd gekozen voor caching en later gerenderd in een vaste volgorde. Deze technische aanpassingen waren nodig om de details en pracht van alle beelden toch vloeiend te laten zien en de game vlot te laten draaien.

Nieuwe manier van programmeren

Naast de technische aspecten was ook het programmeren zelf een issue. De lead designer bij Fishlabs was goed bekend met werken in Java en werkte bijvoorbeeld graag met garbage collection. In C of C++ werken deze zaken anders en dit leverde een redelijke leercurve voor de programmeur op. Tijdens het testen traden er onverwachte problemen op, waar men niets van begreep. Dat bleek te komen door ontbrekende variabelen. Het bleek afhankelijk van de compiler of de variabelen correct binnen kwamen en deze moesten al in de code goed worden geinitieerd, waar de programmeur geen rekening mee had gehouden. Hehmeyer raadt de programmeurs in de zaal dan ook aan om dit direct goed in hun code op te nemen.

Besturing moest opnieuw worden ontworpen
Naast de beelden, werd ook de besturing onderhanden genomen. In plaats van besturing met knoppen moest een touch besturing van de grond af worden ontworpen met een totaal nieuwe interface en een nieuwe gameplay die beter aansluit bij de iDevices. Om dit helemaal goed te laten werken was de nodige tweaking en optimalisatie nodig.

powerboat challengeRijker geluid
Geluid is essentieel voor de ervaring van de game. In Java waren hierin beperkte mogelijkheden, vanwege de bestandsgrootte was bijvoorbeeld MP3 niet mogelijk maar alleen midi. Op de iDevices werd gekozen om wel MP3 te gebruiken, met een veel rijker geluid met enorm veel meer variaties en rijkdom.

Tips voor gamedevelopers

Hehmeyer sluit z’n verhaal af met een aantal tips:

  • Geen poort: Z’n eerste tip is om de game geen ‘poort’ te noemen. Feitelijk moet je een totaal nieuwe game opzetten en ontwerpen dus is het beter om niet over een poort te praten.
  • Console benadering: als ontwikkelaar moet je bij het maken van een topgame voor de iPhone denken aan de benadering die ook voor de grote consoles nodig is. Topgames gaan al naar 60 frames per seconde en is daarmee beter dan de Playstation 2 of Xbox. Als de iDevices nog 1 of 2 jaar vernieuwd worden, zitten ze qua technische kwaliteit dicht aan tegen de Playstation 3 en Xbox360 en zo moet je het ontwikkeltraject ook gaan behandelen.
  • Belangrijke betafase: onderschat de betafase niet. Op dit moment zie je de game pas als geheel en zie je wat er ontbreekt. Onderschat deze fase niet en neem de tijd om in deze fase alle aspecten van de game te perfectioneren en alle bugs op te lossen. Bedenk daarbij dat ontwikkelaars slechte testers zijn en laat ze niet zelf hun tests doen.
  • Vermijd features-verliefdheid: de iDevices vernieuwen erg snel en elk jaar komt er een nieuwe iPhone met nieuwe features. Het is verleidelijk om al die features in je game op te nemen. Let er op dat je op een gegeven moment in de ontwikkelfase geen nieuwe features meer opneemt. Doe je dat toch, dan zal dit heel veel aspecten in je game beïnvloeden die je allemaal weer moet aanpassen en testen.
  • Heb lol: het spelen van een game draait om lol. Zorg ervoor dat je die lol ook bij het maken van een spel hebt, anders kun je nooit een echt goede game ontwikkelen.

rally master proAl met al laat Hehmeyer zien dat het voor bedrijven met een mooie collectie Java-games interessant kan zijn om deze over te zetten naar de iDevices. Toch levert dit ook de nodige uitdagingen op. Het is belangrijk om hier vanaf het begin rekening mee te houden en deze technische uitdagingen niet te onderschatten. Het was interessant om te horen welke zweetdruppeltjes Fishlabs in het traject rond Galaxies on Fire 2 tegen is gekomen. Binnenkort zal de game in de app store beschikbaar zijn en kunnen we zelf beoordelen of het werk de moeite waard is geweest.

De games van Fishlabs:

Suggestie hoe we dit artikel kunnen verbeteren? Laat het ons weten!

Informatie

Laatst bijgewerkt 24 augustus 2010, 15:47
Categorie Apps

Reacties zijn gesloten voor dit artikel.