Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius
8 f0 I0 @, F9 o# i3 d
) G4 G  g* r0 _- h7 @$ ]0 JВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).- Z- I8 p- U  e# p
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.9 Y! a5 G4 [6 A2 B
Основные классы AI:
  • AbstractAI.java
    4 y  f/ k8 M( C+ u+ v' Q
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:: |7 A6 J/ f4 _( {5 Y
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.' N1 a: {4 u# r2 g9 G) R" _( l
    Пример метода из AbstractAI:1 K( G$ I* S4 j8 n% t9 k7 x

' f- L+ c- f; m3 c# r9 @
9 v4 x7 a% |( ]5 m6 _7 W
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)% e' M9 ?# b6 ?* w5 [* ~& O
  2.     // Устанавливаем намерение NPC атаковать цель
    6 s$ i: Y0 m* H- m
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    9 y; k5 i6 p& W9 n0 c( C* j
  4. }
    2 f3 Q& U5 g0 f, M$ l8 m7 m
Скопировать код
    2. AttackableAI.java: X; N) i+ c/ D1 }. U$ D
. h- R  @# r5 @8 c6 s8 u* l
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:
    ) e' m* o3 B& O! x
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      3 d( S7 p# t1 B2 e
Пример логики атаки NPC:4 N+ H, h9 G1 r! p, Y' z) N* m
  1. @Override2 N1 r( I- J: I/ W; u
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    , j% j1 f9 p- W' `
  3.     // Добавляем атакующего в список целей( }  X" f# _/ p( @& p# k+ o
  4.     getActor().addDamageHate(attacker, 0, 1);  ' H2 c" O8 A* p3 [
  5.     // Если NPC не занят другим действием, инициируем атаку
    3 ]( ]6 r% G  ]1 H3 _" M
  6.     if (!getActor().isAttackingNow()) {
    % ]/ g3 z+ d+ s6 }
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего" @/ n1 u* [; Z# C4 ?0 L
  8.     }$ v- o6 r' d  i( y! x5 h
  9. }# {/ z6 t: F" n3 m
Скопировать код
3. NpcAI.java
3 o0 F( W1 }/ U$ A- z2 P9 x) k( a! A% J1 }- U6 Y3 T& Y5 }
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:5 O5 {7 R' w: o* p! Z
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.
      $ [- E7 G6 U- C4 v. \3 f3 h- F" S
Пример взаимодействия с игроком:0 }9 f% f; [6 \6 y( r5 b
  1. @Override% e: x5 L& m# x6 k2 R% a; ~
  2. protected void onEvtThink() {
    7 ]! E. z1 f0 b( f. A
  3.     if (_actor.isNpc()) {; W/ b; B' p4 L; Z& U( n
  4.         // Открываем окно диалога при взаимодействии с NPC& S/ S" _/ _+ j" S
  5.         _actor.showChatWindow(player);, ~3 X! h3 h# y  @4 }
  6.     }/ N6 ~1 N: y9 ?5 n1 y9 n
  7. }! a& g9 P( L! V+ k3 F/ M1 Z$ j+ I
Скопировать код
Как AI влияет на игровой процесс?; y9 j5 d' R8 R
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.' B+ Z  U9 F3 x! e
Примеры использования AI в игре:
% h9 k( r1 R) h) _
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
    ! Z8 l% O" q/ n) H. X
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.4 |* a1 o; e, a, g6 ~

" i' y2 `/ K- m8 Y! ^/ T1 R2 i5 lP.S.
6 h1 y) k- `  ]8 Q6 `Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? 😄' Q5 ^# o& @5 f

$ o- c  h% _$ m. o
# d4 b2 a* n3 R9 d) Q' |; {* H* C- Y8 v8 X- D
Из группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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