Recenze - Navigátor

12 Assembler
41 Encyklopedie
33 Hardware
17 Hra
12 Párty
7 Programování
14 Sofware

HRA

Egbert
Herní styl Miscellaneous
Multiplayer Bez multiplayeru
Rok vydání 1983
Programátor Alan G. Osborne
Grafik Alan G. Osborne

INTRO

Basic Text Game Engine V1.0 - část první

Bylo, nebylo. Na jednom nejmenovaném serveru věnující se nejmenovanému počítači Commodore 64 vznikl kurz programování v jazyku Basic V2.0. Kurz to byl výživný, dynamicky se vyvíjející, vzrušující a odkrývající temné zákoutí programovacího jazyku, který podle mnohých nedokáže nic. A proto jsem se jednoho slunného dne vzchopil a zabředl do studování tohoto geniálně jednoduchého a neskutečným způsobem ošizeného jazyku.

Díky vytrvalé píly a odhodlání ( a ohlodání pár nehtů )jsem vytvořil prostředí pro tvorbu textových her.
Rád se s vám podělím o své zkušenosti, ale ve výsledku i o hru, kterou jsem v ní přepsal a nakonec i o zdrojové kódy.

CBM Studio aneb „V čem tvořit“

Skalní příznivci ( čti. extremisté ) by samozřejmě tvořili pouze na samotném stroji C64. My, kteří si vážíme alespoň částečně svého života a času v něm vymezeném, tvoříme v nadřazených systémech. Na PC existuje docela dost dobrý editor jmenující se „CBM Studio v3.10“. Tento editor kromě ostatního disponuje editorem Basicu pro C64 a kromě zvýraznění příkazů barvičkama umí i zapisovat řádky delší než 80 znaků! Omezení zápisu 80 znaků na řádek není totiž problém Basicu jako takového, ale je to problém způsobu editace textu na počítači Commodore64, které pojmout více než dva řádky textu neumí. Ostatní výhody programu spočívají ve věcech jako „neomezená paměť“, možnost komentovat cokoliv, ale při výsledném Debugu komenty zahodit a mnoho dalšího. Trochu si toto světově ojedinělé dílo rozebereme.

Engine

A protože se ozývaly hlasy, jakože je Basic v2.0 oproti jiným nepoužitelný, nápad byl jednoduchý.
„Vytvořit prostředí, ve kterém lze triviálním způsobem vytvořit jakákoliv textová hra“.
( a mimochodem si dokázat, že tento basic použitelný nakonec,i přes všechny nástrahy, je ...)

Vytvořit tedy něco, co se skládá velmi jednoduše, logicky, má to energii, obranu, kouzla, nepřítele, cestování, podmínky, předměty, náhodu, kostku, skrytá zákoutí a ještě asi sto tisíc dalších věcí.
Po pár dnech přemýšlení a psaní a pár měsíců odkládání vzniklo něco, co má zhruba 500 řádků včetně komentářů, a říkejme tomu výkonné jádro neboli ENGINE.

Nastavení

Pokud budu psát o proměnných, v závorce udávám řádek, na kterém se proměnné nastavují.
Každá správná textovka musí mít batoh. I my máme batoh. Přesněji řečeno krosnu.
Počet věcí v batohu se definuje proměnnou DL (2720). Ta udává, kolik věcí se do batohu může nacpat.
Proměnná PG (2720) definuje počet „komnat“ v příběhu. Je to potřeba pro správné nadimenzování datových polí.
Proměnná AN$ (2730) a NE$ (2740) obsahuje zápis odpovědí ANO a NE, které pro ušetření místa v paměti použijeme.
Nastavení energie, obrany a kouzel se provádí proměnnou PW(power),DW(obrana) a KW(kouzlo) na řádku 2780.
Tímto lze na začátek nastavit energii a ostatní vlastnosti.

