• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в RAGE Multiplayer.

    Ошибка: Ваша версия Grand Theft Auto V не поддерживается RAGE Multiplayer.
    ERROR: Your game version is not supported by RAGE Multiplayer.

    Данная ошибка говорит о том, что GTA V обновилась до новой версии (GTA Online тоже). Вам необходимо обновить саму игру в главном меню вашего приложения (Steam / Epic Games / Rockstar Games).
    Если после этого RAGE:MP все равно не работает - вам нужно дождаться выхода патча для самого мультиплеера (обычно это занимает от нескольких часов до нескольких дней).

    Новости и апдейты Rockstar Games - https://www.rockstargames.com/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

CloudV:MP Новый мультиплеер (WIP)

Кликни, чтобы узнать больше!

adada

Мастер
22 Июн 2022
559
177
117
Очередной хлам на базе 5m? - Услышал. Никогда не буду данный мультиплеер в серьез воспринимать для коммерческих целей
Когда чето лучше 5м напишеш звякни, посмотрим что ты там нахуевертил
 
  • Haha
  • RoflanEbalo
Реакции: johndoe и Mikhayloff

saint korn

Участник портала
12 Апр 2022
14
9
63
Мое сочинение на тему как я провел это лето
Физика.
"Физику кто будет считать? Если сервер авторитарный, то он как минимум должен просчитывать весь handling авто и коллизию. Слабо верится, что сервачок на расте всё это воспроизводит."
Сначала отмечу, что это вообще забавно даже видеть, но объясню.
Rage физику на сервере не пересчитывает никто из мп, это движок Rockstar и живет он только внутри игры. Физику своей машины считает клиент-владелец в гта и отдает наружу результат:позицию, скорость, поворот. Сервер это принимает, хранит как авторитетное состояние сущности и раздает остальным, решая кому видно, кто кем владеет и что происходит по условному урону. К слову как раз поэтому попадания резолвятся на сервере с лаг-компенсацией. Сервер перематывает мир к моменту, когда стрелок реально видел у себя и там првоеряет попадание и правдоподобность выстрела.
У остальных условная машина появляется как нативная игровая сущность и ее докручивает уже движок между прислананными состояниями. То есть утверждение что раст не воспроизводит физику - верное, но он ее и не должен. Он держит состояние, владение и правила, а физику считает та же гта что и всегда.
Ужасные паппеты.
Ну это вообще мимо. Игроки на сервере это нативные клоны, владелец симулит своего перса, сервер реавторит, у получателя его рисует родной NetBlender полной физикой и интерполяцией. А паппетов делали только для NPC.
"Взяли форк файвм, губы накрасили и всем показывают ебейшую синхронизацию))))"
Ну, хорошо. Из всего файвма у нас присутствует только его способ инъекции в игру. А вот все остальное - нет. Серверную часть файвм мы не запускаем от слова совсем, ее буквально нет в коде. Вся синхра, неткод, хост и прочее прочее - свой Rust/C# с нуля, реимплементация протокола так, чтобы стоковый клиент коннектился.
Гибрид? Ну, я могу согласиться, но это временно т.к в планах сделать и инъекцию своей. А вот то, что это форк - нет и даже не близко.
Зачем QUIC рядом с UDP?
Игровой провод - свой бинарный поверх обычного UDP, это основной транспорт. QUIC у нас не второй игровой протокол. Транспорт сделан сменным за одной датаграм-абстрацией и quinn там как раз высокопроизводительный бэкэнд. Он дает GSO/GRO(склейка кучи пакетов в один системный вызов ес че) и шардинг сокета по ядрам. На высоком пакет-рейте это снимало нашу проблему - стоимость syscall на каждый пакет.
Полноценный QUIC транспорт(connection-id, миграция соединения при смене сети и NAT) держим под нестабильные сети, но 60гц по нему не гоним, для него очевидно нужны надежные и ненадежные каналы, а не просто потоковая надежность QUIC. Если обобщать, то UDP это провод, а QUIC это либо ускоритель отправки, либо опциональный транспорт под конкретные сети. Надеюсь понятно.
А зачем свой протокол????
На 60 гц ты шлешь состояние сотен сущности каждому игроку. Json это килобайты на сущность, условный protobuf это теги и байт на каждом поле. При таком темпе и высоком населении сущностей это получаются гигабиты и загруженный на сериализацию проц. А хотелось сделать красиво аккуратно и главное максимально оптимизировано. Поэтому мы квантуем каждое поле под нужную нам точность и пакуем битами. Если чуть подробнее, то позиция 16 бит на ось, скорость и поворот меньше, тип 3 бита - одна машина или пешеход итого получаем около 17 байт вместо сотен. Плюсом идут дельты, раз в N тиков полный кадр, а между ними только изменения относительно него, стоячая машина трафик не ест вообще. В общем без собственного пакера наша цель(синхра в толпе и вообще большая толпа в точке) недостижима адекватным количеством ресурсов.
Вообще то!!! стресс тесты это часы без остановки!!!
Ну, это факт, только вот задача была другая. Найти потолок вместимости в нынешнем состоянии, сколько игроков держит нода на играбельной частоте. 45 секунд вполне достаточно чтобы зафиксировать устойчивую точку емкости в каждой конфигурации.

