3.7.18

Tutorial de juegos 'rpg' para Inform 7 - Acero (2) - Características


Empecemos con los personajes. En casi todos los sistema de rol los personajes tienen un grupo de números que representan lo más básico y fijo de los mismos: su altura, cómo de fornidos están, su belleza, su relación con la magia, etc... A estos números se les llama por lo general 'características' y es lo primero que se escoge mediante algún procedimiento como el reparto de puntos o el lanzamiento de dados.

En el sistema de ejemplo que estamos usando S3 las características se deciden mediante el lanzamiento de dados y existen:
  • Tamaño: altura y dimensiones en general, para antropomorfos se expresa en unidades de 10 cm de altura, así alguien de tamaño 17 tendrá 170 cm de altura.
  • Constitución: resistencia al dolor, a las heridas, a las enfermedades, etc...
  • Fuerza: la capacidad de levantar pesos, golpear con intensidad, etc... está expresado en unidades equivalentes en número al tamaño para que puedan compararse.
  • Inteligencia: expresados en decenas del CI, así alguien con un INT: 11 tendrá un CI de 110.
  • Agilidad: velocidad, capacidad de reacción, etc... expresado en un rango de hasta 20 puntos para poder transformar en un porcentaje multiplicando por 5.
  • Voluntad: capacidad de concentración, esfuerzo mental, se usa tanto para el aprendizaje como para la imposición de efectos mágico en los demás. También expresados en rangos de hasta 20.
  • Aspecto: belleza física, capacidad de empatía y en general lo agraciado que resulta el personaje hacia los demás. También se expresa en valores de hasta 20, pero en realidad sólo se considera sin ajuste dentro de su propia especie.
  • Poder: esta característica en realidad cambia de significado de campaña en campaña pero representa la conexión del personaje con lo paranormal, ya sea la magia, los poderes psíquicos, etc...
Podríamos incluir en nuestro juego las tiradas correspondientes, pero no parece lo más adecuado, mejor creemos una nueva extensión para el sistema de juego e incluyamos en ella todo lo que tiene que ver con la capa 'rolera' de la historia. Ya sabéis como File >> New extension. Yo a la mía la he llamado 'S3 role playing system'. En realidad debería haber añadido detrás 'SP' para indicar que estará escrita en español, pero dado que va a ser original nuestra, si alguien la quiere traducir al inglés que llame a la suya 'EN'.

:)

Lo primero en la extensión sería extender la clase 'person' a una que va a contener todos los aspectos roleros, de esta formas si hay otras 'person' en la historia que no requieren tener 'ficha de personaje' no sobrecargarán el tamaño de la obra con elementos innecesarios. Esto ya sabéis que se hace con algo tan simple como:

A character is a kind of person.

Sobre esta nueva clase añadimos todas las características de las que hemos hablado, eso es algo tan sencillo como:

A character has a number called strength.
A character has a number called constitution.
A character has a number called size.
A character has a number called intelligence.
A character has a number called agility.
A character has a number called will.
A character has a number called beauty.
A character has a number called power.

Ahora nos queda explicar cómo rellenamos estos valores de características. Normalmente la tirada o la forma de elección en casi todos los sistemas depende de una agrupación a la que se le llama 'especie' o 'raza' y que indica si el personaje es humano, enano, elfo, orco o lo que sea. En la campaña que vamos a usar de base (Akaram) hay una enorme multiplicidad de razas jugables antropomorfas, pero nuestro juego se va a situar en la frontera del Reino de Renorf con las tierras salvajes de los hombres lagarto; por allí sólo suelen encontrarse las razas de humanos del norte (los altos raynos pelirrojos, los fornidos normer de los mares helados y los wolferm morenos) y dos de los tipos de hombres lagaro (los azules sershas y los más grandes, más tontos y rojos slalash). Incluiremos tan sólo estas cinco razas en la extensión de esta forma:

Chapter - Races

A breed is a kind of object.  Some breeds are defined by Table of Races

Table of races
a race strength roll constitution roll size roll intelligence roll 
agility roll will roll beauty roll power roll
rayno 3d4+11 2d4+2 3d4+11 3d4+2 5d4 5d4 5d4 3d4+2 
wolferm 3d4+11 2d4+3 3d4+10 3d4+2 5d4 5d4 5d4 3d4
normer 2d4+15 2d4+3 2d4+14 3d4+1 5d4 5d4 5d4 2d4+2
sersha 3d4+10 1d4+4 3d4+9 3d4+1 5d4+2 2d4+3 5d4 2d4+2
slalash 3d4+12 1d4+7 3d4+11 2d4+2 4d4+1 2d4+2 5d4 2d4

Chapter - Characters

A character is a kind of person. A character has a breed called race.

¿Y cómo se calculan las características de los personajes? Pues incluiremos una función que lance los dados de la raza a la que pertenezca el personaje de esta forma:

To roll dice for (char - a character):
 now the strength of char is the roll of the strength roll of the race of char;
 now the constitution of char is the roll of the constitution roll of the race of char;
 now the size of char is the roll of the size roll of the race of char;
 now the intelligence of char is the roll of the intelligence roll of the race of char;
 now the agility of char is the roll of the agility roll of the race of char;
 now the will of char is the roll of the will roll of the race of char;
 now the beauty of char is the roll of the beauty roll of the race of char;
 now the power of char is the roll of the power roll of the race of char.

Y cuando comience a ejecutarse la obra buscaremos a todos los personajes y lanzaremos sus dados:

When play begins:
 repeat with char running through characters:
  roll dice for char.

Esto creará las características de todos los personajes no jugador, para el jugador seguramente querremos al menos permitirle escoger la raza al principio de la obra, así que tendremos que usar 'roll dice for' de forma explícita, pero ya llegaremos a eso. Para simplificar la creación de personajes podemos crear sub-clases de 'character' que sean de una raza dada como por ejemplo:

A rayno human is a kind of character. The race of a rayno human is usually rayno.
A wolferm human is a kind of character. The race of a wolferm human is usually wolferm.
A normer human is a kind of character.  The race of a normer human is usually normer.
A sersha lizardman is a kind of character.  The race of a sersha lizardman is usually sersha.
A slalash lizardman is a kind of character.  The race of a slalash lizardman is usually slalash.

Bien, ya podríamos empezar a escribir un poco de historia. Por ejemplo, creemos un lugar que suene interesante y un PNJ lagarto que esté justo allí.

Chapter 1 - Mapeado

Section 1 - La puerta de las ruinas de Shatard

La explanada is a room. The printed name of explanada is "La explanada frente a la puerta de Shatard".

Sherack is a sersha lizardman in la explanada.

Estupendo, ahora Sherack existe y tendrá su altura, su fuerza, su agilidad, etc...  pero no podemos verlo, ¿no? Incluyamos una función básica para mostrar la 'ficha' del personaje en la extensión:

Chapter - Describing characters

To say sheet of (char - a character):
 say "[char]: ([race of char]) STR: [strength of char] CON: [constitution of char] 
             SIZ: [size of char] INT: [intelligence of char] AGI: [agility of char] 
             WIL: [will of char] BEA: [beauty of char] POW: [power of char].".

Y cambiemos un poco el examine de los personajes para usar esta pequeña función, así:

Instead of examining a character:
 say sheet of the noun.

Si probáis la obra ahora veréis que Sherack mantiene sus características a lo largo de la obra, pero cambiará cada vez que la reiniciéis. Hemos avanzado bastante para un capítulo, en el próximo veremos la habilidades y cómo se usan para decidir si una acción ha sido un éxito o un fracaso.

Podéis descargaros la versión de la extensión aquí y el estado actual de la obra aquí.