Emissionen Nr 2 2003


Att göra ett mobilspel

Spel, spel, spel!
Alla är kanske inte lika kära i spel av alla slag som jag själv är men några av er kanske är det! Några andra kanske bara är intresserade av att få utveckla något riktigt kul som inte behöver ta jättelång tid.

Mobiltelefonerna börjar bli mer och mer avancerade och datorkraften i dem bara ökar och ökar och nu har de nått den gräns som krävs för att man skall kunna göra riktiga spel som inte bara är som Snake på en Nokia 3110.

J2ME

Den vanligaste sättet att skriva spel för mobiltelefoner är att göra det med en teknik som kallas J2ME, det vill säga en Javaversion som är speciellt anpassad för att skriva spel för mobiltelefoner. Problemet med Java är, som många av er säkert redan vet, att det är segt som sirap. Det har blivit lite bättre med åren men när man skall göra spel på en mobiltelefon med mycket begränsade resurser vill man kräma ur så mycket som möjligt ur hårdvaran och då är faktiskt inte J2ME speciellt optimalt.

mophun

[Bild]

Några svenska killar såg detta problem och startade 1999 företaget Synergenix Interactive AB och de utvecklade en parallell plattform till J2ME som heter mophun (uttalas Mo' fun). mophuns styrka är att den är helt skapad för att vara en plattform för spel och inte som J2ME, en mjukvaruplattform i allmänhet. Den har därför en massa häftiga funktioner för att kunna hantera grafik och ljud på ett snabbt och smidigt sätt. mophun består i grunden av ett par bibliotek med funktioner som används för att koppla sig mot telefonens hårdvara (interface alltså!). Man kan utveckla spel i standard C/C++ eller i en pseudoassembler, som assembleras till något som kan liknas vid Javas byte-kod. För er som är intresserade har gcc (gcc är GNU:s kompilatorpaket, red. anm.) anpassats för att generera rätt byte-kod för att passa mophun. Man kan alltså utveckla spel i både Windows och Linux/Unix vilket antagligen gläder många. En annan stor fördel som många inbitna C-hackare känner till är ju att man i C har mycket bättre kontroll på vad som faktiskt sker i datorn och man kan skriva direkt till minnet och göra andra trevliga saker utan att de sker en massa konstiga saker i bakgrunden som t.ex. garbage collection.

Exjobb

Jag har alltså lyckats komma över 140-poängsgränsen som krävs för att man skall få börja på mitt examensarbete och gör det alltså på just Synergenix. Mitt ex-jobb går ut på att skriva ett multiplayerspel för mophun och använda en särskild multiplayerteknik som jag inte tänker gå in på mer här. Jag har framför allt jobbat mycket i Java förut och har blivit väldigt kär i snygg objektorientering. Jag gick i höstas en jättebra kurs som hette Programsystemkonstruktion med C++ som hölls av Johnny Bigert på Nada och har tidigare gått en kurs i Operativsystem som hållits av Fredrik Lundevall på IMIT. Dessa två kurser har varit helt nödvändiga för mig eftersom jag inte programmerat så mycket i C eller C++ förut. Men efter dessa kurser fick jag tillräckligt mycket kunskap för att kunna börja. Spel är i de allra flesta fall realtids-applikationer och med det menas att man måste hinna med att räkna ut allt under tiden spelet går. Man kan inte som i en simulering sätta på den och sedan komma och titta på resultatet efter några timmar.

C eller C++

Jag hade från början bestämt mig för att skiva spelet i C++ men när jag började analysera vad som egentligen pågick under ytan i kompilatorn blev jag mer och mer skeptisk. Jag hade inte några större behov av alla häftiga funktioner som finns i C++. Resultatet blev hur som helst att jag använde lite C++-funktioner men framför allt skriver det mesta i C. mophuns gränssnitt är framför allt gjort för C så det blev mest naturligt. Det viktigaste var trots allt att jag fick det att gå så fort som möjligt! Sedan var det bara att börja och nu c:a 500 rader programmeringskod längre fram har jag ett halvfärdigt spel vilket jag tycker är ganska häftigt eftersom 500 rader inte är speciellt mycket. (Windows har 30 miljoner rader!)

DYI (Do It Yourself!)

Hur gör man för att göra ett spel själv då? Synergenix affärsidé bygger på att om man hjälper externa (inte anställda på Synergenix) programmerare så mycket som möjligt med att utveckla spel och sedan att sälja dem så kan man få mycket spel och en härlig community runt plattformen. Synergenix hjälper alltså programmerare att sälja spelet när det väl är klart vilket annars är väldigt knepigt. Synergenix har kontakter med i princip alla stora mobiltillverkare och alla stora operatörer runt hela världen. Man har också utvecklat ett mycket sofistikerat system för att förhindra piratkopiering, allt för att programmerarna skall vilja göra många spel. Självklart är utvecklingsverktygen för mophun helt gratis att ladda ner till datorn och man kan sedan få massor med gratis hjälp via det trevliga forumet som finns på mophuns hemsida. Synergenix kräver också att alla spel måste certifieras och det gör man bara om spelet uppfyller vissa kriterier som att man t.ex. inte får kopiera något spel (t.ex. Tetris), ha våldsförskönande inslag eller erotiska delar. Det är egentligen ingenting som Synergenix själva har lobbat för men mobiltelefontillverkarna kräver det och därför är det så. Men då kanske man tycker att det kan vara lite tungt att skriva ett helt spel bara för att sedan inte få det certifierat av någon anledning. Detta har man löst genom att man kan få lämna in sin spelidé innan man satt igång med själva programmerandet och kan då få den godkänd innan man börjar. Håller man sig sedan tillräckligt nära det man sa att man skulle göra kommer det inte att vara något problem att få det certifierat.

Vilka telefoner?

Vilka telefoner funkar detta på då? Än så länge finns mophun på Sony Ericsson T300 men den kommer snart på fler telefoner och som ni säkert förstår är den mycket bättre än den rådande standarden J2ME så snart har man säkert hela marknaden!

Till sist

Ni kanske tycker att jag låter lite väl lyrisk och att jag kanske är partisk eftersom jag är anställd vid Synergenix, men det är jag inte. Den som lyckas hitta ett ex-jobb med betalt skall vara mycket glad och jag berättar mest detta eftersom jag kan tänka mig att det finns teknologer som tycker det är kul att göra spel och att det också finns teknologer som kan tänka sig bre på lite extra på de knappa studiemedlen från CSN.

Gustaf Westerlund, e98


Emissionen är Konglig Elektrosektionens tidning vid KTH.

Valid

W3C html, W3C css, WAI aaa.