И по заявке Inoi:
А почему сделали так, а не иначе?

Авторитетный сервер.

Сетевой код гта во многом верит клиенту, а оттуда ползут все читы. В том числе и по этой причине мы вынесли правду о мире на сервер. Кто, где, кого видит, кто кому нанес урон решает сервер. А физику по прежнему считает сам клиент, но урон резолвит с лаг-компенсацией, а не принимает на веру. Из минусов - было сложно и дороже по CPU. Но из плюсов - чуть меньше читов и лаг компенсация.
Реавторинг клонов вместо релея.
Самый простой путь - принял пакет от игрока, разослал всем как есть.
Не подошло потому что каждому летит вообще все что есть, трафик и такт убиваются от числа людей в одной зоне. Поэтому сервер под каждого получателя пересобирает свою картину - только реально релевантные ему сущности, с его индексами, в его приоритете. Вышло дороже на такте, но зато это можно резать и очень хорошо оптимизировать( на итерации с оптимизацией получили +127%, а там таких еще оч много). По нашему мнению без этого толпа невозможна в одной точке в адекватном формате как этого хотелось нам.
Интерполяция с буфером а не предсказание
Сущности рисуются с задержкой в 100мс и интерполяцией между присланными состояниями(эрмитовы сплайны по скорости). Экстраполяцию при потере пакетов мы зажали - четверть секунды тянем вперед, дальше держим на месте, чтобы человек сквозь текстуры не улетал. Предсказание оставили только своему персонажу. За счет чего в сумме другие едут плавно, даже при потере пакетов.
Ну и ваще, а раст то вам зачем??
На игровом такте в 60гц нельзя ловить паузы от GC. А он дает непредсказуемые фризы под высокой нагрузкой, а бюджет такта у нас 1/60= 16.67мс. Соответственно Rust дает нам работу с памятью без GC и прочей ерунды, отсюда у нас и ровный такт

Спасибо за прочтение!
 
Последнее редактирование:
  • Durka
Реакции: UchihaMadara

Farko

nc -lvnp 4444
28 Окт 2025
503
114
77
Нам не нужны ваши мультиплееры! У нас есть Farko Launcher!
"High Developer", смотрю, я стал твоей любимой темой. Не думал, что у меня появится такой преданный фанат.
Не знаю, что именно тебя так задело. То, что я написал правду? То, что ты не можешь нормально прокомментировать даже одну строку кода, но уже делаешь свой форк? Или, может, то, что DLC у тебя уж слишком сильно "вдохновлён" NoPixel? А может, мои слова о том, что значки стреляют, а опыта как не было, так и нет?
Честно, не понимаю, в чём проблема, Вермилион, зелёный солдатик. Но, судя по всему, я наступил тебе на больную мозоль, раз ты так часто меня вспоминаешь.
И, кстати, не нужно постоянно полоскать мой Launcher своим ртом. Был бы у тебя опыт и знания давно сделал бы свой и занимался им, а не мной. Пока что складывается впечатление, что твоё главное достижение говорить обо мне вместо того, чтобы работать над собственным проектом.
Ладно, удачи. И лучше займись тем, о чём я тебе уже говорил пользы будет гораздо больше, чем от очередного упоминания моего имени.
 

