Роль AI в сборке L2J_Mobius
; o# }' S# t) ?9 I; a0 W1 s, w6 e- f6 |& F9 c( _0 T
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
% R7 b4 H5 o& @& ?+ T( T$ z; kВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
/ W% U! n2 _; W. CОсновные классы AI:- AbstractAI.java8 f1 V" [3 ~- V! o( Y q
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:6 n% y9 p2 b* t( d$ @' s
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
4 l* A4 ^+ } u
Пример метода из AbstractAI:
3 U$ e. Y5 a, a% \3 @ : h( D+ }/ c ^# ~3 B6 o N& e
6 ~ \) u) p" H* S) p" A3 b r
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель); q: y. ]# B% y S" [+ t; e- W
- // Устанавливаем намерение NPC атаковать цель0 o' K* R h* c3 L9 l/ `
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); 6 `( s1 p/ _2 r7 g$ p
- }
8 @2 M z1 r+ |$ q( X s
Скопировать код 2. AttackableAI.java
+ S; l0 L" W6 e6 ]+ d4 x0 i& O) E& ?
8 I% a; q, g* @- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:$ A+ }( H0 r/ w- J
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.# H9 A9 ?3 h; h& l% R# X
Пример логики атаки NPC:
: f3 w f I( s" {- @Override0 F4 Y: f4 N' C* G" n% s8 V
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий). `$ k3 O' j1 i9 U& C
- // Добавляем атакующего в список целей( {; I$ \ d9 K
- getActor().addDamageHate(attacker, 0, 1);
% ^5 c, g+ W7 A9 W$ F8 {3 H& ~ - // Если NPC не занят другим действием, инициируем атаку
+ v) h: A9 X; F3 T2 o+ h - if (!getActor().isAttackingNow()) {. \8 Y& H8 a$ s9 a& \# E
- onIntentionAttack(attacker); // Нападаем на атакующего
' v0 q e! E0 U" U4 Y - }( v1 U' G5 y2 W. v8 V9 R# u# N- ?
- }2 a6 ?2 N) `+ Q" w2 Z# {& F7 q0 X
Скопировать код 3. NpcAI.java! A' C2 x( n, z0 }5 B% A+ O6 [
3 Q0 E9 f% m) t( f- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:3 b+ z ^5 S+ [: h: A* t1 z0 x
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
$ z/ W- _( Q$ x# Y3 n
Пример взаимодействия с игроком:
: d* O w5 P, z* t9 G- @Override
7 p4 G9 E' z5 W: B - protected void onEvtThink() {, h' L/ ^% h! t6 |* b7 ?; U6 O8 ^2 T# K
- if (_actor.isNpc()) {, ?. U) `' u9 F6 T) f, h' F% H
- // Открываем окно диалога при взаимодействии с NPC9 Z& H1 L7 x" E% o0 X% G6 Y
- _actor.showChatWindow(player);- k# |( @& p, ?( `) U$ g
- }
% X/ V1 U z0 s5 q, |8 q - }
/ g4 V3 z& D. e
Скопировать код Как AI влияет на игровой процесс?/ q3 N/ H( q: V7 t2 L
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
4 J6 r _) v0 i8 Q$ o Примеры использования AI в игре:: b! ?7 J1 A2 G ^6 D9 f
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
& {" T% r: P# u+ a1 X Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.0 U, M( v/ A( i- C( |/ p
/ T B- s+ [& fP.S.+ M5 [ E3 l8 Q: ~: s1 [! o% i
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
: o4 u4 i7 [1 a4 v% @4 G, A8 G
. C. p0 n) _1 U: e6 F. F( d9 u& ^ }! ?. [! r6 s8 W O3 Y
' P' x6 T7 W% L# N; V$ n. z
Из группы: Lineage 2 |
|