Creador de aventuras gráficas (Versión final+Source+Builder)

Started by Ulthar Kaufman, February 21, 2015, 01:42:20 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Ulthar Kaufman

Actualización:
Última versión 1.2 (22-05-2016)

Mars 2 1.2 - Instalable
Mars 2 1.2 - Source
AVT Dev 0.7 - Builder




Saludos.

Estoy haciendo un motor de aventuras gráficas muy sencillo y que todavía está en fase muy temprana de desarrollo, pero todos los problemillas que me han ido surgiendo los he ido resolviendo y de momento estoy  bastante contento, así que me permito poner un par de capturas de pantalla del Engine y del Builder.

El Builder no es Bennu, lo he hecho en Visual Fox Pro, pero genera los prgs necesarios que luego incluyo en mi proyecto bennu mediante includes. De esta forma separo lo más posible lo que es el motor del desarrollo de las aventuras, y es relativamente sencillo crear otra aventura sin tener que tocar el código principal.

https://drive.google.com/file/d/0B8mMsUUX7KdUalZFSTdGTV9MSkE/view?usp=sharing

Y luego el resultado en Bennu, todavía me falta mucho, pero va tomando forma. La intención es ir desarrollando una aventura al mismo tiempo que desarrollo el motor, lo que se puede ver es la primera escena.

https://drive.google.com/file/d/0B8mMsUUX7KdUYWZvS2l1ZE1XR0E/view?usp=sharing


Yawin

Me interesa mucho tu proyecto. Justo ahora estoy con un motor de aventuras gráficas yo también y me interesa saber cómo resuelves tú los problemas xD
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Ulthar Kaufman

Bueno, antes de nada aclarar que llevo con bennu apenas unas semanas, así que lo que yo entiendo como problema seguro que vosotros lo resolveis en cinco minutos y con un código mucho más limpio y organizado que el mío. También debido a eso y a mi poca habilidad y paciencia con los pinceles me he auto impuesto un sistema lo más simple y minimalista posible.

He visto un poco el código que has puesto en otro post y he quedado un poco abrumado por la diferencia de nivel, de todas formas los requisitos para un motor de aventuras son universales y seguro que hablando de ellos podemos ayudarnos mutuamente.


Yawin

Pues te voy a plantear uno. Mi esquema para las escenas es el siguiente:

Cada sala está dividida en escenas. Cada escena vendría a ser cada uno de los estados en que va a estar esa sala durante la partida. Por ejemplo, en una sala que sería una plaza en una escena habría un cadáver con sus pruebas y en otra escena estaría llena de turistas porque la policía ya se ha llevado el cadáver.

Entendiendo eso, he planteado que cada escena tiene gameobjects, que son las cosas con las que se puede interactuar. ¿Cómo has planteado estos objetos?
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Ulthar Kaufman

Bueno, como te he dicho yo estaba pensando en un sistema lo más minimalista posible, en parte por mis limitaciones, y en parte también porque los años de experiencia me han acentuado el sentido práctico.

Antes de nada explico como he organizado los objetos:

Tengo dos arrays de structs de datos principales a modo de tabla padre e hijo (escenas y objetos), cada vez que cargo una escena, pongo en pantalla los objetos que están asociados a esa escena (la clave es el índice). Esos objetos tienen un estado, que me dice si están en la pantalla, en el inventario, ocultos, etc. Al ser structs, en cualquier momento puedo cambiar sus propiedades fácilmente, puedo hacer que ya no aparezcan en la escena (ocultos) y poner visibles otros, aunque casos como el que comentas que son tan distintos creo que deberían considerarse directamente como una escena nueva, así lías menos. Solo tendrías que definir una condición en la hotzone que navegue hacia esa escena y según una variable flag ir a una u a otra.

Creo que definir muchas condiciones en una misma escena enfangaría el código y sería más difícil de depurar, y eso solo conduce a la locura.