UchihaMadara

Высший разум
VIP
FrontEnd developer
27 Окт 2020
1,463
574
196
Из всего файвма у нас присутствует только его способ инъекции в игру
У 5м нет инъекции в игру. Он загружает GTA5.exe и выполняет у него EntryPoint. Итого гта выполняется внутри процесса fivem.

Твоя нейронка, что помогает тебе отвечать на все вопросы, не предугадала это, да?
Или щас скажешь, что "инъекция" - ну это общий термин, для валенков обозначил простым термином, а то они не поймут.

Физику своей машины считает клиент-владелец в гта и отдает наружу результат:позицию, скорость, поворот. Сервер это принимает, хранит как авторитетное состояние сущности и раздает остальным, решая кому видно, кто кем владеет и что происходит по условному урону.
Ты же сказал, что сервер - полный авторитет, а клиент - только рисует. Это буквально противоречит.

Из всего файвма у нас присутствует только его способ инъекции в игру.
Чат FiveM и Brand тоже по приколу зацепили. Ну а почему нет? Почему мы должны останавливаться на "инъекции в игру".
В будущем мы сделаем свой чат и свой способ рендерить Brand.
1784807806835.png


Чат же очень сложно сделать. Вот мультиплеер проще сделать. А чат надо у FiveM временно взять. В этом есть логика.
 
Реакции: Inoi и johndoe

saint korn

Участник портала
12 Апр 2022
14
9
63
У 5м нет инъекции в игру. Он загружает GTA5.exe и выполняет у него EntryPoint. Итого гта выполняется внутри процесса fivem.
Я не знаю откуда ты взял эту информацию. Может у тебя есть какой то свой тайный секретный способ о котором знаешь ты? Неизвестно, но поделюсь тем, как это происходит на самом деле в кратце.
Лаунчер вообще не грузит в свой процесс гта как есть. Он сначала порождает копию самого себя отдельным процессом и уже там читает образ игры в память и вручную маппит его поверх собственного модуля - секции, релоки, импорты, заголовки и тд. Под это в бинаре лаунчера зарезервирован пустой кусок памяти по размеру игры, чтобы образ было куда положить.
И только после этого берется точка входа из смапленного образа и вызывается как обычная функция. Это ручной мапинг и селф холовинг, а не загрузил и вызвал EntryPoint
А инъекцией я назвал то, что происходит следом за маппингом. Поменяются импорты игры, накатываются байт патчи и тысячи паттерн хуков. Вот это и есть инъекция, буквальная.
Клиент только рисует в самом начале темы
Тут я выразился обобщенно, не вдаваясь в детали(зачем?), чтобы вводный пост не превратился в лекцию на 10 пролетов.
«Авторитетный сервер» не значит «сервер симулирует все». Это значит, что сервер - единственный источник правды о состоянии: кто чем владеет, кому кого видно, кто кому нанес урон, засчитано ли попадание. А физику своего перса и своей машины считает движок игры на машине владельца, потому что Rage живёт только внутри гта - на сервере его нет и быть не может ни у кого. Итого: клиент симулит своего и рисует чужих, а сервер держит состояние и правила. Противоречия нет - авторитет над состоянием и симуляция физики это разные вещи
Про чат и брендинг
Ну, стоковый чат, брендинг. До чего докапываетесь то? Не понимаю
Мы мультиплеер делаем, нам нужно тестировать то что мы делаем, очевидно же. А чтобы тестировать, нужно чтобы я мог вызвать команду. Чат это решенная задача, лежит готовое. Зачем сидеть и тратить время на переписывание окошка с текстом, пока не доделан неткод? Довольно странная расстановка приоритетов, не находишь? Свое появится тогда, когда это будет актуально.
 

UchihaMadara

