Роль AI в сборке L2J_Mobius
2 x( L$ Z; A( l" F3 ^* v4 a! X; d( N- c. d' E
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).0 C3 t4 F! v& S9 Q S
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.0 v3 v! d- a4 l/ F
Основные классы AI:- AbstractAI.java
* o5 A: \' k. F4 A7 u- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:
. q0 R k+ l/ A9 K, G- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.$ J. }* u) n! ?3 M& K9 w4 }6 i7 p
Пример метода из AbstractAI:; d( R3 A2 O) q) |
7 r- ]& F" q7 m/ Z
# w* I' v. F1 I6 ?
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)6 K8 E% k8 y3 ]# A1 D8 O) ^
- // Устанавливаем намерение NPC атаковать цель
, R. l% x4 R/ o! G$ ]7 z$ F& k - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); * _9 I; m4 P @; Z, G3 l& c6 b. U
- }
2 [. v, H9 q& p& I" Z( m1 O" w$ e
Скопировать код 2. AttackableAI.java! C. s) v0 j/ J1 v
+ Q5 C4 t$ K) y' L" [ o' R* s
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:) c- I$ S7 B7 u+ c, ~
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
" f/ c5 S( q% y, c
Пример логики атаки NPC:0 N( K5 B, z) C) e
- @Override+ |5 @. G2 i+ Y
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
! a+ y1 |8 m% l+ z7 u b2 ^ - // Добавляем атакующего в список целей
/ H! P( \; ~$ p* W) C8 F - getActor().addDamageHate(attacker, 0, 1); 6 v2 J3 ~: p8 i S7 {
- // Если NPC не занят другим действием, инициируем атаку
# t. z# V$ E' n0 x6 W4 _" S. e - if (!getActor().isAttackingNow()) {4 Z& z+ J( Z. ]1 h6 ~( x1 [
- onIntentionAttack(attacker); // Нападаем на атакующего l2 ~! z# L$ n5 y1 f& q7 h4 I [
- }
% H0 I& m6 z' s0 r" _& m/ z+ P - }, o" X. Z6 U3 P a* x
Скопировать код 3. NpcAI.java
. s& ~0 ]# {) p' H; `- R5 q4 G5 N
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
: X* _- B7 o j- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.8 ~* N: f7 [% X0 u% {" Z
Пример взаимодействия с игроком: e; {; R T8 j% b: z, n+ V
- @Override' H- ^* x2 u6 W) @& ~
- protected void onEvtThink() {
$ {* f) n9 j$ h1 } - if (_actor.isNpc()) {3 F; f; l4 B9 `' i. a; x5 W% v
- // Открываем окно диалога при взаимодействии с NPC0 R- ^& u2 R9 e. H# k0 p
- _actor.showChatWindow(player);, o2 ]# _7 N# b
- }6 N7 Y/ [2 k* z% l z: T+ R
- }/ v1 M5 w9 M+ h8 A
Скопировать код Как AI влияет на игровой процесс?
2 _7 d4 |' }1 h+ R S% g/ e# X- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.( e# v9 B- i$ b; h
Примеры использования AI в игре:
' c; l8 B' @/ G; d/ z- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
1 Z1 E$ D' X: i; p5 ] R Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.* L* G# ?! r* ^- ~5 M5 }
! g5 ~' n3 c: RP.S.
+ { Q* b4 d# U$ E. PКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?/ @; e5 o" v {2 c a
8 }; s0 F. p8 M. ^3 n3 N8 w
8 v# \0 ~+ `9 ~ B% ]- U
. W5 Z5 M5 ?8 a% ^
Из группы: Lineage 2 |
|