Nový program pro editaci Mafia ve vývoji

LS3D - logo

Dnes bych chtěl všechny fanoušky zajímající se o modifikování hry Mafia upozornit na nově vznikající program LS3D Sandbox, na kterém pracuje známý módař djbozkosz. Program slouží především k úpravě misí a měl by zahrnovat funkčnost několika starších editorů dohromady + nějaké funkce navíc. Mně nyní nezbývá nic jiného, než Vás odkázat na pokračování novinky, kde naleznete čtyři obrázky z vývoje a především veškeré, přehledně sepsané informace přímo od autora.

Editor by měl zahrnovat funkce starších editorů (MWE, DCED, BSV, CHE a ROE … modaři pochopí) včetně konverze a úpravy 4ds modelů.

LS3D Sandbox LS3D Sandbox LS3D Sandbox LS3D Sandbox

Obrázky z vývoje programu LS3D Sandbox

Podrobnější rozpis funkcí, které by měla obsahovat finální verze editoru:

Scene2.bin (hlavní soubor mise):

  • vkládání, umisťování modelů a jiných objektů (světla, zvuky, body, atd, …)
  • úprava vlastností objektů (lidi, doprava, fyzikální objekty, dveře, tramvaje, atd…)
  • skriptování včetně zvýraznění syntaxe, šablony
  • úprava složitějších objektů (occludery, volumetrické objekty)
  • později: podpora nasvícení a lightmappingu (včetně radiozity) počítaného přes GPU

Cache.bin (zhuštěný soubor modelů):

  • tvorba a správa skupin (oblastí) a jejich hraničních vektorů
  • vkládání modelů do oblastí

Tree.klz (soubor kolizí):

  • tvorba primitivních kolizí (Axis Aligned Bounding Box, Bounding Box (XTOBB), Cylinder, Plane (OBB), Sphere)
  • tvorba face kolizí
  • možnost vymazání (pokud model chybí) nebo přestavění (pokud se model změnil) face kolize
  • automatické přidělení materiálů při tvorbě kolize podle difúzních textur rodičovského modelu
  • tvorba primitivních kolizí z dummy v modelu

Check.bin (soubor navigačních bodů):

  • tvorba a úprava navigačních bodů různých typů (chodci, AI, tramvaje, letadla, atd…)
  • nástroje pro tvorbu, např.: vyplnit terén mřížkou bodů
  • uvažuju o funkci pro automatické vytvoření mapy bodů na modelu ve schůdných oblastech

Road.bin (soubor navigačních bodů dopravy):

  • tvorba a úprava křížených a vodících bodů
  • možnost automatického vypočtení rychlosti aut v bodech dle terénu
  • uvažuju o možnosti automatického vytvoření bodů na úseku modelu (např.: silnice)

4ds modely a kompletní úprava materiálů:

  • difúzní, alpha, environmentální textury
  • různé režimy a síla env mapování: překrytí (vážený průměr mezi difuzí a env), additivní (sečtení difuze a env), multiplikativní (násobení difuze a env)
  • použití env mapy jako detail texturu
  • kolorování textur: difuse (kde svítí světlo), ambient (ve stínu), emission (vydává světlo)
  • vyhlazování textur: buď s mipmappingen a bilineárním (trilineárním) filtrováním nebo bez mipmappingu – je interpolována pouze jedna textura (v dálce jsou ostré)
  • průhlednost, color key, animované textury, 2 sided materiál, additive blending

úprava geometrie modelů:

  • zpřístupněny všechny parametry a proměnné, definice a vlastnosti vertexů, facetů, atd…
  • konverze objektů, např. na: sektory, glowy, morphing, billboarding, zrcadla, atd…
  • dále bych rád počítal s jednoduchou tvorbou modelů, vhodnou pro terén a interiéry (na vše ostatní je tu Zmodeler popř. 3ds Max)
  • nástroj pro tvorbu silnic z křivek (protože dělat cesty ve Zmodeleru je děs), po misi si potaháte body, ze kterých se vytvoří křivka (Catmull-Rom Spline) a s použitím vzoru (např.: silnice) se křivka vyplní tímto vzorem

Vývoj se zatím nachází ve stádiu Alpha (pro mě nejnudnější), kdy je nutné rozkódovat samotné soubory a napsat základní engine pro načtení a zobrazení scény. Editor jsem začal psát někdy ke konci letního semestru (konec dubna) a jakmile jsem dojel poslední zkoušky ve druháku (konec května), mohl se vývoj rozjet trochu víc. Jako programovací jazyk bylo použito C++, pro zobrazovací API: OpenGL, počet řádků se zatím pohybuje kolem deviti tisíc, kód je rozdělen do patnácti modulů plus dva shadery (vertex a frame) a kompilace trvá dlouhých patnáct sekund (C++ Builder 6).

Nyní je potřeba napsat základní funkce pro úpravu scény: vkládání objektů, základní úprava 4ds a především optimalizovat zobrazovací proces. Protože jedna věc je, že kód funguje, ovšem druhá, a pro realtime renderování v počítačové grafice, nezbytná věc je: jak rychle. Nyní, když jsou zobrazeny všechny body, pomocné objekty a je kreslena trochu větší oblast, padá framerate k nepoužitelným hodnotám.

Poslední věcí, na kterou se určitě ptáte, je datum vydání. Než udělám vše v odstavci výše, potrvá to minimálně několik týdnů. Takže vydání alpha verze bych rád stihnul ještě na konci sprna. Jednak mám aji jinačí věci na práci a druhák tu na Valašsku (pro Čecháčky: tam na východě, skoro až na Ukrajině :D) poslední dobou nezaprší a nezaprší, takže je tu hyc jak cyp…

Zdroj: vlastní