NEWS | ČLÁNKY | DOWNLOAD | GUESTBOOK | TUTORIALS ObnovitZavřít
 
hl - ZONE Half-Life Half-Life 2 Half-Life 3
 
Episode One Episode Two Opposing Force Blue Shift Counter-Strike 1.6
 INFO
Přidat do oblíbených
Nastavit jako Homepage

ICQ: 272-515-771 
Aktualizace:

 SYSTÉM
 TLAČÍTKA
hl-ZONE Button 1
 
hl-ZONE Button 2
 SPOLUPRACUJEME
 Propojení dvou map Pondělí 11. 12. 2006
<-- Zvuky - II. část Zhasínáme světla -->

V dnešním tutoriálu si ukážeme, co dělat, když už je naše mapa dost velká a potřebovala by napojit na další. A opět to bude velmi jednoduché. Dneska se zaměříme na tvorbu loadingu mezi dvěma mapami.

Na úvod:
Jistě si pamatujete z Half-Life, že se sem a tam na obrazovce objevil nápis Loading… a hra na chvilku jakoby zamrzla. Ona ovšem ve skutečnosti nezamrzla ani se nesekl počítač, ale začala se načítat nová mapa. Tento problém je známí prakticky ze všech her a každá ho má řešený různě. Někde, kde mapa (nebo mise) skončí, se objeví tabulka se statistikami nebo rozborem aktuálního děje ve hře a nová mapa se načítá v pozadí.

U Half-Life je to řešeno právě tímto nápisem a "zamrznutím" hry, aby nás zbytečně nerozptylovaly texty nebo nějaké informace. Half-Life je přeci dělaný jako celovečerní film.

Dnes se tedy podíváme na to, jak docílit toho, aby se při projití určitým místem načetla nová mapa. K tomu slouží dvě entity. Jedna je Solid entita trigger_changelevel a druhá Point entita info_landmark. Pojďme tedy na to.

Chodba:
Nejprve je nutné si vytvořit ideální místo k Loadingu, tedy nějakou chodbu, nebo místnosti. Podmínkou je, že by toto místo mělo být malé a nejlépe, aby se poblíž vyskytoval roh, za který nebude vidět. Ideální je proto chodba ve tvaru U. Snad to pochopíte z následujícího obrázku.


Obr. 1
Chodba z pohledu top

Pokud máme chodbu vytvořenou, uložte mapu, například mapa1.rmf a následně vše zkopírujte do nové mapy, kterou opět uložte, tentokrát pod názvem mapa2.rmf. Nyní by bylo dobré obě mapy nějaký způsobem rozlišit, aby bylo jasné, ve které se právě nacházíme. Rozlišením myslím třeba přidání dveří nebo trubek z různými texturami. Ale pouze do jedné půlky mapy, tedy do té, kde se budeme právě nalézat. Opět vše dokládám na následujících obrázcích. A pochopitelně, že do první mapy vložte info_player_start.


Obr. 2
Chodba v první mapě

Obr. 3
Chodba ve druhé mapě

Loading...:
Nyní, když mámě připraveny obě mapy, můžeme se pustit do tvorby samotného propojení. Jednoduše to lze vysvětlit na teleportu. Když projdete entitou trigger_changelevel budete teleportování do nové mapy na místo, které určuje entita info_landmark. Zde se však snažíme vytvořit iluzi plynulého přechodu mezi dvěma mapami, proto všechny textury, které budou v zorném poli hráče při přenosu musí být na stejném místě v obou mapách, jinak to bude kazit dojem z mapy.

Pojďme tedy na trigger_changelevel. Otevřete si první mapu (pojmenovanou mapa1.rmf) a vytvořte brush s texturou AAATRIGGER, který umístěte podle následujícího obrázku. Poté ho převeďte na entitu trigger_changelevel, která má následující parametry (obrázky následují až po parametrech):

trigger_changelevel - záložka Class_info:
Name: jméno entity, pomocí kterého se na ni odvoláme; je tedy jasné, že tuto entitu a následně přechod do další mapy můžeme uskutečnit třeba pomocí tlačítka a tudíž přes ní vůbec nemusíme projít
New map name: jméno mapy, která se má načíst (bez přípony)
Landmark name: jméno info_landmark entity, která určuje polohu hráče v nové mapě
Change Target: přechodem můžete změnit cíl na jinou entitu (přesně ale nevím jak to funguje a asi se s tím nikdy nesetkáte)
Delay before change target: prodleva v sekundách před změnou cíle

