Modificar la posición de las Ubicaciones en la PDA
Teoría
Antes que nada, es preciso entender el Mapa Global y entender su funcionamiento. Toda la información sobre la localización de las Ubicaciones está ahí, así que parte del mapa se mostrará por la PDA, etc.. Así pues, abrimos gamedata/config/game_maps_single.ltx con nuestro editor de textos favorito, y pasemos a comprender un poquito más sobre el mismo:
[level_maps_single]
L01_escape
L02_garbage
L03_agroprom
L03u_agr_underground
l04_darkvalley
l04u_LabX18
L05_bar
L06_rostok
l07_military
l08_yantar
l10_radar
l11_pripyat
l12_stancia
l12_stancia_2
l12u_control_monolith
l12u_sarcofag
l08u_brainlab
Esta sección muestra todos los niveles del juego. Este archivo pertenece a la lista original de Shadow of Chernobyl, en otras versiones posiblemente hayan más o menos mapas.
[level_music_tracks]
music\amb01 = 0, 12, 0.5, 10,20 music
music\amb03 = 0, 12, 0.5, 10,15 music
music\amb07 = 12,24, 1.0, 5, 25
No tenemos ni idea de lo que es esto, pero seguramente algo relacionado con la música ambiental del mapa. En todo caso, no lo necesitaremos para los fines de este tutorial.
[global_map]
texture = ui\ui_global_map
bound_rect = 0.0,0.0, 1024, 2634.0
max_zoom = 6.0
Texture. Quizás uno de los valores más importantes. Define a gamedata/textures/ui/ui_global_map.dds. Fijaros que, no en vano, no hay ninguna referencia a la extensión del archivo.
Bound_rect. Coordenadas de la texturas, mediante Coordenadas de cuadrícula sobre el Mapa Global. Sus cuatro valores indican los puntos más externos del Mapa Global - Esquina Superior Izquierda es indicada por los primeros dos valores (0.0,0.0) y la Esquina Inferior Derecha por los restantes (1024,2643.0). MUY IMPORTANTE: ¡NO son píxeles! En realidad la textura es de 1024×2048 (como muchas otras del juego que se guían por coordenadas en los archivos de configuración), pero el juego la considerará como si fuera una imagen de 1024×2643. Más adelante, veremos la gran importancia que representa tener esto bien grabado en la mente.
Max_zoom. Como se puede entender por su nombre, es el máximo zoom permitido utilizando la PDA. Puedes probar modificando los valores, seguro que encuentras algo interesante.
Seguimos avanzando por el archivo y encontramos otras secciones que describen, con los mismos valores, las distintas Ubicacioes del juego en el Mapa Global. Para el ejemplo, tomaremos prestados los valores del Cordón.
[l01_escape]
texture = map/map_escape
bound_rect = -317.164, -633.718, 404.880, 811.627
global_rect = 355.0,2011.0, 576.0,2453.000000
weathers = default
music_tracks = l01_escape_musics
Texture. Define a gamedata/textures/map/map_escape.dds como mapa particular del Cordón. Es el mapa que se mostrará en el minimapa. Además, como habréis deducido ya, se impone a lo que pueda haber en ese mismo lugar del Mapa Global.
Bound_rect. Coordenadas de la texturas, mediante Coordenadas de cuadrícula sobre el Mapa de la Ubicación. Es necesario hacer una aclaración; si os fijáis, los valores de la X e Y pueden ser tanto positivos como negativos. El motivo es que, el punto (0,0) no es una esquina del Mapa, como cabría suponer, sino el centro del mismo. Por ejemplo, el Cordón tiene sus coordenadas (0,0) cerca de la Avanzadilla Militar que se sitúa debajo del puente. Pero por otro lado, el Búnker de Sidorovich, y cualquier otro objeto que se encuentre por allí, tendrá las coordenadas de X negativas. La Base Militar, situada al Sur del Cordón, tendrá por tanto coordenadas de Y negativas. Por tanto, podremos decir que bound_rect nos muestra, en este caso, los puntos más externos de cada Ubicación. La sintáxis se formaría entonces por: X más pequeña, Y más pequeña, X más grande, Y más grande. Ten en cuenta que estas sólo son coordenadas, no significa que puedas andar hasta allí dentro del juego; es el punto del juego en el que la Ubicación termina. Es muy importante el correcto uso de los decimales.
Global_rect. Esta variable hace referencia a las coordenadas de la Ubicación en el Mapa Global. Es la posición exacta en la cual el Mapa de la Ubicación será supeditado al Mapa Global. Tiene un funcionamiento muy similar al de bound_rect. A la hora de determinar la posición de la Ubicación, ten en cuenta que el valor de Y será 0 cuando querramos indicar una posición arriba del todo, o 2634 si queremos precisar la posición más inferior del Mapa Global. Dicho de otro modo, un punto cuyas coordenadas sean (50,100) estará más arriba que otro puto con mayor Y, por ejemplo (50,200). Concentrémonos por un momento en el valor de esta variable en el Cordón: global_rect = 355.0,2011.0,576.0,2453.000000. Nos viene a señalar que tenemos una Ubicación cuyas coordenadas (¡en el Mapa Global!) lo encierran entre 355.0,2011.0 y 576.0,2453.000000 (no me preguntéis porqué tantos ceros). Al tener estos datos, podemos sugerir que el tamaño del mapa sería de 221×442 puntos, resultante de restar la X más grade por la X más pequeña y la Y más grande por la Y más pequeña. Nuevamente, estos no son píxeles, pero si que nos ayudarán a entender mejor todo el sistema.
Práctica
Conocida la teoría tomamos para el ejemplo el archivo gamedata/textures/map/map_lost_villiage.dds. Como ya sabéis encontrar vosotros solitos las coordenadas, y si no volved a leer la Teoría, procedemos a intentar situar la Ubicación en otro lugar dentro del Mapa Global, por ejemplo aquí:
Abre el archivo gamedata/textures/ui/ui_global_map.dds mediante el programa que más gustes, y con el que puedas utilizar cuadrículas de coordenadas. Nosotros usaremos el S.T.A.L.K.E.R. Icon Viewer. Tomaremos la coordenadas de la Esquina Superior Izquierda desde programa, tal y como se indica aquí:
Obtenemos así las Coordenadas: x = 180, y = 370
Si tenéis bien machacada la teoría, recordaréis que el Mapa Global mide 1024×2634, cuando en realidad teníamos una textura de 1024×2048. No temáis, con un poco de matemáticas todo es posible:
Usando una calculadora, dividimos 2634 por 2048 y obtenemos como resultado 1.2861328125
Multiplicamos la Y (370) por el resultado anterior (1.2861328125), y se obtiente 475.86 (resultado redondeado)
Hecho esto, todo es simple. Suponiendo que nuestro mapa sea de tamaño 100×100, se configura en global_rect con los valores 180.0, 475.86, 280.0, 575.86.
180.0 - Tomada con el S.T.A.L.K.E.R. Icon Viewer. Coordenada X más pequeña.
475.86 - Resultado del cálculo anterior. Coordenada de Y más pequeña.
280.0 - Es la suma de la X tomada con el S.T.A.L.K.E.R. Icon Viewer más el ancho de la Ubicación. Coordenada X más grande.
5575.86 - Es la suma de la Y tomada con el S.T.A.L.K.E.R. Icon Viewer más el alto de la Ubicación. Coordenada Y más grande.
Y este es el resultado final: