Wednesday, February 13, 2019

Mientras tanto, en Plutón...

Como decíamos ayer, vamos a echarle un vistazo a las diferencias entre las descripciones de las localizaciones en la versión primitiva del motor y la flamante actual versión 1.2.

Hágase la luz

La primera diferencia relevante es la definición de la descripción y la imagen de la localización, fijadas en las etiquetas description e image en el XML y en un array en la etiqueta descriptions en el JSON.
En la nueva versión se permite definir una serie de descripciones diferentes que se mostrarán en función del tipo de iluminación activa en la localización. En el ejemplo de La Aventura Orignal sólo se puede ver una descripción para cada localización, pero este ejemplo de Pluto Crash servirá mejor para ilustrar cómo funciona todo esto:

"descriptions":[
      {
        "id":1,
        "lightSource":0,
        "description":"No puedes ver nada con
la escasa luz que llega desde el pasillo.
Al moverte puedes notar cómo chapoteas en
un líquido que no debería estar aquí.",
        "locationImage":"loc_010.png"
      },
      {
        "id":2,
        "lightSource":2,
        "description":"Las paredes del pozo de
mantenimiento están cubiertas de tuberías y gruesos
cables. El suelo está cubierto de fluido hidráulico.",
        "locationImage":"loc_010_02.png"
      }
    ]


En este caso se proporcionan dos descripciones diferentes, una para dos valores de iluminación diferentes. En el primer elemento del array se pueden ver los valores que se usarán cuando el usuario se encuentre en la localización sin una fuente de luz propia -valor lightSource 0, correspondiente a oscuridad total- o con una fuente de luz artificial -valor lightSource 2-.

En el ejemplo de La Aventura Original podemos ver que ambas localizaciones tienen una fuente de luz con un lightValue de 6, que corresponde a la luz natural diurna y normalmente tiene preferencia sobre el resto de fuentes de iluminación.

"lightSources":[
      {
        "id":1,
        "sourceId":-1,
        "lightValue":6
      }
    ]


Normalmente las localizaciones sólo cuentan con una fuente de luz, la de la propia localización. Sin embargo, es posible que el personaje o un efecto dejen en una localización un objeto que emita luz; en este caso se añadirá a las fuentes de luz de la localización una fuente de luz adicional correspondiente al objeto. En este caso la nueva fuente de luz tendrá un valor de -2 en el atributo sourceId, frente al valor -1 correspondiente a las fuentes de luz propias de la localización.

Así, al entrar en una localización el motor compara las fuentes de luz presentes en la localización -las fuentes de luz definidas en la propia localización y la mejor fuente de luz emitida por los objetos del inventario del personaje-, quedándose con la que tenga el valor lightValue más alto y usará la descripción con un valor lightSource igual, o la descripción con el valor lightSource más alto si todos son menores que la fuente de luz actual.

La cosa se ha hecho un poco larga así que seguiremos con el resto de diferencias en la próxima entrada. Ale, a programar.

No comments: