Mini Plane: het ontwikkelen van een iPhone-game, deel 3 (dagboek)

Deel 3 van het dagboek van Pascal Bestebroer, waarin hij uitlegt hoe hij de iPhone-game Mini Plane heeft gemaakt. Deze keer gaan we bezig met objectlijsten en met de special effects.
Pascal Bestebroer - · Laatst bijgewerkt:

mini planeNa een leuk begin gemaakt te hebben in de vorige afleveringen komen we nu op een punt waarop we een zeer grote stap gaan maken. Het vliegtuigje is leuk,en de achtergrond zorgt dat het er al redelijk mooi uitziet, maar natuurlijk maakt dit nog geen spel!


Als eerste even wat interactie met de lezers van deze artikelen. Zoals al vermeld in de reacties zal ik in een later artikel wat links geven naar tutorials en andere handige sites die ik zelf heb gebruikt om dit alles aan de praat te krijgen. Waar mogelijk zal ik ook wat kleine ‘code-snippets’ geven en dit zal dus een iets technischer artikel worden, ondanks dat ik de andere artikelen zo open mogelijk probeer te houden voor iedereen die een beetje interesse heeft in het maken van games. Dus laat eventuele vragen of verzoekjes achter in de reacties!

Objectlijsten

Een groot gedeelte van de game-engine is het bijhouden van alle objecten op het scherm. Je moet dit een beetje zien als een stukje programmacode, dat lijsten bijhoudt van alles wat ‘levend’ is. Het probleem met deze lijsten is dat voor elke keer dat we het scherm opnieuw tekenen, de hele lijst anders kan zijn. Tegenstanders vliegen van het scherm af en zijn voor de game-engine dus ‘dood’, maar ook nieuwe tegenstanders vliegen het scherm in en moeten bijgehouden gaan worden door deze lijst.

Waarom dit toch zo’n groot deel van het spel is, is omdat dezelfde techniek gebruikt wordt voor de gebouwen, de vliegtuigen, de helikopters, de bonusobjecten, maar ook voor wat ik altijd de special effects noem. Oftewel: explosies, rookpluimen, en puntentelling.

In het spel gebruiken we twee lijsten: een lijst voor de obstakels waar interactie mee is en een lijst voor de niet interactieve obstakels, die we dus ‘special effects’ noemen.

De game-engine loopt deze lijsten elke ‘update’ af. Een update is niets anders dan het opnieuw tekenen van het scherm, en daarbij alles wat op het scherm is te verplaatsen van punt A naar punt B (zoals ik al heb uitgelegd in het eerste deel van deze serie artikelen). Zodra een object van het scherm af is, door bijvoorbeeld een botsing of omdat hij simpelweg het beeld is uitgevlogen, wordt hij van de lijst verwijderd en weet het spel dat dit object niet meer bijgehouden hoeft te worden.

Special effects

De rook die achter ons vliegtuig hangt is zo’n voorbeeld van een special effect. Een verzameling van willekeurige witte cirkels die op een willekeurige transparante manier worden getekend en dan langzaam per update steeds transparanter worden, totdat ze niet meer zichtbaar zijn. Bij elke update van het spel zetten we een nieuw, willekeurig wit cirkeltje achter het vliegtuig, en op die manier hebben we ons een rookeffect.

Na veel zoekwerk op internet ben ik er uiteindelijk achtergekomen wat de beste manier is om die lijsten op de iPhone bij te houden. Gelukkig is de code van het laten zien van de special effects vrij simpel en werkt het in bijna elke taal hetzelfde (voornamelijk optellen en aftrekken) dus na een klein beetje copy+paste van de Android-versie en daarna wat aanpassingswerkzaamheden hebben we de mooie rookpluim achter ons vliegtuigje hangen.

Het mooiste is natuurlijk dat de code voor het bijhouden van lijsten nu ook gebruikt kan worden voor de obstakels. Na een paar uurtjes kopieer-, plak- en aanpaswerk hebben we zomaar opeens een bijna compleet lijkend spel! We hebben gebouwen, tegenliggers, rookpluimen en nog veel meer. Helaas staat nog niet alles op de juiste plek en werkt nog niet alles zoals het moet, maar het ziet er toch al best leuk uit!

