игровой ИИ (шутеры) - 2
теперь разовьем классическую модель данную в предыдущем посте (ИИ для шутера)
очевидно что необходимо учитывать разные факторы кроме количества жизни при оценке шанса на победу
собственно предыдущая модель - это сильно редуцированная версия предполагающая по умолчанию что к примеру "оружие" и "позиция" для участников контакта одинаковые
итак оружие
делится на 4 типа:
- ближнего боя (нож, кастет, сабля, бензопила,...) 1-3 метров *
- малого боя (пистолет, пистолет-пулемет, дробовик, ...) 3-20 метров
- среднего боя (автомат, пулемет, гранатомет, ... арбалет, кстати) 20-200 метров
- дальнего боя (скайперки разных видов...) 200-1000 метров и более
*расстояния даются для примера... в вашем игровом мире они могут отличаться
введем поняти "открытости" местности, соответствующее наибольшей эффективности того или иного вида оружия
бой в коридоре - ближний и малый тип оружия - открытость 0
бой на лестничных пролетах - малый - открытость 1
бой между подъездами - средний - открытость 2
между домами - средний и большой - открытость 3
Естественно что дело не ограничивается этими элементами ландшафта :0)
при рисовании карты дизайнер уровня САМОСТОЯТЕЛЬНО расставит маркеры принадлежности конкретного квадрата/хекса к тому или иному типу открытости, руководствуясь выше приведенными числами. (т.е. в редакторе карты требуется ввести эту возможность)
это позволит значительно сэкономить вычислительный ресурс при анализе мобом ситуации - он не анализирует территорию а использует ее аналитический "пререндер", занимающий один байт. :0)
ну и введем фактор анализа ситуации "Эффективность оружия" как соотношение типа оружия и уровня открытости местности
Теперь моб принимая решение о атаке/выжидании/отступлении будет анализировать соотношение своего оружия, типа местности где он находится и типа местности где находится игрок, или иными словами Эффективность оружия Тут и эффекктивность оружия Там (где игрок)
какие есть варианты
(использован простой анализ - моб не знает о нашем оружии, но знает наше местоположение)
1) оружие моба соответствует своей территории и соответствует территории где игрок - нет разницы... т.е. фактор оружие территория не актуален и будут использоваться прочие факторы (т.е. количество жизни и "характер")
2) оружие моба соответствует своей территории, но НЕ соответствует территории игрока - ОЖИДАНИЕ, выманивание мобом игрока на свою территорию
3) оружие моба НЕ соттветствует своей территории, но соответствует территории игрока - АТАКА, с перемещением на территорию игрока
4) оружие моба НЕ соответствует своей территории, и НЕ соответствует территории игрока - ОТСТУПЛЕНИЕ, в сторону ближайшей территории соответсвующей своему типу оружия
ЗАМЕТЬТЕ, что это еще не решение, а только доминирующий фактор - Эффективность оружия
который векторно (т.е. с учетом знака/направления) суммируется с факторами Жизни и Характера
иными словами, моб может выскочить на неподходящую для него территорию, если значимость фактора Жизнь (1% у игрока, 100% у моба) или Характер ("совсем безбашенный камикадзе") будет превышать фактор Эффективности оружия
--------------------
отдельно нужно будет прикрутить мобу такие "мгновенные" модели поведения
• "спрятаться после выстрела"
• "рычание" для выманивания на свою территорию
• сохранение оптимальной дистанции
• ...
очевидно что необходимо учитывать разные факторы кроме количества жизни при оценке шанса на победу
собственно предыдущая модель - это сильно редуцированная версия предполагающая по умолчанию что к примеру "оружие" и "позиция" для участников контакта одинаковые
итак оружие
делится на 4 типа:
- ближнего боя (нож, кастет, сабля, бензопила,...) 1-3 метров *
- малого боя (пистолет, пистолет-пулемет, дробовик, ...) 3-20 метров
- среднего боя (автомат, пулемет, гранатомет, ... арбалет, кстати) 20-200 метров
- дальнего боя (скайперки разных видов...) 200-1000 метров и более
*расстояния даются для примера... в вашем игровом мире они могут отличаться
введем поняти "открытости" местности, соответствующее наибольшей эффективности того или иного вида оружия
бой в коридоре - ближний и малый тип оружия - открытость 0
бой на лестничных пролетах - малый - открытость 1
бой между подъездами - средний - открытость 2
между домами - средний и большой - открытость 3
Естественно что дело не ограничивается этими элементами ландшафта :0)
при рисовании карты дизайнер уровня САМОСТОЯТЕЛЬНО расставит маркеры принадлежности конкретного квадрата/хекса к тому или иному типу открытости, руководствуясь выше приведенными числами. (т.е. в редакторе карты требуется ввести эту возможность)
это позволит значительно сэкономить вычислительный ресурс при анализе мобом ситуации - он не анализирует территорию а использует ее аналитический "пререндер", занимающий один байт. :0)
ну и введем фактор анализа ситуации "Эффективность оружия" как соотношение типа оружия и уровня открытости местности
Теперь моб принимая решение о атаке/выжидании/отступлении будет анализировать соотношение своего оружия, типа местности где он находится и типа местности где находится игрок, или иными словами Эффективность оружия Тут и эффекктивность оружия Там (где игрок)
какие есть варианты
(использован простой анализ - моб не знает о нашем оружии, но знает наше местоположение)
1) оружие моба соответствует своей территории и соответствует территории где игрок - нет разницы... т.е. фактор оружие территория не актуален и будут использоваться прочие факторы (т.е. количество жизни и "характер")
2) оружие моба соответствует своей территории, но НЕ соответствует территории игрока - ОЖИДАНИЕ, выманивание мобом игрока на свою территорию
3) оружие моба НЕ соттветствует своей территории, но соответствует территории игрока - АТАКА, с перемещением на территорию игрока
4) оружие моба НЕ соответствует своей территории, и НЕ соответствует территории игрока - ОТСТУПЛЕНИЕ, в сторону ближайшей территории соответсвующей своему типу оружия
ЗАМЕТЬТЕ, что это еще не решение, а только доминирующий фактор - Эффективность оружия
который векторно (т.е. с учетом знака/направления) суммируется с факторами Жизни и Характера
иными словами, моб может выскочить на неподходящую для него территорию, если значимость фактора Жизнь (1% у игрока, 100% у моба) или Характер ("совсем безбашенный камикадзе") будет превышать фактор Эффективности оружия
--------------------
отдельно нужно будет прикрутить мобу такие "мгновенные" модели поведения
• "спрятаться после выстрела"
• "рычание" для выманивания на свою территорию
• сохранение оптимальной дистанции
• ...
