Роль AI в сборке L2J_Mobius
! X, d- q) l1 \* T6 t7 _
& b: U( `3 e# ]8 |* d; ~, {3 b7 V/ mВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
L; G; o8 b8 A' R; ~) K7 Q/ EВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.: q$ j1 z( ]5 ^8 V0 l1 {, D& l% X
Основные классы AI:- AbstractAI.java
6 Y# L% w" {( H% B' g- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:% C1 b' W2 e2 Q2 |; {
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
0 B7 c( f B: _0 [ Z
Пример метода из AbstractAI:
" r2 ^0 ?" y. ~4 a* g: _& h) H
- s3 a: t$ S$ S/ W% s) E# S# O# I+ n2 F: g
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)
- k5 G1 X3 |6 c% s/ O - // Устанавливаем намерение NPC атаковать цель
8 _" \7 R& s! ]1 A. `2 o - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
& _* w6 r4 g& j - }2 }+ \/ M* X: F# Y
Скопировать код 2. AttackableAI.java% D6 X6 i% K: T% G& m% a& M
0 K" N2 ]9 l. j
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:0 A1 t5 d0 R, s5 w8 G: a
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.8 f& v$ E1 l3 y4 S2 l8 s" I1 ~, o/ B
Пример логики атаки NPC:
, I3 t0 A$ X( a! T9 P+ @- @Override, I6 `- `+ a0 S8 _2 n
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
7 |1 n0 T- T5 m3 V; h+ n - // Добавляем атакующего в список целей3 e& R# c% E! [& e7 [
- getActor().addDamageHate(attacker, 0, 1);
6 V8 |; p/ _( L! r5 ? - // Если NPC не занят другим действием, инициируем атаку
2 c, L2 n" g6 o' d" d4 h( M2 d5 P - if (!getActor().isAttackingNow()) {
' v* t `. e7 A4 E. S. K- x - onIntentionAttack(attacker); // Нападаем на атакующего, r' \8 Y) R% i) L
- }
) S/ g" I$ ~) X" m$ O - }
+ R( R- i0 a5 T# k+ t
Скопировать код 3. NpcAI.java
T& W: C( f- a' s8 ?) i8 r; m! M( r1 X* n. f) }" I- }6 I6 Y& Q5 U
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
% ]; ?& `1 J1 U. V- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов., i' r5 _& ]* M0 |! x$ W
Пример взаимодействия с игроком: [2 X5 J; ~" }7 M
- @Override% v: i4 C% A$ f4 r5 ?$ M( _
- protected void onEvtThink() {* {6 @1 H3 E; {) ? `7 Q( h2 k
- if (_actor.isNpc()) {3 I' H5 K6 O0 c) Y
- // Открываем окно диалога при взаимодействии с NPC0 s$ K+ N4 O& w4 p+ e: @
- _actor.showChatWindow(player);
* @4 y( X* H6 }2 m- K - }: o* _( e$ j1 h
- }
9 n% X( N: L# f1 O6 _
Скопировать код Как AI влияет на игровой процесс?
! y. T, f( P) I$ |* N4 U) k+ [; ]- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
4 ?/ L( X3 L8 {3 n Примеры использования AI в игре:
0 ^5 r G+ Z+ k' u' F' P- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
% F: e: q1 t! @7 j! R7 ]5 C3 L Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
/ c7 p7 H/ O* e+ z& o9 p; d
% N1 p2 ]0 p/ y2 l! hP.S.
. o* b+ V, H8 k+ E. Y$ y- B, YКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?0 N" e P3 }" F- r- g' E
+ D, @& W% H" L$ M8 N$ y& x; Y& m! h3 J( W( \ m5 f s/ L/ ~
& V: L' k. o% Q6 M' uИз группы: Lineage 2 |
|