Het erge is natuurlijk dat met al dit spektakel, dat vrij snel ingebouwd is, we nog ver van een volledig spel zijn. Er zijn nog veel kleine foutjes en bugs die we moeten gaan opsporen en oplossen (dat is het nadeel van kopieer- en plakwerk tussen twee verschillende programmeeromgevingen) en daarnaast zal ook erg veel werk gaan zitten in de menu-interface, de online high-scores en al die elementen aan elkaar knopen tot een mooi geheel.

Voor nu is het gewoon even genieten van hoe het spel eruit ziet!

Click here to display content from YouTube.
Learn more in YouTube’s privacy policy.

Reacties: 16 reacties

  1. en wanneer komt dit spel uit als ik vragen mag?

  2. is dit echt nog een mock-up of komt het er ook zo uit te zien? want vind het een beetje flauw..

  3. @Mark: Wat is er precies flauw aan?

  4. @Mark: Wat is er flauw aan? :p

  5. @Mark: Snap niet wat er flauw aan kan zijn. Lijkt me een erg leuke game.

  6. Het heeft gewoon het idee weg van copter en ik moet zeggen dat dit er veel leuker en beter uitziet. Terwijl ik copter al super vind!!! Dit wordt hem zeker…..!!! Erg goed werk lever je ik kan het niet genoeg zeggen!!

  7. er staan wel veel hijkraanen in die stad
    of is dat omdat het spel nog under construction is…

  8. @wouter: nee dat is omdat er zoveel spelers steeds in die flat gebouwen duiken, en er dus veel te repareren is 😉

  9. @hidde: Als het goed is maken we de game deze week af en dan is het aan Apple of zij de game goedkeuren…

  10. en wanneer kunnen we dit fantastische spel verwachten? 🙂

  11. Leuk om te lezen tot nu toe Pascal, een kijkje in de keuken van een ontwikkelaar. Voor mij vooral ook leuk omdat ik zelf ook bezig ben met een iPhone OS spel (voor de iPad, dat wel) en ook van 0 af aan ben begonnen met UIKit en iPhone OS (mijn ‘echte’ werk is voornamelijk C++, op unix).

    Nu je je spel voor 2 platformen hebt gemaakt, wat is nu je mening over de programmeer omgeving voor de iPhone, en de libraries die je ter beschikking hebt? En wat vind je van de taal Objective-C? Is het nu prettiger om voor Android te ontwikkelen of voor de iPhone?

    Ik heb zelf dus geen ervaring met Android, maar ik moet zeggen dat na wat gewenning de omgeving die Apple heeft neergezet voor ontwikkelaars me heel erg bevalt. In het begin zag ik vooral nadelen in Objective-C, vooral omdat ik heel erg gewend was om in termen van C++ en STL te denken, waar je tegen precies dezelfde problemen aanloopt maar wel hele andere oplossingen gebruikt. Maar na verloop van tijd ben ik de taal steeds meer gaan waarderen eigenlijk, er zijn nog steeds wel dingen die me minder aanspreken (de syntax maakt de code snel ‘rommelig’ om te lezen bijvoorbeeld) maar over het geheel genomen ben ik erg onder de indruk van het gemak waarmee je veel dingen voor elkaar kunt krijgen.

    In ieder geval succes met de officiele lancering van je spel, ik zal hem zeker gaan checken in de app store, alleen al vanwege de moeite die je hebt genomen om je ervaringen hier te delen!

  12. @Aline: We zijn benieuwd, al bekend wat de prijs van dit spel gaat worden? (of gratis)

  13. @Bart: Op dit moment hebben we nog geen idee wat het spel zal gaat kosten… daar kijken we meestal pas naar als het spel volledig af is…

  14. @WouterB: persoonlijk ben ik nog steeds liever bezig voor Android. Maar dat komt omdat ik al 5 jaar lang mobiele games maak in Java, en Android dus een erg kleine omschakeling was.

    Object-C was even wennen, maar valt erg mee. Wat betreft de libraries en mogelijkheden, volgens mij zijn die vrijwel gelijk en zijn het beide twee erg sterke en goed doordachte omgevingen om voor te ontwikkelen.

    Het ergste van de iPhone tools is wel xCode als editor.. ik blijf er ruzie mee hebben.. en dan is Eclipse voor Android ontwikkeling toch al net iets prettiger naar mijn mening.

    Ook heb ik bij objective-c het gevoel dat ik extra veel type werk heb door alle labeltjes, headers, synthesizing, enz.

Reacties zijn gesloten voor dit artikel.