Pravidla Ucet
Nepřihlášen

Článek

Menu

First Person Shooter - 4. část
Napsal: Satik64
Přidáno: 29.07. 2010

Poslední díl tutoriálu Marka Overmarse. V tomto díle přidáme dveře, řekneme si, jak zlepšit podlahu a strop, a ukážeme si jak zvýšit herní výkon.

Další vylepšení

Omezení zobrazení

Když se pohybujeme v našem trojrozměrném světě, můžeme vidět jen jeho část. Bohužel, systém neví kterou část vidíme. Takže všechny objekty (alespoň ty před hráčem) jsou vykresleny. To je ztráta času, a dokonce i na rychlých grafických kartách může ovlivit framerate, zvlášť když je room velký. Všechny trojrozměrné hry musí tento problém řešit a vyhnout se vykreslováním zbytečných objektů jak je to jen možné.


Jeden způsob jak to udělat jsou malé levely. Můžete použít speciální body jako teleporty k pohybu do dalšího levelu. Můžete to udělat způsobem, že si toho hráč nevšimne. Například, můžete udělat přechodovou chodbu. Tu vložíte do chodby v obou levelech. V půlce cesty hráč skočí z jednoho levelu do dalšího. Když hráč nemůže vidět zbytek levelu, nevšimne si toho. (Měli byste používat u roomu persistent, to zařídí možnost vrátit se k předchozímu místu.) Podobného efektu můžete dosáhnout použitím dveří, nebo výtahu.


Další možnost jak omezit zobrazení. Omezíme zobrazení tak, že se budou vykreslovat jen objekty, které jsou blízko hráči. Kdykoliv něco vykreslujeme, nejdřív ověříme, jestli je objekt dostatečně blízko. Aby to bylo rychlejší, uložíme aktuální pozici hráče (kamery) do dvou globálních proměnných camx a camy. Dále, v eventu Draw všech zdí, rostlin, příšer atd. vložíme toto ověření:


if (point_distance(x,y,global.camx,global.camy) >240) exit;
 

Takže pokud bude vzdálenost od kamery větší, neprovede se nic. Hodnota 240 závisí na vašem room designu. Lepší je se ujistit, že není žádné místo, kde je vidět přes dlouhé chodby. Takže dáme roomu černou barvu pozadí a na místě, kdy hráč dohlédl, bude jednoduše černo, které krásně splyne s naší černou mlhou. Pokud máte pomalou grafickou kartu, měla by hra běžet mnohem líp proti minulé verzi. (pokud máte rychlou grafickou kartu, můžete změnit room speed, abyste efekt viděli.)


Když roomy zvětšíte a dáte více objektů, účinek bude ještě větší. Můžete se i pokusit určit, které instance musí být vykresleny. Komerční hry používají techniky, ve kterých vymezí oblasti v levelu, které jsou viditelné, a vykreslí jenom ty. To může zlepšit rychlost ještě víc.


Dveře

Dveře mezi roomy a chodbami jsou další pěknou vlastností hry. Může to vytvořit další napětí při hraní hry. Co je za dveřmi? Budou tam přišery? Taky můžete hráče přinutit postupovat levelem konkrétním způsobem pomocí tlačítka otevírajícího hlavní dveře.


Tady do naší hry přidáme nějaké jednoduché dveře: dveře, které se plynule otevřou po střelení. Dveře pohybující se nahoru a dolů jsou taky snadné. Otočné dveře jsou trochu složitější, protože musíte kontrolovat situaci, kdy je příšera nebo hráč blokuje.


K přidání budeme potřebovat nějaké sprity dveří. Přidáme je jako pozadí, stejně jako zeď. Vytvoříme 2 objekty (je to jednodušší, ikdyž by to šlo udělat v jednom). První objekt jsou zavřené dveře. Vypadá přesně jako horizontální objekt zdi, kromě Destroy eventu, kde vytvoříme instanci posuvné stěny. Opět dáme parent základní zdi pro zajištění, aby hráči ani příšery nemohli projít.


Druhý objekt budou posouvající se dveře. Bude vypadat stejně jako zavřené, ale do eventu Create dáme horizontální rychlost na 1. Taky nastavíme alarm na 32, a v Alarm eventu rychlost na 0. (mohli bychom objekt také zničit). Nakonec, v eventu Step přizpůsobíme x1 a x2 pozici pro zajištění vykreslování textury na správném místě. Posouvající se dveře jsou hotové.


