Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius- ?) C. l% r3 d0 k1 Z2 p6 Y
/ n3 s* T1 n* a, e% T6 `$ ^
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).* |5 z) ~% E9 T/ a' [; e
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.7 Z0 y& B+ R4 W' _+ J
Основные классы AI:
  • AbstractAI.java
    # W8 U, a+ }+ z, G+ f
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:
      ) L, [+ ^  E: l- B8 N  y
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.7 D0 X2 H' k2 D7 r) R8 _  G
    Пример метода из AbstractAI:
    1 C7 {2 K% A) b$ c* G

# E6 f0 x" R- Q* i  |
! X; G1 s/ I" a- N
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)8 k0 f1 l1 R- V; N
  2.     // Устанавливаем намерение NPC атаковать цель
    8 W8 h( b) h- y. v
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  . O7 J6 {& ^/ r
  4. }6 A6 u) F& |$ c9 Q: h
Скопировать код
    2. AttackableAI.java
+ I/ S% \" W6 r; _+ |$ g/ }8 q# B7 g; p- ~4 w* H
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:$ {6 e5 o. @2 d2 d
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.6 u; t) ^5 t; n, Y$ N4 |7 V
Пример логики атаки NPC:9 p* o% m+ X) G
  1. @Override
    0 L0 P$ H! ]$ j% a" {& J
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    9 e0 b6 b) L" ^8 z1 P
  3.     // Добавляем атакующего в список целей
    9 {$ [) d) u& p1 O
  4.     getActor().addDamageHate(attacker, 0, 1);  
    4 }$ \5 M" e  b% H) D
  5.     // Если NPC не занят другим действием, инициируем атаку
    ; H3 T! _" G. f0 V- {
  6.     if (!getActor().isAttackingNow()) {! _7 }1 [4 N9 X& p, L
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего
    , \+ q' u( A2 Q' {/ o! m$ S0 s
  8.     }0 h) Y% ^! c3 v: y0 p$ h
  9. }: l. h; }2 s/ X2 I
Скопировать код
3. NpcAI.java  K+ E- W) A7 ]7 A! u# U

" r$ L( G1 G3 t% ^) Z
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
    1 }4 C4 l1 H+ F) m4 g
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.3 s% x: K: @5 f- ?/ @% e1 ?- s5 ^
Пример взаимодействия с игроком:9 }, a3 e# @- T; w. P; V
  1. @Override
    4 S# y  n6 R* W: c" E
  2. protected void onEvtThink() {  n: T; c$ V2 V5 y% p
  3.     if (_actor.isNpc()) {8 h5 x! [! q6 r1 O
  4.         // Открываем окно диалога при взаимодействии с NPC
    ) B  d+ {5 ?- ]0 }  v5 o
  5.         _actor.showChatWindow(player);( F" b6 u5 W/ [$ a
  6.     }' P4 `& @/ ?& z  M' t
  7. }- n/ G* U) W* T# `3 [" V& n! F2 H
Скопировать код
Как AI влияет на игровой процесс?2 y' T: d: n! D  a9 l% e: h, G( ^# I
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.6 v1 ~; J5 [3 A) |% y# _2 ]
Примеры использования AI в игре:
/ q4 J; v4 @/ F$ k! B: H& K# O
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
    7 S4 d2 r: |! i% a! Q& u2 H6 `
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.# G& {0 }. I& j# @/ o) L- G* G
, l! {; B' ]$ t7 o5 f2 F
P.S.' m8 C2 F  |6 p
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?- N" k& J+ A' \# y) B* @& L

6 b2 D& d/ _. O: k- t, b) g: t
6 G  {/ n7 T/ J& {7 o3 y* X6 M
Из группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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