Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius
2 P" x  b* e" ], ?
& a  K! ]( P$ r2 ^; P" i% e9 u2 E! {В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).( y/ M. V- G6 o2 [0 X$ |! J
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.1 G+ E/ @, Z3 B- X
Основные классы AI:
  • AbstractAI.java$ d% s+ J" a4 ?+ }$ I! Q( p
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:8 e" u: @) r) F
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.6 N2 N$ P4 z$ b% b: H: Z+ e/ K& G
    Пример метода из AbstractAI:
    4 ^3 B3 m4 T2 l9 |( @$ D

4 C" W- d; A2 O0 i% P9 M
0 g& e0 p3 r1 w
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)
    " \8 x4 F; ^9 D: P8 r: q% `
  2.     // Устанавливаем намерение NPC атаковать цель% t( z, Y' F$ R) [4 l% }5 E
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  # @# m$ I: B6 K+ T7 L0 E3 Y
  4. }
    ) F- o9 w  F# m# ~0 h# t/ C
Скопировать код
    2. AttackableAI.java
- ^. `, B9 V  R5 d$ }5 k5 `9 J# S$ j( H+ I0 _& v# @# m/ P
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:9 d( k. S" U! J; a4 F* o1 I, \
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      , `8 h  |+ @/ s( T$ a
Пример логики атаки NPC:
# o* ?* g$ `! W- a% z+ c
  1. @Override
    . m* h3 m" @' B1 }
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    1 P& v$ h/ C* z- |
  3.     // Добавляем атакующего в список целей7 h$ s- y7 ?# _! ?# A; N
  4.     getActor().addDamageHate(attacker, 0, 1);  
    3 [4 b) n4 L1 {
  5.     // Если NPC не занят другим действием, инициируем атаку
    * x, K) v; R  o
  6.     if (!getActor().isAttackingNow()) {
    * Q% I# F; G) `& Q' J3 V/ U
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего
    ! J' e7 v! P4 T
  8.     }3 z# L0 B% u) k" l5 t
  9. }6 j4 b( v1 K. d6 X, D
Скопировать код
3. NpcAI.java# `% q) o7 h. t) P' O
6 S* r4 N5 E  \/ L
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:6 j6 F, L' _- d, S: C$ N
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.1 W/ m, Q8 g" A* }: Z
Пример взаимодействия с игроком:
9 [5 }8 R- b# G- U6 t7 g( r
  1. @Override% Z9 y! [% B$ N
  2. protected void onEvtThink() {
    " K& a2 f: D! a8 z8 j( P
  3.     if (_actor.isNpc()) {6 j# k6 e  o. U: l# ?
  4.         // Открываем окно диалога при взаимодействии с NPC+ d1 H! f0 G. l+ Q, e% b/ Z2 }
  5.         _actor.showChatWindow(player);; ]. ]; r4 `! u* x
  6.     }
    8 ~9 I# K5 K, w
  7. }) m* e  b0 ?, M* _% \# n8 t
Скопировать код
Как AI влияет на игровой процесс?
* D" \( ~8 H! H5 ~. t( Y3 ]# q
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
    : _" p/ E. A# k' \  i4 L1 L4 a
Примеры использования AI в игре:
  Y3 @4 b* z4 _
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.$ n* ^; n: [# `: B2 P
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.% @0 X4 ~$ u  R7 Q" c

$ d* l. W/ y: p) @P.S.
; o0 G% s" z7 J( Z7 l4 O* g5 [Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
! f9 d# |0 Z  i
( x# t. z2 Z* T% Y  ?
' E( L6 M6 a4 E: z% s
+ v: s" x5 M, G6 eИз группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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