Translate

martes, 15 de noviembre de 2022

Estudio del GRAC2


Fecha: 07/10/2022
En este apartado voy estudiar el GRAC2 un creador de aventuras graficas de AMIGA. Con él se pueden hacer ciertos tipos de aventuras graficas de point and clic, estilo Lucas Art. fue creado por E.W.Clay en 1995 usando AMOS

Este estudio lo comencé porque me gusta hacer utilidades y juegos para Amiga y según entiendo GRAC tiene algunos problemas. veamos que ocurre.

Ya después de 2 días de revisar cómo funciona, llego a la conclusión de que no es tan fácil para el usuario, los comandos no están en el orden en que se deben usar para una nueva aventura y está muy fijo en los path o rutas de los archivos, que hasta cierto modo son necesarios pero no usa algún tipo de estructura de directorios para tal o cual cosa, si no que cada archivo debe estar asociado con un PATH/Ruta el cual debe estar creado en un índice común, me imagino que por eficiencia, pero complica demasiado la funcionalidad.

El método de trabajo implica muchas selecciones para hacer lo que sea, al final no me parece practico.

Buscando un poco en sus archivos veo que trae las fuentes, muy de agradecer, estudiándolo, pero es bastante grande, y algo complicado, aunque tiene buenas zonas y mucho mérito, veo que se puede mejorar.

Comienzo el estudio del sistema y veo que los archivos se dividen en 3 o 4, el juego en sí, que para ejecutarlo se usa el RunTime y el nombre del juego (sin extensión), otra parte está en Grac.cont que supongo que significa continuación, o puede ser control ya que en él se guardan los comandos, script y controles del juego de cara al usuario; Grac.inv que guarda el Inventario y GRAC.closeup que guarda todo lo relacionado a acercamientos y escenas especiales dentro de la escena principal. No se le ocurra colocar 2 juegos en el mismo directorio ya que usarán los mismos archivos (GRAC.cont, GRAC.inv y GRAC.closeup), mala decisión del programador.

El juego en si se puede editar colocando el nombre del juego con la extensión ".GRAC2" y usando el editor.

Los archivos del juego están bien empaquetados para ahorrar bytes, pero al expandirlos veo que realmente los métodos internos no ayudan mucho a la eficiencia, me explico, casi todo esta dimensionado a 100, se use o no, por lo tanto, hay capacidad para 100 imágenes, 100 rooms, 100 de todo, aunque hay 1000 textos. El problema que veo es que guarda 100 de todo, aunque no existan tantos, no hay nada relativo o definible y asume este maximo como cierto.

Como menú utiliza los Diálogos del AMOS, que, aunque algo complicados al final son eficientes y vistosos.

Analizando el editor veo que en el procederé Definitions hay toneladas de variables en línea, creo que podía haber usado DATA para algunos ya que son dimensionadas.

Las aventuras en GRAC2 se componen por escenas (ROOMS) o salas, cada una con una imagen de fondo que puede ser hasta de 1008 pixeles de ancho (debería ser max 1024 pero un error de Amos lo impide). Con respecto a la altura pueden ser en PAL hasta 256 y en NTSC hasta 225, pero siempre hay que dejar un espacio para comandos y mensajes de unos 40 o 60 pixeles de altura, por lo tanto, las imágenes pueden ser de 191 de alto más o menos.

NEW: borrará el juego para comenzar desde cero.

LOAD GAME: Si ya tiene un proyecto cargelo con "Load game".

SAVE GAME: no olvide grabar su juego antes de salir, use "Sabe game".

TEXT COLOR: cambia las letras del menu entre blanco y negro.

ABOUT: Datos del programa.

QUIT: Salir del programa.

PATHS

La carga de todos los archivos fallará si no tenemos creadas las rutas/PATH o directorios donde estarán los archivos (pienso que el sistema debería crearlas automáticamente al ir cargando datos, pero bueno).

PICTURES

