Роль AI в сборке L2J_Mobius3 I7 R4 V1 F( e2 r9 ^, M: g
9 x! K$ v, x7 BВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект)." j; n- T) U; R' X
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.) q$ a6 C4 K1 w! f |. M3 ~& k
Основные классы AI:- AbstractAI.java
8 m$ Q: [+ r: W0 Z) R- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:9 x9 c3 U# ]# {4 Z. {: ] [
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.( C) |# ~6 j; v, H( \! X! Y- p3 D
Пример метода из AbstractAI:
- W- I6 p% u4 E9 H7 v2 p
3 s* V L; t1 N0 ], p0 t5 Q/ g$ G- ]9 r. s
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)) u8 p1 V# Z% I
- // Устанавливаем намерение NPC атаковать цель; b$ e3 { O8 T
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
0 B& P! n8 z+ U; s - }
- w" [! W: q0 L
Скопировать код 2. AttackableAI.java
9 G. D7 G1 W/ b- R. r$ X( m, i, t+ Q
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
+ h7 U; }% H. R! E1 H6 t3 l- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
$ q4 s1 b% R, j
Пример логики атаки NPC:, U! q0 y/ M* x2 A
- @Override8 g3 W3 n5 Q8 h
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)) b: p0 c9 |9 E. f L: D3 n5 p$ f
- // Добавляем атакующего в список целей9 ]2 a" N$ {/ z0 s
- getActor().addDamageHate(attacker, 0, 1);
! g$ H; \7 M) _ - // Если NPC не занят другим действием, инициируем атаку
4 l, W' i( P1 Z9 z: g0 f- c4 |1 H - if (!getActor().isAttackingNow()) {% X- d: n( s: c* }6 K* I
- onIntentionAttack(attacker); // Нападаем на атакующего5 A' C* t2 P4 d; _$ m9 e
- }0 f9 v4 }1 ^: ]
- }
+ ?( E S: b/ F& i: U8 Q
Скопировать код 3. NpcAI.java
1 j# i: J* j8 l1 }, E5 z
" h W, J t8 U5 e- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:7 F0 r% h* h; [2 Y0 i' v
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.) G" {8 ~: Z4 k# G) {, L9 h5 e; p: F
Пример взаимодействия с игроком:
" c8 K M) G$ B2 [+ Y2 d, V- @Override/ ?' j+ x2 U5 ~9 \4 T2 W: Q( z
- protected void onEvtThink() {
7 f* Z* G' I! D, }4 C - if (_actor.isNpc()) {/ x. ~& j; v% P: F3 F
- // Открываем окно диалога при взаимодействии с NPC7 a3 G& ~ ~' `. o% \; ` N! v; U9 {9 p
- _actor.showChatWindow(player);
+ ^7 _ F- ~5 S/ w1 c - } _) y* }9 L: G& o$ e" t: c6 j
- }
9 q' h& ^7 o( \+ _7 `( p
Скопировать код Как AI влияет на игровой процесс?+ m$ R6 X. _+ r$ x
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
S8 [0 P8 I k+ p1 o2 `2 l. [ Примеры использования AI в игре:5 w2 B. u% ~) V7 X
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
, M) k4 o. d3 L w1 j* k8 n: V Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
5 \: W. T3 P' F7 k5 n* k2 r
% z- k t0 z! z7 a6 }3 u0 pP.S.
9 S: y4 \& ^. M3 BКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?2 ^0 b7 X \5 F/ U
% \9 \, Z. U& h# Q# V, f; t# O2 Z1 f2 C/ w. Z9 v
0 ], q7 r# M( R% K+ rИз группы: Lineage 2 |
|