Избавляем игроков от одиночества в single-player rpg
Многие любят играть ко-оп игры. Ко-оп я делать не умею но чтобы игрок не чувствовал себя одиноким, добавил возможность звать с собой на некоторые миссии NPC напарников.
Изначально в игре были NPC которые нападают:
- как только видят игрока
- когда видят что игрок нарушает, нападает на мирных жителей, ворует (стража и хозяева дома)
- нападают в ответ
Как я говорил в одном из предыдущих постов в игре будут фракции. Некоторые фракции дружат между собой, иные враждуют. Дружелюбные не реагируют друг на друга. А враждебные сразу вступают в схватку. Игрок сможет менять фракции в целях социального стелса. Ну или вообще вдруг он решит бросить гильдию курьеров потому-что идеалы гильдии магов (условно) ему ближе.
Далее я решил что надо добавить "Сюжетных героев". Идея в том что их можно будет брать с собой на задания, они будут двигать сюжет. Но если игрок захочет он сможет с ними подраться, тем самым нарушая отношения, приводя к новым развилкам истории, заканчивая историю некоторых NPC.
Сюжетные NPC имеют порог ударов которые они игнорируют от игрока. Если его превысить - всё, конец вашей дружбы. Думаю надо добавить систему позволяющую восстановить отношения, по типу очищения грехов из условного Dark Souls. Но пока я не придумал.
Когда сюжетные NPC выбраны в качестве компаньонов для задания они игнорируют входящий урон от игрока. Чтобы случайно в пылу сражения не испортить отношений с NPC. Помощники ходят рядом с игроком и не атакуют автоматически никого пока:
- не атаковали их или игрока
- игрок не начал атаковать кого-либо
Ниже на видео демонстрация. Синий - сюжетный персонаж. Красные - NPC враги. В капюшоне - игрок.
Перед каждым действием (блок, одиночная атака, комбо, обход) все NPC думают N секунд. Поэтому может показаться что иногда тормозят. Будем балансировать. Ну и надо сделать им действие уклонение от атак.
Пока что настроил так что если игрок отходить слишком далеко то NPC просто телепортируется к игроку. Держу систему простой на подобии фантомов из Dark Souls. Позже может надумаю добавить команды для управления ими, если в геймдизайне игры обнаружится необходимость.