Распорядок дня НПС в Spacerift

Распорядок дня НПС в Spacerift

В настоящее время в SPACERIFT боты - это просто мальчики для битья. Губки для урона. Это никуда не годится, я хочу чтобы они грабили корованы и генерили интересные события просто тем, что живут своей жизнью. Так что приступаю к разработке собственной системы симуляции жизни. Но без фанатизма - для начала нужно чтобы были примитивные принципы поведения, а уже дальше буду расширять.

Итак, вашему вниманию представляю базовый черновик описания логики поведения НПС.

Уже приступил к реализации серверного кода :) Тут еще очень много добавится, но для общего понимания задуманного, набросал пока так.
Уже приступил к реализации серверного кода :) Тут еще очень много добавится, но для общего понимания задуманного, набросал пока так.

В целом можно представить что у мозга бота есть несколько уровней ответственности (как несколько отделов нервной системы), и в этом всём есть некая иерархия. Одни уровни отвечают за принятие решений и расчётов, другие -за выполнение непосредственно действий. Можно представить полный цикл алгоритма в виде ситуации, когда вы решили выпить кофе одним солнечным утром :)

Спустимся сразу в самый низ иерархии, т.к. при разработке я обычно иду от конца к началу.

Действие.

Название говорит само за себя - это непосредственно взаимодействие с миром, которое вообще может выполнить любой корабль. Поднять предмет, следовать к точке, совершить варп или атаковать корабль - всё это действия. Подойти к столу, взять кружку в руки, выпить кофе - это тоже отдельные действия.

Задача.

Это сущность которая формирует цепочку действий. В задаче выпить кофе нам необходимо проконтролировать все условия для выполнения конечного действия, и для этого мы генерируем цепочку действий: подойти к столу -> взять кружку->выпить кофе. Так же и наши НПС: например, задачу "майнить астероид" можно разделить на действия - лететь к цели -> копать->собрать руду->задача выполнена.

Роль.

Это почти самый высокий уровень, который определяет какого рода задачи вообще стоят перед НПС. Это может быть роль майнера, торговца, пирата-одиночки или пирата - босса, или пирата-пешки (если он под руководством босса). Так же от роли зависит какой сектор НПС выберет для реализации своих целей, да и постановка самой цели - это и есть роль.

Пират-одиночка, к примеру, будет двигаться от своей станции на N секторов в сторону, затем искать себе цель и пытаться её ограбить. При отсутствии целей он будет выполнять задачу "лутать всё вокруг", а если его сильно подбили - вместо атаки цели он выберет "вернуться на базу любой ценой". (Возможно задействовав WARP).

Командир.

Тут всё просто - у любого НПС могут быть в подчинении другие НПС и командир может переопределить им роль. Таким образом будут работать, к примеру, группы пиратов во главе с боссом-бомбардировщиком. Такая группа может, к примеру, скоординировать атаку станции, или нападение на игрока-одиночку.

Во всём этом безобразии я преследую одну важную цель: разделить всё поведение НПС на очень маленькие сущности, каждую из которых можно вынести за скобки и скомбинировать с другим набором частей. Таким образом я собираюсь прийти к гибкой системе, которая позволит с лёгкостью создавать новые и новые типы НПС, возможно даже без написания доп. кода (через редактор ролей). Уверен, многие игроки хотели бы себе дрона-майнера, или торговца-снабженца, который будет доставлять нужное сырьё на станцию корпорации.

Распорядок дня НПС в 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

66
16 комментариев

А можно будет устроиться работать на борт корабля под командование НПЦ/игрока?

Пока не планируется

На чём пишете код для backend? И зачем он вам, интересно?

На java , игра то онлайн)