Высший разум
VIP
FrontEnd developer
27 Окт 2020
1,463
574
196
У 5м нет инъекции в игру. Он загружает GTA5.exe и выполняет у него EntryPoint. Итого гта выполняется внутри процесса fivem.
Я не знаю откуда ты взял эту информацию. Может у тебя есть какой то свой тайный секретный способ о котором знаешь ты? Неизвестно, но поделюсь тем, как это происходит на самом деле в кратце.
Лаунчер вообще не грузит в свой процесс гта как есть. Он сначала порождает копию самого себя отдельным процессом и уже там читает образ игры в память и вручную маппит его поверх собственного модуля - секции, релоки, импорты, заголовки и тд. Под это в бинаре лаунчера зарезервирован пустой кусок памяти по размеру игры, чтобы образ было куда положить.
И только после этого берется точка входа из смапленного образа и вызывается как обычная функция. Это ручной мапинг и селф холовинг, а не загрузил и вызвал EntryPoint
А инъекцией я назвал то, что происходит следом за маппингом. Поменяются импорты игры, накатываются байт патчи и тысячи паттерн хуков. Вот это и есть инъекция, буквальная.
Клиент только рисует в самом начале темы
Тут я выразился обобщенно, не вдаваясь в детали(зачем?), чтобы вводный пост не превратился в лекцию на 10 пролетов.
«Авторитетный сервер» не значит «сервер симулирует все». Это значит, что сервер - единственный источник правды о состоянии: кто чем владеет, кому кого видно, кто кому нанес урон, засчитано ли попадание. А физику своего перса и своей машины считает движок игры на машине владельца, потому что Rage живёт только внутри гта - на сервере его нет и быть не может ни у кого. Итого: клиент симулит своего и рисует чужих, а сервер держит состояние и правила. Противоречия нет - авторитет над состоянием и симуляция физики это разные вещи
Про чат и брендинг
Ну, стоковый чат, брендинг. До чего докапываетесь то? Не понимаю
Мы мультиплеер делаем, нам нужно тестировать то что мы делаем, очевидно же. А чтобы тестировать, нужно чтобы я мог вызвать команду. Чат это решенная задача, лежит готовое. Зачем сидеть и тратить время на переписывание окошка с текстом, пока не доделан неткод? Довольно странная расстановка приоритетов, не находишь? Свое появится тогда, когда это будет актуально.
Ясно, пошел нахуй
 
  • Haha
Реакции: johndoe

Vermilion

Искусственный Интеллект
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,923
1,214
181
35
"High Developer", смотрю, я стал твоей любимой темой. Не думал, что у меня появится такой преданный фанат.
Не знаю, что именно тебя так задело. То, что я написал правду? То, что ты не можешь нормально прокомментировать даже одну строку кода, но уже делаешь свой форк? Или, может, то, что DLC у тебя уж слишком сильно "вдохновлён" NoPixel? А может, мои слова о том, что значки стреляют, а опыта как не было, так и нет?
Честно, не понимаю, в чём проблема, Вермилион, зелёный солдатик. Но, судя по всему, я наступил тебе на больную мозоль, раз ты так часто меня вспоминаешь.
И, кстати, не нужно постоянно полоскать мой Launcher своим ртом. Был бы у тебя опыт и знания давно сделал бы свой и занимался им, а не мной. Пока что складывается впечатление, что твоё главное достижение говорить обо мне вместо того, чтобы работать над собственным проектом.
Ладно, удачи. И лучше займись тем, о чём я тебе уже говорил пользы будет гораздо больше, чем от очередного упоминания моего имени.
Пиздец ты конечно. Я твой лаунчер пиарю, а ты буксуешь
 

Farko

nc -lvnp 4444
28 Окт 2025
503
114
77
Пиздец ты конечно. Я твой лаунчер пиарю, а ты буксуешь
Только не надо тебе рекламировать мой лаунчер мы уже видели, как ты прорекламировал свой зелёный Rejoin. 😄

Какую версию Nano Banana ты использовал?
Что это за тетрис, почему он не зелёного цвета?
1784819672909.png
 
  • Haha
Реакции: ExZeM

Vermilion

Искусственный Интеллект
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,923
1,214
181
35
Только не надо тебе рекламировать мой лаунчер мы уже видели, как ты прорекламировал свой зелёный Rejoin. 😄

