neděle 6. června 2004

AnimAce - díl první: Jáchyme hoď ho do stroje!

autor: George K.

Vážení uživatelé Specter a Didaktiků, vítám vás u prvního dílu seriálu o počítačové animaci. Dlouho jsem přemýšlel, jak ho co nejlépe začít (třeba několikastránkovým pojednáním o nedostatku místa pro rozvinutí všech skvělých myšlenek), ale nakonec jsem se rozhodl úvod zcela vynechat a hned od počátku vás nemilosrdně zatěžovat cennými, méněcennými i úplně bezcenými informacemi.
Dost bylo úvodocentrismu, vzhůru vstříc novým zážitkům...!

Tvorba a uložení grafických dat

1.1 Jak si to udělat

Grafická data si pro snažší orientaci rozdělíme do dvou skupin: pozadí (nevykazuje známky života) a zbytek (tj. postavičky, příšerky... prostě všechno, co se hýbe). Chceme-li animovat, je základním předpokladem mít co. Můžete si tedy vzít milimetrový papír a něco hezkého si nakreslit; no a pro ty, kterým se zrovna nechce jsem připravil jednoho ostrého hocha, co se jmenuje Joe; dobře si ho prohlédněte a buďte na něj hodní, protože vás bude pronásledovat v celém seriálu. Úkolem číslo jedna je dostat Joa na obrazovku. Doporučuji nahrát si Art Studio, protože je ze všech grafických programů tím nejpohodlnějším. V menu Misc. (Jiné) nastavte bright 1 (rastr 1), v menu Attrs. (Barvy) transparent (průhledné). Použijte Magnify (Lupu) 4x a obkreslete Joa do horního levého rohu obrazovky. Bude vám na to stačit přesně obdélník o rozměrech 2 x 4 znaky, jak je patrné z obrázku. Až budete s kreslením hotovi, definujte si okno (Windows / Okno - Define window / Definuj okno) a to tak, aby obsahovala celého Joa (tj. 2 x 4). Pak v menu Text skočte do font editou (poslední položka). Jako aktuální znak (ukazuje na něj rámeček) mějte vykřičník a ne mezeru, předejdete tak pozdějším překvapivým efektům. Funkcí capture font (kopíruj okno) v menu Misc. (Jiné) překopírujte figurky do znakové sady.
Pokud jste provedli vše tak, jak je popsáno, můžete uložit obrázek i znakovou sadu na pásku nebo na disk, Art Studio vymazat a přečíst si, co dál...
(Poznámka: Vzhledem k vysokému počtu různě počeštěných verzí Art Studia nemohu ručit za to, že se vaše kopie shoduje s mou, řiďte se proto, prosím, anglickými názvy funkcí.)

1.2 Zpracování nahromaděných dat

1.2.1 UDG - uživatelem definovaná grafika
Teď bude nutné převést vytvořená data do nějaké užitečné podoby. Jistě víte, že Spectrum má v cosi jako předefinovatelné grafické znaky - na první pohled vymoženost, ale v podstatě v podstatě málo využitelná. Nadefinování grafického znaku sice najdete v manuálu, ale myslím, že vůbec nebude na škodu si to připomenout. Zkuste:
10 RESTORE 40: READ a$
  20 FOR a=0 TO 7: READ n: POKE USR a$+a,n: NEXT a
  30 PRINT AT 0,0; CHR$(144),CODE SCREEN$(0,0);
  40 DATA "A", BIN 111100, BIN 1111111, BIN 1111100, BIN 11110010
  50 DATA BIN 1000011, BIN 1000000, BIN 111100, 0
Pokud jste se nikde nespletli, měla by se vytisknout Joeova hlava a nula.
Nevýhodou UDG je malý počet počet předefinovatelných znaků (21) a hlavně to, že nelze využít další vymoženosti Basicu, a sice funkci SCREEN$. Napište PRINT AT 0,0;"A" CODE SCREEN$(0,0) a hle, je tu 65! Jak jste viděli, SCREEN$ se dá použít pro zjištění znaku na zadaných souřadnicích. Bohužel, pro UDG to nefunguje, ale jak to výhodně udat jinde si ukážeme v příštím dílu.
1.2.2 Znaková sada nemusí vždy obsahovat jen písmena...
... jak se přesvědčíte za chvíli. Vyťukejte na klávesnici
10 CLEAR 49999: LET adr=5000
  20 LOAD "" CODE adr: REM pro disk: LOAD *"JménoSady"CODE adr
  30 POKE 23607, INT (adr/256)-1
  40 POKE 23606,adr-256* INT (adr/256)
