karatetlacitka.png (12925 bytes) Intro Buildable objects Effects Parameters Extra Home

Intro

Celé se to dělí zhruba na 3 typy tagů:
  • Buildable objects jsou všechny "objekty" co si musíš předem vytvořit - definovat, např obrázek, hudba, 3d objekt, text atd.
  • Effects dělají právě ty efekty, posunutím sprajtu začínaje 3d tunelem konče.
  • Parameters functions jsou parametry a funkce kterýma ovládáš efekty.
Pak ješte dalších 5 "speciálních" tagů:
  • <MAIN> nazevdema |0|1 </MAIN> bez tohoto tagu ti to nepojede. Musí ho obsahovat každý skript.
  • <KSCRIPT>...</KSCRIPT> ohraničuje část s názvem dema a pořadím Kpartů.
  • <ID> nazevdema </ID> název dema nebo Kpartu. Musí být součástí tagu <KSCRIPT>...</KSCRIPT> a taky <PLAY>...</PLAY>
  • <PLAY> nazevKpartu |500|0|1 </PLAY> Taky musí být součástí tagu <KSCRIPT>...</KSCRIPT>. Více.
  • <KPART>...</KPART> v něm jsou všechny ty efekty a parametry, zkrátka tady se to všechno odehrává. Kpart musí mít taky své <ID> nazevKpartu </ID>, které uplatníš v tagu <PLAY>...</PLAY>

Udělej si sérii objektů (Buildable objects), které mají tag co je identifikuje, název (label) a další parametry podle typu. Například pro bitmapový obrázek: <Kimg> myimage1 |data/jamajka.iff </Kimg>, který vytvoří "objekt" s názvem myimage1 použitelný pro jakýkoli grafický efekt. Dál už budeš používat jenom název myimage1. Samozřejmě ho můžeš použít vícekrát i v různých "rolích". Následuje část <KSCRIPT>...</KSCRIPT> která obsahuje název dema a pořadí "přehrávání" Kpartů. Kparty můžeš přehrávat rychle, pomalu, třeba od půlky nebo pozpátku. Mohou se i opakovat, přehrávat každý jinou rychlostí a pod. Přehrávání začíná od zhora dolů. A konečně části <KPART>...</KPART> (nebo jenom jedna). Kparty se skládají z "efektů" a jejich parametrů. Je potřeba vědět že efekty se chovají jako vrstvy. To znamená že když mám třeba 3 efekty přes sebe, efekt co je zapsán jako první v pořadí bude vespod a třetí bude navrchu. V Kpartu nemusí být žádná grafika ale třeba jenom spustí hudbu nebo resetne paletu.

schema.png (10102 bytes)
Obrázek ukazuje "demo" s názvem myscript složené ze dvou objektů Kimg a dvou Kpartů. Každý Kpart má dva efekty (SetPalette a Sprite).

Tag <MAIN> může být klidně i na konci skriptu, stejně taky <KSCRIPT>, nemusíš tedy striktně zachovávat pořadí těchto částí jako na obrázku. Karate si to vždy najde a podle názvů správně identifikuje. Kdyby něco nehrálo, vyhodí celkem srozumitelnou hlášku i s číslem řádku kde se vyskytla chyba. Sláva autorovi.

V Karate můžeš psát komentář, téměř kamkoliv ale ne dovnitř tagu (ve tvaru: <Tag>... uvnitř ...</Tag>).   Jsou dvě vyjímky, můžeš psát komentáře do <KPART>...</KPART> tagu a <KSCRIPT>...</KSCRIPT> tagu.

dobre.png (9214 bytes)
Takhle je to správně.
spatne.png (8427 bytes)
Takhle tedy ne.

Jinak do tagu se prostě komentář psát nemá (ale to dá rozum). V textu co je mezi <KPART> a </KPART>, se Karate zajimá pouze o 2 typy tagů: <ID>...</ID> a <Fx>...</Fx>. Ještě teda <Pa>...</Pa>, ale ty jsou součástí <Fx>. V textu mezi <KSCRIPT> a </KSCRIPT> se Karate divá jen po <ID>...</ID> a <PLAY>...</PLAY>. Vlastně všechen text co není uzavřen v tagu Karate ignoruje a považuje za komentář, je tedy velmi jednoduché psát komentáře.

Důležité je vědět že tagy se musí psát přesně.
<Kpart>=dobře, < Kpart > nebo <Kpart > nebo < Kpart>=špatně. Změníš-li znak nebo dáš mezeru v tagu, tak se vypne a je považován za komentář! To je ale taky výhoda když chceš vypnout nějaký efekt, nemusíš ho nějak přesunovat mazat atd. jenom ho vypneš.

Všechen text je non case-sensitive. <Kpart> je stejné jako <KPArt> nebo <kPaRt> Názvy (label) jsou taky non-case-sensitive, a mohou obsahovat mezery. Jen mezery a tabulátory před a za názvem budou oříznuty. V názvech můžeš použít i paznaky. Vetšina tagů potřebuje víc parametrů, ty se od sebe oddělují znakem "|" (pipe).

