Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius/ e: X0 g2 ]- X9 }

2 Q/ O' J6 @, \/ W  e; xВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект)./ x* @  q. |% T: j
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
. o4 w! U  w1 W5 TОсновные классы AI:
  • AbstractAI.java5 T* i2 B3 {! S, B; v
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:
      1 n2 k2 B0 a' |0 u2 A) D+ s
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.5 s% s* Q, @4 k+ N
    Пример метода из AbstractAI:! e! f8 Y  F7 s8 s
' g2 d+ q( \' }5 t1 Y: d

$ @1 |/ R2 R* K# \: {* K; F
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель); V8 J& L1 I" B. o4 L. {0 E/ R7 _- n
  2.     // Устанавливаем намерение NPC атаковать цель& t. b/ N8 f( x! q' M$ r
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    * ~: w, G0 D- D/ `( \6 y% g  \: H* f
  4. }
    5 ^6 q! g/ t$ Y
Скопировать код
    2. AttackableAI.java& p; C" G( n! N, ~' ]& r' U
" x& U: \4 A1 O+ T
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:* D  k* @$ A2 m9 d) n8 W
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.0 b4 k5 ~/ a& \$ |( o. q
Пример логики атаки NPC:
2 N, J  F( L, g, h: r
  1. @Override
    . e" ?) T- X1 h, A
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    ; }, k# K/ _% J' N) H& h
  3.     // Добавляем атакующего в список целей
    + h; U& H# K; `9 n& Z  s
  4.     getActor().addDamageHate(attacker, 0, 1);  4 @# w" }' J$ _3 R3 n
  5.     // Если NPC не занят другим действием, инициируем атаку
    $ d+ v- M0 e) Q1 j* A
  6.     if (!getActor().isAttackingNow()) {; _) N6 f5 g! M2 e2 b
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего
    - D8 g3 V: r, V3 ?4 s$ j
  8.     }) _& P9 a- G9 D8 `* J1 ?
  9. }) W. `1 e+ v) D6 G: }6 M
Скопировать код
3. NpcAI.java
# _, g1 B( O) N7 l! a& e4 C! l$ {- ~2 l+ m4 K
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
    ! I# }" p; W! p' w) K+ P( M
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.' ^" f% [9 J% E7 j! b
Пример взаимодействия с игроком:
* v0 {3 v. Y! w, @: H& L7 w
  1. @Override
    , \7 x$ P5 B( _2 t
  2. protected void onEvtThink() {
    6 Z6 h* r; \6 M
  3.     if (_actor.isNpc()) {$ ~1 m" z9 d8 ]$ d
  4.         // Открываем окно диалога при взаимодействии с NPC
    + ]) ?5 |- h+ X$ V+ O, |( g$ V
  5.         _actor.showChatWindow(player);" T0 Q# i$ Y" P* H
  6.     }- _7 D8 s5 k. f, M2 A& R; P
  7. }
    ; D5 V* l0 X4 U1 o" O$ A, Z1 [2 t( ?
Скопировать код
Как AI влияет на игровой процесс?
2 t: l" H0 N6 q6 U2 O  P, X
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.& c' \! O1 v1 q+ U$ v
Примеры использования AI в игре:0 I6 `4 a+ c' n0 P
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
    ! v2 g: ]+ s( V) z9 S, }: C* K- L
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.$ p7 n& o6 ^8 v/ V
4 z1 b0 q3 C% `+ b6 U
P.S.
( S8 l6 q1 z* h9 SКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?( ~. a: v  G5 h9 R5 ]& b4 x# q" ~9 E0 Y

! X& P! O7 K+ A* z9 v3 r+ G1 Z; O3 {6 b) s( `. d" y- E8 X
) W0 u8 ]# O" `  u5 U  \( A. t& z
Из группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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