Můžeme se ale i rozhodnout, jak mají být dveře otevřeny. Rozhodli jsme se otevřít je střelbou hráče. K tomuto účelu v <space> eventu vykreslovacího objektu (tam, jde je prováděna střelba) změníme kod na konci na tento:

if (ii.object_index == obj_barrel) || (ii.object_index == obj_door)
with (ii) instance_destroy();
break;

To je vše. Umístěte nové dveře do místnosti.Ujistěte se, že bezpečně jezdí do zdi, proto je neumísťujte na konec zdi. Samozřejmě, aby to bylo zajímavější, můžete přidat taky vertikálně posouvající dveře a možná dveře pohybující se doleva a doprava.


Podlaha a strop

Ve hře, kterou jsme vytvořili jsme zatím udělali jeden velký strop a podlahu. Ikdyž je to lehké, je to taky trochu nudné. To můžeme lehce napravit. Můžete vytvořit různý počet odlišných textur pro odlišné podlaky a stropy a udělat pak nějaké odlišné objekty podlah a stropů, vykreslující část. Jsou to velmi jednoduché objekty bez chování (pokud nechcete udělat pohybující podlahy a stropy). Stačí je vložit na odpovídající pozici v roomu a hotovo. Lepší je dělat podlahy a stropy spíš větší, jinak jich budete potřebovat víc.


Můžete přidat kusům stropu jiné výšky. Pro tuto možnost vytvořte vysoké a nízké oblasti ve vašem světě. Ujistěte se, že jsou zdi dostatečně vysoké. Dávání odlišných výšek podlaze je taky možné, ale složitější. Musíte přizpůsobit hráče, příšery a ostatní objekty na podlaze, aby na ní stáli. To vyžaduje další výpočty. A musíte se rozhodnout, kdy hráč může jít z jednoho povrchu na jiný.


Když to všechno vytvoříte, je také jednoduché vytvořit na podlaze zakázané části. Například můžete dát části podlahy texturu lávy (můžete ji dokonce animovat). K vyhnutí pohybu hríče po lávě je nejlepší řešení umístění neviditelných částí zdi.

Nebudeme realizovat všechny tyto možnosti, ale měli byste teď být schopni sami experimentovat.

Tvorba hry

Samozřejmě to co jsme zatím udělali není ve skutečnosti hra. Ale dává základy k jejímu vytvoření. Můžete přidat několik dalších přišer s odlišným chováním, odlišné textury k vytvoření zajímavějšího světa, různé zbraně, zvukové efekty a další objekty. Ale pečlivý level design je velmi důležitý. Přidání toho všeho by mohlo znamenat příliš mnoho textur k uložení v jeden okamžik. Ale pokud nepoužijete všechny najednou, můžete jednoduše použít fukce a akce k nahrazení spritů a pozadí ze souboru. To má navíc tu výhodu, že například počet odlišných zdí není omezen. V dalším levelu můžete jednoduše použít stejné, ale, protože textury nahradíte, budou vypadat jinak.

 

To je vše z tutoriálu Marka Overmarse. Doufám, že jste se něco naučili a vydrželi často hrozný překlad :D

 

Možná bude i další 5.díl, ve kterém napíšu něco o dalších vylepšení hry, jako míření myší, osvětlení a tak. To ale podle toho jak se mě v tom bude dařit.

Konečnou verzi střílečky můžete stáhnout tady

Ostatní díly seriálu:
[29.07. 2010] - First Person Shooter - 3. část
[29.07. 2010] - First Person Shooter - 2. část
[29.07. 2010] - First Person Shooter - 1. část
Klíčová slova: first person shooter fps 3D GM3D
 

Komentáře:

Napsal: Tronf
Přidáno: 29.07. 2010

Pekná práca

Trvalý odkaz

Napsal: DDL Blue
Přidáno: 29.07. 2010

Hezké, už to máš v éteru ;)

Trvalý odkaz

Napsal: jackm
Přidáno: 29.07. 2010

Super jsi borec!

Trvalý odkaz

Velkej Chytrák
Copyright (c) 2001-2010