Я создаю 2D-игру на основе карт с дизайном, похожим на Diablo II. Другими словами, игрок щелкает по карте, чтобы переместить своего игрока. Я только что закончил движение игрока и перехожу к поиску пути.
В игре враги должны заряжать персонажа игрока. Есть также пять различных типов местности, которые дают разные бонусы движения. Я хочу, чтобы ИИ использовал эти бонусы на местности, когда они пытались добраться до игрока.
Мне сказали проверить алгоритм поиска A * (http://en.wikipedia.org/wiki/A*_search_algorithm). Я делаю эту игру на HTML5 и JavaScript, и нашел версию на JavaScript: http://www.briangrinstead.com/blog/astar-search-algorithm-in-javascript Я пытаюсь выяснить, как настроить ее хоть.
Ниже приведены мои идеи о том, что мне нужно изменить. О чем еще мне нужно беспокоиться?
- Когда я создаю график, мне нужно будет инициализировать переданный мной 2D-массив с обходом карты, соответствующей различным типам местности.
- в graph.js: определение «GraphNodeType» необходимо изменить для обработки 5 типов местности. Там не будет стен.
- в astar.js: оценку g и h нужно будет изменить. Как мне это сделать?
- в astar.js: isWall (), вероятно, следует удалить. У моей игры нет стен.
- в astar.js: я не уверен, что это такое. Я думаю, что это указывает на узел, который недопустим для обработки. Когда же это произойдет?
- На высоком уровне, как я могу изменить этот алгоритм с "о, там стена?" на "эта местность приведет меня к игроку быстрее, чем местность вокруг меня?"
Из-за времени я также обсуждаю повторное использование моего алгоритма Брезенхэма для врагов. К сожалению, ИИ не будет использовать различные бонусы за движение по местности, что сделает игру отстойной. : / Я бы очень хотел иметь это для прототипа, но я не разработчик по профессии, и я не ученый. : D
Если вы знаете какой-либо код, который делает то, что я ищу, пожалуйста, поделитесь!
Советы по проверке работоспособности также приветствуются.