Lze také nastavit množství energie, která se má každým navštíveným místem odečíst. A to proměnnou PM (2780).
Pokud potřebujete aby se každým krokem odečetly 2 jednotky energie, zápis PM=2 bude zcela správně. ( a nebo -2 ? teď fakt nevím).
Na začátku hry také můžete nastavit, které předměty se mají nacházet v batohu proměnnou BD$ (2820)
A pokud na otázku ANO potřebujete mačkat po englicku "Y", změnte si nastavení proměnné QY$ na řádku 2830.

Každý správný příběh se neobejde bez batohu plného věcí. A my musíme mít možnost tyto věci z batohu kdekoliv upustit a zase je na tom místě někdy zvednout.

Vytváření a nastavení komnat

Nastaveni jednotlivých komnat je záležitost pár řádků. Každá komnata se nastavuje pomocí proměnných, které uchovávají informace o názvu, popisu, předmětech, možnosti zadávání vstupu, podmínkách postupu, větvení příběhu atd. Jedna z nich například nastavuje neřátele, jeho sílu v boji a případné větvení příběhu při výhře či prohře.

Nastavení komnat ukázkové hry o čtyřech komntatách vypadá následovně :

Tabulka zobrazuje zápis možných a použitelných proměnných:

N$(komnata) Textový nadpis komnaty
P$(komnata,index) Dlouhe popisy lze zapisovat do vicerozmerneho pole pomoci indexu 0,1,2 ... např:
P$(komnata,0) "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In sem justo, commodo ut, susc "
P$(komnata,1) "Etiam posuere lacus quis dolor. Duis condimentum augue id magna semper rutrum hdhdh hhd "
P$(komnata,2) "Maecenas sollicitudin. Donec iaculis gravida nulla. Nam libero tempore, cum soluta nobis "
BX$(komnata) = "++...-..-." Obsah batohu, kde znakem "+" předmět v komnatě získáme, znak "-" předmět odebere. Znak "." je neutrální a odpovídá položce v batohu
T$(komnata)="++...-..-.": T(komnata) = 20 Testuje obsah batohu BD$ s nastavením proměnné T$. Pokud máte potřebné předměty, komnata se zobrazí. Pokud ne, jste přesměrování na alternativní komnatu uvedenou v proměnné T
K$(komnata) Vstupní metoda rozhodování v komnatě. Zadávat volby můžeme libovolnými klávesami, hodem kostky atd.
K$(komnata)="k/ 002" První znak "k" znamená kávesnici a po stisku klávesy "space" pokračujeme do komnaty 2
K$(komnata)="k/r021/h056" První znak "k" znamená kávesnici a po stisku klávesy "r" jdeme do komnaty 21 a stiskem klávesy "h" se přeneseme do komnaty 56. Podmínek na stisk klávesy může být libovolné množství.
K$(komnata)="d/a002/b043/c005/d006/e005/f056" První znak "d" znamená zobrazení kostky a po zastavení kostky klávesou "space" hodnota hodu odpovídá písmenu v nastavení. Tzn. Při hodu čísla 1(a) jdeme do komnaty 2, při hodu hodnoty 2(b) komnata 43 atd...
Čísla komnat musí být uvedena v trojpísmené délce.
K$(komnata)="e" Skok na komnatu, která odpovídá hodnotě počtu získané energie. (Opatrně ať se nedostanete mimo maximální hodnotu indexu pole proměnné "Z")
K$(komnata)="r" Reset hry a skok na začátek programu. Používá se u poslední komnaty ve hře.
BB$(komnata)="+010/+002/-003" Přidávání / Ubírání energie, obrany a kouzel. Tento příklad přidá 10 jednotek energie, přidá 2 jednotky obrany a ubere 3 jednotky kouzel
FL(komnata)=1: FJ$(komnata)="obr zlobr": FX(komnata,0)=10: FX(komnata,1)=3: FX(komnata,2)=0: FP(komnata)=3 Nastavení nepřítele, kde proměnná FL značí, zda-li je nepřítel živý(1) nebo mrtvý (0). FJ obsahuje název zloducha. FX obsahuje nastavení energie(0), obrany(1) a kouzla(2) nepřítele a proměnná FP odkazuje na stránku v případě naší prohry.


