Obsah
1. Historie vývoje počítačových her (2.část – věk simulací)
2. Hamurabi – jednoduchá, ale současně i návyková strategie
3. Lunar Lander aneb zrození klasiky
5. Automatová varianta hry Lunar Lander
6. Space Travel – simulátor s grafickým výstupem přímo od tvůrců Unixu
7. Portace hry Space Travel na počítače PDP a vznik konceptu Unixu
8. Hra Empire (Classic) – klasická tahová strategie
1. Historie vývoje počítačových her (2.část – věk simulací)
V předchozí části seriálu o historii vývoje výpočetní techniky jsme se vrátili do padesátých a šedesátých let minulého století, tj. do doby, kdy začaly vznikat první počítačové hry. Zpočátku se jednalo o poměrně jednoduché hry napodobující buď existující deskovou hru (OXO, 1952) nebo simulující – i když ve velmi zjednodušené podobě – reálný sport (Tennis for Two, 1958). V roce 1962 vznikla první hra, která hráče přenášela do herního prostředí, s nímž neměl žádnou reálnou zkušenost (Spacewar!, 1962). Ovšem na větší rozmach nových typů her si museli uživatelé (většinou se jednalo o inženýry nebo o vysokoškolské studenty s přístupem k terminálu minipočítače nebo mainframu) počkat až na přelom šedesátých a sedmdesátých let minulého století, kdy v průběhu zhruba tří let vzniklo hned několik her majících poměrně velký vliv na další vývoj celého odvětví.
Obrázek 1: Hra Frogger ve verzi pro herní konzoli Atari 2600 vypadá – s ohledem na schopnosti této konzole – velmi pěkně (rok vzniku konceptu hry 1981, verze pro Atari 2600 je z roku 1982).
Současně jsme v této době svědky vzniku prvních komerčních her určených pro elektronické herní automaty (ty můžeme s přivřením obou očí považovat taktéž za počítače, i když jednoúčelové; netýká se to však různých automatů elektromechanických). V následující tabulce jsou pro ilustraci vypsány nejdůležitější (a současně i nejznámější) hry, které vznikly od samotných počátků programovatelných počítačů až do roku 1972, kdy se již díky elektronickým herním automatům dostaly počítačové hry i mezi neodbornou veřejnost:
# | Rok vzniku | Seznam her z daného roku |
---|---|---|
1 | 1952 | OXO |
2 | 1958 | Tennis for Two |
3 | 1962 | Spacewar! (+ Expensive Planetarium jako součást hry Spacewar!) |
4 | 1969 | Hamurabi, Lunar Lander, Space Travel |
5 | 1971 | Empire (Classic), Baseball, Computer Space, Star Trek (textové rozhraní) |
6 | 1972 | Pong, Hunt the Wumpus, Star Trek (simulace ovládaná přes dialogy) |
Obrázek 2: Světoznámá automatová hra Pong ve variantě z roku 1972.
2. Hamurabi – jednoduchá, ale současně i návyková strategie
V průběhu roku 1969 vznikla trojice her, které měly poměrně velký vliv na další vývoj simulátorů a taktéž strategických simulací (ve skutečnosti tyto hry v podstatě zavedly obě dvě zmíněné herní kategorie, mimochodem je zajímavé, že všechny tři hry nebyly militantní). První z těchto her se nazývá Hamurabi. Jedná se o implementačně poměrně jednoduchou, ale po herní stránce zajímavou simulaci starověkého státu, v němž vládne panovník (historická postava) Chammurabi (v anglické transkripci Hammurabi, v názvu hry je však jedno písmeno vynecháno, protože na mnoha operačních systémech mohly mít názvy souborů pouze osm znaků). Cílem je zajištění prosperity a rozvoje státu v co nejdelším časovém období.
Obrázek 3: Varianta hry Hamurabi pro osmibitový počítač Commodore PET.
Hra Hamurabi pro komunikaci s hráčem využívá jednoduché textové uživatelské rozhraní (takže ji bylo možné hrát i přes dálnopis) a tahový systém: hráč pro každý (simulovaný) rok ve hře volí, kolik se má založit nových polí, kolik se má zasadit plodin a naopak jak velké množství plodin má být použito jako jídlo. Na první pohled by se mohlo zdát, že se jedná o velmi jednoduchou až prostoduchou hříčku, ve skutečnosti je to ovšem hra dosti návyková, a to i v případě, kdy uživatel při zkoumání zdrojových kódů zjistí, jakým způsobem vlastně tato simulace ekonomiky starověkého státu funguje (další, poněkud čitelnější zdrojové kódy, jsou dostupné zde).
Obrázek 4: Hra Hamurabi ve verzi pro slavný osmibitový domácí počítač ZX Spectrum (autoři jsou z Polska).
I z tohoto důvodu neustále vznikají nové varianty hry Hamurabi, a to jak verze, které se snaží co nejlépe napodobovat původní textové rozhraní hry (včetně formálního oslovení panovníka), tak i varianty s podrobnými grafy, statistikou vývoje státu, ovládáním přes touch screen atd. Pokud si chcete vyzkoušet herní systém hry Hamurabi (a máte mnoho volného času :-), postačuje ve webovém prohlížeči spustit JavaScriptovou verzi této hry, která je dostupná na adrese http://www.hammurabigame.com/hammurabi-game.php.
Obrázek 5: Více než 40 let stará hra v „moderní“ variantě pro smartphony s dotykovým displejem se systémem Android.
3. Lunar Lander aneb zrození klasiky
V roce 1969 vznikla první varianta hry nazvané Lunar Lander. Autorem této hry byl tehdy sedmnáctiletý středoškolský student Jim Storer, který byl – společně s nesčetným množstvím dalších lidí především ze Západu – fascinován přistáním Apolla 11 na Měsíci. Přibližně v době, kdy se chystal projekt dalšího letu na Měsíc – jednalo se o projekt Apollo 12 – přišel Storer na myšlenku simulovat přistání Apolla s využitím počítače. Tuto myšlenku nakonec realizoval na počítači PDP-8, jehož terminály byly přístupné z jeho školy (Lexington High School). Tento stroj měl nainstalovaný pevný disk a byl vybaven pouhými 12kslovy operační paměti, přičemž 8192 slov bylo rezervováno pro operační systém a zbývajících 4096 slov mohlo být sdíleno mezi uživateli připojenými k počítači pomocí osmi terminálů (kapacitu paměti uvádím ve slovech a nikoli bajtech z toho důvodu, že počítač PDP-8 měl operační paměť organizovanou do 12bitových slov a ne do osmibitových bajtů).
Obrázek 6: V prvních variantách hry Lunar Lander se na terminálu hráče zobrazovaly informace o výšce modulu nad povrchem Měsíce, jeho rychlosti a množství zbývajícího paliva v nádržích. Jediným uživatelským vstupem byl údaj o tahu motorů. Cílem bylo přistát na povrchu Měsíce s tak nízkou rychlostí, aby nedošlo k poškození modulu.
Vzhledem k tomu, že k počítači PDP-8 byly připojené relativně jednoduché textové terminály, bylo touto poměrně spartánskou konfigurací ovlivněno i samotné uživatelské rozhraní použité ve hře Lunar Lander (mimochodem, původní celé jméno hry znělo Lunar Landing Game): hráč pouze číselně zadával tah motorů jako reakci na zobrazené informace o výšce přistávacího modulu, jeho rychlosti a množství zbývajícího paliva v nádržích. Pro realizaci první varianty hry Lunar Lander byl použit programovací jazyk FOCAL. Jednalo se o relativně jednoduchý programovací jazyk se syntaxí podobnou BASICu, jehož předností byly především poměrně malé systémové nároky, což bylo na počítači s pouhými 12kslovy RAM, z nichž pouze 4kslova byla využitelná uživatelskými programy, velmi důležité. Interpret programovacího jazyka FOCAL byl naprogramován v optimalizovaném assembleru, takže v operační paměti zabíral přibližně 3kslova a zbylá kapacita paměti mohla být využita pro uložení tokenizovaného uživatelského programu a proměnných, které tento program využíval.
Obrázek 7: Automatová (a tedy i komerční) varianta hry Lunar Lander s vektorovým displejem a ovládáním joystickem namísto numerických vstupů.
4. Od jednoduchého simulátoru s textovým výstupem po sofistikovaný herní automat s vektorovým displejem
Vzhledem k implementační jednoduchosti hry Lunar Lander není divu, že se od roku 1969 objevilo téměř nespočetné množství variant této hry. Populární byly zejména její různé implementace naprogramované v jazyku BASIC. Zdrojový kód Lunar Landeru se dokonce objevil i v publikaci o tvorbě her v BASICu: „101 Basic Computer Games“ a v našich zemích byla v časopise ABC vydána varianta této hry určená pro „papírový počítač“ (jedná se sice o primitivní pomůcku, která však poměrně přesně přibližovala interní funkci počítače, resp. způsob postupného zpracovávání instrukcí včetně skoků).
Obrázek 8: Snímek z „vektorové“ podoby hry Lunar Lander: začátek hry (snímek byl získán z emulátoru hracích automatů MAME).
Ovšem společně s vývojem grafických subsystémů počítačů se začaly objevovat i grafické verze Lunar Landeru, které přinesly dvě novinky: pohyb přistávacího modulu ve dvou směrech (horizontálně i vertikálně) a navíc možnost řízení přistávání v reálném čase, nikoli po diskrétních časových okamžicích (byl to vlastně podobný vývoj, jaký potkal hru Hamurabi, jejíž princip se objevil v některých realtime strategiích). Výsledkem byla mnohem zajímavější hra, která se nakonec dočkala i několika svých komerčních verzí.
Obrázek 9: Snímek z „vektorové“ podoby hry Lunar Lander: průběh hry ve chvíli, kdy je modul ještě vzdálený od povrchu Měsíce.
5. Automatová varianta hry Lunar Lander
Pravděpodobně nejznámější komerční implementací Lunar Landeru je elektronický herní automat. Ten obsahoval vektorový displej, což je pro tento typ hry mnohem lepší grafické zobrazovací zařízení, než rastrový monitor, protože například otáčení lunárního modulu bylo plynulé (navíc musíme vzít v úvahu malé kapacity operačních pamětí a z nich vycházející nízké rozlišení rastrových grafických režimů). Úkolem hráče v automatové verzi bylo samozřejmě přistání s lunárním modulem na Měsíci. Modul byl ovládán pomocí trojice trysek. Dvě trysky byly krajní s menším výkonem a sloužily k natáčení sondy, třetí tryska měla největší výkon a sloužila k brzdění nebo k letu směrem vpřed. Na měsíčním povrchu se nacházelo několik plošin, na které bylo možné přistát (přistání mimo plošiny nebylo možné). Každá plošina pak byla podle své velikosti ohodnocena číslem, kterým se vynásobilo skóre v případě hladkého přistání (samozřejmě platilo, že čím menší byla plošinka, tím složitější bylo přistání a tím pádem byl této plošince přiřazen větší koeficient, kterým se skóre násobilo).
Obrázek 10: Snímek z „vektorové“ podoby hry Lunar Lander: změna měřítka herní scény ve chvíli, kdy se modul přiblíží k povrchu Měsíce.
Aby vše nebylo příliš jednoduché a hráč byl nucen řízení sondy skutečně pečlivě naplánovat, měla sonda také omezené množství paliva. Zajímavé přitom bylo, že palivo se „čerpalo“ před startem hry vhazováním mincí. Méně zkušený hráč samozřejmě spotřeboval více paliva než profík, takže si musel připlatit. Automatová varianta Lunar Landeru vynikala především perfektním zpracováním dynamiky pohybu sondy, přičemž všechny potřebné údaje (vektor rychlosti: horizontální a vertikální složka vektoru a výška) byly neustále zobrazovány. Také je nápaditá změna měřítka pohledu při přiblížení k měsíčnímu povrchu. Právě na případu hry Lunar Lander je patrné, jak se původní jednoduchá myšlenka může rozvinout v komerčně úspěšný projekt.
Obrázek 11: Snímek z „vektorové“ podoby hry Lunar Lander: hladké přistání.
6. Space Travel – simulátor s grafickým výstupem přímo od tvůrců Unixu
Další v několika ohledech přelomovou počítačovou hrou, která je ve skutečnosti „pouze“ poměrně věrnou simulací sluneční soustavy a cestování mezi planetami, je hra nazvaná příznačně Space Travel, která je spojena s vývojem operačního systému Unix a taktéž s minipočítači PDP vyráběnými společností Digital. Tato společnost navrhla a vyráběla relativně velké množství modelů minipočítačů, počínaje modelem PDP-1 z roku 1960 a konče modely PDP-11 a PDP-15 z roku 1970 (číslování jednotlivých modelů je poměrně zmatené, například i proto, že modely s některým číslem navíc ani nebyly realizovány). Důležitou skupinu minipočítačů firmy Digital tvořily modely PDP-4, PDP-7, PDP-9 a v pozdějších letech také PDP-15. Tyto počítače byly částečně odvozeny od svého legendárního prapředka PDP-1 a byly vybaveny procesorovou jednotkou zpracovávající slova o šířce 18 bitů, přičemž operační kódy instrukčního souboru byly mezi sebou navzájem kompatibilní.
Obrázek 12: Počítač PDP-7.
Zatímco počítač PDP-4 představoval poněkud neúspěšný pokus o modernizaci původního PDP-1, těšil se především model PDP-7 relativně velké popularitě (i když ne tak velké jako v případě o rok staršího PDP-8), a to i díky poměrně příznivé ceně 72 000 dolarů, která byla nižší než v případě mainframů firmy IBM. Díky své spolehlivosti byl prý PDP-7 schopen řídit i jaderný reaktor či podobné zařízení. Počítač PDP-7 taktéž sehrál velmi důležitou roli v Bellových laboratořích, protože byl použit pro vývoj první verze systému Unix (jehož původní jméno znělo Unics, což je narážka na dříve vyvíjený neúspěšný systém Multics). Jedním z klíčových lidí, kteří se na vývoji podíleli, byl Ken Thompson, jenž začal s počítačem PDP-7 pracovat již v roce 1968. Ken Thompson a jeho kolegové totiž vytvořili na sálovém počítači GE-635 hru Space Travel. Ovšem strojový čas tohoto stroje byl velmi drahý, takže vedení firmy samozřejmě nebylo spokojeno s tím, že se výkonný počítač využívá pro hraní a ne pro vážnou práci (což je paradoxní, protože právě práce na této hře vedly ke vzniku mnoha zajímavých technologií).
Obrázek 13: Část procesorové a paměťové jednotky počítače GE-635. Na tomto počítači vznikla první verze hry Space Travel.
7. Portace hry Space Travel na počítače PDP a vznik konceptu Unixu
Ken Thompson se tedy rozhodl, že svoji hru přepíše takovým způsobem, aby ji bylo možné spustit na mnohem jednodušším počítači PDP-7 (s levnějším strojovým časem). Konverze hry ovšem měla být provedena tak, aby s počítačem mohli pracovat i další uživatelé – jinými slovy, musel se vytvořit operační systém podporující multiuživatelský režim. Ken tedy se svými kolegy začal pracovat na vývoji zprvu velmi jednoduchého operačního systému s podporou multitaskingu a více uživatelů. Ovšem hardwarové možnosti počítače PDP-7 byly velmi omezené, například kapacita operační paměti dosahovala pouze 8192 osmnáctibitových slov, tj. jen osmnácti kilobajtů. Z tohoto důvodu byl originální Unix (který ovšem takto ještě nebyl pojmenován) naprogramován v assembleru počítače PDP-7, přičemž je zajímavé, že vlastní vývoj byl prováděn na jiném (výkonnějším a taktéž mnohem dražším) počítači: již zmíněném 36bitovém GE-635 s využitím makroassembleru GEMAP.
Obrázek 14: Známá fotografie Kena Thompsona a Dennise Ritchieho sedících před PDP.
Po vytvoření objektového kódu tímto assemblerem se (stále ještě na počítači GE-635) zapsalo přeložené jádro i další pomocné programy na děrnou pásku, která se následně vložila do čtecího zařízení na počítači PDP-7, odkud se systém „nabootoval“ patřičným příkazem zadaným z řídicího panelu. Vraťme se však ještě na chvíli ke hře Space Travel. Herním světem byla celá sluneční soustava se všemi planetami a většinou významnějších měsíců (o zobrazování se staral systém PDP-7 Graphics II). Planety se pohybovaly po předpočítaných drahách (nepoužívala se tedy přesná simulace) a i pohyb hráče (rakety) byl sice založený na fyzikálních základech, jež ale musely být zjednodušeny (například tak, že na raketu působila gravitační síla nejbližšího tělesa). Cíl hry nebyl přesně stanoven, ale jedním z úkolů bylo „přistát“ na některém vesmírném tělesu, přičemž za přistání byl považován pomalý průlet okolo jeho středu. Z dnešního pohledu se tedy nejednalo o příliš zábavnou hru, ale dopad, který měla na další vývoj mnoha technologií, byl poměrně značný.
Obrázek 15: Ken Thompson se později věnoval šachovým algoritmům. Vytvořil například databázi „perfektních“ koncovek a podílel se i na vzniku šachových partií mezi (vel)mistry a počítači.
8. Hra Empire (Classic) – klasická tahová strategie
Poslední hrou, se kterou se dnes seznámíme, je hra nazvaná Empire. Jedná se o hru, která na dalších 40 let ovlivnila vývoj prakticky všech strategických her, ať již se jedná o systém zobrazení herní plochy (v prvních verzích byla herní plocha rozdělena na čtverce, později na šestiúhelníky či na čtverce, jejichž řady jsou posunuté o 1/2), tak i o způsob výroby vojenských jednotek ve městech. První počítačová verze této hry vznikla v roce 1971 a od té doby je hra neustále vyvíjena a pod různými jmény zveřejňována. Herní systém, který do počítačové podoby přenesl Peter Langston je z velké části odvozen od stejnojmenné deskové hry. Původně byla hra Empire napsána v programovacím jazyku BASIC, ale později došlo k jejímu přepisu do různých programovacích jazyků, ať již se jedná o varianty vytvořené v C/C++ či naopak o variantu napsanou v assembleru (z důvodu převodu hry na osmibitové domácí počítače).
Obrázek 16: Varianta hry Empire (Deluxe) pro operační systém DOS.
Herní pole hry Empire je (v závislosti na verzi) rozděleno buď na čtverce, nebo na šestiúhelníky. Každé pole v originální verzi hry představovalo buď vodní plochu, nebo pevnou zem. Pro pohyb na vodní ploše sloužily bitevní lodě a transportní lodě, na pevné zemi pak bojové jednotky s různou pohyblivostí a samozřejmě rozdílnou silou útoku. Jednotky bylo možné vyrábět ve městech, která bylo možné dobývat (po dobytí se však výrobní možnosti města postupně snižovaly). Na malé herní ploše trvalo dohrání jedné hry mnoho hodin, větší herní plocha znamenala, že se hra protáhla i na několik měsíců, samozřejmě v závislosti na schopnostech protivníků. Později byly do hry přidány i poměrně schopní počítačem řízení protivníci, kteří na rozdíl od jiných her nepodváděli, tj. měli pouze ty stejné informace jako lidští protihráči (například neznali celou mapu atd.). Principy implementované ve hře Empire se později objevily i v mnoha dalších tahových strategických hrách, zejména ve slavné hře Civilization.
Obrázek 17: Snímek ze hry Empire Deluxe, v níž mohou hráči komunikovat přes internet.
9. Odkazy na Internetu
- BASIC Computer Games (published 1978) – Hammurabi
http://atariarchives.org/basicgames/showpage.php?page=78 - Hamurabi – zdrojový kód v BASICu
http://www.dunnington.u-net.com/public/basicgames/HMRABI - Hamurabi (Wikipedia)
http://en.wikipedia.org/wiki/Hamurabi - Hammurabi naprogramovaný v JavaScriptu
http://www.hammurabigame.com/hammurabi-game.php - Empire – hratelné demo (připojení přes telnet)
http://198.212.189.111/ - Empire Classic (video game)
http://en.wikipedia.org/wiki/Empire_Classic_(computer_game) - Wolfpack empire (moderní verze hry Empire)
http://www.wolfpackempire.com/default.htm - FOCAL (programming language, Wikipedia)
http://en.wikipedia.org/wiki/FOCAL_(programming_language) - Forty Years of Lunar Lander
http://technologizer.com/2009/07/19/lunar-lander/ - Category: Timelines of video games (Wikipedia)
http://en.wikipedia.org/wiki/Category:Timelines_of_video_games - Dennis M. Ritchie – home page
http://cm.bell-labs.com/who/dmr/index.html - Space Travel: Exploring the solar system and the PDP-7
http://cm.bell-labs.com/who/dmr/spacetravel.html - Yes, A video game contributed to Unix Development
http://people.fas.harvard.edu/~lib215/reference/history/spacetravel.html - Space Travel (video game)
http://en.wikipedia.org/wiki/Space_Travel_(video_game) - Computer and Video Game History
http://inventors.about.com/library/inventors/blcomputer_videogames.htm - OXO (Wikipedia)
http://en.wikipedia.org/wiki/OXO - Tennis for Two (Wikipedia)
http://en.wikipedia.org/wiki/Tennis_for_Two - Who really invented the video game?
http://www.atarimagazines.com/cva/v1n1/inventedgames.php - The Video Game Revolution
http://www.pbs.org/kcts/videogamerevolution/history/timeline.html - PDP-1 Web Pages
http://www.pdp-1.org/ - PDP-1 Restoration Process
http://pdp-1.computerhistory.org/pdp-1/ - Programmed Data Processor
http://en.wikipedia.org/wiki/Programmed_Data_Processor - Digital Equipment Corporation
http://en.wikipedia.org/wiki/Digital_Equipment_Corporation - PDP-1
http://en.wikipedia.org/wiki/PDP-1 - Space Travel
- Ancient Computing Machinery
http://www.ee.ryerson.ca/~elf/ancient-comp/index.html - Spacewar – The first computer video game. Really!
http://www3.sympatico.ca/maury/games/space/spacewar.html - Programmed Data Processor-1 Handbook
http://www.dbit.com/~greeng3/pdp1/pdp1.html - The First Video Game?
http://www.bnl.gov/bnlweb/history/higinbotham.asp - První část schématu analogového „počítače“ se hrou Tennis for Two:
http://www.bnl.gov/bnlweb/history/images/VideogameSchematic1.jpg - Druhá část schématu analogového „počítače“ se hrou Tennis for Two:
http://www.bnl.gov/bnlweb/history/images/VideogameSchematic2.jpg