spusťte a nahrajte znakovou sadu, vytvořenou v článku 1.1. Na první pohled se nic nestalo, ale co takhle zkusit napsat vykřičník, uvozovku, hash (#), string ($), procento...? Aby bylo dílo dokonáno, bude nejlepší vrátit na adresy 23606 a 23607 hodnoty 0 a 60 (zadejte POKE 23606,0: POKE 23607,60 a Enter), vymazat řádek č. 20 a doplnit následující
50 LET x=10: LET y=10
  60 PRINT AT x,y;"!""""; AT x+1,y;"%&"
  90 POKE 23606,0: POKE 23607,60 
Program vytiskne na souřadnici X,Y první fázi Joa. Připíšeme-li ještě řádek
70 PRINT AT 20,0; CODE SCREEN$(x,y)
zjistíme, že ASCII kód znaku je 33 a to je skutečně vykřičník! K čemu je to použitelné? To se dozvíte v dílu č. 2.
Ještě bych dodal, že druhá Joeova pozice je ukryta ve znacích #$'( a vytisknete ji stejně jako tu první. Předefinováním celé znakové sady získáme něco přes devadesát nových znaků a to by mohlo stačit pro nenáročnou Basicovou hru...
1.2.3 Co s tou obrazovkou?
Nechat ji uležet na pozdější dobu. Bude se hodit, až budeme hovořit o sprajtech a jejich animaci... to si ještě užijeme, brrr!

1.3 Zapomělo se na pozadí!

Předpokládám, že budete chtít využít všech v budoucnu nabytých znalostí pro tvorbu nějaké pěkné hry, co já si pak za drahé peníze koupím, a proto se neobejdete bez jakéhosi pozadí, které bude dokreslovat celkovou atmosféru.
Pozadí je věc ošemetná a jsou s ním vždy problémy - aby ten chlapík nechodil tři znaky nad zemí, aby ty ryby neplavaly ven z akvária, aby se to všechno vešlo do paměti, jak to udělat s barvami, a jak zajistit, aby se po průjezdu autíčka nemazala ulice...
Tenhle problém se nedá řešit obecně, ale je pro každou hru individuální. Vyrábíte-li něco na zůsob SPACE RAIDERS, stačí si nakreslit pár hvězd, obrázek spakovat nějakým presorem (Mr. Pack, Pressor, Pack Maker) a je po starostech. Při jakékoliv jiné hře to bude nejméně 5 x až 50 x složitější.
Existuje několik způsobů, jak pozadí uchovat. Kupříkladu můžete zase předefinovat znakovou sadu, to je ovšem u lepší hry nepoužitelné. Pak je tu možnost ukládat do paměti kusy obrázků a z nich skládat výsledek - to se používá nejčastěji, bohužel to nejde v Basicu. Co se týká grafiky vektorové, tam se pozadí navíc drze pohybuje a je v paměti schováno jako halda čísel, udávajících prostorové souřadnice. S rolující ulicí to také není nejjednoduší - autoři většinou kombinují několik způsobů uložení dohromady.
1.3.1 Jednoduché pozadí - také pozadí
Poprosím vás teď, abyste si opět nahráli Art Studio, protože přišla ta pravá chvíle přestat kecat a začít něco dělat. Nahrajte si také tu znakovou sadu (1.1) a předefinujte další znaky tak, aby )*-. byl Joe snožmo vlevo, +,/0 roznožmo vlevo a 1 vypadala jako grafický znak pod číslicí 3 na klávesnici. Také se bude hodit, když namísto 2 vytvoříte pěkné X, které bude mít nožičky z rohu do rohu. A abych nezapomněl, z 3 udělejte dva proužky směřující zezhora dolu a ze 4 šachovnici. (Nejsem si teď jist, že jsem vysvětlil to předefinování jasně, proto raději uvádím obrázek, jak Joe vypadá po otočení vlevo.) I když to v žádném případě nevypadá, ze čtyř znaků se přece jen dá složit jednoduché pozadí - do složitějšího se ani pouštět nebudeme, v Basicu by to stejně nemělo smysl.
A to je pro dnešek vše.
Tak málo nám příště bude stačit, abychom si udělali úplně jednoduchoučkou stupidní hru.
(pokračování příště)

1 komentář:

  1. The second benefit of 점보카지노 half in} on the Internet is extensive variety|the huge variety|the extensive range} of various Roulette variants. Here one can play any of them without having to invest a single cent. Any time the on line casino customer can all the time select to play for his personal cash. First of all, the commonest reason is that the roulette website isn’t available in your area.

    OdpovědětVymazat