Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 0€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales
Sign in to follow this  
FNP

Representación de mapa. Ideas

Recommended Posts

A ver si soy capaz de expresarme de una forma mas o menos clara. Resulta que estoy diseñando un juego, este juego tiene una mezcla de estilos, por una parte es un plataformas clásico, con sus distintos niveles de altura en cada escena con sus enemigos, sus objetos de puntos y sus bonus fijos, pero por otro tiene también escenario en profundidad, es decir, no solo puedo subir al piso de arriba o bajar al de abajo, sino que puedo entrar por una puerta o abertura e ir detrás del escenario o delante del mismo y además, posiblemente haya transportadores de un sitio a otro del mapa y una cosa importante es que habrá spawners de enemigos para que cuando se maten la cantidad se mantenga constante. Además y aquí está la raíz del problema, el juego utiliza también un estilo de persecución de enemigos mas o menos inteligentes al Player, como si fuese el Pacman que además le persiguen entrando y saliendo por las puertas.

Esto pues bueno, tiene mas o menos trabajo de pensar y de montar la gestión del mapa y la IA de los enemigos, pero el problema que tengo es en la UI, y me explico, pero primero voy a poner un mapa de ejemplo, para que quede claro (o lo más claro posible) lo que he explicado.

Imaginaos que el mapa tiene tres niveles de profundidad, algo asi:

exp_interfaz01.jpg

 

Esto seria algo asi como si el personaje fuese por el escenario A y por una puerta pasase al B y de ahi al C y asi, esto lo hacen muchos juegos, recuerdo algunos antiguos como el Gift from the gods o el Tir Na Nog, pero siempre en escenarios de un solo piso. Yo lo quiero hacer con varios, como  en este ejemplo:

exp_interfaz02.jpg

Si estudiamos el ejemplo, si el jugador está en el escenario A puede subir por las escaleras e ir por la pasarela 1 o ir por el camino 3 y entonces pasaría al escenario B, si ha ido por la pasarela 1 podría entrar por la puerta 2 y vlver al escenario A o pillar el teletransportador 6 e ir al escenario C y asi, con esto lo que tenemos son dos pisos que abarcan tres escenarios:

exp_interfaz03.jpg

Que tridimensionalmente se verían así:

exp_interfaz04.jpg

 

