En una cuadrícula de mosaicos donde el movimiento en cualquiera de las 8 direcciones toma exactamente la misma cantidad de giros (reglas de estilo de tablero de ajedrez), ¿puedo evitar que el movimiento diagonal muestre más mosaicos nuevos que el movimiento ortogonal?
Por ejemplo: usted es el cuadro rojo en la imagen a continuación. Las celdas verdes son actualmente visibles para usted (campo de visión cuadrado). Puede mover una distancia de una ficha en cualquiera de las ocho direcciones.
Si te mueves hacia el noreste , explorarás 13 fichas nuevas (que se muestran en azul). Si en cambio te mueves hacia el sur , solo explorarás 7 fichas nuevas (que se muestran en púrpura).
¿Cómo puedo hacer que viajar en cada dirección sea igualmente favorable para la exploración?
fuente
Respuestas:
Dungeons and Dragons 3.5 (RPG de lápiz y papel) tiene una solución utilizada tanto para el movimiento como para los cálculos de radio basados en cuadrícula: el movimiento diagonal cuesta 1.5 lo que cuesta ortogonal. Como la diagonal de una unidad cuadrada es aproximadamente 1.414, 1.5 está bastante cerca.
Debido a que D&D 3.5 solo admite el movimiento de enteros, la forma en que esto realmente se calcula es que el movimiento ortogonal cuesta "un cuadrado". Tu primer movimiento diagonal también solo cuesta "un cuadrado", pero la segunda diagonal cuesta "dos cuadrados". Alterna uno y dos cuadrados para cada movimiento diagonal. La implementación de esta regla de movimiento dentro de su juego manejará varios problemas con el movimiento diagonal.
Como muestra este diagrama, esta regla de movimiento crea una aproximación razonable de los círculos y tampoco está desactivada en más de 1 en comparación con la distancia real (cuando está dentro de las 15 unidades del inicio).
Si su radio de visión / exploración también se calcula de esta manera, el movimiento diagonal y los descubrimientos diagonales serán tan cercanos o lejanos como los ortogonales.
fuente
Necesita cambiar la forma del campo de visión.
De modo que cuando te mueves en cualquier dirección, se hace visible el mismo número de cuadrados nuevos.
Aquí hay una posibilidad:
fuente
Para que el movimiento diagonal y ortogonal revele aproximadamente la misma área, necesita dos cosas (cada una de las cuales, solo, ya se ha sugerido en otra respuesta o comentario):
Rango de visión aproximadamente circular :
Por sí solo, esto no dará exactamente la misma área revelada para ambos tipos de movimiento. Por ejemplo, en la imagen de arriba, el movimiento ortogonal revela 9 cuadrados, mientras que el movimiento diagonal revela 13. Sin embargo, aún es mejor que la relación 13/7 para el área de vista cuadrada en su ejemplo.
De hecho, a medida que crece el radio de vista, la proporción de áreas reveladas por paso diagonal / ortogonal tiende a √2 ≈ 1.414 para un área circular, mientras que la misma proporción para un área de vista cuadrada tiende a 2.
Movimiento diagonal más lento :
En la vida real, caminar en diagonal a través de un campo cuadrado lleva más tiempo que caminar por uno de los lados. De hecho, se tarda aproximadamente √2 ≈ 1.414 veces más. Si quieres que el movimiento en tu juego se sienta realista, también deberías hacer que eso suceda en tu juego.
En la práctica, 3/2 = 1.5 es una muy buena aproximación de √2. Por lo tanto, puede hacer que cada paso ortogonal tome dos unidades de tiempo, y hacer que cada paso diagonal tome tres. Con el área de vista de ejemplo anterior, esto produce 9/2 = 4.5 cuadrados revelados por unidad de tiempo para el movimiento ortogonal, y 13/3 = 4.33 cuadrados revelados por unidad de tiempo para el movimiento diagonal. Bastante cerca, ¿eh?
Alternativamente, si desea apegarse a "1 paso = 1 unidad de tiempo" para el movimiento ortogonal, puede usar algo como el sistema D&D sugerido por Dane y hacer que cada segundo paso diagonal consuma un turno adicional. (Sin embargo, si hace eso, debe dar a cada unidad un contador explícito de cuántos pasos diagonales han tomado; de lo contrario, puede terminar con exploits como, por ejemplo, E, NE, E, NE, ... . secuencia de movimiento que permite a un jugador para explorar más rápido de lo previsto.)
fuente
Dado que está utilizando una cuadrícula y sabe en qué dirección está avanzando el usuario, no hay nada que lo limite a adaptar la respuesta anterior y a utilizar diferentes campos de visión según la dirección.
Por ejemplo, podría extender el campo para incluir las esquinas cuando viaja en direcciones cardinales y reducirlo dos cuadrados en cada extremo en sus cajas diagonales para que cada uno descubra 9 cuadrados.
Otra alternativa, dependiendo de cómo funcione su iluminación, sería utilizar una mejor aproximación circular con antialiasing, para revelar parcialmente algunos de los cuadrados.
fuente
¿Qué tal, en lugar de tener un rango de visión fijo, hacer que el área de visibilidad del jugador dependa de la dirección que estaba mirando el jugador, así como quizás la dirección que el jugador enfrentó en los últimos turnos (un jugador que se movía hacia el norte podría ser capaz de Inmediatamente dé un paso hacia el sur, pero podría tomar algunas vueltas para obtener la máxima distancia de visualización en esa dirección). Un jugador que se dirige hacia el norte desde un pasillo estrecho hacia una habitación grande y continúa viajando hacia el norte tendría una visibilidad limitada al este y al oeste, y probablemente debería hacerlo. Cuando el jugador deja de moverse, uno podría hacer que el sistema automáticamente "explore" áreas invisibles que están dentro del radio de visión actual del jugador, pero mientras el jugador se mueve activamente, el campo de visión debería estar más limitado.
fuente
Como alternativa a un campo de visión más complejo (que como se discutió anteriormente agrega sus propios problemas debido a las restricciones de un diseño basado en la cuadrícula), podría intentar emular el efecto del movimiento en un juego que no se basa en una discreción cuadrícula. Donde es posible el movimiento libre, un movimiento diagonal de una unidad sería exactamente eso, no las ~ 1.41 unidades de movimiento vistas con una cuadrícula cuadrada.
Si bien no puede forzar el movimiento de una sola unidad sin perder su cuadrícula discreta (lo que cambiaría el diseño de su juego de manera bastante significativa), tal vez podría realizar un seguimiento del movimiento adicional tomado y soltar movimientos más tarde: rastree los 0.41s adicionales y una vez que sumen más 1.00 hacen que esa unidad se salte un movimiento. O al revés: considere que la diagonal es normal, sume los 0.41s para cada movimiento horizontal o vertical, y otorgue crédito de movimiento adicional una vez que sea mayor que 1 (o 1.41 para un movimiento diagonal).
Tendría que tener cuidado de cómo presentar esto a sus jugadores de manera que parezca suave y justo. En un escenario de jugadores múltiples, tales cambios podrían convertirse en algo de lo que los jugadores se aprovechan estratégicamente; esto puede ser un problema o puede haber una forma natural de mezclar esto con la mecánica del juego (tal vez permita a los jugadores almacenar un pequeño cantidad de "crédito de movimiento no utilizado" que pueden usar para reaccionar rápidamente en un momento posterior y que los 0.41s adicionales de movimiento se alimenten (o saquen) de ese grupo.
Esto funcionaría mejor si las entidades de control del jugador se movieran en movimiento de una unidad cada turno. Por ejemplo, tres puntos de movimiento podrían usarse como tres movimientos horizontales, o dos diagonales con 0.16 restantes en el grupo para más adelante. Una vez que llega a 1.00, el jugador obtiene un movimiento / movimiento "libre" y en 1.41 uno diagonal libre. Podrías limitar el extra a 1.5 para forzarlo a usarse o perderse en ese punto para evitar que el jugador conserve esta energía almacenada durante años o permita que se acumule.
Obviamente, esto es una complicación para las reglas de su juego que puede ser completamente indeseable, y no sería práctico para un juego no computarizado, pero si pudiera hacer que funcione dentro de las reglas existentes de su juego, limitaría la diferencia de exploración entre las direcciones de movimiento sin necesidad para abandonar el formato de cuadrícula.
fuente
Puede hacer que el jugador se mueva dos espacios si se mueven hacia arriba, hacia abajo, hacia la izquierda o hacia la derecha, y solo uno en diagonal. No lo equilibraría por completo, pero estaría mucho más cerca.
fuente