článek

Bechon - upravte si pecku k obrazu svému

Bechon - upravte si pecku k obrazu svému

Patříte-li k té inteligentnější a podnikavější části planety a zaujal vás ráno vydaný Bechon, máme tu pro vás milou třešničku - složitý, leč poměrně rozsáhlý návod na editaci jedné z nejlepších her předloňské Becherovky.

Hra Bechon umožňuje širokou škálu změn levelů, grafiky, zvuků a celkového pojetí emzáků. Tento stručný návod by měl pomoci orientovat se v definicích těchto hodnot. Verze souboru je z 7.2.2006



Program pro konverzi modelů z formátů .ASE a .3ds na .mesh: ModelConv.exe.



Levely



Všechno kolem levelů - počty a chování emzáků, bonusy, hlášky a atmosféra jsou nastavitelné přes xml soubory v adresáři levels/



Filosofie souborů je postavena na nadřazenosti zapsaných údajů. Pokud je v základním souboru events.xml u emzáka hodnota životů nastavena na 200, ale v levelu je mu přidělena hodnota 100, platí hodnota 100.



Soubory spawns, events a level používají na nejspodnější úrovni stejný zápis údajů a pracují tedy se stejnými údaji pro vytvoření předmětu. Např. život můžem zapsat v events.xml jako základní hodnotu, ve spawns.xml zadat rozdílné hodnoty pro jednotlivé emzáky - třeba první ve vlně je silnější, a v některém patře jim všem ze skupiny nastavit lehčí úroveň.



Soubory levelů se ještě liší tím, že mohou obsahovat definice událostí, sad emzáků či animace.



Postupně si projdem všechny soubory:




  • events.xml - definice událostí - vytvoření emzáků, bonusů a ostatních.

  • spawns.xml - definice sad emzáků - např. že se objevují dva naráz.

  • animations.xml - soubor s pohybem emzáků.

  • level_X.xml - hlavní soubor každého patra.

  • mass.xml - definice masívů pro náhodná patra.





events.xml



Soubor obsahuje definice událostí pro vytvoření základních hodnot. Můžeme jej chápat jako aliasy pro později volané události, zprostředkovává pro nás tedy základní komunikaci mezi xml soubory a programem. Data jsou seznamem event prvků, parametr name - jedinečné jméno pod kterým budeme tuto událost volat později z levelů.




Podíváme se na příklad emzáka Houba:






64
32











Emzák houba má jednoznačný název MZhouba. Parametr event určuje, která událost v programu se použije, emzak1 vyvolává základní událost pro standardní emzáky, která umožňuje načíst jakýkoliv model a texturu uložené v adresáři models\emzaci1. O této události si povíme později.



Některé události z event mají možnost zadat další parametry, obvykle oddělené čárkou. V tomto případě je pro událost emzak1 poslán parametr param houba.




  • Defaultní hodnotou skóre za zabití je 64.

  • Defaultní hodnotou života je 32.

  • Defaultní pozice je 180bodů nad aktuálním středem ve chvíli vyvolání.

  • Defaultní rychlost houby je Z = -1. Rychlost v Bechonu je standartně 1 bod po ose Z. Takže emzák, který by měl vizuálně stát na místě, by měl mít rychlost po Z = 1. Víme tedy, že emzák houba po vytvoření bude rychle padat dolů (rychlostí 3*60, tedy 180 bodů za sekundu).

  • Defaultní rychlost rotace je Z = 1, rychlost je udávána v počtu stupňů, takže emzák rotuje kolem osy Z celkem svižně (60 stupňů za sekundu).





Seznam všech zadávaných hodnot bude k dispozici později.




spawns.xml



Soubor obsahuje definici sad, nebo skupin emzáků. Samotný soubor začíná zdánlivě nesrozumitelným kódem, leč jedná se o kopii zdrojového kódu, ukazující možnosti zadávání náhodných hodnot. Data jsou rozdělena na skupiny spawntype, ty pak na prvky spawn. Každý spawn prvek vytváří další kopii použité události. Údaje v souboru říkají programu, kolik kopií událostí se má vyvolat a může také upravovat všechny jejich údaje. Pomáhá nám zadávat více stejných naráz - řady, dvojice a další útvary mající stejné chování.



Podíváme se na příklad skupiny CoupleLeft:






















Skupina obsahuje opět jednoznačný a jedinečný název, CoupleLeft. Z názvů plyne, že půjde o dvojici objevující se vlevo. Parametr rand programu říká, že může tuto skupinu použít v náhodných patrech již od 1. levelu. Skupina obsahuje dva spawn prvky. Proberem si ten první.




  • Parametr addtime uvádí v počtu framů od prvního vyvolání, kdy se má událost objevit. Je nastaveno 0, tedy ihned.

  • Parametr position uvádí pozici. Údaj je vždy od aktuální pozice středu obrazovky (X 0, Y 0, a Z se pohybuje).

  • Z obou parametrů spawn je vidět, že první emzák bude na X -300, druhý o 100 bodů doprava, tedy na -200. Oba se objeví současně.





