Інтелект комп'ютера в стратегіях реального часу

Рівень 1. Інстинкт самозбереження.

Hазвание цього, самого нижнього рівня умовно, але досить точно відображає його призначення. Він визначає, як повинен поводитися юніт в разі нападу на нього. Зазвичай, можливі дві лінії поведінки – відповісти на атаку або, в разі неможливості цього, постаратися піти від нападу. В обох випадках можливо велика кількість нюансів.

Hаприклад, при відповіді на атаку перевіряється, не атакує чи вже воїн іншу мету і чи є необхідність переключатися на нову мету. Юніти, що не вміють вести ближній бій (танки, катапульти, …) повинні постаратися попередньо відійти на необхідну для стрільби дистанцію. У більшості ігор воїн може постаратися покликати на допомогу найближчих сусідів, якщо вони самі ще не здогадалися цього зробити.

Відступ звичайно необхідно для юнітів, не пристосованих до ведення війни (селян, будівельників, робітників). Тут потрібно вирішити, чи треба просто відбігти від ворога на безпечну відстань, або шукати порятунку в найближчому поселенні або загоні. Іноді в іграх, де присутні різні роди військ (піхота, авіація, флот) навіть бойовому юніту доводиться відступати, якщо він в силу конструктивних особливостей не призначений для всіх типів можливого бою (наприклад, танк повинен уникати винищувачів і т.п.).

Рівень 2. Сканування місцевості.

По суті, цей рівень просто розширює інстинкт самозбереження – юніт не тільки відповідає тому, хто на нього напав, але й намагається вгадати можливий напад, оглядаючи місцевість навколо себе в пошуках ворожих воїнів.

Глибина огляду зазвичай залежить від дальності стрільби юнітів, хоча для воїнів, керованих комп'ютером рекомендується робити її рівною максимальної дальності стрільби. У цьому випадку, далеко стріляюча катапульта або вертоліт не зможуть підібратися непоміченими до близько атакуючому мечоносці або піхотинцеві. Втім, цей момент у різних іграх реалізований по-різному.

Алгоритмів сканування досить багато – попарне порівняння координат юнітів, спіральний огляд місцевості, посекторного огляд, попереднє ділення місцевості на квадрати (хешування). Докладний огляд їх був представлений в ZX Format # 8 у статті "Епопея".

Описані вище базові рівні інтелекту зазвичай реалізуються як для воїнів, керованих комп'ютером, так і для воїнів, керованих людиною. Хоча варіант для воїнів комп'ютера варто робити більш гнучким і передбачати якомога більше різних варіантів.

Рівень 3. Тактичний.

Тут визначаються базові дії юніта, цілком залежні від його вмінь і властивостей. Тому з повним правом цього рівня можна дати іншу назву – професійний. Для кожного типу компьтерних героїв звичайно розробляється власний тактичний (професійний) блок.
Найбільш часто використовуються три типи таких блоків:
для юнітів, зайнятих розробкою та видобутком ресурсів;
для юнітов, що стоять на охороні;
для юнітів, що йдуть в атаку.

У першому випадку, блок правил описує, куди доставляти здобуті ресурси, що робити, якщо видобуток ресурсів у даному місці вичерпана або була раніше перервана (наприклад, раптовим нападом військ людини). Тут же можуть бути описані спеціальні правила, що стосуються ремонту пошкоджених будівель і будівництва нових будинків (хоча найчастіше цими завданнями займається стратегічний рівень, про який ще попереду).

Блок правил для охорони наказує дії по захисту ввіреній території. Зазвичай він зводиться до наступного – "стій на місці і нічого не роби". Дійсно, майже всі завдання з охорони вирішуються двома нижніми рівнями інтелекту. Єдине додаткове правило визначає спосіб повернення на місце після відбиття атаки.

Дії атакуючих юнітів, як правило, діляться на дві фази. Перша – "йди до точки збору". Друга – "йди в атаку". До цього блоку можуть бути додані умови відступу (наприклад, від боягузтва, від поранень або якщо поряд немає своїх), якщо, знову ж, цим не займається стратегічний блок.

Крім описаних вище найбільш поширених зводів правил, в будь-якій грі зазвичай існує деяка кількість спеціальних тактичних правил для малопоширених типів юнітів:
для чарівників і магів (тут зазвичай визначаються пріоритети при виборі одного заклинання з багатьох і при виборі об'єкта застосування заклинання);
для патрулюють юнітів (в цілому схожі з охоронцями);
для транспортних кораблів (кого і як підібрати на борт, і кого і як десантувати. Природно, на борт беруться тільки атакуючі юніти, а не охоронці або працівники. Місце десантування визначається наступним рівнем комп'ютерного інтелекту – стратегічним);
для ремонтників (хоча в більшості ігор правила таких юнітів є підмножиною правил ресурсодобитчіков);
для головних героїв або плохішаев, якщо такі є на рівні (тут вже що вам фантазія підкаже); і так далі …

Рівень 4. Стратегічний.

Цей рівень фактично керує усіма юнітами комп'ютера. В ідеалі, комп'ютер повинен це робити не гірше гравця-людини. Від реалізації правил цього рівня залежить, наскільки розумною і цікавою буде ваша гра. На жаль, готових рецептів тут немає (інакше всі ігри були б розумними і цікавими:). Розглянемо, принаймні, що тут необхідно реалізувати.

По-перше, комп'ютер повинен управляти виробництвом воїнів для майбутніх атак. Крім того, якщо це передбачено грою, він повинен виробляти нових юнітів, які прийдуть на зміну загиблим охоронцям або загиблим працівникам.

По-друге, комп'ютер повинен займатися апгрейдами та дослідженнями.

По-третє, він повинен займатися організацією атак. Для цього він повинен спочатку вибрати місце попереднього збору (якщо, звичайно, його воїни не йдуть у бій відразу після того, як їх зробили). Потім, за закінчення якогось часу або, коли набереться необхідний за чисельністю (за силою) загін, комп'ютер повинен відправити його в бій. Попередньо необхідно вибрати об'єкт або місце мети. Тут же необхідно управляти транспортами (якщо такі є).

По-четверте, комп'ютер повинен стежити за станом своїх будівель і здоров'ям юнітів, щоб вчасно займатися ремонтом і лікуванням. Втім, ці функції можуть самостійно виконуватися на третьому рівні відповідними типами юнітів (лікарями, ремонтниками). При необхідності комп'ютер може уміти будувати нові будівлі – в замін зруйнованих або для нарощування своєї потужності.

Hе варто говорити, що всі перераховані дії (особливо організація атак) повинні виконуватися якомога різноманітніше і нетривіальні, щоб гра була по-справжньому захоплює.

Зручно, що комп'ютер на цьому рівні повинен приймати дійсно тільки загальні, стратегічні рішення. Конкретні варіанти реалізації таких рішень юніти комп'ютера вибирають самостійно, керуючись трьома нижніми рівнями інтелекту. Фактично, комп'ютер тут просто вказує номер завдання для кожного юніта (плюс супутні параметри, наприклад, координати місця дії або об'єкта нападу) і не дбає про його подальше виконанні.

Третій і четвертий рівні інтелекту зазвичай програмують тільки для комп'ютера. Проте, в нашому світі ледарів і розумових вирожденцев, мабуть, не так довго залишилося чекати, коли автори ігор почнуть реалізовувати ці рівні і для юнітів людини (в тій чи іншій мірі). Щоб грає не дуже напружував свою єдину сіру звивину:).

Чому я прийняв саме такий розподіл на рівні для AI комп'ютера? Дуже просто – практика створення ігор "Чорний Ворон I і II" показує, що саме в такому порядку найлегше розробляти і налагоджувати програми інтелекту. Послідовно реалізуючи перераховані рівні, ви отримуєте приблизно наступне:

Рівень 0 (без інтелекту). Юніти комп'ютера стоять на місці і не рухаються.
Рівень 1. Те ж, що і рівень 0. Юніти комп'ютера не реагують на ваші бойові одиниці, поки ті не завдадуть удару першими.
Рівень 2. Те ж, що й рівень 1. До того ж, юніти комп'ютера реагують на наближення ваших солдатів і намагаються їх атакувати.
Рівень 3. Те ж, що й рівень 2. Проте йде активний видобуток ресурсів, чарівники намагаються чаклувати і гадить вам, охоронці комп'ютера повертаються назад після відбиття вашої атаки. Але ніяких активних дій проти вас комп'ютер не робить.
Рівень 4. ПОЛHОЦЕHHАЯ ГРА!

Ось, власне і все, що ми хотіли вам сказати …

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*