Utveckling för iPhone; Del 1 – Förberedelser

För att utveckla för iPhone behöver man två saker, iOs SDK som man får genom att registrera sig som utvecklare hos apple samt en Mac med processor från Intel att köra utvecklingsmiljön på. Man behöver faktiskt inte ens en iPhone, eftersom utvecklingsmiljön inkluderar simulatorer för iPhone och iPad.

Jag äger ingen Mac.

Således kommer jag här att skriva om vad man kan göra för att förbereda sig för utveckling till iPhone, utan att ha allt som krävs. Min första förberedelse var att läsa på om Objective C. De ramverk som finns för utveckling till iPhone är skrivna i och för Objective C, nu kan man förvisso från Objective C anropa kod från ett programmeringsspråk som är mig mer välbekant, C++. Jag väljer ändå att lära mig Objective C eftersom det antagligen kommer göra interaktionen med ramverket, API:n, smidigare och jag därmed kommer lära mig API:n snabbare. För att få en bild av vad Objective-C är har jag hittat en text som passade mig väldigt bra, ”From C++ to Objective-C”. För personer utan bakgrund i C++-programmering finns det säkert bättre lämpade resurser. Den bild jag hittils skaffat mig av Objective-C är väldigt positiv, men jag antar att jag, som vanligt, kommer stöta på osmidigheter när jag väl börjar koda mer, så vid det här laget är det svårt att säga om jag kommer gilla det bättre eller sämre än något annat programmeringsspråk. Kanske kommer senare en uppföljningspost av mina erfarenheter när jag dykt djupare i Objective-C, än är det mycket jag inte kan uttala mig om, som t.ex. prestanda.

Vad gäller API:t så finns det massvis med information. Dels kan man läsa dokumentationen på Apples hemsida, men det finns också tonvis med föreläsningar både på iTunes University och på resten av nätet. Beroende på hur mycket och vad man programmerat innan kan olika föreläsningsserier vara relevanta att börja med, det finns också en hel del information om hur man bör designa sin applikation och dess gränssnitt, vilket kan vara väl värt att lägga tid på även som programmerare för att lära känna plattformen och veta vilka UI-komponenter som bör användas till vad. Mer om detta kan man läsa i iPhone Human Interface Guidelines.

Nästa sak man vill läsa in sig på, speciellt om man vill utveckla spel, är OpenGL ES, där ES står för Embedded Systems. iPhone och iPod Touch stöder OpenGL ES 1.1, nyare iPhones (3GS och 4), tredje generationens iPod Touch samt iPad:en stöder även OpenGL ES 2.0. Är skillnaden stor undrar ni? OpenGL ES 1.1 är definierat mot OpenGL 1.5 och tillhandahåller en delmängd av dess funktioner. OpenGL ES 2.0 är definierat mot OpenGL 2.0, den stora skillnaden är att 2.0 erbjuder en programmerbar renderingspipeline. John Carmack visade upp ett imponerande teknikdemo på senaste QuakeCon, och Epic Games har nyligen släppt ett teknikdemo på App Store, Epic Citadel,  som visar upp Unreal 3 motorn på iPhone. Det här är praktexempel på vad som inte går att göra med OpenGL ES 1.1 men som är teoretiskt möjligt i 2.0 och nu även visats vara praktiskt möjligt på iPhonens hårdvara.

Är då OpenGL ES 1.1 passé och onödigt att lära sig? Jag skulle vilja påstå motsatsen. Den stora anledningen är naturligtvis saknaden av bakåtkompabilitet i OpenGL ES 2.0, om du skriver en App för 2.0 kommer den inte att fungera på äldre iPhones och iPods. Men om jag får ta på mig speldesignhatten ett tag så vill jag även påstå att du i de flesta fall inte behöver alla funktioner som 2.0 erbjuder, många spel är fortfarande av casual-typ, och jag tror att det kommer så förbli. Visst kommer det häftiga titlar från stora spelföretag, med gigatexturer och parallaxmapping, men många spelare kommer fortsätta skjuta hönor på gröna grisar och balansera bollar genom hinderbanor, utan att behöva en komplex tredimensionell värld. När vi dessutom tittar på Apples kommande ‘Game Center’ som är riktat mot multiplayer och sociala spel, inser vi att det för många spel kommer vara viktigare att få med alla användare än att ha den snyggaste renderingen, även om andelen användare som inte har stöd för 2.0 i sina enheter är försvinnande.

Således är det en bra idé att utforska OpenGL både med fast och programmerbar pipeline. Här finns det verkligen tonvis med information. Om man letar efter en lättiggänlig kodbas att börja utforska OpenGL med kan jag rekommendera Neon Helium Productions som har tutorials men även en ”basecode” som den som snabbt vill komma igång att testa kan använda sig av. För den som direkt vill prova på OpenGL ES utan att ha tillgång till en iOs-enhet finns en emulator från imagination här (Du behöver registrera dig för att få ladda ned), jag har dock inte kört den än eftersom den inte har stöd för 64-bitars Linux och kan således lovorda den.

Här får jag begränsa mig, innan inlägget blir för långt och timman för sen, i nästa inlägg hoppas jag kunna fördjupa mig i någon eller några av de saker jag nämnt här.

Skrivet av Jonas Abrahamsson.

There are 4 Comments to "Utveckling för iPhone; Del 1 – Förberedelser"

  • Mårten Jonsson skriver:

    Det finns alternativ till apples egna SDK, för att slippa köra mac. DragonFireSDK tilelxempel. Håller för tillfället på att utveckla i det, och det verkar ganska bra. Innehåller emulatorer och allt sådant.

    • jonas skriver:

      Jo, jag har tittat lite på alternativen, men t.ex. i DragonFire verkar det som att man bara får tillgång till 2D-utritning, och inte ens Apple:s GUI-komponenter. Visst finns det många spel man kan göra i 2D som säkert går bra att göra i DragonFire och liknande, men tillgång till OpenGL-API:t känns iaf. som ett måste om man ska göra lite häftigare spel.
      Sen vill man ju också som teknikintresserad kunna om inte utveckla motorn själv så iaf. ha källkoden till den så att man kan modifiera den efter behov. :)

  • Mårten Jonsson skriver:

    Jo, det finns väl för och nackdelar med båda. Min programmerare var väldigt nöjd med att slippa Objective C, och att slippa använda mac är ju alltid enorm fördel:)

    • jonas skriver:

      Jo, att splippa använda mac håller jag med om kan vara en fördel. Även om jag sen OS X släpptes har varit lite av en smyg-apple-fanboy, så är ju interfacet hiskeligt.
      Å andra sidan, windows är inte så mycket bättre.

      Objective C däremot, verkar ju vid en första anblick lika vettigt och ovettigt som C++, visst har det andra styrkor och svagheter och det får man ju vänja sig vid, men jag är alltid nyfiken på nya språk och miljöer…

Write a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 
Mjao logga

Sidor

Kategorier