Comments 6
Если вы хотите сделать свой сетевой сервер, применяется правило такое же, как с желанием сделать игровой движок: не делайте этого! Скорее всего, с первой попытки у вас получится неповоротливый монстр, с кучей ошибок. Нужны годы, чтобы приблизиться по проработке и возможностям к какому-нибудь Photon Game Engine (или к Unreal Engine в случае 3д движка). И даже через годы вы все-равно будете находить ошибки из-за собственной реализации movement prediction или лаги из-за потери порядка udp пакетов. Массовое тестирование на сотнях проектов и десятках тысяч игроков вам тоже будет не доступно в большинстве случаев.
P.S. Потратил 15 лет жизни на собственный серверный и игровой движки.
P.S. Потратил 15 лет жизни на собственный серверный и игровой движки.
Есть игры, например Hearthstone, где этот хвалёный Photon и является неповоротливым монстром.
Конечно, использовать любой инструмент можно так, что выйдет какашка. Да и инструмент может быть не подходящий. Но опрометчиво говорить «да ну, не буду тянуть чужую либу, сделаю два сокета, проброшу по-быстрому сериализацию, прикручу шифрование и будет отличный сервер». Не будет. И в худшем случае вы это осознаете в продакшене.
Есть некоторые исключения, есть люди с огромным опытом, есть задачи, под которые ну никак не подойдет существующий продукт. А есть и грустные истории вроде онлайна Fallout 76 в 24 человека на сервер, который преподносится как игровая фича.
Есть некоторые исключения, есть люди с огромным опытом, есть задачи, под которые ну никак не подойдет существующий продукт. А есть и грустные истории вроде онлайна Fallout 76 в 24 человека на сервер, который преподносится как игровая фича.
Ну есть же такая штука, как хобби. Мне было очень интересно писать свой 3Д движок, я получил массу удовольствия. Но согласен с вами, если вы делаете продукт для пользователей, то чем меньше велосипедов — тем лучше!
Отличный перевод, но вот это, наверное, стоит поправить: "применялся во множестве областей применения"
И все же как TCP так и UDP остается протоколом, который работает с потоком байтов. Как транспортный протокол UDP гибкий настолько, что попытка на нем что то реализировать это стрельба по ногам в разных вариациях. Чего только стоит разделить поток байтов на сообщения. В то же время SCTP мог бы спростить многим работу — потому что он может работать в разных режимах (Гарантированая /негарантированая доставка, гарантированый или не гарантированый порядок поступления сообщений), вроде бы он идеален, но разработчики OS не спешат его включать в свои дистрибутивы, а прошло уже почти 20 лет как он увидел мир. По факту, он уже много лет успешно используется в мобильных сетях как транспорт для SIGTRAN, где гоняется как голос, так и служебная информация.
Sign up to leave a comment.
О сетевой модели в играх для начинающих