Bueno, espero haberme explicado bien con el mapa, ahora viene lo que no se me ocurre como hacer y es un tema de interfaz. Como he comentado antes por una parte cada escenario A, B  o C tiene sus enemigos y objetos como un plataformas cualquiera, pero hay otra serie de enemigos que persiguen al Player a traves del nivel (los tres escenarios entrando y saliendo de ellos y moviendose por los pisos. Todavía no he entrado en programación ni de lejos, estoy en diseño del juego, ya veremos como hago la gestión del mapa y la IA de los enemigos, pero el principal problema es que necesito mostrar un mapa en pequeño para que el jugador vea al menos, la posición de los enemigos cercanos.

Esto sería muy fácil si fuese un nivel plano tipo PACMAN, es decir, si no tuviese pisos ya que se crea una estructura equivalente a los escenarios, similar a la de la ultima imagen y se coloca en una esquina de la pantalla con una cámara independiente y sobre esa estructura se posiciona el jugador y los enemigos y todo lo que quieras e incluso puedes hacer cosas como ir activando las habitaciones abiertas y cosas de esas.

El problema son los pisos, el Player puede subir unas escaleras y que cuando aparezca se encuentre con que un enemigo que le está persiguiendo las vaya a bajar y se dé con el de morros sin ninguna posibilidad, o que coja un teletransporte y se encuentre en una encerrona o que entre en una habitación sin salida como en el escenario C piso 0 y entre un enemigo detrás de el y no pueda salir porque, por ejemplo, no tenga munición y no pueda usar el arma.

En estos casos el Player se quedaría jodido y sin ninguna posibilidad y creo que afectaría mucho a la jugabilidad, porque además pasará seguro ya que una de las gracias del juego es que según subes de nivel, la rapidez y la IA de los enemigos será mayor por eso creo que necesitaría ver de alguna forma los peligros que tiene cerca pero la verdad es que no se me ocurre como hacerlo.

A ver si alguien tiene alguna brillante idea. El juego es todo en 2D, que es otro "problema" porque se podría hacer algo en 3D como la imagen anterior, pero aparte de que si es muy enrevesado no creo que se viese bien, creo que iba a quedar fatal.

Gracias por leeros el tocho,

Fernando.

Share this post


Link to post
Share on other sites
2 hours ago, FNP said:

En estos casos el Player se quedaría jodido y sin ninguna posibilidad

Así eran los juegos con los me crié y salí hecho un hombre :74_japanese_goblin:

2 hours ago, FNP said:

A ver si alguien tiene alguna brillante idea. El juego es todo en 2D, que es otro "problema" porque se podría hacer algo en 3D como la imagen anterior, pero aparte de que si es muy enrevesado no creo que se viese bien, creo que iba a quedar fatal.

Podrías:

  • Avisarle al Player que existe un enemigo a X metros, sin dirección (arriba, abajo, al fondo, al frente ?), no lo estás matando aunque no le estás diciendo "está aca". O podés avisarle en donde [queda muy gps xD]
  • Hacer que un enemigo de A se vea con un circulo pequeño, B mediano y C grande (simulando una perspectiva) [Esta me gusta]
  • Setear a los enemigos de cada mini-escenario para que no trollen al player, por ej en el del callejón sin salida, dar 5 segundos antes de spawnear al enemigo, entonces el player se tiene que dar cuenta que debe salir, que no hay nada más que hacer. En el caso de por ej pasar de C a B podrías reacomodar a los enemigos también para que no te atrapen por sorpresa (quizás no sea el nucle de tu mecánica pero bueno, una idea) [Esta se ve mucho en metroidvanias modernos y mapas en 2D en general]
  • No hacer nada y crear un prototipo, subirlo por ej aquí y por testeos te decimos "está bien", "es imposible", "está difícil", "es demandante pero gratificante", etc (mirá ya te tiré las opciones de la encuenta :10_wink:). A veces tu forma de pensar estás mecánicas resultan de tal manera que cuando hacés el "experimento social" resulta en otra cosa, un Ej que se me ocurre es, como te mencionaba arriba, antes era común perderlo todo de un tirón  por injusticias y eso hacía al juego (y andá a quejarte a Nintendo, o Atari o SEGA), pero como las mecánicas fueron perdonando cada vez más y más al Player, si hoy en día hacés un OpenWorld sin un compás que diga "Venga por aquí Sr." la gente enloquece, por eso es cuestión de amoldar al player al mundo, el se deberá acordar que tal enemigo lo persigue y que probablemente lo esté esperando en A, B o C. [Esta es Hard mode Impossible Hardcore purist Difficulty]

 

Share this post


Link to post
Share on other sites

Me has hecho recordar los juegos de 8 bits de los 80, cuando pasabas de una pantalla a otra saltando o cayendo y te mataban y al iniciar de nuevo volvías a caer y te volvían a matar y así hasta que todas las vidas se acababan delante de tus narices por un fallo, perdiendo todo el avance. Esto además pasaba en una época en la que si no hacías un juego más difícil que el que había hecho el vecino se dudaba seriamente de tu hombría y claro, esto te hacía un hombre, pero reconoce que con muchos traumas, al menos en mi caso. Ahora soy una persona con tendencias psicópatas, trastornos afectivos y muy poco sociable gracias a aquellos programadores  :4_joy::4_joy::4_joy:. Eso me hizo abandonar muuuchos juegos, por eso adoro tanto los checkpoints.

Sobre lo que tu planteas la primera opción es perfectamente viable, se me había ocurrido, pero no me gusta,, porque la idea es que sea un juego en el que no puedas parar demasiado, con mucho ritmo y que los enemigos que te persiguen no te den mucho respiro, cada vez menos, de hecho y me parece fea.

La segunda no la veo, si tengo un mapa como en el de la segunda o la tercera imagen no lo necesito porque se donde está el player y los enemigos, y podría representar una parte del mapa y mostrar la posición con marcadores de distinto color sin necesidad de cambiar tamaños, incluso sería facil marcar distintos tipos de enemigos, spawners, teletransportadores, pero no es para dar pistas, sino para evitar encontronazos injustos. Nadie dice que haya solo tres planos, ni que haya solo dos pisos, imagina que entro en un edificio de 10 plantas que lo cruzan dos pasillos y que hay habitaciones a ambos lados y en el centro, ahi ya tengo 5 planos (habitaciones, pasillo, habitaciones, pasillo, habitaciones) y 10 alturas, ese mapa puede ser muy grande. Quizá se pueda sacar una perspectiva cómoda para visualizar de forma clara la ubicación actual del player con un rango cómodo como para ver los peligros inmediatos y que quede visualmente claro y a la vez  bonito, pero no se como encajar esas dos cosas.

La tercera opción no es mala, me afectaría a la hora de diseñar la IA de los enemigos, tendría que prever o detectar la cercanía del player a una puerta y que el enemigo no la cruzase hasta que el player no se hubiese alejado, lo mismo con las subidas de nivel aunque si tengo un scroll esto no es necesario porque al desplazar la pantalla lo vería venir. habría que considerar las encerronas como el ejemplo de la habitación sin salida del plano C y en este caso, casi ni consideraría ya poner el mapa en la esquina, porque me aseguro que nunca se va a dar el caso, como la IA aún no la tengo definida, lo puedo considerar como parte de la misma, así no haría falta reacomodar enemigos ni nada, simplemente los enemigos evitarían que el player tropezase con ellos y el jugador ni se daría cuenta, solo cuando entrase a otro plano, tendría algún enemigo muy cerca, pero con margen suficiente para huir, atacar o lo que sea.

Lo del prototipo me parece bien, pero el prototipo necesita tanto la IA, como la gestión del mapa programada y va a ser complicada, asi que no es cosas de tirar, los cambios deberían ser menores, así que tendría que ir a prototipo con la idea clara.

De todas formas, tras esta última pensada, casi que me iría a por la opción 3 ¿Cómo lo veis?

Share this post


Link to post
Share on other sites
22 hours ago, FNP said:

Ahora soy una persona con tendencias psicópatas, trastornos afectivos y muy poco sociable gracias a aquellos programadores  :4_joy::4_joy::4_joy:.

latest?cb=20140215150923&path-prefix=es

22 hours ago, FNP said:

La segunda no la veo, si tengo un mapa como en el de la segunda o la tercera imagen no lo necesito porque se donde está el player y los enemigos, y podría representar una parte del mapa y mostrar la posición con marcadores de distinto color sin necesidad de cambiar tamaños, incluso sería facil marcar distintos tipos de enemigos, spawners, teletransportadores, pero no es para dar pistas, sino para evitar encontronazos injustos. Nadie dice que haya solo tres planos, ni que haya solo dos pisos, imagina que entro en un edificio de 10 plantas que lo cruzan dos pasillos y que hay habitaciones a ambos lados y en el centro, ahi ya tengo 5 planos (habitaciones, pasillo, habitaciones, pasillo, habitaciones) y 10 alturas, ese mapa puede ser muy grande. Quizá se pueda sacar una perspectiva cómoda para visualizar de forma clara la ubicación actual del player con un rango cómodo como para ver los peligros inmediatos y que quede visualmente claro y a la vez  bonito, pero no se como encajar esas dos cosas.

Es un lío pero podés hacerla :) , es q me imaginaba que te interesaban dos planos, el de fondo y el de frente ya que son los que usas (?), por ej pasando del B al A o del B al C, si tenés hasta plano T (por exagerar) también te seguiría interesando del S al R o del S al T , no se si me explico o quizás me lo imaginaba de una manera que no es, si es que pasas del R al B bueno, ahí sí te entiendo.

