Эта статья выходит сильно позже выхода крайней версии игры. Основная цель разработки - изучение языка Java - достигнута, даже с избытком. Помимо прокаченных навыков программирования, есть ещё и опыт минимум одного проекта, доведённого до рабочего состояния. Конечно, спустя два года разработки, смотришь на весь этот код и понимаешь, как много в нём наивного, неправильного – но он, блин, работает!
Довольно странно выглядит задержка при повторном поиске пути противником (судя по видео) Между ними пара клеток, путь находится за несколько итераций и это обычно занимает микросекунды. Стоит поверить, правильно ли работает алгоритм, вдруг он сканирует всю карту. Хотя и в этом случае задержка большая.
Скорее всего там сказывается 400 мс. задержка в методе idle() в контроллере моба. Метод вызывается когда моб ожидает игрока (тот, например, не раскрыл ещё карту) или потерял из "поля зрения" - в смысле ушёл с первоначальной позиции. Провёл замеры - там нулевая задержка в обычном поиске и есть сравнительно небольшая в моменты, когда между мобом и игроком есть препятствие. Если очень заморочиться, то можно и бенчмарки написать с полной статистикой скорости. :)
Комментарий недоступен
NPE в целом не надо try-catch-ить, и вместо ignored я бы сейчас помещал итерируемый объект cell в контейнер Optional и производил все манипуляции только, если объект реально там содержится.