Суда по тексту, похожий подход описан в книге «Programming Game AI by Example» от Matt Buckland, там для топ-даун шутера использовалась нечеткая логика в принятии решений для выбора следующей цели, и интересный паттерн организации целей. Советую посмотреть, если занимаетесь этим и еще не смотрели.
Вижу у вас в игре есть реплей функция. Скажите пожалуйста как вы организовали запись всего что происходит в игре на экране чтобы потом показать реплей?
Это итак понятно, а каким образом вы сохраняли состояние мира каждую секунду? Неужели у каждого объекта для каждой долисекунды хранились где-то его координаты?
Так во многих играх и реализована запись демо. Например Call of Duty 4: MW — там в демо записывается весь «интернет-трафик» (около четырех килобайт в секунду) игры, а потом воспроизводится (эмулируется).
Оу, ёжики в quake! Помнится занимался написанием аналогичных ботов для другой похожей игры — Need For Kill (и далее для своей TFK). Искали путь по адаптированному для side-шутера A*, имели приоритеты по поиску предметов (отжирались), стреляли ракетницей «наперёд» и уворачивались от вражеских ракет. Весёлое было время )
Хотел опубликовать перевод о создании мач-3 на флэш, но кармы маловато для профильного топика.
А вообще, с удовольствием читаю все статьи о геймдеве. Их всегда не хватает.
Пользуясь случаем — уже готов отчет/постмортем по моей игре, обсуждение которой случайно нашел на хабре в теме о Playbook, но не могу опубликовать ее вообще нигде.
Также была в планах статья о Sweep And Prune и Separating Axis Theorem для обнаружения столкновений в игре (широкая/узкая фаза), но из-за облома с первой статьей пока писать не стал.
Слушайте, возможно задам глупый вопрос (не самый я продвинутый человек в этой теме), но прям «чешется спросить»… А зачем при каждом старте карты просчитывать время достижения точек? Ведь по-сути оно не меняется раз от раза. Соответственно можно было бы либо при создании карты это делать (всяко же поди себе редактор какой наваяли), либо при самом первом запуске (а потом хранить каким-нибудь ресурсом). Нет?!
Ну во первых чтоб не хранить. Для хранения и записи в файл, его считывание и проверка — дополнительный код на которы надо тратитть время. Во вторых если можно что то вычислить и это не будет очень долго — лучше вычислить. Если например проапдейтить игру и изменить немного параметры скорости при наличии подобных ресурсов где уже все посчитанное хранится придется проверять к какой версии игры они относятся и все вытекающие из этого проблемы.
Об опыте написания AI к простенькому 2D шутеру