trigger_changelevel - záložka Flags:
No Intermission: v překladu, to znamená "žádná pauza" takže by to logicky mělo sloužit k plynulému přechodu mezi dvěmi mapami, ale u mě to nefungovalo; proto je možné, že se jedná o zamezení prodlevy, která se například nastaví u jiného spouštěče této entity
USE Only: pokud spouštíme přechod mezi mapami nějakým triggerem a zaškrtneme tento parametr, přechod se uskuteční pouze při aktivaci příslušného spouštěče, jinak bude entita neaktivní

Tím by byla entita popsána a snad i vysvětlena. Nyní se podíváme na druhou entitu a tou je info_landmark. Tato entita má pouze jediný parametr a tím je Name. Je jasné, že sem přijde zadat to samé, co do kolonky Landmark name u entity trigger_changelevel. Vložte tedy do mapy mapa2.rmf i tuto entitu, zhruba do místa jako na obrázku.


Obr. 4
První mapa

Obr. 5
Druhá mapa

Nyní bychom měli mít vše připravené k přechodu z mapa1.rmf do mapa2.rmf. Pokud se však ocitneme ve druhé mapě, zpátky do první se nikdy nedostaneme (leda, že bychom hru spustili znovu). Této "chyby" se dá využít v nějakých případech, kdy je jistota, že se do předchozí mapy už nepodíváme (pokud zavzpomínáme na Half-Life, tak mě napadá třeba jízda vláčkem v úvodu hry, nebo konec levelu Lambda Core a teleportace na Xen). V této situace je to však zásadní chyba a my jistě budeme toužit po návratu do předchozí mapy.

Řešení je naprosto jednoduché. Umístěte do mapa1.rmf také entitu info_landmark a do druhé mapy také entitu trigger_changelevel. Takže obrázky, znovu a ještě jednou…


Obr. 6
První mapa

Obr. 7
Druhá mapa

Pokud máte vše vloženo zhruba podle obou obrázků, můžeme si ukázat nastavení všech entit. Nastavte je takto (pochopitelně nevyplněné parametry si vyzkoušejte, ale dodržte následující údaje, jinak vám loading nemusí fungovat):

trigger_changelevel - mapa1.rmf:
New map name: mapa2
Landmark name: map1_map2

trigger_changelevel - mapa2.rmf:
New map name: mapa1
Landmark name: map1_map2

info_landmark - mapa1.rmf, mapa2.rmf:
Name: map1_map2

Tip01:
Uvědomte si, že aby vám loading skutečně fungoval, je třeba mít nejen vše dobře nastavené, popřípadě precizně udělané (tím myslím hlavně textury), ale také mít obě mapy uložené a zkompilované. Pokud jednu kompilaci vypustíte, hra vám spadne nebo hodí chybové hlášení. Někdy se také stává, že spuštění mapy přímo po kompilaci nestačí a opět loading nefunguje. Pokud se to stane, spusťte hru normálně přes příkazový řádek (třeba Total Commander), a mapu načtěte přes konsoly (map název_mapy). Poté by už vše mělo fungovat.

Tip02:
Také může nastat problém s tím, že po načtení nové mapy se neobjevíte na stejném místě ale o pár jednotek jinde (třeba ve vzduchu) a to je pochopitelně nežádoucí. Je to způsobeno špatným umístěním entity info_landmark, která právě určuje místo, kde by se mapy měli překrývat, takže ho v obou mapách umístěte na stejnou pozici a pokud i přesto se objevujete jinde, zkuste ho posunout o pár jednotek různými směry (ale opět na stejné místo v obou mapách).

Závěr:
Aniž bychom se nadáli, jsme v samotném závěru tutoriálu, kde jsme si ukázali jak propojit dvě mapy loadingem a tak postupně začít budovat skutečně velikou modifikaci. Přechod mezi dvěma mapami není nikterak složitý, ale chce to u toho trochu myslet. Lehko se dá udělat chyba ve jménu. Načtení nové mapy sebou přináší i mnoho možností a nemusí se jednat vždy o obyčejné napojení další mapy, ale dají se myslet velmi pěkné efekty (třeba aktivace přes tlačítko). To už však nechám na vás. Takže do příště ZDAR!!!

 

SOUBORY

 

KOMENTÁŘE

 

Žádné komentáře nejsou zatím k dispozici
 

 

<-- Zvuky - II. část Zhasínáme světla -->

NAHORU ...

 ČERSTVÉ NOVINKY
 POSLEDNÍ TUTORIÁLY
 ANKETA
Staré ankety
 REKLAMA