Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius
- G1 L6 j) @: @, w- r2 P, x% ?6 ~' X: Z1 }" S$ Q6 x1 N
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).: I- o1 t  W0 z: @
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.* s# |% @1 J4 H6 G! r& x: U
Основные классы AI:
  • AbstractAI.java# L' X. A$ H' {- W8 ]: R, z
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:3 {# K- d! e* R
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.* `0 z. `  c+ K' g0 `7 |& h) p
    Пример метода из AbstractAI:2 z7 h9 l9 ^2 f! D8 f

9 X. c- G" M, W/ G1 L6 F2 ?8 ?- }/ b$ R. A9 \
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)
    4 F4 i: O% f/ J' u
  2.     // Устанавливаем намерение NPC атаковать цель
    . M0 y9 n/ w0 ?: [) M6 K3 S1 O7 f2 g1 N) s
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    1 a# ?* R- C( }
  4. }
    * g5 g/ u2 d, O) t( G: B: w* x$ X# N
Скопировать код
    2. AttackableAI.java- @1 Z" C( @% Z1 O( n1 M

9 y9 m0 K: K5 q6 C& L5 O# P
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:
    . \5 G* ^2 G4 f) R: R4 h
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      8 Y. M4 z2 B: v' T
Пример логики атаки NPC:& C8 X8 Z7 Z4 X
  1. @Override
    9 E. B5 `9 i/ x1 u
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    5 i9 q( r' I* K
  3.     // Добавляем атакующего в список целей
      D6 z2 X- M% E  ~
  4.     getActor().addDamageHate(attacker, 0, 1);  ' j- z3 Z2 q7 C+ u* K* a
  5.     // Если NPC не занят другим действием, инициируем атаку
    / V: g, l' x: O* n1 S
  6.     if (!getActor().isAttackingNow()) {0 Q0 A! A! v6 Y; h+ y! X3 r( n' m
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего
    4 B: s+ z7 M( D
  8.     }' G  v3 j  ~7 d  f1 e! |
  9. }. _+ G3 d) F8 I( t- Z3 M
Скопировать код
3. NpcAI.java
1 L7 U6 |/ k- R+ P' d$ V7 k% S5 F) p6 W9 N
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
    5 x% e, ]6 `5 Z1 C, w$ Y
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов./ q" o! E% x& {: K4 S$ [; C
Пример взаимодействия с игроком:
- ?* i; |, i: ?- x' k% ?
  1. @Override: t5 `3 V4 o$ j- M" z( z/ j, q& v$ m
  2. protected void onEvtThink() {0 B# z- q8 E  m7 [
  3.     if (_actor.isNpc()) {- o1 f3 c2 X) V
  4.         // Открываем окно диалога при взаимодействии с NPC
    ' q5 v% H) L0 Z% g* j( H
  5.         _actor.showChatWindow(player);, k& `7 j2 r) ?/ T# o6 l
  6.     }$ O: g# A4 p: i2 |6 E, E
  7. }. n. N7 q; v' t+ W( B
Скопировать код
Как AI влияет на игровой процесс?# S; U) r( l  f4 S% I0 T6 q
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.5 c# [1 q, n- J/ M9 l9 i% U
Примеры использования AI в игре:3 v- w$ V& c# x' |* P
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
    0 u) m6 W, v# l
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
5 S& @; h% K" V; p5 s  {/ L$ @* E/ o8 r
P.S.
0 C+ h# `/ s" f1 c5 V: vКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?2 {! @& i  C5 p3 O: a2 u& [- b

8 q/ {9 Q+ K9 ?! o- C% K( Q# ^1 c  j: Z" B# C3 I

! C% f3 `2 F7 M2 O# zИз группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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