Войти
ПроектыФорумОцените

Разработка open-source игры в прямом эфире (4 стр)

Страницы: 1 2 3 4 5 Следующая »
#45
11:48, 10 июня 2021

GhostCoderPPetrov ну ты просто так написал что кажется что будешь придерживаться рекомендаций автора статьи.


#46
11:53, 10 июня 2021

std::cin

Конечно, велико искушение использовать UDP для передачи данных пользовательского ввода и состояния мира, а TCP — для тех данных, которые должны быть гарантированно доставлены. Возможно, вы даже думаете, что можно сделать несколько “потоков” команд — например, один для загрузки уровней, другой — для команд AI. Вы думаете: “Мне не нужно, чтобы команды AI ждали в очереди, если потеряется пакет с данными для загрузки уровня, ведь они же совершенно не связаны!”. В данном случае вы правы, и вы можете решить создать по TCP сокету на каждый поток команд.

На первый взгляд, это отличная идея. Но проблема в том, что раз TCP и UDP оба работают поверх IP, пакеты обоих протоколов будут влиять друг на друга — уже на уровне IP. Как конкретно будет проявляться это влияние — очень сложный вопрос, и связан он с механизмами обеспечения надежности в TCP. Но, в любом случае, знайте, что использование TCP обычно приводит к увеличению потерь UDP пакетов.

#47
(Правка: 12:20) 12:14, 10 июня 2021

GhostCoderPPetrov
конкретно с авторизацией эти аргументы не работают.  Сервер авторизации вполне может быть отдельной сущностью и даже висеть на другом IP. Никакого пересечения трафика нет - сначала человек авторизуется, потом начинает обмен по UDP с игровым сервером.
Ну и да, видео не смотрел но передавать пароль по UDP в открытом виде полное ламерство. Либо добавлять туда слой шифрования (современные алгоритмы шифрования довольно шустрые), либо таки брать https.

----
Ну и да, протокол надёжной доставки поверх UDP в любом случае придётся делать, например для стрельбы. Если пакет с позицией потерялся то будет минирывок, за счёт интерполяции скорее всего незаметный, а вот если пользователь стрельнул или нажал перезарядку то он ожидает что действие произойдёт, а не "ничего страшного, нажмите ещё раз". Но надёжный протокол поверх UDP сделать не так сложно, и скорее всего он будет эффективнее TCP.

#48
(Правка: 12:25) 12:22, 10 июня 2021

GhostCoderPPetrov
Прочитай лучше оригинал статьи
https://www.gafferongames.com/post/udp_vs_tcp/

А то на хабре не донесли пару ключевых моментов.

kipar
> Но надёжный протокол поверх UDP сделать не так сложно, и скорее всего он будет
> эффективнее TCP.
те хочешь сказать что есть люди которые в состоянии написать TCP поверх UDP, лучше чем это сделали в TCP поверх IP на аппаратном уровне?

#49
12:25, 10 июня 2021

kipar
в данный момент - сервер авторизации выполнен на тот же самом сервере, что и основном игровой.

а вообще - сейчас игра не в том состоянии чтобы заниматься тюнигом процесса логина.
и вместо нормальной авторизации сейчас там считай заглушка.

это все до поры до времени, потому что сейчас надо реализовать и отладить основную логику игры - а процесс авторизации не в фокусе внимания. поэтому просто есть какой-то намек на него, не более. в дальнейшем, на определенном этапе, я займусь авторизацией, может свое шифрование добавлю, может выделю отдельный сервер авторизации и перейду для этого на https.

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

#50
12:34, 10 июня 2021

GhostCoderPPetrov
> я вообще не понимаю чего вытак уцепились за эту авторизацию :)
этож классика - докопаться до мелочей:)

#51
12:40, 10 июня 2021

GhostCoderPPetrov
> я вообще не понимаю чего вытак уцепились за эту авторизацию :)
Ну ты так много времени тратишь на нее на видосах.

#52
15:51, 10 июня 2021

Mephistopheles
> те хочешь сказать что есть люди которые в состоянии написать TCP поверх UDP,
> лучше чем это сделали в TCP поверх IP на аппаратном уровне?
в процитированной тобой статье об этом и говорится.
https://www.gafferongames.com/post/reliability_ordering_and_conge… nce_over_udp/

#53
17:02, 10 июня 2021

kipar
> в процитированной тобой статье об этом и говорится.
Приводил я другую статью, но это не важно. В статье что ты скинул говорится про то как это сделать в принципе, но там ни тестов, ни замеров. Так что лучше это или хуже нативной реализации TCP из статей не понятно.

Вообще если внимательно прочитать статьи автора, то он топит за использования только UDP для геймплея. Что в общем никто не будет оспаривать. А вот юзать UDP для всего - глупость. Так же он не против если будет обмен данными по TCP если это не геймплей

#54
17:26, 10 июня 2021

Mephistopheles
В геймплее все равно нужна гарантированная доставка (пакетов про то что игрок нажал перезарядку и подобных), соответственно её по UDP все равно придётся делать, о чем я и говорю.
  А так да, авторизацию сам автор рекомендует делать по htttps на отдельном сервере, например для защиты от ddos. Но для прототипа без авторизации можно и обойтись.

#55
17:39, 10 июня 2021

kipar
> соответственно её по UDP все равно придётся делать, о чем я и говорю.
Если выбирать из смешивания протоколов и надстройкой над UDP, то второе проще в реализации, а будет ли это быстрее работать - хз. Я видел игры и на TCP и в целом оно норм работало.

#56
18:23, 10 июня 2021

Mephistopheles
Ну да, и на чистом TCP делают и работает. Поэтому не факт что скорость работы вообще важна - может мощность сервера будет ограничивающим фактором или то сколько моделек на клиенте успеет нарисоваться. А если не видно разницы - зачем платить больше.

Но если все-таки ставить вопрос о скорости - ну, было бы интересно сравнить. Протокол который переотправляет все данные при потере пакета но при этом оптимизированный на железном уровне против протокола который отсылает только то что потерялось, но при этом поверх UDP.

#57
(Правка: 18:43) 18:38, 10 июня 2021

kipar
> Но если все-таки ставить вопрос о скорости - ну, было бы интересно сравнить.
и смеха ради еще вебсокеты с/без ssl добавить для сравнения

Если выпадет свободный день и желание проверить не угаснет, то напишу тест:) Если меня ктото не опередит

kipar
> Поэтому не факт что скорость работы вообще важна - может мощность сервера будет
> ограничивающим фактором
По моему не большому опыту(расширял сервер мморпг, на tcp кстати) ботлнек был в 99% в базе.

#58
3:57, 11 июня 2021

Когда новый стрим?

#59
8:44, 11 июня 2021

std::cin
сегодня вечером

Страницы: 1 2 3 4 5 Следующая »
ПроектыФорумОцените