Роль AI в сборке L2J_Mobius# _5 p! k2 X6 x# k( G J! T
* C4 b3 k- j, | P
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
. j% B9 F/ a4 iВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.5 z W5 ]& M; h3 D, s7 x- _. _
Основные классы AI:- AbstractAI.java
1 x# X0 z6 F: l6 A( p+ c G' V- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:
* \0 m- g/ ?. t3 m, _7 g q1 G- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.; O0 m" M" U) z6 T! x) _
Пример метода из AbstractAI:
2 e a1 B; m% j1 V; f : u1 h' K& i) N9 \+ P( ]
M; S4 O& N1 o7 n- p; K+ a; c
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)
2 f' q7 Q* q- E - // Устанавливаем намерение NPC атаковать цель
( u# U" p, O' f+ q7 E - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); 8 p6 g* ^2 _8 g. `- w
- }
+ h; [* l, I6 i' l8 z
Скопировать код 2. AttackableAI.java! K- C3 ~$ t2 O( N4 s
0 Y" I! k3 r9 H5 y
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
* V1 p, g# U' f, T9 h- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
7 Q5 F3 Z" A/ c4 E3 ^: Q' D2 a' j
Пример логики атаки NPC:
- i3 ^% E w! p1 m" P1 i$ f- @Override
: d" P9 i: {6 P) S - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
! {/ R5 o g0 R9 B s' t1 G - // Добавляем атакующего в список целей7 }) y: s$ v9 b# s9 O% j7 R2 }
- getActor().addDamageHate(attacker, 0, 1); 5 c) j |% l% B2 M/ U5 I2 C
- // Если NPC не занят другим действием, инициируем атаку
! H; ?. B8 Q0 G, P1 @; V. ]5 ~ - if (!getActor().isAttackingNow()) {- B% X; b& o' Q9 n" j+ y5 y6 A5 H
- onIntentionAttack(attacker); // Нападаем на атакующего8 y: t. R/ _1 a. @* r1 g( \
- }9 _1 V1 e8 M! P* t( e' m0 K" R
- }4 X' f# M9 \2 z1 F$ l
Скопировать код 3. NpcAI.java' Q$ E4 W' E* c; R$ h, Y( s& L! ]% m
- F) h8 b9 D w' O- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:) j' C4 T. }" A" u
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.6 G7 P1 A# E. X* M% h; r
Пример взаимодействия с игроком:
/ O& W4 I5 x" q; r$ |) @- @Override
6 @0 w1 R7 \$ S! X1 k9 K1 J - protected void onEvtThink() {
) w$ w d1 L; m* K7 [! L1 H) B - if (_actor.isNpc()) {
7 B& E* i! O1 _& `8 L - // Открываем окно диалога при взаимодействии с NPC# @0 r) @ S- n8 t* @
- _actor.showChatWindow(player);
& P% J- G4 h! a& m - }* @/ e5 E7 y4 m
- }
0 K: m" ^/ N( i8 Q2 e6 r9 o
Скопировать код Как AI влияет на игровой процесс?
z" ~' e3 c( b% y$ u/ m- O- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
8 }/ V. `" z& k' [4 Z( ^ Примеры использования AI в игре:( L( E7 p* j; Y' P1 z, P
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
5 _$ B) u8 \3 t- ?# {) v2 W Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
- m# x& e; P) z- y5 B& a r R3 ~/ F N* O
P.S.
9 y$ ~) {) u O; W2 q) PКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?( `. i3 W% E$ F
0 E* L! N7 v' n9 _, Z- p1 N: |/ b
" K8 d) b ` s' B! O r2 w/ j7 ?, kИз группы: Lineage 2 |
|