Ahoy!
Estoy buscando información sobre mapas de mosaicos, o más bien, cómo se llama un tipo específico de mapa de mosaicos.
Estoy interesado en el tipo de implementación utilizada en el magnate de la montaña rusa, o en la serie de juegos de magnate del transporte y he estado investigando el terreno del campo vectorial y el terreno del mapa de altura, pero no estoy seguro de que sean adecuados para lo que estoy buscando desarrollar.
Ha sido difícil encontrar información decente, ya que la mayoría de las personas se refieren a ella como un mapa de mosaico isométrico, pero estoy buscando crear algo en 3D con una perspectiva ortográfica fija. Entiendo que el almacenamiento subyacente del mapa de mosaicos no tiene nada que ver con cómo se representa, pero no estoy buscando crear un mapa de mosaicos 2D como los juegos de pokemon / zelda de la vieja escuela, más en la línea de diablo con la capacidad de incluir acantilados colgantes y terreno inclinado.
Solo estoy tratando de encontrar los términos correctos para buscar en google y stackoverflow recursos que me ayuden a decidir qué camino seguir.
Hasta ahora, he logrado desarrollar un mapa de mosaico básico sin usar el componente de altura / y almacenado en un VBO y representado como una estructura alámbrica. Esto se ve bien hasta ahora, pero imagino que tendré problemas al tratar de manipular un solo vértice para crear acantilados y pendientes sin afectar a un mosaico vecino.
¿Hay algún tipo específico de implementación que debería investigar? Pensé que lo había descifrado cuando encontré una buena cantidad de información sobre el terreno del campo vectorial, pero tampoco estoy seguro de que esto arroje los resultados correctos.
Si alguien puede arrojar algo de luz sobre esto por favor, la ayuda sería muy apreciada :)
Actualizar
He incluido una imagen para obtener más aclaraciones sobre lo que me gustaría lograr:
Imagen tomada de Cómo crear mosaicos isométricos inclinados (altura)
Esta imagen muestra el tipo de terreno que me gustaría generar pero no incluye los "acantilados" o los tipos de terreno sobresalientes que estoy interesado en modelar. Sin embargo, plantea algunas otras preguntas que no había considerado, a saber;
- ¿Cómo se manejarían las 'capas' como el agua (arriba a la izquierda de la imagen) para incluir el suelo visible debajo del agua?
- ¿Cómo se atenderían los "bordes" del mapa para que la tierra / barro represente al mundo como una entidad no plana?
- ¿Podría usarse el almacenamiento subyacente para este tipo de terreno para modelar la física, como una pelota rodando por una colina o las velocidades de movimiento de un jugador que atraviesa una pendiente?
Tenía la idea de que cada mosaico del terreno podría modelarse con 8 vértices donde los 4 vértices principales cubren el mosaico real y los 4 vértices restantes se usan para modelar los lados / paredes de cada mosaico. Los dos problemas que veo con esta implementación son que a) el mapa mundial tiene un tamaño esencialmente doble yb) dado que no todos los mosaicos incluirán "paredes", algunos mosaicos terminarán con vértices redundantes que no se utilizan.
Me gustaría crear un editor de terreno que permita que cada ficha se deforme y que incluya la posibilidad de cambiar el terreno durante el juego. Esto en sí mismo plantea preguntas adicionales como; ¿Se puede usar un VBO para almacenar y renderizar el terreno mientras se modifica sobre la marcha y también, es posible modificar los vértices sin afectar las fichas vecinas?
Tengo la impresión de que estoy complicando demasiado las cosas o me encuentro con parálisis de análisis, ya que no estoy escribiendo ningún código para resolver el problema sin tener una idea clara de cómo lograr lo que quiero.
Nuevamente, realmente estoy buscando un empujón en la dirección correcta con esto. ¿Existe un tipo específico de implementación de mapa de mosaico / terreno que se adapte a un mapa 3D que se deformará tanto por un editor de mapas como durante el juego o tengo que rodar el mío, por así decirlo? No estoy tratando de reinventar la rueda aquí, pero estoy luchando por encontrar recursos dado que no estoy seguro de qué buscar.
Si alguien puede proporcionar información, recursos o fragmentos de código, eso sería muy apreciado ya que estoy ansioso por ensuciarme las manos y comenzar a producir algo más que la estructura plana que tengo actualmente.
¡Gracias por leer!
Esto: http://30.media.tumblr.com/tumblr_m06qv6OREt1r2qjpao1_500.png es un ejemplo de un mapa que he hecho hace algún tiempo.
Tenía un XML que representaba el mapa y diferentes tipos de mosaicos. Cada tipo tendría algunos atributos:
ALL
(si se fusionara con cualquier mosaico a su alrededor),EQUAL
(solo se fusiona con mosaicos del mismo tipo),NONE
(nunca fusionar).Luego leía todos los mosaicos y los creaba en la escena. Primero solo teniendo en cuenta la posición. Cada mosaico tenía que saber que era vecino, así que tuve que recorrer el mapa dos veces, una para crear todo y una vez más para mover cada vértice a la posición correcta.
Aunque mis modelos son hexes, el concepto es el mismo, necesitaría un cubo para representar su mosaico, luego movería los vértices de la base al nivel más bajo y 'suavizaría' la parte superior del cubo con los cubos a su alrededor. También verificaría si dos lados de los cubos se fusionaron para que pueda eliminar ese lado del cubo (si no se fusionan, probablemente sea un acantilado o algo así).
Sobre física, depende de tu objetivo. Si estás haciendo algo como el magnate de la montaña rusa, realmente no los necesitas. Podrías verificar la altura del jugador entre cada ficha y decidir la velocidad de caminata. Puede hacer lo mismo para un objeto que se mueve solo (como la pelota), puede verificar las fichas (o el ángulo actual de la ficha) y decidir una dirección / velocidad. Si necesita una física realista (como la gravedad, la fricción, etc.) tendría que usar un motor de física, y podría usar la representación 3D del cubo en el motor.
Las capas también son posibles, pero necesitaría algo como Minecraft (con suavizado en los cubos en la capa más alta). Si solo necesita capas para el agua, puede tener un "manantial de agua" en un mosaico y hacer que su código llene cada espacio a su alrededor que esté a la misma altura o más bajo (una solución recursiva encajaría bien aquí).
Un editor de terreno también sería simple, si su código es lo suficientemente flexible, puede aplicar las transformaciones a un único mosaico (el que está cambiando), oa una lista de mosaicos (si está usando un 'pincel' para seleccionar y moverlos). Se puede usar el mismo código para modificar el terreno en el juego. Y sí, puedes cambiar los vértices en el VBO, también es posible cambiar los vértices sin afectar a otros (también depende de que codifiques así).
fuente