167 meneos
3372 clics
Cómo Command & Conquer: Tiberian Sun resolvió el problema de encontrar el camino (pathfinding) [ENG]
Uno de los objetivos de "TibSun" (como se llama al juego cuando uno sabe de lo que habla) era no tener límite en el número de unidades que los jugadores podían construir y controlar, y ese objetivo venía con dificultades. A pesar de lo simple que puede parecer a simple vista ("¡Sólo vete de aquí para allá!"), la búsqueda de senderos es en realidad un desafío de programación extremadamente complejo. dependiendo del camino, puede ser NP-completo. [vía arstecnica]
|
comentarios cerrados
arstechnica.com/gaming/2019/02/video-to-make-tiberian-sun-westwood-had
No se por qué #0 solo ha enlazado al vídeo.
Pues menuda información
No aclara los detalles que serían importantes:
- Si es un A* o alguna variante
- Cada cuanto se ejecuta, ¿se recalcula a medida que se mueven los personajes? ¿Se guarda algún tipo de caché y se va modificando? Etc
Precisamente por lo que cuenta de que en un RTS la cosa es mucho más compleja (muchas tropas moviéndose y cada una con una forma de moverse diferente) estaría bien que explicara de verdad cómo lo hicieron
Me ha encantado esta cita
Yo me he pegado con el tema por un lado programando un tipo Nethack y por otro con uno en tiempo real con una imagen utilizada como mapa de fondo, con zonas atravesables y zonas que no; en este último tuve que ir haciendo apaños, ya que como dices en (4) lo de ir casilla por casilla es imposible cuando una casilla es un pixel, pegaba unos trompicones terribles cada vez que tenía que recalcular una ruta. Lo arreglé asignando costes al recorrido y poniendo "raíles", caminos de coste bajo que unían todas las "zonas lógicas" (habitaciones de una casa con su pasillo, etc) por los que acababan discurriendo siempre. También pensé definir nodos o polígonos, pero se me complicaba y lo de los raíles funcionaba
En el tipo Nethack no hay problema al ser pocas casillas, pero sí tienes el dinamismo de muchas cosas moviéndose a la vez. Ahí el mayor problema fue lo de que enmedio del camino es muy probable que haya otros NPCs pero debería ir hacia allá igualmente, lo que planteas en (2). Como lo solucioné de momento fue poniendo un coste más alto a las casillas con NPCs, de modo que por un lado le compense encontrar un atajo, pero por otro que si no lo hay insista (ya que normalmente van a ser enemigos que van a querer ir todos contra ti)
Y luego hacer una caché con la lista de nodos final, para que la use siempre que la siguiente casilla esté liberada en lugar de ir calculando a cada paso.
El reloj se cayó a cachos hace tiempo, pero la figurita del GDI aún la conservo con orgullo.