Para empezar obtendremos las imágenes de fondos a través del botón de menú Pictures que permite cargar unas 100 imágenes como maximo, para cargarlas colocaremos el nombre y nos dejará buscarlas con el botón ADD o si es la primera vez, pasará directamente a agregarlas y preguntarnos por el archivo, este archivo debe ser una imagen IFF/LBM comprimida por RLE o no, con la extensión IFF, aunque muestra todos los archivos, solo permitirá IFFs del tamaño y colores adecuados (colores desde 2,4,8,16,32,64), aunque no he probado todo esto.

TODAS LAS RUTINAS DE BORRAR FALLAN, si borra una imagen, al salir dirá que no está grabada, puede salir sin grabar, pero la imagen quedara y al entrar de nuevo en ella dará error aunque la podrá ver, si trata de grabarla de nuevo el sistema se caerá o dará error, perdiendo la información si no la tiene grabada

Una vez cargadas las imágenes podemos pasar a Rooms.

Si tiene cargadas algunas imagenes se puede elegir una para modificarla
o crear una nueva con 'new picture', si no, imediatamente ira a nueva imagen.

El símbolo # del archivo "GRAC #.picture"será el número de picture, que automáticamente lo númera el programa.
Este sub menú de Pictures consta de los siguientes botones:
  • EXIT: Salir al menú principal.
  • Save: Guardar la imagen en formato comprimido como "Grac #.picture"
  • Name: Cambiar el nombre de la imagen (uso interno, puede ser diferente al archivo de imagen IFF)
  • Path: Cambiar la ruta donde esta guardado el archivo "Grac #.picture", que es el archivo que contendrá la imagen comprimida.
  • Load: Puede cargar otra imagen
  • Delete: Borrar la imagen "GRAC #.picture", mejor no usarlo.
  • Size: Permite recortar la imagen en la parte baja, ya que Delux Paint siempre agranda la imagen hasta un minimo de 200 pixeles de altura. para recortarla, elija esta opcion y coloque el mouse y presione clic a la altura que desee recortar la imagen (desde ese sitio hacia abajo sera eliminado).
ROOMS

Las escenas/cuartos/habitaciones/salas/rooms necesitarán un nombre, una imagen, un grupo de objetos(archivo) y el path o ruta fonde se guardara, opcionalmente puede tener objetos de fondo, objetos de frente, sitios por donde caminar, puntos a los cuales dirigirse y el script inicial.

Las imagenes elegidas seran previamente comprimidas y colocadas en archivos GRAC #.picture y los datos de las escenas/rooms estarán almacenados en GRAC #.room, donde # es un número de secuencia desde 0 a 99 que coloca el sistema y por el cual nos referiremos a estas escenas en los scripts.

El símbolo # será el número de escena, que automáticamente lo numera el programa.

Este sub menú consta de los siguientes botones:

  • EXIT: Salir al menú principal.
  • Save: Guardar lo realizado en la escena en 'GRAC #.room'
  • Name: Cambiar el nombre de la escena
  • Path: Cambiar la ruta donde esta guardado el archivo "Grac #.Room", que es el archivo que contendrá esta escena, 
  • Objects: en este sitio indicamos con que archivo de objetos trabajaremos en la escena.
  • Delete: borrar la escena, mejor no usarlo.
  • Walk: en este comando se introducen las zonas por donde podrán caminar los personajes.
  • Startup: colocaremos acá el script que se ejecutará al comenzar a visualizar la escena.
  • Background: acá indicaremos los objetos de fondo, son zonas inamovibles con las que se puede interactuar.
  • Foreground: aquí colocamos los objetos con los que se puede interactuar y que podemos pasar por detrás, removerlos o moverlos.
  • Point: por medio de este botón colocaremos los puntos de destino a usar.
  • Picture: podemos elegir aquí la imagen de fondo

ROOMS/WALK

    En esta opcion marcaremos las zonas por donde caminaran los personajes, para esto pintaremos rectanculos en las areas del suelo por donde queremos que puedan pasar los personajes, podemos rodear objetos.