22 hours ago, FNP said:

De todas formas, tras esta última pensada, casi que me iría a por la opción 3 ¿Cómo lo veis?

Para mi la mejor opción, la IA se resetea en cada escenario, podés cambiar que si alguien te persigue lo excluís del Reset del "Room" (?). En muchos juegos se ve mucho este reset, saliste de tal "room" y todo vuelve a la normalidad estilo metroid, castlevania, axiom verge, hollow knight (con algunas variaciones), Environmental Station Alpha, Shovel Knight y la lista sigue y sigue.

Edited by lightbug

Share this post


Link to post
Share on other sites

Creo que lo mejor será la tercera opción, como en realidad es un único escenario que estará diseñado de tal forma que cuando pases de un plano a otro, en el lugar que ocupen las puertas no haya nada que pueda matar al Player, no sería necesario hacer ningún reseteo y como no será pantalla a pantalla como los juegos que me has puesto de ejemplo, sino algo continuo, tipo Gost'n Goblins, Little Big Planet o Donkey Kong Country, tanto en longitud como en altura, tampoco tengo que considerar nada especial en la IA de los enemigos si mantengo al Player en el centro de la pantalla y adecuo los tamaños lo suficiente como para tener espacio para verlos venir.

Lógicamente hay una idea de IA, no porque haya pensado en el algoritmo, sino porque es un pathfinding típico por celdas en una matriz tridimensional, parece de cajón que será así, con lo que se debería adaptar según la proximidad del player para que el enemigo se mantenga en una celda sin moverse cuando proceda en vez de continuar con el algoritmo de búsqueda de camino, que casi seguro será un A*