Какую версию Nano Banana ты использовал?
Что это за тетрис, почему он не зелёного цвета?
Посмотреть вложение 27749
Теперь не видать мне плашки High Designer :sad_pepe:
 
  • RoflanEbalo
Реакции: Slash

Farko

nc -lvnp 4444
28 Окт 2025
503
114
77
Теперь не видать мне плашки High Designer :sad_pepe:
А тогда я могу только представить, как были выданы остальные значки. Эх, мой Vermilion…
Подожди, пока и я не напишу я запустил onyx, может, мне тоже прилетит значок High developer :laughing_man:
 

UchihaMadara

Высший разум
VIP
FrontEnd developer
27 Окт 2020
1,463
574
196
Подожди, пока и я не напишу я запустил onyx, может, мне тоже прилетит значок High developer :laughing_man:
Ну кстати да. Плашку примерно за это и выдали. За поделки для оникса. Хотя там чел по голосу село 3 IQ.
 

Vermilion

Искусственный Интеллект
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,923
1,214
181
35

Vermilion

Искусственный Интеллект
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,923
1,214
181
35
@UchihaMadara какая же ты всё таки двуличная, Раиса Васильевна
Screenshot_6.png
 

UchihaMadara

Высший разум
VIP
FrontEnd developer
27 Окт 2020
1,463
574
196
  • Sad
Реакции: Vermilion

Inoi

owner31
Команда форума
Moderator
VIP
15 Окт 2020
5,218
2,736
208
36
Мое сочинение на тему как я провел это лето
Физика.
"Физику кто будет считать? Если сервер авторитарный, то он как минимум должен просчитывать весь handling авто и коллизию. Слабо верится, что сервачок на расте всё это воспроизводит."
Сначала отмечу, что это вообще забавно даже видеть, но объясню.
Rage физику на сервере не пересчитывает никто из мп, это движок Rockstar и живет он только внутри игры. Физику своей машины считает клиент-владелец в гта и отдает наружу результат:позицию, скорость, поворот. Сервер это принимает, хранит как авторитетное состояние сущности и раздает остальным, решая кому видно, кто кем владеет и что происходит по условному урону. К слову как раз поэтому попадания резолвятся на сервере с лаг-компенсацией. Сервер перематывает мир к моменту, когда стрелок реально видел у себя и там првоеряет попадание и правдоподобность выстрела.
У остальных условная машина появляется как нативная игровая сущность и ее докручивает уже движок между прислананными состояниями. То есть утверждение что раст не воспроизводит физику - верное, но он ее и не должен. Он держит состояние, владение и правила, а физику считает та же гта что и всегда.
Ужасные паппеты.
Ну это вообще мимо. Игроки на сервере это нативные клоны, владелец симулит своего перса, сервер реавторит, у получателя его рисует родной NetBlender полной физикой и интерполяцией. А паппетов делали только для NPC.
"Взяли форк файвм, губы накрасили и всем показывают ебейшую синхронизацию))))"
Ну, хорошо. Из всего файвма у нас присутствует только его способ инъекции в игру. А вот все остальное - нет. Серверную часть файвм мы не запускаем от слова совсем, ее буквально нет в коде. Вся синхра, неткод, хост и прочее прочее - свой Rust/C# с нуля, реимплементация протокола так, чтобы стоковый клиент коннектился.
Гибрид? Ну, я могу согласиться, но это временно т.к в планах сделать и инъекцию своей. А вот то, что это форк - нет и даже не близко.
Зачем QUIC рядом с UDP?
Игровой провод - свой бинарный поверх обычного UDP, это основной транспорт. QUIC у нас не второй игровой протокол. Транспорт сделан сменным за одной датаграм-абстрацией и quinn там как раз высокопроизводительный бэкэнд. Он дает GSO/GRO(склейка кучи пакетов в один системный вызов ес че) и шардинг сокета по ядрам. На высоком пакет-рейте это снимало нашу проблему - стоимость syscall на каждый пакет.
Полноценный QUIC транспорт(connection-id, миграция соединения при смене сети и NAT) держим под нестабильные сети, но 60гц по нему не гоним, для него очевидно нужны надежные и ненадежные каналы, а не просто потоковая надежность QUIC. Если обобщать, то UDP это провод, а QUIC это либо ускоритель отправки, либо опциональный транспорт под конкретные сети. Надеюсь понятно.
А зачем свой протокол????
На 60 гц ты шлешь состояние сотен сущности каждому игроку. Json это килобайты на сущность, условный protobuf это теги и байт на каждом поле. При таком темпе и высоком населении сущностей это получаются гигабиты и загруженный на сериализацию проц. А хотелось сделать красиво аккуратно и главное максимально оптимизировано. Поэтому мы квантуем каждое поле под нужную нам точность и пакуем битами. Если чуть подробнее, то позиция 16 бит на ось, скорость и поворот меньше, тип 3 бита - одна машина или пешеход итого получаем около 17 байт вместо сотен. Плюсом идут дельты, раз в N тиков полный кадр, а между ними только изменения относительно него, стоячая машина трафик не ест вообще. В общем без собственного пакера наша цель(синхра в толпе и вообще большая толпа в точке) недостижима адекватным количеством ресурсов.
Вообще то!!! стресс тесты это часы без остановки!!!
Ну, это факт, только вот задача была другая. Найти потолок вместимости в нынешнем состоянии, сколько игроков держит нода на играбельной частоте. 45 секунд вполне достаточно чтобы зафиксировать устойчивую точку емкости в каждой конфигурации.

