Распорядок дня НПС в Spacerift: Role, Task, Action
В настоящее время в SPACERIFT боты - это просто мальчики для битья. Губки для урона. Это никуда не годится, я хочу чтобы они грабили корованы и генерили интересные события просто тем, что живут своей жизнью. Так что приступаю к разработке собственной системы симуляции жизни. Но без фанатизма - для начала нужно чтобы были примитивные принципы поведения, а уже дальше буду расширять.
Итак, вашему вниманию представляю базовый черновик описания логики поведения НПС.
В целом можно представить что у мозга бота есть несколько уровней ответственности (как несколько отделов нервной системы), и в этом всём есть некая иерархия. Одни уровни отвечают за принятие решений и расчётов, другие -за выполнение непосредственно действий. Можно представить полный цикл алгоритма в виде ситуации, когда вы решили выпить кофе одним солнечным утром :)
Спустимся сразу в самый низ иерархии, т.к. при разработке я обычно иду от конца к началу.
Действие.
Название говорит само за себя - это непосредственно взаимодействие с миром, которое вообще может выполнить любой корабль. Поднять предмет, следовать к точке, совершить варп или атаковать корабль - всё это действия. Подойти к столу, взять кружку в руки, выпить кофе - это тоже отдельные действия.
Задача.
Это сущность которая формирует цепочку действий. В задаче выпить кофе нам необходимо проконтролировать все условия для выполнения конечного действия, и для этого мы генерируем цепочку действий: подойти к столу -> взять кружку->выпить кофе. Так же и наши НПС: например, задачу "майнить астероид" можно разделить на действия - лететь к цели -> копать->собрать руду->задача выполнена.
Роль.
Это почти самый высокий уровень, который определяет какого рода задачи вообще стоят перед НПС. Это может быть роль майнера, торговца, пирата-одиночки или пирата - босса, или пирата-пешки (если он под руководством босса). Так же от роли зависит какой сектор НПС выберет для реализации своих целей, да и постановка самой цели - это и есть роль.
Пират-одиночка, к примеру, будет двигаться от своей станции на N секторов в сторону, затем искать себе цель и пытаться её ограбить. При отсутствии целей он будет выполнять задачу "лутать всё вокруг", а если его сильно подбили - вместо атаки цели он выберет "вернуться на базу любой ценой". (Возможно задействовав WARP).
Командир.
Тут всё просто - у любого НПС могут быть в подчинении другие НПС и командир может переопределить им роль. Таким образом будут работать, к примеру, группы пиратов во главе с боссом-бомбардировщиком. Такая группа может, к примеру, скоординировать атаку станции, или нападение на игрока-одиночку.
Во всём этом безобразии я преследую одну важную цель: разделить всё поведение НПС на очень маленькие сущности, каждую из которых можно вынести за скобки и скомбинировать с другим набором частей. Таким образом я собираюсь прийти к гибкой системе, которая позволит с лёгкостью создавать новые и новые типы НПС, возможно даже без написания доп. кода (через редактор ролей). Уверен, многие игроки хотели бы себе дрона-майнера, или торговца-снабженца, который будет доставлять нужное сырьё на станцию корпорации.
Всё это описывает только базовый характер поведения НПС. Роли я планирую сделать нескольких типов: заготовленные шаблоны на сервере (базовые) и роли создаваемые в редакторе (для настройки сюжетных квестов, чтобы НПС могли летать по ключевым точкам и взаимодействовать с игроком).
И да, всё это - не относится непосредственно к мозгам НПС в бою. Это будет отдельная, более глубокая проработка действия "Атака". (Да, сейчас все НПС представленные в игре могут выполнять лишь пару действий, без вообще каких либо целей).
И да, напишите, как вам вообще мой "поп-геймдев" формат? Оно вообще кому-то интересно? :)
Буду рад вас видеть у нас в соцсетях и в игре!)))
SPACERIFT в Steam: https://store.steampowered.com/app/1148480/SPACERIFT_Arcanum_System/
SPACERIFT в VK Play: https://vkplay.ru/play/game/spacerift/
АКТИВНО ВЕДУ ВК (VK Video): https://vk.com/arcanum_team
АКТИВНО ВЕДУ Telegram: https://t.me/arcanumteam
SPACERIFT: Arcanum System в VK https://vk.com/spacerift
Поддержать и подписаться на Boosty: https://boosty.to/arcanumteam
Youtube: https://www.youtube.com/@ArcanumTeam