Karate běží v 8bit režimu, takže všechny obrázky textury apod. musí mít maximálně 256 barev.
Většina bitmap může mít jakoukoli velikost (no milion pixelů jsem nezkoušel), ovšem i tady je pár vyjímek.
Bitmapy co chceš použít jako texturu (<t3dMapping>) nebo "deform texturu" musí mít 256x256 pixelů.
Bitmapa pro (<Kcolortable>) musí mít 256x128 pixelů.
"Lightmapa" (<t3dFlatLightMap>) ta musí mít 64x64 pixelů.
Ve speciálních případech má lightmapa 64x64 pixelů a 64 odstínů šedé, pro "odlesky" atd. (<t3dGoureau> , <t3dFlatLightMap>)

O nahrání bitmap se postarají AmigaOS datatypy. Iff formát se hodí asi nejlépe , mimoto že je taky nejvíc Amiga :) Co se týče hudby Karate umí přehrávat moduly ve formátu DBM (DigiBooster) skrze AHI a formát p61 (4ch) použitelný pro Paula Amigy. Na "ne Paula" Amigách může dělat problémy. Nástroj na konverzi .mod do .p61 je na Aminetu.


Snad všechno se v Karate "točí" okolo pozice, času a palety.

Pozice...

V případě pozice zapomeň na rozlišení (ve smyslu screen resolution). Karate zkrátka vždy bere screen jako čtverec kde pozice X1=0.0 Y1=0.0 je levý horní roh a X2=1.0 Y2=1.0 jak jistě tušíš, pravý dolní roh. Z toho vyplývá že pozice středu je 0.5 . Tady to autor geniálně vyřešil, nemusíš si hlídat velikosti screenu a jeho rozlišení. Prostě 0 a 1 :)

mrizka.png (3808 bytes)
Nezdá se to, ale tímhle způsobem umístíš cokoli kamkoli. Nezapomeň ještě je tu osa Z.

Tento souřadnicový systém je "všudypřítomný". Když chceš něco posunout nebo jako parametr k efektu, vždy podle těchto souřadnic. A můžeš zadávat i pozice mimo sceen (třeba logo vyjede zleva apod.) Souřadnice se používají často a za chvíli si zvykneš (budeš muset haha). Kdyžtak čtverečkovaný papír a tužka to jistí.


Čas...

Základní časovou jednotkou je půlsekunda, 50Hz. Aby se to nepletlo, zapisuje se číslem 25.

0.5 sekundy 25
1 sekunda 50
1.5 sekundy 75
2 sekundy 100

Důležitá věc: čas se "připočítává" něco jako timeline, nezadáváš jak dlouho má parametr trvat, ale odkdy-dokdy. Čas stále běží dopředu. Napřiklad parametr Bounce přesunuje sprajt z jedné pozice na druhou pozici, tam setrvá a vrátí se zpět na původní pozici. Přesun začne v čase 0, na druhou pozici se dostane za čas 150 tam sertvá do 300 (takže tady nečeká 300 jednotek, ale 150) pak se stejnou rychlostí vrátí na původní pozici. Z toho vyplývá že celá akce trvala 450 jednotek, tedy 9 sekund.

cas.png (1108 bytes)
Čas - Timeline.

Čas co je zapsán v tagu <PLAY> je "nadřazen" času v Kpartu. Musíš si tedy všechno spočítat, ale to není problém.


Paleta...

Paleta není pevně daná, tu určís ty. Všechny bitmapy v jednom Kpartu musí být nakresleny-uloženy ve stejné paletě a tu potom musíš "uzamknout" (Setpalette). Protože je aktuální paleta zamknutá, bitmapy s jinou paletou by se nezobrazovaly správně. Každý další Kpart s grafikou, má svou paletu podle bitmap kterých v něm použiješ. Nezapomeň jen 256 barev.

paleta.png (3513 bytes)
Paleta tvých bitmap vypadá například takto.

Barvy v paletě se zapisují od čísla 0 do 255, s tím že barva 0 je průhledná (může být i jiná než obvyklá černá). Třeba pozadí nemusí být bitmapa, ale jenom jedna barva a to číslo barvy si musíš "najít" v tvé aktuální paletě. Když používáš víc palet v jednom demu, rozložení barev může být jiné. Čísla totiž popisují pozici barvy v paletě, ne jejich skutečnou barvu.


Jak celý skript-demo spusit a opustit ?

Nejlepší je spouštět skript z adresáře kde máš soubor Karate, adresář Fx a tvoje bitmapy/moduly (v adresáři nebo ne). Jde to i jinak, ale takhle se vyhneš počátečním problémům. Demo opustíš kdykoli stiskem levého tlacítka myši, nebo klávesou Esc.
Napíšeš v shellu:

Karate s=mojedemo.txt , otevře se screenmode requester, vybereš mód a skript se rozjede.
Karate s=mojedemo.txt w=320 h=240 , skript se rozjede rovnou v 320x240.
Karate s=mojedemo.txt b=loader.txt , b jako bootscript. Mezitím co se nahrává celé demo, probíhá skript loader.txt co si napíšeš.
Karate c , vypíše se "diagnostika" všech efektů a parametrů. Taky jejich krátká nápověda (velmi užitečné).
Karate nmt , když přidáš tento parametr, demo se dá opustit jen klávesou Esc (taky užitečné).

Nebo to můžeš spustit ikonou přes Iconx.

Černý pás čeká......

ghh don'tpanic