Haz un juego de aventuras al estilo de Monkey Island | Estructura alámbrica #69

Cree un sistema de secuencias de comandos con una recreación del clásico de apuntar y hacer clic de LucasArts, Monkey Island. Mark Vanstone tiene el código en la edición de este mes de la revista Wireframe, disponible ahora.

En 1990, LucasArts debutó con una aventura de apuntar y hacer clic que inmediatamente cautivó al público con su humor, narración y acertijos tortuosos. De hecho, The Secret of Monkey Island, lanzado por primera vez en Amiga, Atari ST, MS-DOS y Mac, es tan querido que la serie aún continúa; la última entrega, Return to Monkey Island de 2022, vio al creador de la serie Ron Gilbert regresar como director.

Guybrush llega al Scumm Bar en el clásico de piratas y clics de LucasArts, El secreto de la isla de los monos.

La historia del juego original sigue al joven Guybrush Threepwood, su ambición de convertirse en pirata y sus encuentros con el villano fantasmal, LeChuck. Al igual que otros juegos de aventuras de LucasArts de la época, Monkey Island combinó interacciones con guiones entre personajes, animaciones y objetos interactivos en cada escena. Para esta muestra, recrearemos la apertura del juego, donde Guybrush se encuentra con el vigía y le pregunta cómo puede convertirse en pirata. Codificaremos un sistema de secuencias de comandos que pueda manejar las interacciones de los personajes y responder a las opciones que se le presenten al jugador.

Nuestro sistema de secuencias de comandos tiene un concepto sencillo, pero es lo suficientemente flexible como para permitirnos agregar opciones adicionales a medida que avanzamos. El script se guarda en un archivo de texto, data.txt. En él, tendremos comandos como Background:clifftop, que interpretaremos en el sentido de «establecer el fondo de la escena para que sea la imagen llamada clifftop». Tendremos un comando por línea, cada uno separado de su acción con dos puntos. Es posible que necesitemos variar el formato dependiendo de cuál sea el comando.

Para comenzar nuestra escena, cargamos nuestro archivo de datos, configuramos nuestra imagen de fondo predeterminada para que sea una pantalla de título y luego comenzamos a leer líneas de la lista de guiones. Nuestro processScriptLine() La función divide cada línea del script en comandos y datos de acción. Por ejemplo, nuestra primera línea de script es Pause:8Pause es un comando y 8 son los datos. Esto establece una cuenta regresiva que dura ocho segundos antes de que se lea la siguiente línea del script. Entonces podemos establecer la imagen de fondo con un Background comando, y en esta escena, hemos establecido una imagen de primer plano de una pared para que nuestros personajes puedan moverse detrás de ella.

Nuestro homenaje Python a Monkey Island. ¿Quizás podrías llevar la aventura de Guybrush en una dirección completamente nueva?

Para configurar nuestros personajes, tenemos una lista de Actores, y nuestro comando de script determinará qué espacio en la lista usaremos para ese personaje. Para Guybrush, usaremos la ranura 0 y en el script escribiremos Character:0:guybrush1,460,220. Esto se traduce como, ‘Establezca el carácter 0 en la imagen guybrush1 y colóquelo en x=460, y=220’. Podemos configurar un personaje para el vigía de la misma manera y hacer que Guybrush camine hacia él alternando entre dos andadores y deteniéndose entre cada uno. Entonces comenzamos el diálogo entre los dos personajes. Definimos un Speech comando y hacer que el texto definido en esta línea de guión aparezca sobre la cabeza del personaje. Mientras se muestra este discurso, podemos alternar entre dos cuadros de animación para que parezca que el personaje está hablando.

Ahí tenemos la base de nuestro sistema de guiones para una escena. Hay varias líneas de diálogo antes de que llegue el momento de pasar a la siguiente escena. Para este ejemplo, podemos configurar algunas opciones de texto para que el jugador haga clic. Cuando el jugador hace clic en el texto de opción para ‘Ir a la barra de Scumm’, buscamos en el script buscando el Scene comando para ‘Scumm Bar’ y comience a leer el guión desde allí.

Aquí solo hemos hecho una pequeña sección de la aventura Secret of Monkey Island. Para continuar con la acción, necesitaríamos agregar más comandos al sistema de secuencias de comandos para permitir que Guybrush se mueva por la pantalla e interactúe con los elementos, pero nuestro fragmento de código debería brindarle una buena base para comenzar a hacer su propio apuntar y hacer clic. aventura.

Aquí está el código de Mark para una escena de juego de aventuras al estilo de Monkey Island. Para que funcione en su sistema, primero deberá instalar Pygame Zero. Las instrucciones completas se pueden encontrar en wfmag.cc/pgzero. La lista completa de códigos y activos se pueden encontrar aquí.

Obtenga su copia de Wireframe #69

Puede leer más funciones como esta en el número 69 de Wireframe, disponible directamente en Raspberry Pi Press, que entregamos en todo el mundo.

La nueva y brillante edición de Wireframe. ¡Incluso tiene un póster gratis adentro!

Y si prefieres tus revistas en formato digital, ¡también puedes descargar el número 69 de Wireframe en PDF gratis!