Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius
! X, d- q) l1 \* T6 t7 _
& b: U( `3 e# ]8 |* d; ~, {3 b7 V/ mВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
  L; G; o8 b8 A' R; ~) K7 Q/ EВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.: q$ j1 z( ]5 ^8 V0 l1 {, D& l% X
Основные классы AI:
  • AbstractAI.java
    6 Y# L% w" {( H% B' g
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:% C1 b' W2 e2 Q2 |; {
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.
        0 B7 c( f  B: _0 [  Z
    Пример метода из AbstractAI:
    " r2 ^0 ?" y. ~4 a* g: _& h) H

- s3 a: t$ S$ S/ W% s) E# S# O# I+ n2 F: g
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)
    - k5 G1 X3 |6 c% s/ O
  2.     // Устанавливаем намерение NPC атаковать цель
    8 _" \7 R& s! ]1 A. `2 o
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    & _* w6 r4 g& j
  4. }2 }+ \/ M* X: F# Y
Скопировать код
    2. AttackableAI.java% D6 X6 i% K: T% G& m% a& M
0 K" N2 ]9 l. j
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:0 A1 t5 d0 R, s5 w8 G: a
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.8 f& v$ E1 l3 y4 S2 l8 s" I1 ~, o/ B
Пример логики атаки NPC:
, I3 t0 A$ X( a! T9 P+ @
  1. @Override, I6 `- `+ a0 S8 _2 n
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    7 |1 n0 T- T5 m3 V; h+ n
  3.     // Добавляем атакующего в список целей3 e& R# c% E! [& e7 [
  4.     getActor().addDamageHate(attacker, 0, 1);  
    6 V8 |; p/ _( L! r5 ?
  5.     // Если NPC не занят другим действием, инициируем атаку
    2 c, L2 n" g6 o' d" d4 h( M2 d5 P
  6.     if (!getActor().isAttackingNow()) {
    ' v* t  `. e7 A4 E. S. K- x
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего, r' \8 Y) R% i) L
  8.     }
    ) S/ g" I$ ~) X" m$ O
  9. }
    + R( R- i0 a5 T# k+ t
Скопировать код
3. NpcAI.java
  T& W: C( f- a' s8 ?) i8 r; m! M( r1 X* n. f) }" I- }6 I6 Y& Q5 U
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
    % ]; ?& `1 J1 U. V
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов., i' r5 _& ]* M0 |! x$ W
Пример взаимодействия с игроком:  [2 X5 J; ~" }7 M
  1. @Override% v: i4 C% A$ f4 r5 ?$ M( _
  2. protected void onEvtThink() {* {6 @1 H3 E; {) ?  `7 Q( h2 k
  3.     if (_actor.isNpc()) {3 I' H5 K6 O0 c) Y
  4.         // Открываем окно диалога при взаимодействии с NPC0 s$ K+ N4 O& w4 p+ e: @
  5.         _actor.showChatWindow(player);
    * @4 y( X* H6 }2 m- K
  6.     }: o* _( e$ j1 h
  7. }
    9 n% X( N: L# f1 O6 _
Скопировать код
Как AI влияет на игровой процесс?
! y. T, f( P) I$ |* N4 U) k+ [; ]
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
    4 ?/ L( X3 L8 {3 n
Примеры использования AI в игре:
0 ^5 r  G+ Z+ k' u' F' P
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
    % F: e: q1 t! @7 j! R7 ]5 C3 L
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
/ c7 p7 H/ O* e+ z& o9 p; d
% N1 p2 ]0 p/ y2 l! hP.S.
. o* b+ V, H8 k+ E. Y$ y- B, YКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?0 N" e  P3 }" F- r- g' E

+ D, @& W% H" L$ M8 N$ y& x; Y& m! h3 J( W( \  m5 f  s/ L/ ~

& V: L' k. o% Q6 M' uИз группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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