Роль AI в сборке L2J_Mobius* ~. x; b" m, b# j1 ]0 c
3 C: A C! R2 p N/ r5 ?В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
6 R4 Q. R, `+ e3 F, `( @6 ?. CВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.$ {2 X# V' R# Q$ _: K$ H3 I5 \
Основные классы AI:- AbstractAI.java
7 E" l; @ z# r6 Y- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:# h3 s, `7 T# O$ W1 |
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
6 N7 G& `- J/ `5 S$ O4 J6 Z0 A
Пример метода из AbstractAI:
$ I# u5 k& N1 n/ {3 q( f, T u
" Q% ?( n& r- l4 ]5 M' n
" S* s/ U$ U* q# {9 o! J6 j( O3 E& g- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель) {6 [! {" y: A, m) g' n% K
- // Устанавливаем намерение NPC атаковать цель2 r& l, e. X# P# G- _
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
7 g9 x+ x0 X6 Y) R2 | - }
6 p) L& A* _, o. M4 ^
Скопировать код 2. AttackableAI.java% R/ ]' f I! C. H1 N/ i
* n! X$ ^0 @7 Y* p- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:* C! W6 ~; l' B1 q
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
# k: u W! x* H# k
Пример логики атаки NPC:
0 P u) V9 m* z9 L, `7 Y- @Override
+ x5 I. T' Z% U9 w% g - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
7 Z) G6 k# f4 V* m - // Добавляем атакующего в список целей
$ t* B. s) T. O - getActor().addDamageHate(attacker, 0, 1); : O9 Y/ x- J2 _2 A# q* ~; F: A
- // Если NPC не занят другим действием, инициируем атаку! D- l) R3 v8 M5 e
- if (!getActor().isAttackingNow()) {
* t0 M- p3 g6 }& R - onIntentionAttack(attacker); // Нападаем на атакующего* X, |; X- K# c; Z4 p% c4 ~
- }( P; E/ T. t; |% I8 r$ O
- }3 j! r5 O7 N5 F/ V
Скопировать код 3. NpcAI.java: q; o; l8 b* u9 X0 ^# H' ^ p* |9 L
5 W4 @" @) [ v2 ^% ?
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
3 l2 H9 p5 j: n" K- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов., \% N5 u+ i+ ^
Пример взаимодействия с игроком:3 F4 H, w9 k5 W3 s% A
- @Override
0 w/ B5 x$ o% `! v k - protected void onEvtThink() {
+ U3 ^7 T4 ?! P9 X) Z3 k* n8 U7 y - if (_actor.isNpc()) {4 _2 j6 H! {0 U4 v. v$ C
- // Открываем окно диалога при взаимодействии с NPC
: L- j2 L; B! n0 @; D0 X - _actor.showChatWindow(player);6 C2 k3 N. p0 T4 I$ z2 B1 ?+ v
- }
' t6 a8 _( n: F! H4 a - }
- V+ S5 d @1 K) k8 c. L
Скопировать код Как AI влияет на игровой процесс?" J# G1 w: q, Y3 x2 C3 L
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.2 v3 W0 b% @" k. d( I( S& _+ _
Примеры использования AI в игре:
) w1 A- @: h/ Q8 i0 o( }- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
e C( \; w2 d1 {& I6 w Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
( ^ D# ?" Y0 v0 O U" I* B/ R8 b4 F8 v- J( o
P.S.+ v& y6 ~, E/ i# j; h
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?% C/ d2 ~. T4 [+ l
& I: p5 _( M1 V; j3 g, `, u5 I
( P1 l/ r$ h1 L; N7 f. S! ]4 i9 K+ R a. {" Z$ n3 {: s
Из группы: Lineage 2 |
|