- 236
- 4
- 22
Добрый вечер всем. Хотел бы спросить, как майнкрафт выполняет передачу с сервера клиентам данные о надетой броне и предмете в руке игрокам? У меня есть мод, где на сервер-сайде игроку "привязаны" 4 айтемстака. На клиенте их нужно рендить, на подобие брони. Ясное дело, что мне нужно как-то передавать айтемстаки клиентам с сервера. Думаю над этим 2ой день, идей много.. Но нужно сделать, чтобы не было нагрузки.
В 1 моде видел такую систему: Клиент послал пакет-запрос серверу (внутри ник игрока) - сервак принял пакет, нашёл по нику игрока, получил эти айтемстаки и отправил пакетом тому, кто запросил. Клиент же у себя имеет мапу "Ник игрока: его содержимое" и пока содержимое null + игрок видит игрока в камере обзора - идёт спам пакетом серверу с запросом. В принцепе варик рабочий, но ужасно нагрузочный, особенно если учесть то, что читами пакеты можно массово спамить - отличная "дыра" для ддоса сервака...
Потом пришла идея при входе игрока послать всем игрокам на сервере пакет с данными игрока, который вошёл, а вошедшему прислать пакеты с данными от других игроков. В принцепе тут нет пакета-запроса, но при частом релоге игроков будет провисать сервак при большом онлайне....
Затем на других форумах нашёл такую идею: Каждый тик игрока искать игроков в радиусе от игрока и хранить в мапе флажок, нужно ли слать пакет данных и если нужно - шлётся. Это очень оптимальный вариант, но из-за ежетикового поиска игроков в радиусе - этот способ становится самым плохим, ибо нагрузка будет дикой.
По этому я пришёл сюда спросить, как же майнкрафт выполняет такого рода синхронизацию для рендера к примеру брони игрока. Возможно у самого майна есть оптимальный способ синхронизации...
В 1 моде видел такую систему: Клиент послал пакет-запрос серверу (внутри ник игрока) - сервак принял пакет, нашёл по нику игрока, получил эти айтемстаки и отправил пакетом тому, кто запросил. Клиент же у себя имеет мапу "Ник игрока: его содержимое" и пока содержимое null + игрок видит игрока в камере обзора - идёт спам пакетом серверу с запросом. В принцепе варик рабочий, но ужасно нагрузочный, особенно если учесть то, что читами пакеты можно массово спамить - отличная "дыра" для ддоса сервака...
Потом пришла идея при входе игрока послать всем игрокам на сервере пакет с данными игрока, который вошёл, а вошедшему прислать пакеты с данными от других игроков. В принцепе тут нет пакета-запроса, но при частом релоге игроков будет провисать сервак при большом онлайне....
Затем на других форумах нашёл такую идею: Каждый тик игрока искать игроков в радиусе от игрока и хранить в мапе флажок, нужно ли слать пакет данных и если нужно - шлётся. Это очень оптимальный вариант, но из-за ежетикового поиска игроков в радиусе - этот способ становится самым плохим, ибо нагрузка будет дикой.
По этому я пришёл сюда спросить, как же майнкрафт выполняет такого рода синхронизацию для рендера к примеру брони игрока. Возможно у самого майна есть оптимальный способ синхронизации...

