torsdag 30 december 2010

Spara och återskapa levels

Levels kommer i grupper. Gruppen kallar vi för en galax och en level är ett solsystem i galaxen. Spelaren väljer vilken level som ska spelas i aktiviteten LevelPicker:



Varje galax har sin "palett", dvs tillhörande rådata som bakgrundsbilder, monster, planeter, ljud mm. Dessa defineras (kommer att defineras) i en xml-fil och förallokeras för att korta ner tiden det tar att starta en level. Varför definera detta i xml-filer? Jo, det är det bästa sättet att peka ut resurser i Android.



Varje level beskrivs i binärfiler. Filen är en serie instruktioner för att skapa en komplett level. Levels och deras tillhörande data kopplas samman i leveltree.xml.

Levelfiler skapas i LevelSerializer (ren java), och packas upp i LevelBuilder (del av Android-koden).

Binärfilens protokoll
Det första som står i filen är dess versionsnummer (en int), som måste vara samma över hela Level-systemet för att fungera. Sedan följer instruktioner i form command-data-command-data osv. Commands är alltid representerade med en Java short, datat på olika form beroende på vad som står där. Instruktionsuppsättningen är självdokumenterande i LevelSerializer.java.

Efter versionsnumret defineras varje GameObject, i den ordning som de ska uppträda under GameObjectManager.

För varje GameObject läses först dess fields in (såsom id, position, hastighet) i valfri ordning. Sedan läses varje GameComponent in i den ordning de ska uppträdai sitt GameObject.

Inga kommentarer:

Skicka en kommentar