И по заявке Inoi:
А почему сделали так, а не иначе?

Авторитетный сервер.

Сетевой код гта во многом верит клиенту, а оттуда ползут все читы. В том числе и по этой причине мы вынесли правду о мире на сервер. Кто, где, кого видит, кто кому нанес урон решает сервер. А физику по прежнему считает сам клиент, но урон резолвит с лаг-компенсацией, а не принимает на веру. Из минусов - было сложно и дороже по CPU. Но из плюсов - чуть меньше читов и лаг компенсация.
Реавторинг клонов вместо релея.
Самый простой путь - принял пакет от игрока, разослал всем как есть.
Не подошло потому что каждому летит вообще все что есть, трафик и такт убиваются от числа людей в одной зоне. Поэтому сервер под каждого получателя пересобирает свою картину - только реально релевантные ему сущности, с его индексами, в его приоритете. Вышло дороже на такте, но зато это можно резать и очень хорошо оптимизировать( на итерации с оптимизацией получили +127%, а там таких еще оч много). По нашему мнению без этого толпа невозможна в одной точке в адекватном формате как этого хотелось нам.
Интерполяция с буфером а не предсказание
Сущности рисуются с задержкой в 100мс и интерполяцией между присланными состояниями(эрмитовы сплайны по скорости). Экстраполяцию при потере пакетов мы зажали - четверть секунды тянем вперед, дальше держим на месте, чтобы человек сквозь текстуры не улетал. Предсказание оставили только своему персонажу. За счет чего в сумме другие едут плавно, даже при потере пакетов.
Ну и ваще, а раст то вам зачем??
На игровом такте в 60гц нельзя ловить паузы от GC. А он дает непредсказуемые фризы под высокой нагрузкой, а бюджет такта у нас 1/60= 16.67мс. Соответственно Rust дает нам работу с памятью без GC и прочей ерунды, отсюда у нас и ровный такт

Спасибо за прочтение!
ну это хотя бы больше похоже на какие то пояснения отчасти чем первый пост
 

johndoe

Мастер
BackEnd developer
10 Май 2025
433
188
65
@Inoi запускай новый тред - Мужское Женское 2. Делаем ренейм темы)
 
  • Haha
  • Durka
Реакции: Vermilion и Inoi

Inoi

owner31
Команда форума
Moderator
VIP
15 Окт 2020
5,218
2,736
208
36
Гуру нейронок не выкупил, что все ответы через нейронку были составлены?)))
иче
я не сомневаюсь что там вообще всё через нейронку, и ответы на форуме да тож

но тем не менее уже появились какие то пояснения
ну - одно вместо второго, панимаешь, например
получше

вопросов всё ещё дохуя, но я просто че то устал сегодня
 

Similar threads