Hasta hoy solamente he programado en DirectX y PC y nunca había necesitado usar mapas de durezas ya que para los estilos de juego que he programado me ha valido con detección de colisiones entre figuras geométricas.
Pero ahora me he puesto con la GP2X y la SDL y he empezado a programar algo parecido a los primeros Metal Gear y para el terreno no quiero usar tiles. He pensado que la mejor solución quizas sean los mapas de durezas con diferentes colores para el tipo de terreno y evitar tener una complicada colección de figuras geométricas para cada tipo de terreno diferente.
Lo que debería de comprobar en el mapa de durezas es lo siguiente:
-Estilo de terreno para modificar la velocidad, el ruido o la cobertura: fácil, solo mirar el pixel del mapa de durezas sobre el que está el protagonista.
-Terreno que corta la visión: Para determinar si algún enemigo me ve lo primero que hago es ver la distancia a la que me encuentro de el, después y dependiendo de la dirección a la que está mirando el enemigo compruebo que me encuentro dentro del las dos líneas que determinan la zona que ve (muy al estilo commandos) y por último trazo una línea entre el personaje y el enemigo (y por consiguiente determinada mediante estos 2 puntos) y compruebo en el mapa de durezas si toca alguna zona que imposibilite la visión (por ejemplo el rojo). Este es mi primer problema, que no se como comprobar que una línea determinada por dos puntos corte o nó una zona de un determinado color.
-Terreno impracticable: Aquí está mi segundo problema. En cada frame el personaje y su movimiento está determinado por un punto (el personaje) y un vector (movimiento del personaje en este frame). El problema está en detectar si ese movimiento entra o nó en una zona no transitable. Esto parece facil pero también tengo que determinar cual es el punto exacto en el que el vector entra en la zona para dejar al personaje ahí, no solo comprabar si entra o nó.
Resumiendo para los que se han perdido con tan mala explicación y para los que se la sopla como será mi juego lo que necesito es:
1-Comprobar la colisión de una línea (Punto-Punto) con un derminado color del mapa de durezas.
2-Determinar la colisión y punto de intersección entre una línea (Punto-Vector) y un determinado color del mapa de durezas.
Quizas sea una pregunta algo rebuscada pero es la única traba que tengo sobre el cuaderno a la hora de diseñar el juego.