Rozbor minihry - Komnata nula


První komnata při vstupu nabídne sebrání prvních čtyřech předmětů z celkového seznamu předmětů. Také nám přidá 10 jednotek energie a 2 jednotky obrany.
Tyto jednotky se vždy hodí do boje z nepřítelem a čeká se na stisk klávesy "P"

Po stisku klávesy "A" jako ANO se předměty vloží do batohu. Při pozdějším procházení nám komnata již předměty nenabídne.
Po potvrzení a stisku klávesy "<=" se zobrazí seznam položek v batohu včetně rekapitulace výše energie, obrany a kouzel.

Předměty můžeme v komnatě kdykoliv položit stiskem klávesy "2" a příslušným stiskem znaku uvedeného u předmětu.

Pokud v komnatě položíme předmět, můžeme komnatu kdykoliv prohledat stiskem klávesy "1" a předmět si opět vzít do batohu.

... pokračujeme stiskem jedné z nabízených možností.

Klávesou "p" pokračujeme do další komnaty.

1. Komnata - ízy, pízy

V této komnatě jsme automaticky přišli o lano (proměnná BX$). Rozdíl je v tom, že jsme o něj přišli nadobro, což je jiné než bychom jej v komnatě položili.

A i když prohledáme komnatu klávesou "1", lano zde již opravdu nenalezneme. Textové odpovědi na prohledávání lze nastavit na řádku 2840 dále, kde je na výběr více možností.
Program vybírá odpovědi náhodně. Stiskem klávesy "V" pokračujeme vstříct boji s našim prvním nepřítelem.

2. Komnata - souboj s nepřítelem

Boj probíhá podle pravidel a do souboje se počítá nejen s energií, ale i s hodnotou obrany či kouzla. Algoritmus propočítává podle částečné náhody úroveň vašich schopností proti schopností nepřítele (nastavení nepřítele na řádku 3370). Může se stát, že i silnější soupeř v boji prohraje, jsou-li síly částečně vyrovnané a rozdíl není velký. Algoritmus ovšem není strikntí, takže si zkuste hru zahrát vícekrát a zjistíte, že výsledek není vždy stejný! ( ukázka celého algoritmu souboje zde, souboj od řádku 1300 :) Boj je doplněn o dramatické blikání obrazovky a v reálném čase animované hodnoty souboje :)

Pokud nepřítele porazíte, zobrazí se obsah komnaty, kde vám byly vám odebrány dva předměty (proměnná BX$). Klávesou "X" pokračujete na komnatu 4 nastavenou na řádku 3375. (3375 K$(2)="k/x004")

Pokud prohrajete, engine pokračuje na stránku , na kterou odkazuje proměnná FP

3. Komnata - prohrál jsi

Komnata nám při vstupu odebrala 5 dílků energie a přidala 4 díly kouzla a jakési dva další předměty.

Stiskem klávesy "A" předměty vezmeme ( energie a spol se přidává/ubírá automaticky) a pokračujeme ukázkou hodu kostkou.

4. Komnata - Hod kostkou

Na řádku 3475 se nachází zápis pro všech šest možností větvení příběhu pro hod kostkou.


Tímto bych rád uzavřel nekompletního průvodce tímto programem.
Jedná se o nástroj, který při troše umu dokáže vytvořit až 87 komnat dlouhý příběh s velkými možnostmi větvení na základě slušného množství událostí.
Jelikož jsem vyčerpán délkou textu a pokročilou ranní hodinou, další díl napíši až seženu 100.000 lajků na facebooku.
Musel bych ho ale nejdřív založit, takže nic.

CBM Studio stahujte na tomto odkazu

Ukázkový soubor stahujte zde.


PCH / Unreal 2019
Nový příspěvek k článku

podpis :
První znak podpisu musí být vykřičník, jinak se příspěvek neodešle (ochrana proti spamu)

Advert

Programmed by PCH of UNREAL, Hardware support by RAY of UNREAL. Beta test and bugs guru SILLICON
Unreal 2014 - Czech republic