TECNICAS AVANZADAS DE PROGRAMACION DE AVENTURAS
Por... Javier San José
A partir de este capítulo, y en adelante, iré exponiendo, paso a paso un sistema que aprovecha al máximo las posibilidades del PAW para la creación de una aventura multijugador.
Pero, ¿qué es una aventura multijugador?; pues se trata simplemente de una aventura en la que podemos controlar a dos o más personajes simultáneamente. Las posibilidades son infinitas pero exige un esfuerzo mayor por parte del programador ya que, si una aventura con un sólo personaje jugador es complicada de hacer, una aventura multijugador multiplica proporcionalmente la dificultad.
El sistema propuesto consta de una serie de Procesos. Recomiendo a los que estéis interesados en ir incorporando este sistema a vuestras aventuras que respetéis los números de los procesos que iré dando y que los coloquéis en el mismo orden; esto evitará problemas.
Una serie de conceptos antes de empezar. Utilizaré a cuatro personajes jugadores, número fácilmente modificable, que denominaré genéricamente Guerrero, Enano, Mago y Sacerdotisa. Cada uno vendrá definido por una serie de parámetros:
Además, el Mago, viene definido por otros dos parámetros:
La mayoría de estos parámetros ayudarán a implementar un sistema de combates a base de tiradas de dados. Pero eso más adelante. La tabla siguiente resume los valores para todos los personajes:
+------------------------------------------------------------------+ ¦ Guerrero ¦ Mago ¦ Enano ¦ Sacerdotisa ¦ ¦ Band val ¦Band val ¦Band val ¦ Band val ¦ ¦-----------------------Ð------+----Ð-----+----Ð----+------Ð-------¦ ¦Energía vital ¦ 66 ¦ 50 ¦ 68 ¦ 25 ¦ 70 ¦ 60 ¦ 72 ¦ 35 ¦ Ã----------------Î------+------Î----+-----Î----+----Î------+-------Â ¦Fuerza ataque ¦ -- ¦ 2 ¦ -- ¦ 0 ¦ -- ¦ 1 ¦ -- ¦ 0 ¦ Ã----------------Î------+------Î----+-----Î----+----Î------+-------Â ¦Posición ¦ 67 ¦ 9 ¦ 69 ¦ 9 ¦ 71 ¦ 9 ¦ 73 ¦ 9 ¦ Ã----------------Î------+------Î----+-----Î----+----Î------+-------Â ¦Raciones ¦ 74 ¦ 2 ¦ 76 ¦ 0 ¦ 78 ¦ 1 ¦ 80 ¦ 0 ¦ Ã----------------Î------+------Î----+-----Î----+----Î------+-------Â ¦Dinero ¦ 75 ¦ ? ¦ 77 ¦ ? ¦ 79 ¦ ? ¦ 81 ¦ ? ¦ Ã----------------Î-------------Î----------Î---------Î--------------Â ¦Loc.obj.llevados¦ 1 ¦ 3 ¦ 5 ¦ 7 ¦ Ã----------------Î-------------Î----------Î---------Î--------------Â ¦Loc.obj.puestos ¦ 2 ¦ 4 ¦ 6 ¦ 8 ¦ Ã----------------Î-------------Î----------Î---------Î--------------Â ¦Energía mágica ¦ -- ¦ -- ¦ 88 ¦ 200 ¦ -- ¦ -- ¦ -- ¦ -- ¦ Ã----------------Î------+------Î----+-----Î----+----Î------+-------Â ¦Nivel mágico ¦ -- ¦ -- ¦ 89 ¦ 1 ¦ -- ¦ -- ¦ -- ¦ -- ¦ +-----------------------¤-----------¤----------¤-----------¤-------+
Como se ve las banderas usadas, de momento, son de la 66 a la 81 y las banderas 88 y 89. Las localidades reservadas van de la 1 a la 8. Otra bandera que usaremos será la número 23: número de personaje actual (1=Guerrero, 2=Mago, 3=Enano, 4=Sacerdotisa).
Podemos empezar insertando unas entradas en el Proceso 1 para imprimir mensajes de que el Enano está aquí, el Mago está aquí, etc... para cuando controlemos a un personaje y alguno de los otros esté en nuestra misma localidad. Las entradas a añadir serían:
_ GUERRERO NOTEQ 23 1
SAME 67 38
MES 'El '
MES 'Guerrero'
MESSAGE ' está aquí.'
_ MAGO NOTEQ 23 2
SAME 69 38
MES 'El '
MES 'Mago'
MESSAGE ' está aquí.'
...
Sólo se incluyen, por motivos de espacio, las entradas correspondientes al Guerrero y al Mago; las del Enano y la Sacerdotisa su pueden deducir de estas fácilmente.
Explicaré el funcionamiento de estas entradas. Primero comprobamos que el jugador no está controlando al personajes (NOTEQ 23 1 para el Guerrero, NOTEQ 23 2 para el Mago, etc...). Esto es así para que no se imprima el mensaje 'El Guerrero está aquí.' cuando el jugador esté controlando al Guerrero, por ejemplo.
Luego miramos si el personaje está en la misma localidad que el que controla el jugador, comparando la bandera de posición del personaje con la localidad actual (bandera 38). Así: SAME 67 38 para el Guerrero, SAME 69 38 para el Mago,...
Si se dan estas dos condiciones se imprime un mensaje del tipo 'El ... está aquí.'. (NOTA: en el caso de la Sacerdotisa el mensaje a imprimir sería del tipo 'La ... está aquí.', evidentemente).
Ahora vamos a insertar un proceso que inicialice las banderas de los personajes:
-Proceso 9:
_ GUERRERO LET 66 50
LET 67 9
LET 74 2
_ MAGO LET 68 25
LET 69 9
LET 88 200
LET 89 1
_ ENANO LET 70 60
LET 71 9
LET 78 1
_ SACERDOTISA LET 72 35
LET 73 9
Este proceso inicializa las banderas correspondientes a la energía vital, fuerza de ataque, posición, raciones, dinero, energía mágica y nivel mágico de los personajes. Obsérvese que la localidad de inicio elegida para todos el la número 9.
En Proceso 1 colocaremos una llamada a este proceso en la secuencia de inicialización, de la forma:
_ * AT 0
(aquí establecer modo pantalla, ABILITY,...)
ANYKEY
PROCESS 9
LET 23 1
GOTO 9
DESC
El LET 23 1 hace que le personaje que controlamos de inicio se el Guerrero. Como todos los personajes comienzan en la localidad 9, hacemos un GOTO 9 seguido de un DESC.
De momento esto es todo por ahora. En la próxima entrega veremos cómo cambiar de un personaje a otro dentro del juego.