Роль AI в сборке L2J_Mobius
9 k% b: o* [2 }" X3 V0 }3 ^, I) }
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
- [% W1 e V& M" ^! ~0 C9 h0 YВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
7 W6 ~7 }6 o6 k! _! J1 r# G' {3 ]Основные классы AI:- AbstractAI.java
5 n+ z9 k3 L* \" w- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:! U. I; N2 R3 Y ^" Q2 E4 Y
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.: o2 L, V$ v" _
Пример метода из AbstractAI:
/ I- k# F" I/ A! ?. ?
5 \, h. D9 w# J2 J, h0 {" ^! G3 D+ U
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)
9 m# a0 ?. @5 i, b - // Устанавливаем намерение NPC атаковать цель( L' D- K8 L+ J; M" g
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
/ p% n5 J. c1 [. e - }0 Y2 ^0 ~7 H1 C) V
Скопировать код 2. AttackableAI.java2 h: H" h4 k7 r4 a' P5 i
( ?# e6 \3 M% N& ^- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
! L4 V9 A: [% S" z x9 X- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою./ i* d4 M( u! m: |: `+ J3 X
Пример логики атаки NPC:: [2 m3 {- E" Y4 U; v& g& _2 x* j: k$ L
- @Override2 ]% \' B& \) `1 A% K% ^6 F+ Q
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
" ~% s$ Y5 u1 M! I. I" L# J - // Добавляем атакующего в список целей% v. }7 W- r0 ~+ Z9 e$ Z
- getActor().addDamageHate(attacker, 0, 1); ' Y+ i( r4 v* h2 l
- // Если NPC не занят другим действием, инициируем атаку
! q4 w. O' a2 h- A; p9 j) n9 y: R - if (!getActor().isAttackingNow()) {
+ L! L# l0 o1 c - onIntentionAttack(attacker); // Нападаем на атакующего: G' a% }: K; W# W& z
- }% K6 _1 Y( [" q) k. g
- }
' H. |5 _2 J; M4 [6 H9 f) P; W
Скопировать код 3. NpcAI.java
9 {; k$ N# a* g p( ~; O- s5 o) {: t; j
2 U0 [5 ^0 n% @- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
. Z( I; b' a' M! _- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
, d. a H3 a; z/ ?9 ?) C: B3 h" g# t/ C1 l
Пример взаимодействия с игроком:5 E( s5 M6 v# k1 i1 l
- @Override/ S4 i: R! e4 y' V _! p
- protected void onEvtThink() {
. O+ w `0 L/ f6 E5 p% p; m - if (_actor.isNpc()) {
, m3 U9 {" }3 v5 d. [$ \5 y - // Открываем окно диалога при взаимодействии с NPC
. u2 ?8 X, W1 p o, o6 h K - _actor.showChatWindow(player);5 B1 N! H9 @+ E
- }7 }' R% _' H9 @1 y/ U
- }
% c% U [8 M# x3 h! E) C
Скопировать код Как AI влияет на игровой процесс?
! \# |2 A4 L; {! ~! x% E% O$ {- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.& y# Z O6 G- `6 n- K9 @4 \
Примеры использования AI в игре:
. S# f. b0 O: e# N8 b8 M n* u. F- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
8 _0 p+ Q; U/ C0 |' [ G8 o Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
* ^5 e& T4 A. }: H# H4 V+ M l4 W$ m( l8 v$ Z2 |
P.S.
" \% i. W8 j" l4 aКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
! z& J5 ~1 m! p, W! W0 j! S0 ^ m+ r3 P
0 H5 ~; n5 c# D* L9 c, F
, ?. n) F; S6 g0 ?* JИз группы: Lineage 2 |
|