Роль AI в сборке L2J_Mobius7 ~; H& T9 k$ H: s% P! _" V, }( Y
' @; W; ]2 p# B% H8 N8 y1 @В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
; N- d% ]! T; r+ w6 W. LВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях./ E% Z& ]) n9 J+ p. J+ ^" x8 F
Основные классы AI:- AbstractAI.java
: n, z6 f1 ?2 y4 G8 z5 L- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:
( W& H4 M5 A* ]. ?- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.- Q. p1 M9 W7 F" R2 Q* Z) a
Пример метода из AbstractAI:
. }7 d* C5 [3 ^7 L, E ( `3 |! L9 B( _4 o/ ~2 y
0 V8 ]6 x, f' y; a7 W! G# g- v
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)2 f8 O8 U3 V, b6 Y3 O
- // Устанавливаем намерение NPC атаковать цель
% S5 d( L' ?& {# V- J - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
. Q) y, W0 s# p/ t' Z# i - }
. P' y( K; V/ s! W" Y$ U
Скопировать код 2. AttackableAI.java/ ~( T$ U! n- d x$ e
# z3 ` I% p/ w+ u: x! q
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:3 `' x- z9 _$ d, C9 _# r1 [
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.; H* l4 k4 p' b0 i* x
Пример логики атаки NPC:, P7 d, G+ z( |: ?
- @Override
- `9 P# r. j+ w+ Z - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
4 `2 s2 O: _2 U9 _$ W- j% J - // Добавляем атакующего в список целей
! M( h8 ?% r! J, x# ?; [2 s - getActor().addDamageHate(attacker, 0, 1); 5 K- }0 E0 e, K- k: j' @
- // Если NPC не занят другим действием, инициируем атаку; x- [9 N) e& f' X
- if (!getActor().isAttackingNow()) {
: E: S1 r0 C1 Y4 ?. R. J - onIntentionAttack(attacker); // Нападаем на атакующего7 |. m! k' G& S0 K4 v' _! D. |
- }
6 v$ K/ A" |& C/ Y' F# j3 ~8 O - }& E1 x6 c( a, p7 Q- X; Q, v1 b" s
Скопировать код 3. NpcAI.java' h3 S @% o! G) D' s A. j
6 [3 h" @! N6 U- v
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
8 ^' |4 T1 I0 z- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.' K( P9 b4 a" v/ L
Пример взаимодействия с игроком:
5 Y4 ?8 t6 u. G% P- @Override# `) b" a+ O, z3 y& ^) _0 A7 `# N# f
- protected void onEvtThink() {
. z! z) P0 J; w5 b) b - if (_actor.isNpc()) { o1 b, ]* y7 Z" c) L
- // Открываем окно диалога при взаимодействии с NPC
- y6 K# i8 V/ L& |4 k0 J! J- W - _actor.showChatWindow(player);: l% I1 e& L q; Q
- }8 z, f- W: n) T
- }
+ J5 I" V% m$ c- J1 O. L
Скопировать код Как AI влияет на игровой процесс?. E+ c; M# K1 Q m+ t- \
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
5 x/ r# k3 E) A, [) \7 @2 T4 ~ Примеры использования AI в игре:
; j! l* W% \; U' F0 g F- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
( b F* ]$ ?$ j Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
: B& [3 \5 \. z
, H6 }( K6 ]% m3 S- k' `P.S.; M7 @$ V) {3 U6 j; @% x
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
& c l0 ^3 ~! o( g* c1 M I$ ], H6 ~2 y- q. |0 w j
@; V% a6 D$ O$ e8 m
* {+ c. m+ d/ g5 i! w; E0 r N6 f! w
Из группы: Lineage 2 |
|