Este sub menú consta de los siguientes botones:

  • Exit: Salir al menú anterior
  • Add: Agregar otra zona para caminar
  • Join: Une las zonas para poder caminar por varias
  • Script: Es la cadena de comandos que se ejecutarán al entrar en esta zona. Para elegir la zona solo toquela con el mouse, luego cree el script con lo que desea que haga el personaje al llegar al sitio.
  • Flag: Valor del flag de la zona (valores enteros positivos o negativos) normalmente 0, puede usarse para lo que se necesite. como contar cuantas veces se a pisado la zona.
  • Delete: Borra la zona
  • Height: Normalmente la altura decide si un personaje pasa por delante o detras de otro personaje ou objeto, pero mediante esta propiedad esto puede cambiar. Altura de la zona, sirve para hacer puentes, escaleras o zonas elevadas, primero seleccione todas las zonas y presione el botón izquierdo del mouse, luego apunte a la parte mas baja de las zonas seleccionadas y arrastre hacia arriba. Esto también afecta la escala del personaje que esta en la zona.
ROOMS/STARTUP

Permite crear el script que se ejecutará al entrar en la escena

ROOMS/BACKGROUND

En este submenu agregará o modificará objetos de fondo, esto n o se moveran y no podran ser cogidos (desaparecer), pero pueden investigarse o ejecutar en ellos algunas acciones de los personajes.

Este sub menú consta de los siguientes botones:

  • Exit: Salir al menú anterior
  • Add: Agregar otro objeto de fondo, esto se hace marcando con un cuadrado el fondo donde está o estará el objeto.
  • Name: Nombre del objeto (opcional)
  • Actions: Acciones que se pueden usar en el objeto. se elegirá el objeto y la acción para aplicar cosas como (usar boligrafo) mas un script para ejecurar algunas acciones. 
  • Flag: Valor del flag del objeto (valores enteros positivos o negativos) normalmente 0, puede usarse para lo que se necesite. como contar cuantas veces se ha tocado o visto el objeto.
  • Delete: Borra el objeto
  • Position: Coloca una segunda imagen en posición.
  • Base: Coloca donde estará la base del objeto
  • String: Texto que describe el objeto. pedirá elegir el objeto y el string (cadena de caracteres) o descripción
  • Zone: Mueve una zona. Primero toque la zona y luego cree la nueva zona.

ROOMS/FOREGROUND

En este submenu agregará o modificará objetos frontales, en realidad los personajes pueden pasar por delante o detrás de ellos y se pueden remover de la escena o moverlos, en este sub menú podrá hacer lo siguiente:

Es igual a objetos en Background excepto que no tiene Zone y tiene 3 opciones más:

  • Exit: Salir al menú anterior
  • Add: Agregar otro objeto de fondo, esto se hace marcando con un cuadrado el fondo donde está o estará el objeto.
  • Name: Nombre del objeto (opcional)
  • Actions: Acciones que se pueden usar en el objeto. (creelas en Actions)
  • Flag: Valor del flag del objeto (valores enteros positivos o negativos) normalmente 0, puede usarse para lo que se necesite. como contar cuantas veces se ha tocado o visto el objeto.
  • Delete: Borra el objeto.
  • Position: Coloca una segunda imagen en posición.
  • Base: Coloca donde estará la base del objeto.
  • String: Texto que describe el objeto.
  • ----Falta Zone---------------------------
  • Image: Seleccione una imagen del grupo o banco previamente seleccionado en la escena, si ya tiene objetos podra pasar de uno a otro con estos comandos:
  • Hide: Oculta los objetos
  • Take

ROOMS/POINTS

En esta entrada marcaremos los puntos de destino que se usaran para diferentes acciones.Este sub menú consta de los siguientes botones:

  • Exit: Salir al menú anterior
  • Add: Agregar otro punto al fondo, esto se hace marcando el punto con el mouse.
  • Identify: Indica la numeración de un punto.
  • Delete: Borra el punto.

OBJECTS

Esta entrada se refiere a los grupos de objetos o bancos de objetos, son archivos .Abk de Amos con otra extensión.


