Archive for "Sep 05 2010"

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.

 
Mjao logga

Sidor

Kategorier