Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Aventura grafica

Iniciado por Darago_malaga, 09 de Enero de 2013, 09:40:19 AM

« anterior - próximo »

Darago_malaga

Alguien conoce alguna web que te enseñe los algoritmos necesarios para la programacion de una aventura grafica estilo EL DIA DEL TENTACULO? Se que hay multitud de herramientas y kits para realizar juegos de este tipo, pero estoy buscando informacion para realizar mi propio motor.

bnl

Yo hace unos años me puse a crear un motor para crear aventuras graficas. Avance bastante pero es un trabajo inmenso y al final acabe posponiendo (o cancelando :( ) el proyecto por falta de tiempo.

Yo no me base en ningun tutorial ni en ninguna web que explicara los algoritmos usados por otras aventuras graficas, fui desarrollando los algoritmos que fui necesitando. Un algortimo existente que utilice fue el A* para encontrar el camino mas corto entre dos puntos.

Si tienes alguna duda en concreto lo mismo me pegue con ella en su dia y te puedo echar una mano.
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

Darago_malaga

Gracias por tu ofrecimiento.

Mas que ayuda con los algoritmos, que esta claro que tengo que usar el pathfinder, tengo dudas sobre el planteamiento de la estructura general del juego.
Todos sabemos como se estructura un juego de este tipo. Basicamente el juego consta de varios escenarios en los que en cada uno hay que hacer una serie de acciones (mirar, hablar con..,moverse, coger, soltar, activar... ) y se producen unas reacciones (cambio de variables, mostrar animaciones...).

Mi duda es: ¿Como gestiono las escenas?

Posibilidad 1)
Creo una función general para todo el juego en la que controlemos en que escenario estoy y gestiono todas las interacciones.

Posibilidad 2)
Creo funciones separadas para cada escenario y controlo solo las interacciones que ocurran en el.


Lo bueno del Metodo 1 es que no repito código pero a poco que tenga 10 o 15 estancias se lia un pitote de codigo que pa que.

Lo bueno del Metodo 2 es que el codigo queda mas claro, no mas eficiente. Y que programar eventos especiales y especificos para cada escena no alterara el funcionamiento del resto del codigo para otros escenarios.


Crear una clase de accion / reacción me parece demasiado cuadriculado para un juego de este tipo.



¿Que opinais?

adrigm

#3
Darago_malaga, normalmente se gestiona por escenas/estados. Hace tiempo escribí un artículo sobre ello, en aquella ocasión usando Python y Pygame, pero la idea de aplica a cualquier lenguaje: http://razonartificial.com/2010/08/gestionando-escenas-con-pygame/

Un enfoque parecido es este de David Saltares, en este caso usando Ogre y C++ en el que utiliza una pila de escenas (él los llama estados): http://siondream.com/blog/games/gestion-de-estados-de-juego/

Espero que te sirvan.
http://razonartificial.com/ - Blog personal sobre desarrollo de videojuegos

bnl

Yo si no recuerdo mal lo monte de forma global y por estados porque los escenarios no serian estancos y las acciones en uno podrian tener consecuencias en otros.
Si no es tu caso podrias separarlo por escenarios para tenerlo mejor organizado.

En cualquier caso no deberias repetir codigo. El codigo deberia ser unico y lo que cambie de un escenario a otro serian los datos (que acciones producen que consecuencias, eventos, dialogos, etc)
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

Darago_malaga

Muchas gracias Adrigm. Son muy útiles los links que me has recomendado pero creo que están mas enfocados a la gestión de las escenas de un juego, entendiendo por escena a las diferentes partes de un juego como; Menú, Pantalla de configuración, Créditos, Pantalla de juego..etc. Yo me refería a escenarios como a; Salón, pasillo, porche, jardín...

bml, gracias. A unas malas siempre puedo usar Variables Globales.


[EX3]

Cita de: Darago_malaga en 23 de Enero de 2013, 09:05:04 PM
Son muy útiles los links que me has recomendado pero creo que están mas enfocados a la gestión de las escenas de un juego, entendiendo por escena a las diferentes partes de un juego como; Menú, Pantalla de configuración, Créditos, Pantalla de juego..etc. Yo me refería a escenarios como a; Salón, pasillo, porche, jardín...
Es que la lógica viene a ser más o menos la misma, distintos estados del nivel de juego. Tu puedes definir dentro de estado juego otra pila de estados que sean las distintas escenas de la pantalla que estés jugando.