V každé skupině spawntype můžeme definovat stejné údaje jako v events, v každém prvku spawn také, přesto to doporučuji nepoužívat, pouze v případě, že by to nešlo jinak.




animations.xml



Soubor obsahuje definice animací - pohyby a chování emzáků. Tento soubor se liší od prvních dvou v tom, že používá jinou sadu parametrů k nastavení. Data jsou rozdělena na skupin animations, obsahující prvky anim, tedy jednotlivé změny - animační klíče. Všichny objekty ve hře jsou animovány ve standardní rychlosti 60 snímků za vteřinu. Pozice snímků je odpočítávána ihned od vytvoření emzáka, události se provádějí v posloupnosti s tím, že některé delší lze kdykoliv přerušit další událostí.



Podíváme se na příklad animace IntroBecher - láhve Becherovky pod herním menu:




















Skupina obsahuje jednoznačný a jedinečný název – IntroBecher. Obsahuje 3 animační klíče.




  • První neobsahuje parametr frame, takový prvek je spuštěn ihned po vytvoření, podobně jako kdyby obsahoval honodotu 0.

  • Anim bez udání typu upravuje rychlost emzáka. Je třeba opět brát zřetel na to, že rychlost pohybu kamery je konstatní, tedy 1 po ose Z. Událost, která by vizuálně měla stát na místě, musí tedy mít také rychlost 1.

  • První prvek tedy nastavuje, že událost se bude pohybovat s kamerou konstatní rychlostí a bude se pohybovat směrem doprava (X 2.1).

  • Druhý prvek, spouštěný 290 framů po vytvoření zastaví pohyb doprava.

  • Parametr smooth určuje, že změna rychlosti bude postupná - všechny zde uvedené parametry se budou měnit postupně.

  • Třetí prvek, spouštěný 500 framů po vytvoření opět zavede pohyb doprava.






Výsledkem je tedy přílet láhve Becherovky zprava až těsně doprava, kde se na chvíli zastaví a pak opět pokračuje. Vzhledem k tomu, že se animuje změnou rychlosti, je třeba představivost a několika zkoušek. Seznam typů animací pro jednotlivé prvky anim bude přidán později.




Level_X.xml




V tomto souboru je definována posloupnost událostí v patře. Může obsahovat všechna předchozí nastavení, která budou platná jen pro daný level - důležité pro možnost přidávat nové druhy emzáků, událostí a skupin bez ohledu na hlavní soubory hry.




  • V hlavičce každého souboru by měl být číselný parametr id shodný s číslem v názvu souboru.

  • Název levelu je již nepovinný, ale pro přehled by se měl uvádět.

  • Data v souboru jsou rozdělená na tři sekce: events, animations a spawns.

  • Events a animations mohou tedy obsahovat stejná data jako v defaultních souborech a mají před nimi přednost. Data ve spawns mohou obsahovat dva typy prvků.

  • Spawntype - bude se tedy jednat o definici, nebo spawn - jednotlivé události patra.







V levelu se nejvíce pracuje s parametry time a addtime, UseType a UseEvent. První dva určují čas, kdy se má daná událost vyvolat a časový posun od posledně definovaného prvku. Druhé dva určují typ ze spawns.xml a událost z events.xml. Podíváme se na část ze souboru level_0.xml - nehratelné patro probíhající pod herním menu:






IntroSpawn
MZrocketeer3





IntroBecherovka
MZbecherovka






Level 0 obsahuje celou sadu postupně jdoucích emzáků, jedná se o přehlídku, kdy jednotliví aktéři jsou odděleni časem 200. (něco málo přes 3 vteřiny). První prvek je posledním z řady přehlídky, obsahuje parametr addtime 200, tedy posun 200 framů od posledního. Nultý level slouží programu také jako zdroj událostí pro náhodná patra. Parametr rand tedy určuje, že se událost MZrocketeer3 použije až od třetího náhodného patra. Pro tuto událost bude použita sada IntroSpawn, jejíž definici můžem nalézt v souboru spawns.xml. Dočteme se tam, že událost bude vyvolána vizuálně vlevo nahoře, bude mít rychlost kolmo dolů a bude používat animaci IntroAnim, kterou opět můžeme nálezt v souboru animations.xml. Podívate-li se do daného souboru, uvidíte poměrně složitou animaci, která ve výsledku vytváří onu přehlídku pod menu. Jako poslední událost je použita event MZrocketeer3. Na definici události se můžem podívat do souboru events.xml - standardní emzák ověšen raketami.



