Baanbestanden in Ultimate Stunts zijn eenvoudige tekstbestanden met de extensie .track, en ze bevinden zich meestal in de tracks subdirectory van de databestanden. U kunt ze eenvoudigweg openen in uw favoriete text editor, ze wijzigen en opslaan. Merk op dat de banen die bij de standaard databestanden worden geleverd UNIX-stijl tekstbestanden zijn, wat betekent dat het openen in windows kladblok problemen kan geven. Windowsgebruikers kunnen ze openen met wordpad. Opslaan als DOS-stijl tekst is geen probleem aangezien Ultimate Stunts beide typen tekstbestanden kan lezen. Ik denk niet dat het Macintosh-stijl tekstbestanden kan lezen, dus Apple-gebruikers moeten opslaan in ofwel UNIX-stijl, ofwel in DOS-stijl.
TRACKFILE 4 5 1De eerste vier regels van het bestand zouden er altijd zoals dit uit moeten zien. De TRACKFILE tekst wordt gebruikt om te controleren of het geladen bestand echt een Ultimate Stunts baan is. De volgende drie regels deiniëren de lengte, breedte en hoogte van de baan. Deze getallen moeten altijd consistent zijn met de rest van het bestand. Als u de afmetingen van de baan verandert, dan moet u ook deze getallen veranderen om overeen te komen met de nieuwe grootte.
#properties: length width heigthDit is slechts een commentaartekst, het wordt genegeerd door de baan-lader. Eigenlijk zou u hier alles kunnen schrijven, omdat de lader alles negeert totdat het BEGIN leest.
BEGIN ENDDeze eerste sectie stelt u in staat om bepaalde textures vooraf te laden. We zullen dit hier niet gebruiken, omdat we alleen de standaard-textures op de tiles gebruiken. Daarom blijft deze sectie leeg.
BEGIN sky = environment/clouds.rgba horizon = environment/kyoto-horizon.png envmap = environment/spheremap.rgb lightdir = -0.69,-0.7,-0.2 lightcol = 0.2,0.2,0.5 ambientcol = 0.0,0.0,0.0 skycol = 0.3,0.3,0.8 horizonskycol = 0.9,0.9,0.9 fogcol = 0.6,0.6,0.35 envcol = 1,1,1 ENDIn deze sectie worden de omgevings-instellingen geladen, zoals achtergrond en belichtings-instellingen. De exacte betekenis van deze regels is gedocumenteerd in de track bestandsformaat documentatie. U kunt voorbeelden vinden in bestaande track bestanden, en u kunt experimenteren met andere waarden.
BEGIN tiles/empty.conf tiles/horiz.conf tiles/corner.conf tiles/roadhoriz.conf tiles/startfinish.conf ENDHier worden de tiles geladen. Op elke regel staat de bestandsnaam van het .conf-bestand van een tile. Het eerste bestand moet altijd de lege tile zijn.
#tile_id/rotation/heigthNog een commentaartekst. Zoals u kunt zien, kunt u commentaar schrijven tussen END en BEGIN. Nu begint de belangrijkste sectie:
BEGIN 1/0/0 1/0/0 1/0/0 1/0/0 1/0/0 2/3/0 2/2/0 1/0/0 1/0/0 3/0/0 4/0/0 1/0/0 1/0/0 2/0/0 2/1/0 1/0/0 1/0/0 1/0/0 1/0/0 1/0/0 ENDHier wordt de baan zelf beschreven. Elke tile-locatie wordt beschreven met een set van drie nummers. De hele sectie is een "top-view" van de kaart. Zoals u kunt zien, heeft deze baan 5 regels van 4 tiles, wat precies overeen komt met de grootte aan het begin van het bestand. Het is belangrijk dat er voor elke tile een witruimte is die uit precies één tab bestaat. Al het andere, zoals spaties, is verkeerd. U zou moeten controleren of uw tekst-editor tabs naar spaties converteert, en die feature uitschakelen indien mogelijk.
De eerste van de drie nummers verwijst naar één van de geladen tiles. 0 verwijst naar de eerste tile, 1 naar de tweede enz.. Zoals u kunt zien hebben de tiles aan de randen allemaal een 1, wat een horizontaal vlak zonder weg is. In de middelste 3x2 tiles kunt u vier keer een 2 zien, wat een scherpe bocht-tile is, één keer een 3 (rechte weg) en een 4 (start/finish). Nu zou u een idee moeten hebben van hoe de baan er uit ziet.
Het tweede nummer definieert de rotatie. 0 is een niet-geroteerde tile, 1 betekent een 90 graden rotatie tegen de klok in, 2 is een 180 graden rotatie, en 3 is een 270 graden rotatie tegen de klok in, wat uiteraard overeen komt met een 90 graden rotatie met de klok mee. Zoals u kunt zien hebben de rechte weg en de start/finish tile hun oorspronkelijke oriëntatie. De bocht-tiles hebben uiteraard elk een andere oriëntatie. Soms is trial and error de snelste manier om de juiste oriëntatie te vinden.
Het derde nummer is de vertikale positie van de tile. Aangezien dit een eenvoudige baan is, heeft elke tile de zelfde hoogte.
BEGIN 2,2,0: 2,1,0: 1,1,0: 1,2,0: 1,3,0: 2,3,0: 2,2,0: ENDDeze sectie beschrijft de route die de auto's zouden moeten volgen. Als auto's deze route niet volgen krijgen ze penalty-tijd.
Elk item in deze sectie bestaat uit drie indices (gescheiden door komma's), een ":", en dan (optioneel) een tijd. De drie indices verwijzen naar een bepaalde tile, en de tijd werd in een oudere Ultimate Stunts versie ooit gebruikt om de penalty-tijd te berekenen. Zie ook de track-bestandsformaatsdefinitie.
BEGIN 1/0/0 1/0/0 1/0/0 1/0/0 1/0/0 2/3/0 2/2/0 1/0/0 1/0/0 3/0/0 3/0/0 1/0/0 1/0/0 3/0/0 3/0/0 1/0/0 1/0/0 3/0/0 3/0/0 1/0/0 1/0/0 3/0/0 3/0/0 1/0/0 1/0/0 3/0/0 3/0/0 1/0/0 1/0/0 3/0/0 4/0/0 1/0/0 1/0/0 2/0/0 2/1/0 1/0/0 1/0/0 1/0/0 1/0/0 1/0/0 ENDNu moet u ook de getallen aan het begin van het bestand veranderen in:
TRACKFILE 4 10 1Dit voegt enkele rechte weg tiles toe. Dat zou niet te moeilijk moeten zijn om te begrijpen. Nu gaan we een niveau hoger werken:
BEGIN tiles/empty.conf tiles/horiz.conf tiles/corner.conf tiles/roadhoriz.conf tiles/startfinish.conf tiles/diag2.conf tiles/roaddiag.conf ENDdiag2.conf is een helling zonder weg, en roaddiag.conf is een helling met een weg erop. Nu veranderen we de baan-sectie in:
BEGIN 1/0/0 1/0/0 1/0/0 1/0/0 1/0/0 2/3/0 2/2/0 1/0/0 1/0/0 3/0/0 3/0/0 1/0/0 5/2/0 6/2/0 6/2/0 5/2/0 1/0/1 3/0/1 3/0/1 1/0/1 5/0/0 6/0/0 6/0/0 5/0/0 1/0/0 3/0/0 3/0/0 1/0/0 1/0/0 3/0/0 4/0/0 1/0/0 1/0/0 2/0/0 2/1/0 1/0/0 1/0/0 1/0/0 1/0/0 1/0/0 ENDDit heeft een boel veranderingen vergeleken met het vorige voorbeeld, dus ik zal het hier proberen uit te leggen. Als eerste de tile ID nummers. De nieuwe nummers 5 en 6 verwijzen naar de nieuwe tiles diag2.conf en roaddiag.conf. U ziet dat ik de enen heb vervangen door vijven en de drieën door zessen om de hellingen te krijgen. Vervolgens het rotatienummer. De "zuid"-helling heeft rotatie 0 omdat de helling-tiles toevallig de juiste oriëntatie hebben voor die helling. De "noord"-helling heeft exact de tegenovergestelde oriëntatie, en dus wordt de 180 graden oriëntatie gebruikt.
Tot slot zou ik het hoogte-getal willen uitleggen. Alhoewel de hellingen hoger liggen dan de grond hebben ze nog steeds een hoogte-getal 0. Dat is zo omdat hoogte 0 betekent dat de tile geometrie tussen 0 en 18 meter boven de grond is, hoogte 1 betekent tussen de 18 en 36 meter, enzovoort. De helling is in het bereik 0..18 meter, dus het hoogtegetal is 0. Het hoogtegetal verandert wel voor de tiles in het midden van de heuvel. Aangezien het grondniveau van deze tiles op de bodem van de tile ligt, moet het 1 tile eenheid (18 meter) opgehoogd worden om overeen te komen met de bovenkant van de hellingen. Probeer het op 0 in te stellen als u mij niet begrijpt. U zult zien wat er gebeurt.
Dus, hoe wordt dit gedaan? Het basis-idee is om meer dan één track-sectie te definiëren. Dit is een voorbeeld:
TRACKFILE 4 10 2 #properties: length width heigth BEGIN END BEGIN sky = environment/sky3.rgb horizon = environment/kyoto-horizon.png envmap = environment/spheremap.rgb lightdir = -0.69,-0.7,-0.2 lightcol = 0.2,0.2,0.5 ambientcol = 0.0,0.0,0.0 skycol = 0.1,0.1,0.5 END BEGIN tiles/empty.conf tiles/horiz.conf tiles/corner.conf tiles/roadhoriz.conf tiles/startfinish.conf END #tile_id/rotation/heigth BEGIN 1/0/0 1/0/0 1/0/0 1/0/0 1/0/0 2/3/0 2/2/0 1/0/0 1/0/0 3/0/0 3/0/0 1/0/0 1/0/0 3/0/0 3/0/0 1/0/0 1/0/0 3/0/0 3/0/0 1/0/0 1/0/0 3/0/0 3/0/0 1/0/0 1/0/0 3/0/0 3/0/0 1/0/0 1/0/0 3/0/0 4/0/0 1/0/0 1/0/0 2/0/0 2/1/0 1/0/0 1/0/0 1/0/0 1/0/0 1/0/0 END BEGIN 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 ENDOm te beginnen, bekijk eens het hoogte-nummer aan het begin van het bestand. Het is nu 2, omdat we 2 lagen hebben. In uw eigen banen kunt u elk willekeurig aantal lagen gebruiken, zolang het overeen komt met het getal aan het begin van het bestand.
Zoals u kunt zien heb ik de tweede laag gevuld met lege tiles (0, verwijzend naar tiles/empty.conf). Als u werkt met meerdere lagen, zult u de lege tile vaak gebruiken, omdat u de extra lagen alleen nodig heeft op bepaalde plaatsen. Recente Ultimate Stunts versies hebben een optimalisatie die het renderen stopt zodra een tile ID 0 wordt gevonden. Dit betekent dat de baan-maker moet zorgen voor twee dingen:
We zullen deze kennis gebruiken om een tunnel te bouwen. Maar voordat we dat kunnen doen, moeten we de tunnel-tiles zelf laden:
BEGIN tiles/empty.conf tiles/horiz.conf tiles/corner.conf tiles/roadhoriz.conf tiles/startfinish.conf tiles/tunnelin1.conf tiles/tunnelhoriz.conf tiles/diag2.conf ENDDe nieuwe tiles zijn tunnelin1.conf, wat de tunnelingang is, tunnelhoriz.conf, wat een normale rechte tunnel-tile is, en diag2.conf, die we al kennen. Nu kunnen we de eerste laag definiëren:
BEGIN 1/0/0 1/0/0 1/0/0 1/0/0 1/0/0 2/3/0 2/2/0 1/0/0 1/0/0 3/0/0 3/0/0 1/0/0 7/2/0 5/2/0 5/2/0 7/2/0 1/0/1 6/0/0 6/0/0 1/0/1 7/0/0 5/0/0 5/0/0 7/0/0 1/0/0 3/0/0 3/0/0 1/0/0 1/0/0 3/0/0 4/0/0 1/0/0 1/0/0 2/0/0 2/1/0 1/0/0 1/0/0 1/0/0 1/0/0 1/0/0 ENDWe hebben twee hellingen gemaakt met tunnelingangen, en de tunnel aan de binnenkant. We hebben ook de horizontale grond bovenop de heuvel toegevoegd, aan de linker- en rechterkant. Nu kunt u zien waarom we twee lagen nodig hebben: we willen ook gras boven de tunnels. Dat wordt gedaan in de tweede laag:
BEGIN 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 1/0/1 1/0/1 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 0/0/10 ENDDat is de truc! Nu kunt u viaducten maken, loopings, en alle andere soorten dingen die meerdere lagen nodig hebben. Het enige wat u nu uit moet vinden is wat voor soorten tiles beschikbaar zijn. Het zou kunnen helpen om in test.track te kijken. Test.track wordt gebruikt als een "test-locatie" voor nieuwe tiles, dus de meeste tiles worden gebruikt in die baan.