Guida Dungeonblock: funzionamento interno - Capitolo 2

Arves100

Utente Developer
15 Febbraio 2011
515
46
368
413
Buongiorno violentatori delle vostre schede grafiche,
dopo aver venduto la mia anima a @Toki.San, oggi vi porto il secondo capitolo della guida https://www.inforge.net/forum/threads/dungeonblock-informazioni-generali-capitolo-1.602642/.

Partiremo parlando un po' di come Metin2 carica questi oggetti, di come li utilizza rispetto a delle build, e di qualche chiamata divertente che fa al nostro amatissimo render DirectX8 che più amato di cosi non si può.

Gestione del file all'interno delle mappe
Il render delle nostre mappe su Metin2, come tutti sapete, la mappa caricherà in base a delle configurazioni gestite in classici txt diversi oggetti.
Ogni nostro oggetto è contenuto in una cartella particolare (property) tra cui i nostri dungeon block, che differiscono relativamente poco rispetto ai classici building per quanto riguarda il formato (abbiamo il cambio del type e il modello gr2 che ha un nome diverso rispetto a building).
I dungeonblock sono una estensione dell'approccio che Ymir ha rispetto ai classici modelli gr2.

Render delle building
Normalmente, durante il render di una building, il gioco si limita a renderizzare il modello 3d supportando una sola texture nei nostri materiali, ovvero la diffuse map.
Il render dell'ombra, viene gestito disegnando sulla diffuse map del nostro terreno la forma del nostro modello 3d, ovvero in base ai nostri vertici viene applicato una fusione (blend) con un colore nero nella texture del nostro terreno (qui viene anche utilizzata la luce ambientale che metin2 di base ha).
f2.png

Render del dungeon block
I dungeonblock, invece, vengono renderizzati con l'utilizzo di una seconda texture (la "light map" che parlava toki), questa texture verrà fusionata (un blend) con la texture di base, e ci consentirà di creare effetti di luce.
Il render dell'ombra è molto particolare, perchè Metin2 renderizza in maniera invisibile un secondo modello (di quale saranno invisibili solo i vertici), in questo modo non solo verrà ignorato il render dell'ombra di base, ma verranno anche applicate le impostazioni personalizzate della luce.
Siccome il colore della luce ad intensità massima è bianco, l'alfa delle nostre texture verrà ignorata e rimpiazzata con un colore di massima luce, per questo motivo (anche nel worldeditor) questi oggetti ignorano la luce ambientale. (ma teoricamente non è un problema in quanto non dovremmo vedere fuori dal dungeon)
f.png

Considerazioni e guide future

Probabilmente questa lightmap è stata creata per poter sfruttare più punti di luce senza dover toccare o modificare la luce ambientale di base, il quale avrebbe potuto generale problemi se non fosse stata ignorata.

Di tutto quello che ho parlato è possibile trovare il funzionamento su EterGrnLib/ThingInstance.cpp per gli oggetti di base (tra cui il building), mentre i dungeonblock si trovano in GameLib/DungeonBlock.cpp (il quale fa chiamate particolari al render DirectX8), il render della mappa (e della shadow di base) lo troviamo in GameLib/MapOutdoor.cpp

Attendiamo qualche aggiornamento per le prossime parti delle guide, buona fortuna!
 

Thomas Shelby

Utente Emerald
28 Giugno 2020
1,501
26
591
445
Buongiorno violentatori delle vostre schede grafiche,
dopo aver venduto la mia anima a @Toki.San, oggi vi porto il secondo capitolo della guida https://www.inforge.net/forum/threads/dungeonblock-informazioni-generali-capitolo-1.602642/.

Partiremo parlando un po' di come Metin2 carica questi oggetti, di come li utilizza rispetto a delle build, e di qualche chiamata divertente che fa al nostro amatissimo render DirectX8 che più amato di cosi non si può.

Gestione del file all'interno delle mappe
Il render delle nostre mappe su Metin2, come tutti sapete, la mappa caricherà in base a delle configurazioni gestite in classici txt diversi oggetti.
Ogni nostro oggetto è contenuto in una cartella particolare (property) tra cui i nostri dungeon block, che differiscono relativamente poco rispetto ai classici building per quanto riguarda il formato (abbiamo il cambio del type e il modello gr2 che ha un nome diverso rispetto a building).
I dungeonblock sono una estensione dell'approccio che Ymir ha rispetto ai classici modelli gr2.

Render delle building
Normalmente, durante il render di una building, il gioco si limita a renderizzare il modello 3d supportando una sola texture nei nostri materiali, ovvero la diffuse map.
Il render dell'ombra, viene gestito disegnando sulla diffuse map del nostro terreno la forma del nostro modello 3d, ovvero in base ai nostri vertici viene applicato una fusione (blend) con un colore nero nella texture del nostro terreno (qui viene anche utilizzata la luce ambientale che metin2 di base ha).
Visualizza allegato 51790
Render del dungeon block
I dungeonblock, invece, vengono renderizzati con l'utilizzo di una seconda texture (la "light map" che parlava toki), questa texture verrà fusionata (un blend) con la texture di base, e ci consentirà di creare effetti di luce.
Il render dell'ombra è molto particolare, perchè Metin2 renderizza in maniera invisibile un secondo modello (di quale saranno invisibili solo i vertici), in questo modo non solo verrà ignorato il render dell'ombra di base, ma verranno anche applicate le impostazioni personalizzate della luce.
Siccome il colore della luce ad intensità massima è bianco, l'alfa delle nostre texture verrà ignorata e rimpiazzata con un colore di massima luce, per questo motivo (anche nel worldeditor) questi oggetti ignorano la luce ambientale. (ma teoricamente non è un problema in quanto non dovremmo vedere fuori dal dungeon)
Visualizza allegato 51789
Considerazioni e guide future

Probabilmente questa lightmap è stata creata per poter sfruttare più punti di luce senza dover toccare o modificare la luce ambientale di base, il quale avrebbe potuto generale problemi se non fosse stata ignorata.

Di tutto quello che ho parlato è possibile trovare il funzionamento su EterGrnLib/ThingInstance.cpp per gli oggetti di base (tra cui il building), mentre i dungeonblock si trovano in GameLib/DungeonBlock.cpp (il quale fa chiamate particolari al render DirectX8), il render della mappa (e della shadow di base) lo troviamo in GameLib/MapOutdoor.cpp

Attendiamo qualche aggiornamento per le prossime parti delle guide, buona fortuna!
Thanks @Arves100 :)