Next SpacePocta Magic Systems

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:

  1. Obrazovka sa rozdelí na 12 000 štvorčekov veľkosti 4 × 4 body.
  2. 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.
  3. Výsledok sa ešte raz stlačí bežnou kompresiou typu LZSS.
  4. 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.

Hore