Es programa hace algo parecido al editor de AMOS pero algo peor, es dificil marcar correctamente y para el Hot Spot (es el punto que se isa para colocar el objeto en determinadas coordenadas), es solo poner un punto pero no hay posivilisad de corregir (sino haciendolo de nuevo) y no hay muchas ayudas como lupa. Tambien las flechas dejan mucho que desear ya que una pulsación mueve los objetos muchos pixeles.

Cada banco de objetos puede estar asociado a 5 personajes. En este sub menu hay las siguientes opciones:

  • Exit: Salir al menú anterior
  • Save: Guardar lo realizado en la en el banco
  • Name: Nombre del banco
  • Path: Cambiar la ruta donde esta guardado el archivo "GRAC #.object", que es el archivo que contendrá esta el banco de objetos, El símbolo # será el número de banco, que automáticamente lo lleva el programa.
  • Character: Elige los 5 personajes asociados al  banco de objetos, primero elija un lugar del 1-5 y luego elija el personaje, también los puede modificar.
  • Delete: Borra el banco de objetos.
  • El texto "mouse" y "mouse wait" son solo para la opción de cambiar el apuntador del mouse durante su juego y para esto necesitará cortar las imagenes desde un IFF de 4 colores, estas imagenes no podrán ser mayores a 16 pixeles de alcho y usarán los colores 16-19, siendo el 16 transparente para el mouse.
Debajo de estos botones hay una barra de desplazamiento en forma horizontal y al pasar el mouse por ella se podran elejir las 100 casillas para objetos, del 1 al 100, al ir moviendose por las posisiones veremos los objetos que tenemos y sus nombres o si esta vacio algunos de estos, podemos rellenarlos por medio de una botonera en la parte inferior, esta nos permite:
  • Load pic: Cargar una imagen
  • Grab: Recortar un objeto (2D) desde la imagen recien adquirida. (si no la hemos cargado previamente, no nos dejara hacerlo.)
  • Flechas: estas posicionan el objeto (pero aun no se si influye en algo)
  • Hot Spot: Nos permite colocar el punto de agarre de la figura. Generalmente la esquina inferior izquieda (en amos es la superior), pero seguramente necesitaremos la parte central de la imagen (no del cuadrado) abajo, para que pueda girar a la derecha e izquierda y sea simetrica ademas de que todos los objetos y personajes se basan en el nivel de piso, el cual al estar en perspectiva indicara que si esta mas arriva es que esta mas profundo, en esto se basará el sistema para colocar un objeto sobre otro o sobre los personajes o entre ellos.
CHARACTERS
En esta opción asignamos fotogramas a varias acciones de los personajes, estos se extraen de un banco de objetos y/o a su vez de una imagen (*.IFF), esta se recorta para cada una de las posiciones de los personajes.
Tenemos el sub menu siguiente:
  • Exit: Salir al menú anterior
  • Save: Guardar lo realizado
  • Name: Nombre del personaje
  • Path: Cambiar la ruta donde esta guardado el archivo "GRAC #.character", que es el archivo que contendrá esta el personaje, El símbolo # será el número de personaje pero del 0 al 99, que automáticamente lo lleva el programa.
  • Colour: elige un color para el texto del personaje
  • Delete: Borra el personaje.
Debajo de estos botones hay una barra de desplazamiento en forma horizontal y al pasar el mouse por ella se podran elejir las 100 casillas para personajes, del 1 al 100, al ir moviendose por las posisiones veremos los fotogramas del personaje que tenemos y sus nombres o si estan vacios algunos de estos, podemos rellenarlos por medio de una botonera en la parte inferior, esta nos permite:
  • Load pic: Cargar una imagen
  • Grab: Recortar un fotograma desde la imagen recien adquirida. (si no la hemos cargado previamente, no se podrá.). No recorte un cuadro masgrande de lo necesario, ya que esto desperdicia recursosy velocidad.
  • Flechas: estas posicionan el fotograma (pero aun no se si influye en algo)
  • Load: se puede cargar(importar) un archivo de personajes GRAC #.character.
  • Hot Spot: Nos permite colocar el punto de agarre de la figura. Generalmente la esquina inferior izquieda (en amos es la superior), pero seguramente necesitaremos la parte central de la imagen (no del cuadrado) abajo, presionando el botón derecho del mouse colocará el hot-spot en la parte central abajo, para que pueda girar a la derecha e izquierda y sea simetrica, ademas de que todos los objetos y personajes se basan en el nivel de piso, el cual al estar en perspectiva indicará que si está mas arriba en Y es que está mas profundo, en esto se basará el sistema para colocar un objeto sobre otro o sobre los personajes o un personaje sobre otro.
En cada casilla ira la imagen del personaje en una de estas posiciones:
(no se necesita la posición mirando a la izquierda por que el sistema la crea por reflejo de la que mira a la derecha.)
  1. stand/idle (>) (V)(^)  Personaje en espera mirando a la derecha, al frente(o abajo) y arriba (o al fondo). 1 imagen (c/u) (1-3)
  2. walk  Caminando mirando a la derecha, al frente y arriba o al fondo. hay espacio para 8 imagenes por cara dirección. (4-11) (12-19) (20-27)
  3. reach up/out/down:   Alcanzando algo (o agacharse a recoger algo) a la derecha, al frente y arriba o al fondo, mirando a la derecha, arriba y abajo. 1 imagen (c/u). (28-30) (31-33) (34-36)
  4. head: Movimientos de la cabeza (puede ser mover la boca u otros gestos), mirando a la derecha, al frente (o abajo) y arriba (o al fondo), 4 fotogramas (c/u). (37-40)  (41-44) (45-48).
  5. desde la posición 49 en adelande son libres, el sistema no los colocará al mover el personaje, pero se pueden colocar por medio de scripts (??).
CONTROLS
Para poder controlar el juego mediante acciones, entraremos aquí, podremos crear un maximo de 10 verbos o acciones para hacer cosas.
En este sub menu hay las siguientes opciones:
  • Exit: Salir al menú anterior
  • Save: Guardar lo realizado
  • Picture: podemos elegir aquí la imagen de fondo para los controles.
  • Path: Puede cambiar o elegir la ruta donde esta guardado el archivo "GRAC #.cont", que es el archivo que contendrá los controles o verbos.
  • Objects: en este sitio indicamos con que archivo de objetos trabajaremos para estos controles.
  • Size: se indicara en esta opcion el ancho (320) y la altura (ejemplo: 191) de la pantalla a usar para el juego sin los controles.
  • Verbs: Verbos a usar. (max. 10)
  • Message: ubicación del mensaje. un solo clic es necesario. se colocaran los mensajes de los verbos.
  • Windows: Ventana para los mensajes de texto y listados de inventario.
  • Pen: Color del texto para los mensajes.
  • Paper: Color de fondo para el texto de  los mensajes.
  • Position: Permite posicionr la pantalla de juego y la de controles.
CONTROLS/VERVS

    Cree los verbos a usar usando este sub-menú:
  • EXIT: Salir al menú principal.
  • Save: Guardar la imagen en formato comprimido como "Grac #.picture"
  • Add: Agregar otro verbo.
          Elija un verbo, y luego escriba el nombre del verbo
  • Name: Cambiar el nombre del verbo.
  • Script: Es la cadena de comandos que se ejecutarán al usar el verbo.
  • Button: Seleccione la imagen del botón presionado, luego la imagen sin presionar y por ultimo coloquela sobre el fondo.
  • Type: Tipo de uso. indica si se puede usar en cules objetos. Puede ser
    • ANY: sirve para todos los objetos. como mirar
    • INV: solo para objetos de inventario. como usar
    • ROOM: solo para objetos que no esten en el inventario como tomar/coger
los siguientes son para 2 objetos, el primero debe des de inventario, etos verbos requieren una palabra conestora como "con" (with):
    • INV/ANY: Uno de inventario y otro cualquiera.
    • INV/INV:   Los dos de inventario
    • INV/ROOM: Uno de inventario y de la escena
    • QUICK: No necesita objetos.
  • String: es una cadena de texto para describir si falla el verbo.
  • Format: Es para indicar si los mensajes seran escritos PRINT o hablados SAY o nada "NONE"

SOUNDS
    Solo se puede usar una camcion por escena.
    Cree las canciones usando este sub-menú: 
  • EXIT: salir al menú principal.
  • Save song: guardar la cancion "Grac.song"
  • Samples: Sub menu de samples.
  • Song path: ruta del archivo de sonidos.
  • Load song: carga una canción ST o MED module
  • Delete: Borra la canción.

SOUND/SAMPLES
    Cree los samples que necesite
  • EXIT: salir al menú principal.
  • Save: guardar el sample RAW
  • Name: Coloca el nombre del sample.
  • Path: ruta del archivo de samples RAW.
  • Load: carga un sample RAW
  • Delete: Borra el sample.
START
    Seleccione un escenario para comensar y coloque el pundo de comienzo


FONT
    Coloque el nombe de la fuente a usar en los textos y el tamaño y la pronunciación de la fuente.
    Normalmente XEN y un tamaño de 8.




ANIMATIONS
    Cree aqui sus animaciones, las opciones son:
  • EXIT: salir al menú principal.
  • Save: guardar la animación
  • Name: coloca el nombre de la animación.
  • Path: ruta del archivo de animacion
  • Load: carga una animación.
  • Delete: borra la animación.
TEXT
    Coloque aqui los textos que necesite. (max 1000).

INVENTORY
    Cree aqui su inventario, las opciones son:
  • EXIT: salir al menú principal.
  • Save: guardar el inventario "GRAC.inve".
  • Add: agregar otro artículo al inventario.
  • Path: ruta del archivo de inventario "GRAC.inve".
  • Name: coloca el nombre de artículo de inventario.
  • Delete: borra la animación.
  • Actions: acciones del artículo. Se crea o modifica un script por cada artículo y cada acción (verbo)
  • String: Textos de descripción del artículo de inventario. Se crea o modifica un texto de descripción por cada artículo.
CHARACTER ACTIONS
Por cada personaje y acción (verbo) se crea o modifica un script

CHARACTER STRINGS
Por cada personaje se crea o modifica un texto.

SAVE PATH
Graba el archivo de PATH o rutas.

CLOSE-UP
Se crean unas escenas especiales cercanas, como mapas o miradas cercanas a diversos objetos.
estas van identificadas por una zona en determinada escena con un banco de objetos especifico
y se le puede colocar una imagen especial. hay 100 posibles escenas de close-up.

  • EXIT: salir al menú principal.
  • Save: guardar el close-up. "GRAC.closeup"
  • Name: coloca el nombre del closeup.
  • Path: ruta del archivo de close-up "GRAC.closeup".
  • Objects: seleccione el banco de objetos con el que se trabajará.
  • Delete: borra el close-up.
  • Add zone: crea o modifica una zona de la escena para asociarla con un close-up.
  • Set zone: crea o modifica una zona de la escena para asociarla con un close-up. permite tener un botón con su imagen presionada y no presionada. y colocada en cierto lugar.
  • Del zone: borra la zona del close-up.
  • Script: se crea o modifica el scrip que hace funcionar el close-up.
  • Startup: se crea o modifica el scrip que se ejecuta al entrar al close-up.
  • Picture: crea o modifica las imagenes del botón del close-up.

--------------------------------------------------------------------------
OBSERVACIONES:
  • Veo que el sub menú de Character actions y el de Character String deberian ir dentro de Character (Personajes).
  • Veo que el inventario no es grafico.
  • Tambien el inventario deberia ser como en todas las aventuras de texto o graficas una escena que muestre lo recojido con objetos visibles como graficos y con ciertas propiedades que aunque las nombra en el manual (especificamente el peso), no estan imprementadas.
  • No tiene implementado cantidad maxima a cargar en el inventario.
  • No tiene implementado que ropa llevas puesta o armas.
  • El botón Save Path No lo entiendo aún.
  • Incluso la manera de manejar los path me parece poco intuitiva y engorrosa.
  • El orden de los botones del menú deja mucho que desear.
  • Fallas al borrar (delete).
  • Dos colores de texto?  algun impedimento de usar cualquiera?



Continuará....