Hasta ahora he estado pegándome simplemente con el movimiento y carga de objetos. Estoy terminando el inventario (que no los usos conjuntos), y lo próximo será el movimiento entre escenas, así que a lo largo de la semana que viene lo tendré un poco más pensado.

Así a bote pronto necesitaré definir donde aparece el personaje en cada escena, ya que una misma escena puede tener varios accesos. También creo que será necesario un volver simple que pueda ir volviendo a la escena anterior (y las coordenadas del personaje).

Transdiv

Lo curioso me parece que uses el VisualFox para el builder  ;)

Ulthar Kaufman

Jajaja, ya... apenas quedamos, pero es mi herramienta de trabajo habitual y es con la que me encuentro más cómodo, y eso para proyectos personales como este es lo más importante. Como hace unas semanas cuando encontré Bennu y vi que era el heredero natural del Div2, con el que hice algunas cosillas hace algo así como mil años... lo tuve claro al momento.

PD. Yo por VFP maaaaa,toooo!
xD

Ulthar Kaufman

Sigo con mis progresos.

Ya he terminado las funciones necesarias para los dialogos: mensajes y elecciones de respuestas. También he completado el sistema de movimiento entre escenas, el cuál explicaré un poco.

Finalmente he optado por un sistema de navegación entre objetos, no directamente a la escena. ¿Por qué? Porque al navegar a un objeto concreto, ese objeto ya me dice a qué escena pertenece, y además tengo su posición, y junto con una propiedad con la que le indico a las puertas la dirección por donde se accede a ellas (arriba, derecha, abajo, izquierda), eso me permite situar al personaje en la escena nueva y además al lado del objeto puerta por el que ha entrado.

También mantengo un pequeño array con la cola de objetos puerta que voy transitando, así en cualquier momento puedo llamar a una función volver y regresar a la escena anterior aunque no sepa cuál es. Ésto es útil para escenas a las que se accede desde el inventario, por ejemplo al examinar una foto desde el inventario, cargo una escena nueva con la foto en grande, y como ha podido ser llamada desde cualquier escena, simplemente hago un Volver a la anterior y actualizo la cola.

Como tarea importante solo me queda el uso conjunto de objetos del inventario, y luego ya a programar la aventura en sí, que concretando un poco la historia que tenía pensada me salen unas 30 escenas y 14 pnjs... sí, igual me he flipado un poco :S


Yawin

Pues con la historia que tengo pensada 30 escenas es la introducción xDD Igual yo sí que me he flipado.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

peterpollito

Tu tienes lavia, verborrea, así que no dudo que sera larga. A mi personalmente me gustan largas. Bueno, no lo interpreteis en el otro sentido que ya os veo venir. Guarrillas!

Ulthar Kaufman

Novedades. Básicamente el motor está terminado (por lo menos lo que pretendía hacer), quedan ajustes menores y corregir los bugs que vayan surgiendo.

En el Builder he añadido varias ayudas visuales, así como un sistema de traduccines. Como se puede ver en la captura el código que se mete en los scripts es bennu puro y duro, en la versión final añadire ayudas para tener siempre a la vista las funciones del Engine y las variables que pueden usarse.



Os voy a dejar una versión preliminar de (más o menos) lo que llevo hasta ahora para que lo veáis en funcionamiento. Cuando esté más pulcro el código (ahora mismo está bastante guarro) publicaré el código fuente, tanto del engine como del builder para que quien quiera usarlo pueda hacerse su propia aventura, de momento es lo que hay.

BCAG Engine - Alpha 2: https://drive.google.com/file/d/0B8mMsUUX7KdUU0xrTFZHdlYyQ1E/view?usp=sharing
(Es un zip en google drive, para descargarlo hay un botón en la barra superior)

Agradeceré el feedback para corregir o mejorar cosas :)


gecko

Torres Baldi Studio
http://torresbaldi.com

Transdiv

Y donde esta el cuarto de Geologia?