1.В ассет-сторе вроде нет нормальных(может и есть,но я не видел), так что лучше писать свой.
2.Смотря как реализовать это.
3.Как это может произойти,если сервер проверят ввод пользователя и если неверно,то не применяет его.
Вот простой пример:
Клиент отправляет ввод(номер пакета, позиция, ротация и т.д) и сохраняет в буфер
Сервер получает и добавляет в буфер
Сервер каждый тик обрабатывает все вводы,которые записал в буфер,затем отправляет обновление(позиция,ротация игроков) клиентам
Клиент получает обновление, смотрит в своем буфере данное обновление,и если оно там есть,то сверяет его с полученным(верна ли позиция,ротация и т.д).Если что то НЕ так,то клиент удаляет все из буфера и применяет обновление,которое получил от сервера.
2.Смотря как реализовать это.
3.Как это может произойти,если сервер проверят ввод пользователя и если неверно,то не применяет его.
Вот простой пример:
Клиент отправляет ввод(номер пакета, позиция, ротация и т.д) и сохраняет в буфер
Сервер получает и добавляет в буфер
Сервер каждый тик обрабатывает все вводы,которые записал в буфер,затем отправляет обновление(позиция,ротация игроков) клиентам
Клиент получает обновление, смотрит в своем буфере данное обновление,и если оно там есть,то сверяет его с полученным(верна ли позиция,ротация и т.д).Если что то НЕ так,то клиент удаляет все из буфера и применяет обновление,которое получил от сервера.