Керівництво по fsm, armacommandreference wiki, fandom powered by wikia
FSM розшифровується як "Finite State Machine" і означає «кінцевий автомат». За визначенням компанії Bohemia Interactive. FSM - це набір станів ігровий логіки, які переходять з одного стану в інший за певними правилами.
FSM можна використовувати для різних ситуацій, аж від призначення музики залежить від ситуації (наприклад під час бою одна, в спокійний час інша) і до вказівки ботам, як необхідно вести себе в тій чи іншій ситуації.
Політ думок може обмежуватися тільки вашою фантазією.
Програма FSM Editor Правити
З виходом гри ArmA 2. компанія Bohemia Interactive випустила свій інструментарій для редагування FSM файлів. Тут я докладно постараюся розповісти про цю програму.
Завантажити програму можна за цим посиланням.
інтерфейс Правити
Відкриваючи перший раз цю програму, дуже легко заплутатися. Безліч незрозумілих кнопок, налаштувань, параметрів. Зараз ми цю незрозумілість будемо усувати.
Розглянемо саму верхню панель налаштувань:
Володіючи навіть початковими знаннями англійської мови, суть цих пунктів не виявиться дуже складною. Я зупиню свою увагу тільки на пункті FSM Attributes. про який поговоримо трохи пізніше.
Наступне меню:
Це панель форматування. Шрифт, колір, підкреслення, вирівнювання, розмір шрифту та ін.
Зараз дісталися до самого цікавого. Панелей настройки станів.
Опис буде зверху-вниз.
- Створення нового стану (New Box);
- Переміщення обраного стану (Set mode to design);
- Створення переходів від стану до стану (Draw links);
- Збільшити масштаб (Zoom);
- Повернути масштаб (Reset Zoom);
- Змінити зовнішній вигляд блоку (Change item to ...);
- Залити блок кольором (Set fill colour);
- Змінити колір меж (Set line colour);
- Встановити розмір і стиль тексту (Set line style and width);
- Set transparent fill;
- Set transparent line;
- Редагувати текст в стані (Edit text and font properties);
Опис блоків Правити
Так само йде зверху-вниз.
- Початковий стан. Активується при запуску fsm;
- Блок умова. Перевіряє умови переходу від блоку до блоку з урахуванням пріоритету;
- Блок стан. У цьому блоці пишуться скрипти;
- Блок точка. Просто зручна штука, дозволяє більш грамотно розподіляти блоки;
- Блок завершення. Блок, який завершує fsm файл;
Налаштування FSM Правити
Наш .FSM перед роботою необхідно налаштувати! Тому що якщо це не зробити, з'являється ось така помилка при компіляції fsm:
Є кілька програмних налаштувань:
Кожна з них потрібна для певної роботи. Описи цих налаштувань будуть приведені нижче.
Керуючі налаштування Правити
- FSM Entity - керуючий файл entityFSM.cfg
Така настройка використовується для опису поведінки певних тварин (метелики, бджоли, бабки);
- FSM Scripted - керуючий файл scriptedFSM.cfg
Налаштування, що дозволяє використовувати скріптові команди і умови в fsm файлах.
- Global Switch FSM - керуючий файл globalSwitchFSM.cfg
Compilation to the * .cpp code, using switch to navigate through FSM states. The compile uses many FSM attributes, to define function declaration, precondition codes etc. This FSM was first used in seagull.cpp to code autopilot functionality. So, opening seagull.cpp in FSMEditor.
- Class Compile FSM - керуючий файл classFSMcompile.cfg
Compilation to the * .cpp, using Fsm class architecture. It creates% (stateName) functions for state initialization and check% (stateName functions for checking conditions. No FSM created by FSMEditor has been compiled and used in engine, but some were coded manually before FSMEditor existence.
Щоб вибрати цікаву для нас настройку, клацаємо по виділеним пунктам:
Тепер треба вибрати шлях, по якому встановлена програма FSM Editor.
При правильному виборі має з'явитися кілька файлів з розширенням .cfg
Це конфігураційні файли настройки .FSM
Вибираємо потрібну і починаємо з нею працювати.
Особливості FSM Правити
Робота з FSM Правити
Кожен .fsm файл повинен починатися з початкового стану (Start State) і закінчуватися кінцевим станом (End State). Щоб вибрати тип блоку, потрібно всього-то натиснути правою кнопкою миші на цікавить блоці.
Вибір типу блоку
Початковий блок відзначається червоним кольором. Кінцевий - помаранчевим. Робочим полем для нас буде закладка initCode
У цьому полі ми будемо писати наші скрипти.
Приклади робіт Правити
Всі приклади роботи з fsm файлами я буду робити з налаштуванням - FSM Scripted.
Приклад 1 Правити
FSM стає _актівним_ і чекає реакції щодо подій. Що з цього вийшло, дивіться у прикладі.
Приклад 2 Правити
Зараз я вам покажу залежність виконання fsm від пріоритету.
FSM - скрипт являє собою блок станів з розгалуженням з урахуванням пріоритету.
Ініціалізація FSM так само відбувається в скрипті init.sqf.
Умова «Убитий юніт 1» має пріоритет 0, умова «Убитий юніт 2» має пріоритет 1.
Отже, якщо буде убитий тільки юніт 1, fsm піде по одній гілці з висновком першої підказки, описаної в коді. Якщо буде убитий тільки юніт 2, fsm піде іншим шляхом, з висновком другий підказки. Якщо ж обидва юніта будуть вбиті одночасно, fsm піде все по тому ж другому шляху (умова: убитий юніт 2), так як, воно має більший пріоритет і виведе третю підказку.
Можете погратися з пріоритетом, всередині fsm файлу.
завантажити архів
Приклад 3 Правити
Пошук статичних знарядь
Це вже більш складний приклад. У ньому я спробував імітувати поведінку солдатів, при пошуку вільних статичних знарядь.
завантажити архів
Часто виникають помилки Правити
1 питання. При компіляції у мене з'являється така помилка:
2) Питання. При компіляції виникає слід. помилка:
Помилка при компіляції FSM
Відповідь. Дана помилка пов'язана з розміщенням блоків. Швидше за все ви поставили два однакових стану, про що програма в балці і повідомила:
Виглядає це так: