Síťová podpora DirectPlay |
Síťová podpora DirectPlay umožňuje programům přenášet informace v reálném čase pomocí síťového spojení. Hlavní použití DirectPlay je při provozování her mezi více počítači zapojenými do lokální nebo veřejně sítě, jako je např. Internet. Kromě her má DirectPlay velký význam i v mnoha jiných oblastech vyžadujících komunikaci programů na různých počítačích v reálném čase. Typickým příkladem jsou zkoušející a výukové programy ve školních učebnách. Nutnou podmínkou pro provoz síťové podpory DirectPlay je instalace ovladačů DirectX verze minimálně 5.0, u systému Windows 98 jsou tyto ovladače již v základním vybavení systému.
Použití DirectPlay spočívá v následujících krocích:
1. Výběr spojení. Spojení určuje typ propojení počítačů po hardwarové stránce (sériový kabel, modem, místní síť IPX, veřejná síť TCP). U některých typů spojení je určující ještě adresa počítače, který hru vytvářel a bude řídicím počítačem hry.
2. Výběr hry. Na vybraném spojení může být provozováno více nezávislých her. Je možné se připojit k již spuštěné hře nebo vytvořit hru novou. Řídicí počítač (který hru vytvořil) může nastavovat upřesňující parametry hry.
3. Vytvoření hráče. Po připojení ke hře je nutné vytvořit hráče. Po jeho vytvoření je možné komunikovat s ostatními hráči ve hře a přenášet herní data.
4. Přenos herních dat. Během hry vysílá každý hráč ostatním hráčům ve hře herní informace, jako je pohyb hráče atd.
seznam spojení
Prvek seznam spojení navrací víceřádkový textový seznam názvů možných spojení na počítači. Prázdný seznam znamená, že není nainstalována obsluha DirectX minimální verze 5.0.
aktivní spojení
Prvek aktivní spojení umožňuje nastavit nebo zjistit aktivní vybrané spojení. Jako parametr při nastavení spojení se zadává jeden z řádků seznamu spojení. Není-li odpovídající spojení v seznamu nalezeno, provádí se zkrácené porovnání hledáním klíčových řetězců v textech: "IPX", "TCP", "MODEM" a "SERIAL", klíčové řetězce lze tedy použít při volbě spojení programem jako zkratky. Je-li zadán prázdný text, aktivní spojení se zruší a s ním se přeruší i probíhající hra. Navrácení prázdného textu znamená, že zvolené spojení není na počítači podporováno (např. není nainstalován modem).
IP adresa tohoto počítače
Prvek IP adresa tohoto počítače navrací IP adresu počítače v textovém tvaru např. "123.56.210.234". Adresa IP je adresa, kterou dostane počítač přidělenu od řídicího serveru po připojení na síť Internet. Typický postup při hře přes síť Internet je ten, že jeden z hráčů vytvoří hru (vybrané spojení je TCP/IP), podívá se v okně hry na IP adresu (při každém připojení na Internet může být jiná), tuto adresu sdělí telefonem nebo raději přes e-mail ostatním hráčům, ti zvolí připojení ke hře a zadají sdělenou adresu jako adresu řídicího počítače.
seznam her
Prvek seznam her navrací víceřádkový seznam her, které jsou spuštěné na vybraném spojení. U adresovaných spojení, jako je Internet TCP, je systémem před vyhledáním seznamu her vyžádána adresa počítače, na kterém mají být spuštěné hry vyhledávány. V místních sítích je možné vynecháním zadání adresy počítače vyhledávat spuštěné hry na všech počítačích. Seznam her je průběžně aktualizován podle nalezených her. Seznam her lze vyprázdnit vypnutím aktivního spojení (nastavením jména spojení na prázdný text) a opětovným otevřením spojení, vyhledávání začne opět od začátku a s novou zadanou adresou. Je zajištěno, že jednotlivé hry v seznamu mají jedinečná jména. Jsou-li vytvořeny dvě hry se stejným jménem, jsou jména her číslována, aby bylo možné jednoznačné určení hry jejím jménem.
V seznamu her jsou viditelné pouze hry vytvořené stejným programem. K rozpoznání stejných programů se používá identifikace odvozená od jména
hlavní funkce programu vytvořeného v prostředí nástroje Petr. Nutnou podmínkou pro navázání programů na stejnou hru je tedy nastavení stejného jména ve jménu hlavní funkce programu.
aktivní hra
Prvek aktivní hra je textová proměnná sloužící k vytvoření nové hry nebo k připojení k probíhající hře. Výběrem jména hry ze seznamu her a nastavením hry jako aktivní se provede připojení ke zvolené hře. Zadáním jména hry neexistující v seznamu se vytvoří nová hra. Pro rozlišení, zda se bude vytvářet nová hra nebo bude připojení ke hře je rozhodující, zda se zadaná hra vyskytuje v seznamu her. Zpravidla před připojením hry je načítán seznam her a čekáno na objevení se požadované hry v seznamu, před vytvořením hry by naopak seznam neměl být načítán, aby neobsahoval žádnou hru (seznam lze vynulovat uzavřením a novým otevřením aktivního spojení). Nelze-li hru nastavit jako aktivní (např. dosaženo maximálního počtu hráčů), navrací prvek prázdný text. Nastavením prvku na prázdný text se aktivní hra opustí.
hostitel (řídicí počítač)
Prvek hostitel (řídicí počítač) je logický příznak udávající, zda je tento počítač řídicím počítačem, který hru vytvářel a na kterém je hra provozována. Opustí-li řídicí počítač hru, převezme řízení hry jiný počítač, převzetí řízení hry je indikováno nastavením zmíněného příznaku.
maximálně hráčů (0 = neomezeno)
Prvek maximálně hráčů je číselná proměnná udávající maximální počet hráčů, kteří se mohou připojit ke hře. Hodnota 0 udává neomezený počet hráčů (implicitní hodnota). Tento prvek může měnit pouze řídicí počítač. S jeho pomocí lze znemožnit zapojování dalších hráčů do již probíhající hry - po zahájení hry nastaví řídicí počítač maximální počet hráčů na skutečný počet hráčů ve hře.
...
číselný parametr hry 1 až 8 (-16384 až +16383)
Prvky číselný parametr hry 1 až 8 jsou celočíselné proměnné s rozsahem -16384 až +16383, které lze využít k nastavení parametrů hry. Parametry hry může měnit pouze řídicí počítač, ostatní počítače mohou proměnné pouze číst.
...
přepínač hry 1 až 8
Prvky přepínač hry 1 až 8 jsou logické proměnné sloužící k nastavení parametrů hry. Parametry hry může měnit pouze řídicí počítač, ostatní počítače mohou proměnné pouze číst.
seznam hráčů
Prvek seznam hráčů navrací víceřádkový seznam hráčů, kteří jsou zapojeni do vybrané hry. Každý z hráčů má přiděleno neměnné pořadové číslo v seznamu. Opuštěním hráče hry zůstane jeho místo v pořadí prázdné (prázdný řádek v seznamu) až do chvíle přidělení místa jinému novému hráči. Proto může být počet hráčů ve hře nižší než je počet řádků seznamu hráčů. Jména hráčů ve hře jsou jednoznačná, při výskytu stejných jmen jsou jména číslována.
aktivní hráč
Prvek aktivní hráč je textová proměnná sloužící k vytvoření hráče po připojení nebo vytvoření hry. Hráč se vytvoří zadáním jeho jména. V případě úspěšného vytvoření hráče se hráč objeví v seznamu hráčů a tento prvek navrací jméno hráče, v případě zadání již existujícího jména bude jméno číslováno. Navrácením prázdného textu je indikováno neúspěšné vytvoření hráče (dosaženo maximálního počtu hráčů). Zadáním jiného jména hráče po jeho vytvoření bude hráč přejmenován. Zadáním prázdného textu je hráč ze hry zrušen (pozor na zadání prázdného textu uživatelem, hráč by mohl být zrušen nechtěně).
číslo aktivního hráče (-1 = není)
Prvek číslo aktivního hráče navrací číselný údaj představující pořadové číslo hráče v seznamu hráčů (číslováno od 0). Není-li hráč vytvořen, je navrácena hodnota -1.
odeslání/příjem bloku dat (-1 = všem/není)
Prvek odeslání/příjem bloku dat slouží k přenosu herních dat mezi hráči. Příjem dat se provádí čtením číselné hodnoty tohoto prvku. Nejsou-li přijata žádná data, je navrácena hodnota -1. Jsou-li data přijata, je navráceno číslo hráče, který data vyslal. Od této chvíle jsou v zásobníku přijatých dat připravena data, která lze číst pomocí datových prvků (viz dále) až do vyčerpání dat nebo do příjmu dalšího bloku dat. Před vysláním bloku dat jsou data nejdříve uložena do zásobníku výstupních dat pomocí datových prvků. Uvedením prvku pro odeslání bloku dat jako příkaz s nastaveným číslem cílového hráče jsou data z výstupního zásobníku vyslána zvolenému hráči. Zadáním hodnoty -1 jako čísla cílového hráče jsou data rozeslána všem hráčům ve hře, stejně jako není-li zadána žádná hodnota.
číslo
Prvek číslo slouží k vyslání a příjmu čísla mezi hráči ve hře. Při zadání čísla se číslo uloží až do odeslání do výstupního zásobníku, při čtení se číslo načítá ze vstupního zásobníku. Nejsou-li ve vstupním zásobníku již žádná data, navrací se hodnota 0.
celé číslo 0 až 255 (bajt)
Prvek celé číslo 0 až 255 (bajt) slouží k vyslání a příjmu celočíselné hodnoty s rozsahem 0 až 255 mezi hráči ve hře. Toto číslo je výhodné malou náročností na kapacitu přenosu, zabírá pouze 1 bajt (1 znak), naproti tomu běžné číslo zabírá 8 bajtů. Při zadání čísla se číslo uloží až do odeslání do výstupního zásobníku, při čtení se číslo načítá ze vstupního zásobníku. Nejsou-li ve vstupním zásobníku již žádná data, navrací se hodnota 0.
text
Prvek text slouží k vyslání a příjmu textu mezi hráči ve hře. Při zadání textu se text uloží až do odeslání do výstupního zásobníku, při čtení se text načítá ze vstupního zásobníku. Nejsou-li ve vstupním zásobníku již žádná data, navrací se prázdný text.
přepínač
Prvek přepínač slouží k vyslání a příjmu logického příznaku mezi hráči ve hře. Při zadání příznaku se příznak uloží až do odeslání do výstupního zásobníku, při čtení se příznak načítá ze vstupního zásobníku. Nejsou-li ve vstupním zásobníku již žádná data, navrací se vypnutý příznak (hodnota NE).
Poznámky k organizaci přenosu dat:
Během hry je nutné počítat se zpožděním přenášených informací. Zpoždění bývá typicky jednotky až stovky milisekund. Může též nastat případ, že některé informace nepřijdou ve stejném pořadí jak byly vyslány, či se dokonce mohou ztratit. To vyžaduje od programu jistou odolnost proti chybám přenosu. Jednou z používaných metod řízení hry je ponechání veškerého řízení na jednom z počítačů (zpravidla řídicí počítač, který hru vytvářel). Tento rozhodovací počítač dostává od uživatelů na všech počítačích ovládací informace, rozhoduje o prováděných akcích ve hře a poté rozesílá ostatním počítačům povely k další činnosti. Tento mód centrálního řízení má výhodu v jednoznačném průběhu hry, nevýhodou je nižší rychlost hry a vyšší náročnost na přenos dat mezi počítači a navíc problém s předáváním řízení, pokud řídicí počítač opustí hru. Jinou možností je ponechání rozhodování na každém z počítačů. Každý z počítačů informuje ostatní počítače o provedených akcích a o všech událostech, které se týkají tohoto počítače. Jedná se např. o informace o přesunu vlastních postav ve hře, rozhodnutí o vlastním zásahu od protihráče a informace o změně vlastního skore či energie postav. Ostatní počítače provádějí pouze nezbytné úkony jako je animace pohybu postav. Formát přenášených dat si určuje programátor sám při vytváření programu. Typické použití je přenášet data jako skupinky dat. Na začátku každé skupinky je číslo s hodnotou 1 až 255 představující kód povelu. Za povelem následují parametry povelu podle vlastního určení. Povel s číslem 0 představuje konec dat (tato hodnota je přijata automaticky, nejsou-li již další data ve vstupním zásobníku).
Plný html kontextový help Petra - Gemtree Software & Dětské programování
Full Html Context Help of The Peter - Gemtree Software & Children Programming