Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius# _5 p! k2 X6 x# k( G  J! T
* C4 b3 k- j, |  P
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
. j% B9 F/ a4 iВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.5 z  W5 ]& M; h3 D, s7 x- _. _
Основные классы AI:
  • AbstractAI.java
    1 x# X0 z6 F: l6 A( p+ c  G' V
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:
      * \0 m- g/ ?. t3 m, _7 g  q1 G
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.; O0 m" M" U) z6 T! x) _
    Пример метода из AbstractAI:
    2 e  a1 B; m% j1 V; f
: u1 h' K& i) N9 \+ P( ]
  M; S4 O& N1 o7 n- p; K+ a; c
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)
    2 f' q7 Q* q- E
  2.     // Устанавливаем намерение NPC атаковать цель
    ( u# U" p, O' f+ q7 E
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  8 p6 g* ^2 _8 g. `- w
  4. }
    + h; [* l, I6 i' l8 z
Скопировать код
    2. AttackableAI.java! K- C3 ~$ t2 O( N4 s
0 Y" I! k3 r9 H5 y
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:
    * V1 p, g# U' f, T9 h
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      7 Q5 F3 Z" A/ c4 E3 ^: Q' D2 a' j
Пример логики атаки NPC:
- i3 ^% E  w! p1 m" P1 i$ f
  1. @Override
    : d" P9 i: {6 P) S
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    ! {/ R5 o  g0 R9 B  s' t1 G
  3.     // Добавляем атакующего в список целей7 }) y: s$ v9 b# s9 O% j7 R2 }
  4.     getActor().addDamageHate(attacker, 0, 1);  5 c) j  |% l% B2 M/ U5 I2 C
  5.     // Если NPC не занят другим действием, инициируем атаку
    ! H; ?. B8 Q0 G, P1 @; V. ]5 ~
  6.     if (!getActor().isAttackingNow()) {- B% X; b& o' Q9 n" j+ y5 y6 A5 H
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего8 y: t. R/ _1 a. @* r1 g( \
  8.     }9 _1 V1 e8 M! P* t( e' m0 K" R
  9. }4 X' f# M9 \2 z1 F$ l
Скопировать код
3. NpcAI.java' Q$ E4 W' E* c; R$ h, Y( s& L! ]% m

- F) h8 b9 D  w' O
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:) j' C4 T. }" A" u
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.6 G7 P1 A# E. X* M% h; r
Пример взаимодействия с игроком:
/ O& W4 I5 x" q; r$ |) @
  1. @Override
    6 @0 w1 R7 \$ S! X1 k9 K1 J
  2. protected void onEvtThink() {
    ) w$ w  d1 L; m* K7 [! L1 H) B
  3.     if (_actor.isNpc()) {
    7 B& E* i! O1 _& `8 L
  4.         // Открываем окно диалога при взаимодействии с NPC# @0 r) @  S- n8 t* @
  5.         _actor.showChatWindow(player);
    & P% J- G4 h! a& m
  6.     }* @/ e5 E7 y4 m
  7. }
    0 K: m" ^/ N( i8 Q2 e6 r9 o
Скопировать код
Как AI влияет на игровой процесс?
  z" ~' e3 c( b% y$ u/ m- O
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
    8 }/ V. `" z& k' [4 Z( ^
Примеры использования AI в игре:( L( E7 p* j; Y' P1 z, P
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
    5 _$ B) u8 \3 t- ?# {) v2 W
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
- m# x& e; P) z- y5 B& a  r  R3 ~/ F  N* O
P.S.
9 y$ ~) {) u  O; W2 q) PКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?( `. i3 W% E$ F

0 E* L! N7 v' n9 _, Z- p1 N: |/ b

" K8 d) b  `  s' B! O  r2 w/ j7 ?, kИз группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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