Ну тут мне кажется попроще. Нужно ли нам их синхронизировать по всей карте?Расскажу свою историю, с которой сталкивался сам.
Приготовьте попкорн и содовую, поехали.
Летом этого года я пытался создать систему "живого города" - NPC, которые ездят на машинах, передвигаются и т.д, при этом всём - синхронизированные для всех.
Писал я это для RedAge, так как они меня об этом попросили, но в рассказе это сути не играет.
Начал с тех, что ездят на машине, но на них, собственно, и закончил.
RAGE синхронизирует новых крутых NPC с 1.1 с помощью клиентов (игроков), а не с помощью сервера.
NPC могут что-либо делать только находясь рядом с игроком, без этого - ими невозможно манипулировать, кроме как пары функций с сервера (типа setPosition и т.д).
1 из тех игроков, что находится в определённой зоне рядом с NPC, становится, так сказать, "хостом" для этого NPC и раздаёт информацию о нём всем игрокам в округе. Если этот игрок покидает определённую зону, то "хост" перебрасывается на другого игрока, при чём кто именно станет этим новым "хостом" - неизвестно, по стандарту это определяет RAGE. Если в округе не окажется других игроков - NPC встанет на месте, т.к. теперь им никто не управляет. Так же у каждого клиента есть ограничение на то, сколько одновременно таких NPC он может у себя "хостить" (оптимальная грань была около 30-40 NPC, по словам англоязычного разработчика), поэтому нельзя просто повесить всех NPC на 1 игрока. Назначать какие-либо действия для NPC можно только с помощью клиентской стороны того самого "хостера", нет "хостера" - нет назначений. Всё было бы не так плохо, если бы можно было самому определять, кто будет являться этим самым "хостом". Такая опция, конечно, есть, но реализована достаточно плохо (на тот момент, как сейчас - не знаю). При мануальном переназначении - NPC переставал синхронизироваться с сервером и другими игроками на ~5 секунд. Когда ты один на сервере - всё не так плохо, даже создаётся какая-то видимость живности, но как только происходит взаимодействие с другими игроками - всё по-тихоньку начинает рушиться. К сожалению, у этого не было другого обхода.
Тогда я пообщался с одним англоязычным разработчиком на RAGE, который мне подтвердил, что так и есть, ибо он тоже пытался однажды сделать что-то подобное, но уткнулся в проблемы рейджа, которые не дали закончить идею.
Из архивов так же нашел небольшое видео того, как это было, если кататься в одиночку (но все проблемы начинались как только игроков становилось больше в одной точке):
Эту систему таки включили на серверах редейджа, хоть я и просил этого не делать, ибо я понимал, что выглядит это всё не очень хорошо.
Итог:
Я не говорю, что это невозможно априори. Я рассказал лишь ту историю, что есть в моём опыте и в моей памяти, с которой сталкивался лично я.
Если вдруг кто-то сможет создать что-то рабочее - будет круто.
Суть всяких зомби/дейз модов в том, что ты бегаешь и у тебя где-то рядом с тобой спавнятся зомби. Получается можно просто раскидать по карте эти нпс, а когда игрок забегает уже в стрим при необходимости хостит этого зомби и уже управляет им. А если подзаебаться, то можно как-то в радиусе их спавнить, но тут нужно логику спавна нормально продумать (чтобы это адекватно выглядело), помню в МТА на дейз серверах таким макаром спавнило.
В любом случае зомби сделать будет попроще, чем живой трафик для РП сервера. Тут синхра менее важна, тем более у тебя сразу убирается такой пункт как транспорт, что значительно облегчает задачу (наверное)