Просто не могу придумать, как лучше всего большой мир показать. У глобальной карты свои недостатки, у полностью бесшовного мира - свои.
-----
Сделал A*. Почему то он раньше он казался мне чем-то запутанным и сравнимым с FOV На самом деле, оказывается, очень простой алгоритм.
Правда реализовал его неоптимально - не учел, что список должен быть сортированный, поэтому сортирую его на каждом шаге. Ну, если будут тормоза придется исправлять.
Слегка поменял АИ - теперь он сделан в стиле "fuzzy-logic" - есть входные переменные, есть выходные действия, есть таблица правил (и все это хранится в файле данных). Разве что всякую фаззификацию\дефаззификацию не делаю, просто беру первое подходящее действию с максимальным весом.
Правда любая система АИ бесполезна, если нет наполнения, т.е. конкретных действия и правил. А их у меня пока нет и все сводится к нападению на игрока и убеганию при низких хп.
Код: Выделить всё
[StdMonsterAI]
Class=TStimulAI
Rule1=condLowHealth:stEscape:30
Rule2=condHaveTarget:stAttack:20
Rule3=condHaveTarget:stFollow:10
Rule4=condNoTarget:stAggr:100
Rule5=condHaveTarget:stForgetTarget:100
Rule6=condNoTarget:stSeekSame:20
Rule7=condAlways:stRandomGo:1