Hay que tener en cuenta que la UI tiene muchas cosas, hay un indicador de la tarea a realizar que es una barra de progreso, el objetivo de cada nivel es que el Player llegue a un punto y se mantenga en un sitio durante un periodo de tiempo concreto, realizando una tarea que será automática, con ponerse en el sitio ya la realiza solo, y mientras se le pedirán objetos que tiene que buscar por el mapa, por lo que tiene que interrumpir la tarea para ir a buscarlos, así que en la UI hay que poner, las vidas y/o energía, el % de la tarea, ¿puntuacion?, objetos recogidos y el que se tiene que recoger, munición, cada vez salen mas cosas y si vamos a dispositivos moviles la parte de abajo no se puede usar por el tema de controles, por lo que el espacio se reduce, además de que me gustan los UI muy limpios, así que quitar el mapa de enmedio cada vez me parece mejor solución.

Share this post


Link to post
Share on other sites
On 10/11/2018 at 10:56 PM, FNP said:

Lo del prototipo me parece bien, pero el prototipo necesita tanto la IA, como la gestión del mapa programada y va a ser complicada, asi que no es cosas de tirar, los cambios deberían ser menores, así que tendría que ir a prototipo con la idea clara.

Cuando un "prototipo" necesita casi más del 70% del código y jugabilidad finales de un proyecto, es imposible hacer el "prototipo", y éste es uno de los mayores problemas a los que se encuentra un GameDesigner con frecuencia. Hay varias soluciones al problema y cada persona tiene su método. Yo tiro por la vía de "corta y sepáralo en algo más simple aún...".

Cómo dicen tus compañeros, tanto la opción de resetear posiciones en los enemigos, como la de usar un radar suele funcionar bien y son las menos dañinas para el jugador. También depende mucho del target al que vaya enfocado este juego. Si es para hardcores, que se fastidien y pon libre albedrío. Ese perfil de gente agradece la dificultad extrema y los retos...

La opción del radar puede funcionar si superpones "delante" o "detrás" del escenario los sprites semi-transparentes de los enemigos, o en su defecto unas flechitas que marquen por dónde están ahora mismo en sus respectivos planos de profundidad, para que el jugador pueda planificar una estrategia de recorrido con tiempo de sobras, aprendiendo los patrones del movimiento de cada enemigo.

Share this post


Link to post
Share on other sites

La verdad es que dándole más y más vueltas solo es necesario avisar al Player de los enemigos cercanos en los niveles anterior y posterior, y realmente importa poco los que estén en tu mismo nivel siempre que se haga un buen diseño para esquivarlos.

En este punto, tu idea de hacerlos semitransparentes o incluso marcar un aviso en la puerta lo simplifica todo, no solamente la interfaz, sino la gestión del mapa porque como encajan los distintos planos, me vale poner un transform como si fuesen los enemigos de los planos anteriores y posteriores y hacer un simple Distance()

Habria que ver cómo tratar las habitaciones sin salida y los teletransportes, pero eso puede ser parte de la dificultad, al fin y al cabo el Player puede defenderse y si entra a una habitación o zona sin salida y le siguen pues que pelee y lo de los teletransportes se puede integrar como parte de la lógica que mientras el Player está reapareciendo no sea detestable o que el enemigo no se acerque a X distancia del teletransportador. Habrá que verlo, ni siquiera lo tengo claro, por la propia temática, en un inicio eran puertas mágicas que el Player podía abrir un determinado número de veces, pero al final veremos.

Share this post


Link to post
Share on other sites

a mi la idea del juegi me mola...

es 2d pero es 3d, ...esta guai... pantallas estaticas pero que puede subir bajar... y ir hacia "dentro"  y hacia "fuera"... esta guai, puedes crear laberintos guapos... 

eso si, el problema que explicas parece conplicado solucionarlo "bonito"...

la opcion 3 de @lightbug es una solucion pasando del mapa... pero hacer un mapa que se entienda bien y se vea sencillo a simple vista lo veo complicado...

poner un radar... o poner una onomatopeia (sonido) de pisadas en la pierta donde va a salir un enemigo (un "tap... tap... tap" que se va haciendo grande para indicarte que alguien viene de esa puerta)

la idea 4 de @lightbug tambien es buena... este prototipo lo quiero probar, jeje...

animo, la idea esta guai

 

Share this post


Link to post
Share on other sites
Sign in to follow this  

×