Роль AI в сборке L2J_Mobius
' x k( A" Q- M% b+ @* ?/ `, u( J
1 W& L' l2 [+ Z! a3 eВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект)./ P) Z3 W5 Y3 e6 G5 ?
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях. g0 ]* ?& G( _5 ^! ^7 {$ G
Основные классы AI:- AbstractAI.java
" n" _0 b* u/ H: c; q$ i. W5 E- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:
! C* x- ~5 g( T+ P/ w3 }* Y- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
$ n1 Y- n" O; \ }
Пример метода из AbstractAI:8 I, {% ?1 I( r; y7 I
( z% y9 j3 V: R1 D( Z, t* Y" _# O. x ^3 g; ~) c
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)
+ Y2 B, n1 ?0 e0 [4 l( \# l% q - // Устанавливаем намерение NPC атаковать цель
" ?8 w" @7 C. u. P" H - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
0 _6 T" L7 F, M% c/ \( K - }: u/ W& R/ `6 h( d4 t3 }
Скопировать код 2. AttackableAI.java( ]+ B M4 U* b3 I& u2 i0 n9 |
4 f* ~; B! {7 f8 b+ ?" m; ]
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
8 y: M, r Q6 ]5 [' [. ] X) ]- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
) w% ~2 Q4 f6 c( }4 i7 `: l# b/ W
Пример логики атаки NPC:4 W$ M2 A3 q/ ?
- @Override, ^& t0 t: n0 o* |& X7 f
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)7 Q1 N2 }; E. k( K
- // Добавляем атакующего в список целей
6 U# a& ?/ x0 N( B g7 j - getActor().addDamageHate(attacker, 0, 1); 3 L5 _3 Y* W. Z" H; l1 t; [# w
- // Если NPC не занят другим действием, инициируем атаку
& G- s3 n% C; y' W2 ^! W [( l1 l - if (!getActor().isAttackingNow()) {
0 u* U( P A7 M$ f3 l$ T8 k, Y - onIntentionAttack(attacker); // Нападаем на атакующего
9 ?$ p( s8 n. u5 B" I" r - }
( U+ E7 h" i2 n+ W; D% U! n - }
# \, i) ]7 L4 a U* Z
Скопировать код 3. NpcAI.java
; p1 h7 l' Z; t: o
5 s7 U+ F9 t) d' s/ _- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
1 P: ?5 l( l2 j1 F& Q. {/ C- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.. Y" D/ R1 X8 H) X9 W1 A8 x
Пример взаимодействия с игроком:: F/ D! M4 a' N) J
- @Override5 E! A$ m& G; m
- protected void onEvtThink() {; q- D7 S: n2 C" s1 M$ j6 p
- if (_actor.isNpc()) {
1 H8 m: m4 c- r7 {+ I* Q+ M; X - // Открываем окно диалога при взаимодействии с NPC
8 l9 G6 ~) n/ I, U W - _actor.showChatWindow(player);1 o6 m: [+ g" o! B* G. A
- }% V. d0 i; }# R2 Y- d) e
- }% x" x& q( @& p7 {- l; B6 S
Скопировать код Как AI влияет на игровой процесс?
2 b6 w& P$ ]* u$ N: P- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.) D3 |/ a. }# {8 H' U" }% M p
Примеры использования AI в игре:; t; V, L K! P* e4 _
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.3 n5 J# U- Y5 f4 ]# ^8 M4 P
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.6 }# {- D3 w* X0 [8 ^6 y: M
7 w0 R1 D. ]. `- N: w* k
P.S.
/ `* Z# r0 w, e, k* _6 gКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
/ z) C1 j! m0 Y' L
' S: C+ a; L- k
, r$ p2 C* |9 U# }5 d& X% S2 i u* K, n" W9 d# e3 ?) E S6 p' A: q
Из группы: Lineage 2 |
|