En mi caso, que siempre he estudiado juegos como Prince of Persia o Another World, que se juegan por "habitaciones" por llamarlo así, no dejan de ser estados de un nivel concreto del juego. Piensa en estados como si fuesen escenas realmente, por que en el ejemplo anterior, el menú principal o la pantalla de créditos no dejan de ser escenas del juego.


Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Totemalf

#7
Con el debido respecto, yo intentaría usar alguno de los motores existentes. Wintermute Engine es totalmente gratuito, y con el se han desarrollado varios juegos comerciales. Te permite usar 2d o   escenarios 2d con personajes 3d. Además puedes adaptarlo a tus necesidades programando pluggins etc. Permite hacer muchas cosas de forma gráfica, y el código es una variante de c++.

Yo no trataría de reinventar la rueda, sino que trataría de buscar nuevos compuestos mejores que el caucho para hacerla más eficiente.
Te doy ánimos para que sigas adelante con tu sueño; soy un aventurero de pro, y todo lo que sea solucionar las cosas por medio de la lógica tiene mi apoyo.

http://dead-code.org/home/
pruébalo, no pierdes nada.

Mucha suerte!!

Darago_malaga

Muy interesante. Le echare un vistazo. La verdad es que mi intencion era crear algo para iOS y al parecer este motor esta un poco verde en este sistema. Pero siempre es bueno ver el planteamiento que proponen.

Muchas gracias. Ire informando de los pequeños progresos que haga para buscar consejo entre las mentes del lugar.

Ahora estoy liado con el PathFinder y en su variante de NavMesh. Muy entretenido y didactico.

[Vil]

Yo me monté un motor de aventuras desde 0... y no te lo aconsejo. Te vas a tirar años (si, años) para que la cosa sea realmente funcional y luego casi no te quedan fuerzas para montar la propia aventura, jejeje.
Y si no te convence ninguno de los que ya hay, recicla código y algoritmos y hazte el propio. Usa un script ya hecho (no programas el tuyo), lo mismo con la busqueda de caminos, etc.

Como digo, si lo que quieres es hacer una aventura... si quieres disfrutar y aprender del proceso, adelante con ello! yo aprendí mucho muchísimo!

Darago_malaga

Gracias por el consejo Vil. Como bien dices me encuentro en el caso de crear el motor desde 0 mas que nada por el disfrute de hacerlo.

He visto que tienes un enlace a una web sobre una acebtura grafica FREGOCLES. Es tuya??? La terminaste???

[Vil]

Si, es mía (y de algunos amigos que ayudaron bastante) y el proyecto se canceló hace ya algunos años. Desde la misma página puedes descargar (imagino que aún puedes...) el primer episodio entero. Avanzamos bastante en el segundo... pero ahí se quedó :)

Darago_malaga

#12
Bueno...pues de momento he finalizado el tema del PathFinder. Finalmente he optado por la utilización de NavMesh. Esto consta en delimitar la zona por la que nuestro personaje puede caminar mediante una serie de polígonos, como se muestra en esta imagen:



He simplificado los polígonos a triángulos, formados por vértices. Desde un punto de inicio (punto verde) buscamos el triangulo que lo contiene. Y  luego saltamos de vertice en vertice por el camino mas corto usando el algoritmo de dijkstra hasta un triangulo que contenga el punto de destino (punto rojo). Por ultimo simplificamos el camino de un vertice a-b-c si desde a se ve de forma directa c eliminando b.


Manu343726

Te recomendaría que en vez de pasar por los vértices de los triángulos, pases por los baricentricas de estos. Más que nada para que el personaje camine por el medio del camino, y no por los bordes, que parece un fórmula uno siguiendo la trazada XD

Darago_malaga

Tienes razón en lo que dices. Y mirando la imagen que he puesto del MonkeyIsland puede parecer el metodo mas correcto. De hecho es la forma de proceder en el 99% de los sitios que he consultado. El problema me vino al ver este video:

http://www.youtube.com/watch?v=Yhqs8crnIbU


Si te fijas, al ir de un cuadrante a otro, usa el centro de la union para trazar el camino. No se...pero a mi eso me parece muy poco natural. Me parece mas natural que al doblar una esquina me acerque a esa esquina y luego busque el punto de destino. Segun esta imagen:



El camino propuesto por el metodo del centro de la union es el rojo y el que usa los vertices seria el verde. Me parece mas logico / natural usar el verde.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.