Následující prázdný prvek nebude vytvářet žadného emzáka ani vyvolávat jinou událost. Nastaví jen čas při načítání souboru zpět na 100. Čteme-li v souboru dále, hned pochopíme proč. Od času 100 následuje 10x po 700 framech (včetně první) láhve becherovky. Nový prvek repeat udává, kolikrát máme použít danou událost MZbecherovka (events.xml) v sadě IntroBecherovka (spawns.xml). Pro všechny kopie je použitý parametr position upravující hodnotu Y na -14, becherovky jsou tedy trochu níže, než je rovina hry.



Můžeme tedy zadávat události v kombinací prvků s parametry time a addtime. Posloupnost je důležitá jen pro úvodní načítání patra.



Level_0 je navíc omezen tím, že první události až po spawn time="100" jsou použity jako zdroj událostí pro náhodná patra. Samotný program totiž nerozpoznává definované události v events.xml dobré od špatných, proto seznam emzáků, tedy nepřátel v prvním patře. Chcete-li přidat nového emzáka tak, aby byl použit v náhodných patrech, je třeba jej zadat do events.xml a i do level_0.xml




Soubor mass.xml má stejnou syntaxy jako level_X soubory. Je použit jen pro náhodná patra jako seznam objektů v pozadí (tedy vraky lodí a shluky meteoritů).




Seznam typů animací




  • Bez typu - změna rychlosti objektu

  • parametr Speed - rychlost, jako Position, tedy mění hodnoty X, Y, Z nebo XYZ - všechny hodnoty naráz

  • parametr RotationSpeed - rychlost rotace ve stupních, jako Position, tedy mění hodnoty X, Y, Z nebo XYZ - všechny hodnoty naráz

  • parametr smooth - zda se má změna provést plynule nebo naráz.

  • bonus - bonusová animace - objekt rotuje ve středu obrazovky.

  • destroy - objekt je zničen

  • freeze - objekt ustane v pohybu

  • hunt - objekt honí lodě hráče(ů)

  • parametr tillnotcatch - objekt honí soupeře dokud jej nedožene

  • linehunt - objekt se snaží dostat na stejnou hodnotu X jako hráč

  • parametr tillnotcatch - objekt honí soupeře dokud jej nedožene

  • mbp, movebypos - objekt se jednorázově posune o hodnotu uvedenou v parametru MoveByPos

  • parametr MobeByPos - syntaxe jako u Position

  • mtp, movetopos - objekt se posune na pozici uvedenou v parametru MoveByPos

  • parametr MobeByPos - syntaxe jako u Position

  • melt - objekt se vrátí na původní rychlosti před zavoláním freeze

  • slowhunt - stejné jako hunt, ale pomaleji

  • use - použije se další animace, název přečten z parametru UseAnim

  • parametr UseAnim - název další animace





Událost emzak1



Speciální událost umožňující načíst libovolný model z adresáře models\emzaci1\mesh\. Jako parametr vstupuje název modelu, samotný soubor by měl vypadat ve tvaru emzak_nazev.mesh. Pokud v adresáři models\emzaci1\images\ existuje png soubor, emzak_nazev.mesh je použitý jako textura. Pokud není, je použita textura emzak_default.png. Začíná-li název m_, je jako default použita mixovaná textura mdefault.png.



Parametr param může obsahovat až několik parametrů oddělený čárkou. První z nich je vždy název emzáka.



Nadále může obsahovat:



  • Shield - emzák bude krytý štítem

  • Číselná hodnota - energie štítu, hráč má štít s energií 1000

  • Zbraň (seznam zbraní je třeba vyčíst z events.xml)

  • frare, fslow, frapid - rychlost palby - občas, pomalu, rychle





Událost emzakX



Speciální událost umožňující načíst libovlnou skupinu modelů jejichž definici nalezne v adresáři models\emzaciX\xmls\. Jako parametr vstupuje název modelu, samotný soubor by měl vypadat ve tvaru emzak_nazev.xml. Struktura souboru je poměrně jednoznačná, jediný návod se může týkat parametru together. Pokud je nastaven na 0 nebo chybí, jedná se o složení emzáka z několika částí, které lze samostně odstřelovat. Přesto je emzák mrtvý až ve chvíli, kdy sestřelíme poslední část. Pokud je nastaven na 1, jedná se o jednolitého emzáka tvořeného několika modely. I přesto lze nastavit jednotlivým částím některá specifika. Samotné použití emzáka se pak řídí stejnými pravidly jako předchozí.



Článek je publikován se svolením Gurroa, vývojáře a autora návodu zároveň.




Jesterka

autor
/ Jesterka

Publikováno: 21.01.2008


další články této kategorie





diskuze

odeslat

Nejsi automat? Napiš výsledek 4 + 4 =

NS1NO

NS1NO | 31.05.22 v 13:01

text příspěvku

Drticka

Drticka | 22.05.18 v 10:35

ok zkusím

phanka

phanka | 23.04.15 v 21:12

vyzkouším


naše databáze obsahuje: 26 944 her

Sponzoři ligy

inzerce