De Ultimate Stunts track editor (ustuntstrackedit)
Inleiding
De Ultimate Stunts track editor zal u in staat stellen om nieuwe banen te maken
en bestaande banen te bewerken. Op dit moment (versie 0.7.0) is de track editor
nog erg beperkt: het is slechts mogelijk om tiles te plaatsen/verwijderen op
de baan, en om banen te importeren vanuit het originele spel Stunts.
Gebruik
Op dit moment is de gebruikersinterface nog vrij eenvoudig. In het hoofdvenster
is er een 3D view van de baan, de naam van de baan erboven, en een menu aan
de linkerkant. Het menu kan gebruikt worden met de muis. Voor het rondbewegen
in de 3D view kunnen de volgende controls gebruikt worden:
- "Slepen" met de linker muisknop: roteren van de camerapositie
- Pijltjestoetsen: verplaats de cursor naar
links/rechts/voor/achter
- PgUp/PgDn toetsen: verplaats de cursor naar boven/beneden
De "cursor"positie is zichtbaar als de positie van de knipperende tile. De
vertikale kolom van tiles op de cursorpositie is ook zichtbaar als een
witte balk van lijnen:
De baan bewerken
Het "knipperen" van de cursor laat twee toestanden van de baan zien: de
huidige toestand, en hoe het er uit ziet als u op de Enter toets drukt. Soms
is er geen verschil, en in deze gevallen zult u geen geknipper zien. De
standaard bewerkmodus is om individuele tiles in te voegen (eigenlijk is dit
de enige bewerkmodus in versie 0.7.0). Dus, als u op Enter drukt, wordt de
geselecteerde tile ingevoegd op de cursorpositie. Bestaande tiles op die
positie worden daarbij verwijderd. De volgende toetsen kunnen gebruikt
worden:
- Enter: plaats de tile. Bestaande tiles op die positie zullen
verwijderd worden.
- Insert: plaats de tile. Bestaande tiles op die positie zullen
niet verwijderd worden.
- Delete: verwijder alle bestaande tiles op de cursorpositie.
- Tab: selecteer een ander tilemodel.
- Shift+Tab: selecteer een ander tilemodel (doorloopt
tilemodellen in omgekeerde volgorde).
- r: roteer het tilemodel.
- Ctrl+z: maak de laatste actie (vervangen/invoegen/
verwijderen) ongedaan.
- Ctrl+Shift+z: doe de laatste ongedaan gemaakte
actie opnieuw.
Op dit moment is de beschikbare set tilemodellen beperkt tot de selectie van
tiles die al gebruikt worden in de baan. Ook kunnen de afmetingen van de baan
niet veranderd worden, route informatie kan niet veranderd worden, en
omgevings-instellingen (achtergrond, belichting etc.) kunnen niet bewerkt
worden. Op dit moment moeten deze dingen allemaal handmatig gedaan worden.
Stunts banen importeren
Één van de opties in het track editor menu is om banen te importeren vanuit
het originele "Stunts" (4D Sports Driving) spel. Het eerste dat u moet doen is
de directory opgeven waar de Stunts banen zich bevinden. Dit is een absoluut
pad, dus het is niet relatief ten opzichte van de Ultimate Stunts datadir.
De "." directory is de directory vanwaaruit de track editor gestart is. In de
toekomst zal deze vraag waarschijnlijk vervangen worden door een
gebruikersvriendelijkere directory browser. Nadat u de juiste directory
geselecteerd heeft kunt u op een baanbestand klikken, zodat het geïmporteerd
wordt.
Configureren van de Stunts importeer functie
De Stunts import functie kan geconfigureerd worden door een bestand te bewerken
dat zich in de Ultimate Stunts data directory bevindt: misc/trackedit.conf.
In dit configuratiebestand kan bijna het hele baan-importeer proces aangepast
worden met de variabelen in de [trkimport] sectie. Dit importeerproces heeft
de volgende stappen:
1: Laad een template baan
Ultimate Stunts laadt een normaal Ultimate Stunts baanbestand, dat zal dienen
als uitgangspunt voor de geconverteerde baan. Deze baan zal later bewerkt
worden, afhankelijk van de inhoud van het .trk bestand. De bestandsnaam van
deze templatebaan kan ingesteld worden met de templatefile variabele,
bijvoorbeeld:
templatefile = misc/trackedit.template
De template baan moet minimaal 30*30 tiles breed en lang zijn, en minimaal
2 tiles hoog, of meer, afhankelijk van de configuratie van de rest van
het importeerproces. Alle tiles en textures die ooit gebruikt zullen worden in
de rest van het proces moeten aanwezig zijn in de template baan. De
begintoestand van de tiles moet een vlakke, horizontale grond zijn.
2: Laad het terrein
Vervolgens worden de terrein en tile item bytes in het .trk bestand verwerkt.
Alle bytewaarden zijn hier hexadecimale waarden, maar zonder de gebruikelijke
0x prefix. Wat hier gebeurt hangt in de eerste plaats af van het terrein:
- Als de terrein byte 00 is (vlakke grond), wordt alleen de item byte
verwerkt
- Als de terrein byte tussen (inclusief) 01 en 05 zit (water), dan
wordt eerst een water tile geplaatst door de terrein byte
te verwerken, en dan wordt de item byte verwerkt.
- Als de terrein byte 06 is (hoge vlakke grond), dan wordt de item
byte verwerkt, en daarna wordt de tile hoogte vergroot.
- Als de terrein byte tussen (inclusief) 07 en 0a zit (diagonale
grond), dan wordt een tile geplaatst afhankelijk van de
combinatie van terrein en tile bytes.
- Voor andere tiles wordt alleen de terrein byte verwerkt (op
andere tiles heeft een Stunts baan nooit een item)
Als een terrein byte met hexadecimale waarde xy wordt verwerkt, dan
wordt dat gedaan volgens de variabele terrain_xy in het
configuratiebestand. Als een item byte met de waarde pq wordt verwerkt,
dan wordt dat gedaan volgens de variabele tile_pq. Tot slot, voor de
terrein bytes tussen 07 en 0a, het verwerken van een combinatie van terrein
byte xy en item byte pq wordt gedaan volgens de variabele
terrain_xy_pq.
Alle waarden van de variabelen terrain_xy, terrain_xy_pq en
tile_pq hebben het zelfde formaat. Deze waarden bevatten nul of meer
eenheden van de volgende vorm:
x,y,z:tileID/rotatie/hoogte;
Elk van deze eenheden zorgt ervoor dat één tile veranderd wordt. De waarden
x,y,z zeggen welke tile veranderd zal worden. tileID/rotatie/hoogte zijn
de nieuwe instellingen van de tile, met de zelfde betekenis als de drie waarden
in het baan-bestandsformaat. x,y en z zijn positie-relatief ten opzichte van de
tile die verwerkt wordt. x en y zijn de relatieve horizontale positie in de
baan, en z is de laag in de baan (de vertikale positie). Dus, 0,0,0 is de
laagste tile op de verwerkte positie, 0,0,1 is de tweede-laag tile op die
positie, enz.. Posities zoals 1,0,0 of 0,1,2 zijn buiten de tile die verwerkt
wordt, maar hen veranderen is toegestaan voor grote tiles.
De "grote tile" item waarden fd, fe en ff worden niet verwerkt.