Estoy creando un juego de acción basado en mapas 2D con un diseño de interacción similar al de Diablo II. En otras palabras, el jugador hace clic alrededor de un mapa para mover a su jugador. Acabo de terminar el movimiento del jugador y estoy avanzando hacia la búsqueda de caminos.
En el juego, los enemigos deben cargar el personaje del jugador. También hay cinco tipos de terreno diferentes que otorgan bonificaciones de movimiento diferentes. Quiero que la IA aproveche estas bonificaciones de terreno mientras intentan llegar al jugador.
Me dijeron que revisara el algoritmo de búsqueda A * (http://en.wikipedia.org/wiki/A*_search_algorithm). Estoy haciendo este juego en HTML5 y JavaScript, y encontré una versión en JavaScript: http://www.briangrinstead.com/blog/astar-search-algorithm-in-javascript Estoy tratando de descubrir cómo ajustarlo aunque.
A continuación se presentan mis ideas sobre lo que necesito cambiar. ¿De qué más debo preocuparme?
- Cuando creo un gráfico, necesitaré inicializar la matriz 2D que paso con un recorrido de un mapa que corresponde a los diferentes tipos de terreno.
- en graph.js: la definición "GraphNodeType" debe modificarse para manejar los 5 tipos de terreno. No habrá muros.
- en astar.js: será necesario modificar la puntuación g y h . ¿Cómo debería hacer esto?
- en astar.js: isWall () probablemente debería eliminarse. Mi juego no tiene paredes.
- en astar.js: No estoy seguro de qué es esto. Creo que indica un nodo que no es válido para ser procesado. ¿Pero cuándo sucederá esto?
- En un nivel alto, ¿cómo cambio este algoritmo de "oh, ¿hay un muro allí?" a "¿este terreno me llevará al jugador más rápido que el terreno que me rodea?"
Debido al tiempo, también estoy debatiendo la reutilización de mi algoritmo de Bresenham para los enemigos. Desafortunadamente, los diferentes bonos de movimiento del terreno no serán utilizados por la IA, lo que hará que el juego sea una mierda. : / Realmente me gustaría tener esto en el prototipo, pero no soy desarrollador de oficio ni científico de la computación. :RE
Si conoce algún código que haga lo que estoy buscando, ¡comparta!
Consejos de comprobación de cordura para esto también son apreciados.