Domov / Čo bolo na Next Space jedinečné
Čo bolo na Next Space jedinečné
Vlastný video kodek, vlastný skriptovací jazyk, vlastná kompresia hudby a herci vystrihnutí z videa a vlepení do maľovaných scén. Všetko vyrobené doma, bez hotových nástrojov.
Next Space sa dá opísať jednou vetou: je to hra, ktorú v 90. rokoch urobila malá bratislavská partia a ktorá si skoro všetko vyrobila sama. Tu sú veci, na ktoré sme pri skúmaní hry narazili a ktoré nás prekvapili najviac.
Video, ktoré sa hodilo na CD
Hra obsahuje 25 plnoobrazových 3D animácií. Ak by sa uložili ako obyčajné obrázky, jedna snímka (640 × 300 bodov, 256 farieb) by zaberala 192 000 bajtov. Pri dvadsiatich snímkach za sekundu by to bolo takmer 4 MB za sekundu. CD-ROM vtedy zvládol 300 až 600 KB.
Autori preto vyrobili vlastný formát videa, nazývaný HVI. Prehrávač k nemu napísali, ako spomína Peter Hegyi, Michal Weis a Michal Horka na úrovni strojového kódu, aby zvládol 20 snímok za sekundu priamo z CD. Formát funguje tak:
- Obrazovka sa rozdelí na 12 000 štvorčekov veľkosti 4 × 4 body.
- Pre každý štvorček sa uložia len tri bajty namiesto šestnástich. Jeden vyberie vzorku zo „slovníka“ s 256 položkami, druhý a tretí určia, ktoré zo štyroch farieb vzorky sa kde použijú a podľa ktorého z ôsmich vzorov (pruhy, uhlopriečky, rohy). Odborne sa tomu hovorí vektorová kvantizácia.
- Výsledok sa ešte raz stlačí bežnou kompresiou typu LZSS.
- K tomu sa pridá zvuk, vždy 1102 bajtov na jednu snímku, takže obraz a zvuk nikdy nevyjdú z rytmu.
Celková kompresia vychádza približne 10 : 1. Z tých 192 000 bajtov zostane v priemere asi 18 600. A prehrávač z toho dokáže cez PC s procesorom z roku 1997 poskladať obraz 20-krát za sekundu.
Na porovnanie: takto komprimované videá majú priemerne 395 KB za sekundu, nie 4 MB. Bez toho by 8,4 minúty animácií zabrali 2 GB.
Slovník aj paleta farieb sa v súbore menia po segmentoch, takže sa môžu prispôsobiť scéne.
Pravidlá hry ako dáta
Hlavné rozhodnutie, ktoré robí Next Space netypickou hrou: logika hry nie je v programe. Program má 284 KB a neobsahuje ani jednu hádanku. Všetky hádanky, rozhovory a poradie dejov sú uložené v dátach, v súboroch miestností, ako bajtkód pre interný jednoduchý jazyk.
Interpret pozná 86 inštrukcií a riadi 3 772 pravidiel (3 596 v miestnostiach a 176 všeobecných odpovedí, ako je „To sa nedá otvoriť“). Každé pravidlo má dve časti: AK (podmienky) a POTOM (činy). Napríklad takto vyzerá pravidlo z prvej obrazovky pred barom, vyjadrené slovami:
AK je nastavený príznak „Frank práve vystúpil z lode“ a Frank došiel na miesto (100, 320), POTOM zhasni príznak, nech Frank povie „Čo to som, kde to som?!“, ďalej „Do kelu!“ a „Musím to tu poriadne preskúmať!“ a vráť hráčovi ovládanie.
Má to praktickú výhodu: hádanky sa dajú meniť bez prekladania programu. Skript je zároveň kompaktný: celá logika hry zaberá približne 87 kilobajtov (84 KB v miestnostiach a 3 KB všeobecných odpovedí). A čo je dnes najcennejšie: keď sme hru prepisovali do JavaScriptu, stačilo napísať interpret týchto 86 inštrukcií a všetko ostatné prišlo z pôvodných dát.
Hudba v štyroch bitoch
Súbory s hudbou majú príponu .MOD, takže sa na prvý pohľad tvária ako klasické tracker moduly zo scény demo. Nie sú. Sú to vlastné stlačené zvukové súbory, v ktorých každá vzorka zaberá len 4 bity namiesto 8. Metóda sa volá ADPCM a podobá sa tej, ktorú používal Yamaha. Namiesto celej hodnoty vzorky sa ukladá len zmena oproti predchádzajúcej a krok sa sám prispôsobuje hlasitosti.
Výsledok: hudba zaberá polovicu. 19 skladieb (a jeden tichý súbor) s celkovou dĺžkou 34,34 minúty sa zmestilo do 23 MB. V kvalite audio-CD (44,1 kHz, 16 bit, stereo) by to bolo 360 MB, teda viac než pol CD.
Hudba sa v hre prehráva v slučke. Autori vyriešili aj bezšvové zacyklenie: pri návrate na začiatok skladby sa dekodér vynuluje, aby sa hudba spojila bez zvukového skoku.
Herci v maľovaných scénach
Ľudské postavy Next Space sú digitalizovaní skutoční ľudia. Hra ich zloží do scény takto:
- Veľkosť podľa hĺbky. Každá miestnosť má mapu hĺbky. Keď Frank ide od diváka do pozadia, hra ho za behu zmenšuje (výpočet s celými číslami, kvôli rýchlosti) a prispôsobuje mu aj rýchlosť chôdze.
- Poradie podľa výšky. Postavy sa zoradia podľa toho, ako nízko stoja na obrazovke, aby sa správne prekrývali s nábytkom a ostatnými predmetmi.
- Mäkké hrany. Okraje postáv sa zmiešavajú s pozadím cez osobitnú tabuľku 256 × 256 farieb, aby nevyzerali ako vystrihnuté nožnicami. Každá miestnosť má vlastnú.
- Spoločná paleta. Prvých 56 farieb je v celej hre rovnakých. Frank, ktorý je zložený len z 22 odtieňov, tak môže stáť v ľubovoľnej miestnosti a vyzerá správne.
Dabing bez synchronizácie pier
Hry z 90. rokov niekedy riešili dabing tak, že synchronizovali pohyb pier postavy s hlasom. Next Space to nerobí. Namiesto toho funguje takto:
- Každá replika má číslo. To isté číslo má text na obrazovke aj nahrávka. Hra teda vie, ktorú nahrávku prehrať, bez toho, aby ju niekto musel spájať ručne.
- Kým hlas znie, postava prehráva všeobecnú animáciu rozprávania.
- Titulky a hlas sa dajú zapnúť aj samostatne.
Výhoda: hra sa dá lokalizovať bez prekresľovania postáv. Slovenská a česká verzia používajú tú istú logiku, len iné texty a iný dabing. V slovenskej verzii je 2 935 replík, spolu 2 h 54 min. Česká má 2 935 replík a 2 h 48 min.
Cesty po miestnostiach, ktoré fungujú
Menej viditeľné, ale rovnako dôležité:
- Chôdza postáv. Každá miestnosť má masku „kde sa dá chodiť“ (320 × 200 bitov). Cesta sa hľadá zaplavovaním (BFS) a potom sa vyrovná na priame úseky podľa priameho videnia. Funguje aj vtedy, keď sa po miestnosti pohybujú ďalší aktéri.
- Kreslenie len zmien. Hra v každej snímke prekresľuje len tie štvorbodové úseky, ktoré sa zmenili. Na pomalom počítači to rozhodlo o plynulosti.
- Kompresia miestností. Všetko, čo je v súboroch ROOMn.DAT veľké, je stlačené metódou LZSS (Okumura), ktorú autori napísali aj v assembleri. Všetkých 651 stlačených blokov sa rozbalí presne na deklarovanú veľkosť.
- Uložené hry. Uloženie hry je výpis 58 blokov pamäte (príznaky, premenné, inventár, stav objektov a postáv).
Stopy, ktoré autori zanechali
Pri čítaní súborov vidno aj ľudskú stranu práce:
- Poznámky v textoch. V tabuľkách správ sa našli riadky, ktoré tam nepatria hráčovi: „--- keď prídeš za …“, „--- FIRE ---“, „--- loop“, „po zlom horení záchoda“. Autori si tak značili, kde v scénach čo nasleduje.
- Cesta v hlavičke animácie. Do súboru s niektorou animáciou sa zapísala pôvodná cesta súboru z počítača, na ktorom animácia vznikla (
D:\ANIM-NOV\DOLE\POSUNUTE.CEL). Z toho vidno, že sa pracovalo pravdepodobne s programom Autodesk Animator Pro (formát FLC aj prípona .CEL pochádzajú z neho). - Nepoužité miestnosti. Izba 52 je kópia izby 1 s anglickými skúšobnými hláškami (I don’t know how to open it). Izba 54 nie je miestnosť, ale čierna obrazovka pre smrť a titulky.
- Opravy medzi vydaniami. Slovenské CD je z júna 1997, české zo septembra. Medzi nimi autori opravili 14 miestností, pričom 631 zo 681 funkcií programu ostalo inštrukcia po inštrukcii rovnakých a všetkých 86 inštrukcií skriptu sa správa rovnako. Najvážnejšia oprava: zamrznutie hry v izbe 37.
Prečo je to dôležité
Každá z týchto vecí by sama stačila na článok. Dokopy ukazujú, že autori Next Space nenechali nič na hotové nástroje: vlastný kodek, vlastný skriptovací jazyk, vlastný mixér zvuku, vlastný ovládač zvukovej karty. A robila to skupina študentov a nadšencov, pre ktorú to bol prvý projekt a ktorá na ňom pracovala viac než štyri roky.
Preto sa dá hra dnes spustiť v prehliadači z pôvodných dát: všetko, čo potrebuje vedieť, je v dátach a v malom interprete.
