Monday, January 28, 2019

Mientras tanto, en Plutón...

Terminadas las mejoras que había mencionado en la última entrada y solucionados algunos errores pendientes he empezado ya a trabajar en La Aventura Original propiamente dicha. Para ello he desenterrado el código de la versión actualmente publicada y, Enki, muchacho, hay que ver lo que has crecido.

Cómo hemos cambiado.

Los elementos fundamentales de la aventura estaban ya entonces definidos en documentos fuera del código, pero de aquella me había decantado por el XML frente a los actuales JSON. Teniendo en cuenta que el código es Java la opción actual es la más lógica, pero de aquella conocía mejor el XML y, a fin de cuentas, tampoco hay tanta diferencia.

En lo que sí hay una diferencia abismal es en el número y contenido de los archivos. Mientras en la versión 0 se usaban estos tres:

game_actions.xml
game_items.xml
game_locations.xml

En la versión actual se usa el triple:

adventure.json
conversation_trees.json
counters.json
death_infos.json
flags.json
game_items.json
locations.json
npcs.json
triggers.json

El cambio más evidente -aparte del número- es la desaparición el archivo que define las acciones del jugador, que ahora han pasado a estar definidas dentro de los objetos y siguen un proceso lógico completamente diferente, más flexible, completo y, claro, complejo.

No me voy a extender mucho más, sólo les dejaré aquí un ejemplo para comparar cómo se definían las localizaciones en la versión inicial y en la actual de modo que puedan ver cómo de grave es la locura que me ha dado con este proyecto.

game_locations.xml

<locations>
    <location>
        <id>1</id>
        <name>GRANJA</name>
        <description>Estás en una granja abandonada. Muy cerca puedes ver una casa de ladrillo abandonada rodeada de árboles. Hacia el sur fluye un rio.</description>
        <image>1</image>
        <north>4</north>
        <south>11</south>
        <east>0</east>
        <west>0</west>
        <northeast>0</northeast>
        <northwest>0</northwest>
        <southeast>19</southeast>
        <southwest>0</southwest>
        <enter>2</enter>
        <exit>0</exit>
        <up>0</up>
        <down>0</down>
    </location>
    <location>
        <id>2</id>
        <name>GRANJA: INTERIOR</name>
        <description>Estás en una habitación bastante guarra de paredes desconchadas y suelo roto. Ves la oscura boca de un pozo por la que baja una mohosa escalera.</description>
        <image>2</image>
        <north>0</north>
        <south>0</south>
        <east>0</east>
        <west>0</west>
        <northeast>0</northeast>
        <northwest>0</northwest>
        <southeast>0</southeast>
        <southwest>0</southwest>
        <enter>0</enter>
        <exit>1</exit>
        <up>0</up>
        <down>3</down>
    </location>
...

</locations>

locations.json

[
  {
    "id":1,
    "name":"Granja",
    "descriptions":[
      {
        "id":1,
        "lightSource":6,
        "description":"Estás en una granja abandonada. Muy cerca puedes ver una casa de ladrillo abandonada rodeada de árboles. Hacia el sur fluye un rio.",
        "locationImage":"loc_01.png"
      }
    ],
    "light":6,
    "defaultImageResource":"room_01.png",
    "lightSources":[
      {
        "id":1,
        "sourceId":-1,
        "lightValue":6
      }
    ],
    "exterior":true,
    "exits":[
      {
        "direction":1,
        "destination":4,
        "description":""
      },
      {
        "direction":2,
        "destination":11,
        "description":""
      },
      {
        "direction":7,
        "destination":19,
        "description":""
      },
      {
        "direction":9,
        "destination":2,
        "description":""
      }
    ],
    "onEnterTriggers":null,
    "onExitTriggers":null,
    "onGeneralActionTriggers":null,
    "onActionTriggers":null,
    "onLightChangeTriggers":null,
    "locationEffects":null
  },
  {
    "id":2,
    "name":"Granja: Interior",
    "descriptions":[
      {
        "id":2,
        "lightSource":6,
        "description":"Estás en una habitación bastante guarra de paredes desconchadas y suelo roto. Ves la oscura boca de un pozo por la que baja una mohosa escalera.",
        "locationImage":"room_02.png"
      }
    ],
    "light":6,
    "defaultImageResource":"room_02.png",
    "lightSources":[
      {
        "id":1,
        "sourceId":-1,
        "lightValue":6
      }
    ],
    "exterior":false,
    "exits":[
      {
        "direction":10,
        "destination":1,
        "description":""
      },
      {
        "direction":12,
        "destination":3,
        "description":""
      }
    ],
    "onEnterTriggers":null,
    "onExitTriggers":null,
    "onGeneralActionTriggers":null,
    "onActionTriggers":null,
    "onLightChangeTriggers":null,
    "locationEffects":null
  },
...
]



Menudo cambio ¿Eh? En la próxima entrada explicaré qué hace cada cosa... y qué no hace, claro.
Ale, a explorar.

No comments: