Top.Mail.Ru

[Руководство по Java для L2J] Роль AI в L2J_Mobius

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius) m3 D+ N7 u; B1 R6 u6 H; x8 d

; x: O* H' a9 Y+ \7 pВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
& ?! ~# f" x* LВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
- w% Q7 {' e- Z' S9 a1 O3 _( vОсновные классы AI:
  • AbstractAI.java
    & h" P. c0 m. ~4 {6 j9 x
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:
        z2 v$ X7 y& k: P: J% t
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.
        ( P0 v, u1 }( B
    Пример метода из AbstractAI:
    ( q: ^: V, S# b% T

8 I2 C/ \6 H+ H2 N( m! a
7 f  c" o6 b5 J
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)
    0 N  j1 L) v5 E% \1 X! [+ s4 w6 H
  2.     // Устанавливаем намерение NPC атаковать цель% @+ A  L" a' ]) R  H
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    & D- e1 T. H. {5 F9 r7 b
  4. }
    8 `* F, R9 ^6 @5 Y. Q$ V- ?
Скопировать код
    2. AttackableAI.java
. r0 h3 S  E, ?7 ^  `
0 L. Z% U/ @0 e6 K4 H
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:( w: u! _+ w9 m# b' @& |
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      # G1 D8 J% [8 c
Пример логики атаки NPC:
" ^" L, p/ J8 D/ \
  1. @Override
    , d9 ^! w4 W2 {! Q
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    ; j% w$ g3 m/ c$ r- ]
  3.     // Добавляем атакующего в список целей
    1 g- }1 _% @9 G- B) }( k) a6 N4 G; Y
  4.     getActor().addDamageHate(attacker, 0, 1);  
    $ d% ^6 j( o8 C8 X/ c) _
  5.     // Если NPC не занят другим действием, инициируем атаку
    , y( y7 ^" L( y
  6.     if (!getActor().isAttackingNow()) {6 V6 M1 B6 h5 t0 U
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего. k- N' ?; c5 b+ N
  8.     }! N$ n/ `* P* W
  9. }% W% w( S' Q1 c& J% @6 U9 k. }8 [
Скопировать код
3. NpcAI.java2 Q1 P2 {: t2 ~, ^! m
5 U6 p9 m& t: k% v5 P+ a
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
    & V: a3 p! u9 r* c5 K
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.$ ]! P7 k  l  z, a* t& @7 g
Пример взаимодействия с игроком:
! d) }; [0 A! |* N
  1. @Override, X$ |, ?0 l, A; }; h$ ?) H
  2. protected void onEvtThink() {
    0 K( b( t4 h7 g- A4 M; c
  3.     if (_actor.isNpc()) {$ |( _5 @) [8 ?5 u9 V6 J
  4.         // Открываем окно диалога при взаимодействии с NPC
    ) m3 z8 O, Q. S$ Q4 ^. D
  5.         _actor.showChatWindow(player);1 Q' E* W2 W( b3 A
  6.     }5 V( C. Y- u+ e1 ^% M4 d
  7. }4 ~) Q! y; i/ m- M- f
Скопировать код
Как AI влияет на игровой процесс?
- L3 I! f- g; i1 f
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
    $ |  |8 _& b0 X9 R& ?! p6 W" Z
Примеры использования AI в игре:
. s% [/ t4 a1 Z& M, A8 T
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
    # n/ Q9 Y) U3 b- e% C  h, q/ K
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
" O- H) a& s; P) ?
: Y: f: F; @7 h% qP.S.
* s! `# t) {  {3 Z7 N8 GКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
) a8 e3 E' V5 `8 m
: O! K7 Y$ `. f' \5 i8 ?5 n. ?% y! x
7 f! u4 Q7 C6 j+ V
Из группы: Lineage 2

Сообщение слишком большое

Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться

x
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

Правил начисления баллов

Опубликовать
Сектор творческих людей
Горячая линия

638638758

С понедельника по воскресенье с 9:00 до 23:00

Обратной связь

admin@artace.ru Онлайн

QR-код

Powered by Discuz! X3.5© 2001-2021 Comsenz Inc.