Роль AI в сборке L2J_Mobius) m3 D+ N7 u; B1 R6 u6 H; x8 d
; x: O* H' a9 Y+ \7 pВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
& ?! ~# f" x* LВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
- w% Q7 {' e- Z' S9 a1 O3 _( vОсновные классы AI:- AbstractAI.java
& h" P. c0 m. ~4 {6 j9 x- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:
z2 v$ X7 y& k: P: J% t- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
( P0 v, u1 }( B
Пример метода из AbstractAI:
( q: ^: V, S# b% T
8 I2 C/ \6 H+ H2 N( m! a
7 f c" o6 b5 J- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)
0 N j1 L) v5 E% \1 X! [+ s4 w6 H - // Устанавливаем намерение NPC атаковать цель% @+ A L" a' ]) R H
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
& D- e1 T. H. {5 F9 r7 b - }
8 `* F, R9 ^6 @5 Y. Q$ V- ?
Скопировать код 2. AttackableAI.java
. r0 h3 S E, ?7 ^ `
0 L. Z% U/ @0 e6 K4 H- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:( w: u! _+ w9 m# b' @& |
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
# G1 D8 J% [8 c
Пример логики атаки NPC:
" ^" L, p/ J8 D/ \- @Override
, d9 ^! w4 W2 {! Q - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
; j% w$ g3 m/ c$ r- ] - // Добавляем атакующего в список целей
1 g- }1 _% @9 G- B) }( k) a6 N4 G; Y - getActor().addDamageHate(attacker, 0, 1);
$ d% ^6 j( o8 C8 X/ c) _ - // Если NPC не занят другим действием, инициируем атаку
, y( y7 ^" L( y - if (!getActor().isAttackingNow()) {6 V6 M1 B6 h5 t0 U
- onIntentionAttack(attacker); // Нападаем на атакующего. k- N' ?; c5 b+ N
- }! N$ n/ `* P* W
- }% W% w( S' Q1 c& J% @6 U9 k. }8 [
Скопировать код 3. NpcAI.java2 Q1 P2 {: t2 ~, ^! m
5 U6 p9 m& t: k% v5 P+ a
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
& V: a3 p! u9 r* c5 K- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.$ ]! P7 k l z, a* t& @7 g
Пример взаимодействия с игроком:
! d) }; [0 A! |* N- @Override, X$ |, ?0 l, A; }; h$ ?) H
- protected void onEvtThink() {
0 K( b( t4 h7 g- A4 M; c - if (_actor.isNpc()) {$ |( _5 @) [8 ?5 u9 V6 J
- // Открываем окно диалога при взаимодействии с NPC
) m3 z8 O, Q. S$ Q4 ^. D - _actor.showChatWindow(player);1 Q' E* W2 W( b3 A
- }5 V( C. Y- u+ e1 ^% M4 d
- }4 ~) Q! y; i/ m- M- f
Скопировать код Как AI влияет на игровой процесс?
- L3 I! f- g; i1 f- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
$ | |8 _& b0 X9 R& ?! p6 W" Z Примеры использования AI в игре:
. s% [/ t4 a1 Z& M, A8 T- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
# n/ Q9 Y) U3 b- e% C h, q/ K Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
" O- H) a& s; P) ?
: Y: f: F; @7 h% qP.S.
* s! `# t) { {3 Z7 N8 GКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
) a8 e3 E' V5 `8 m
: O! K7 Y$ `. f' \5 i8 ?5 n. ?% y! x
7 f! u4 Q7 C6 j+ V
Из группы: Lineage 2 |
|