Demostración de las funcionalidades de un juego 2D conducido por Linked Data
April 3, 2023
En entradas anteriores del blog he explorado las posibilidades más amplias de los juegos descentralizados en la web semántica, pero lo presentaré brevemente aquí. Desde 2021 he estado jugando con el uso de Linked Data para permitir que los juegos compartan contenidos y características. El objetivo a largo plazo es construir un juego en común, en el que pueda publicar un personaje, o encontrarme con uno en un juego de aventuras de texto, usarlo como carta en un juego de cartas y descubrir cuando lo lleve de vuelta al juego de aventuras de texto que las experiencias en el juego de cartas han cambiado al personaje. Así que se trata de un ecosistema de juegos que se construyen unos sobre otros y deciden compartir cosas entre sí.
En esta demostración, he creado un juego bastante básico de construcción de ciudades que te permite colocar personajes y edificios en un mapa utilizando cartas. Luego puedes jugar una carta que convierte a uno de los personajes en vampiro. A continuación se muestra un GIF del resultado.
Lo que estás viendo, y lo que es realmente genial de esto - es que la carta que jugué fue leída de datos vinculados (es decir, podría ser sacada de cualquier servidor) representando la acción “Mordedura de Vampiro” - la mordedura que convierte a alguien en vampiro.
Actualmente la acción “Mordisco Vampírico” describe una acción que convierte a un personaje en vampiro. Incluye información básica sobre la descripción y representación de la acción, e indica que puede ser jugada como una carta a través de la propiedad-valor implementsSpecification: playableCard
. Mediante playTarget
indica que sólo debe jugarse sobre personajes, y mediante patchesOnComplete
describe al juego cómo cambiar el estado del mundo para que se realice el cambio (convertir al personaje en vampiro). Los próximos pasos serán añadir restricciones al juego de la carta a través de las formas y separar las consecuencias de una aciton de la propia acción para que pueda tener diferentes efectos dependiendo del contexto (por ejemplo, si un vampiro bebe la sangre de los muertos o moribundos, entonces el propio vampiro muere).
Todo el código está disponible en GitHub. El juego en sí es de un juego que estoy llamando Sim Polis, y la mayor parte de la especificación es de los Multi-User-Domain vocabularios que he estado desarrollando. Para contextualizar el vocabulario en particular, consulta los temas y la Wiki.