Как правильно отключить TCP соединение чтобы сервер не спами

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Re: Как правильно отключить TCP соединение чтобы сервер не спами

Сообщение Saltant 04 дек 2019, 11:27

anomal3 писал(а):p.s. про 80 мс почитал :))
Но сразу в голову идёт игра от 1C (Caliber)
Задержка в 7-14 мс, как говорили разработчики, весь процесс на сервере, клиент просто отображает данные

Так оно и должно быть в онлайновой игре, всё обрабатывается на сервере а клиент отображает, чтоб было более плавно и быстро - клиент должен предугадывать действия, т.е начинать двигать объект не дожидаясь ответа от сервера о движении, т.е клиент посылает "в будущее", серверные тики когда доходят до того момента, проверяют всё ли верно, если не верно отошлют клиенту что пошло что-то не так, клиент откатится, а если всё ок то значит ок. Короче если делать реалтайм где нужна точная и быстрая реакция сервера и клиента, то такое реализуется сложно, я до сих пор не осилил и просто забросил это дело, мне оно не сильно заходит, ну а более медленные онлайн игры делать можно не особо заморачиваясь с тиками сервера, выстрелами в будущее, отмотки времени назад и т.п паттернами.
Вообще с каждым днем я все больше убеждаюсь что инди геймдев он вообще не для всех на самом деле, нужно уметь прям в много всего сразу чтоб успешно делать что то крутое, для себя я сделал выводы если и делать что то, то конечно качественно и с командой разработчиков, художников и аниматоров, в соло делать крутые штуки могут далеко не все, так что я всё больше и больше отхожу в сторону бизнес разработки а не геймдева хотя бы потому, что и кушать что то надо.
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2236
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Re: Как правильно отключить TCP соединение чтобы сервер не спами

Сообщение Tolking 04 дек 2019, 12:28

Ведь таким образом крайне не удобно работать.

Каким таким?

Я, например, обычно работаю в 3 типа потоков. Один тип принимает сообщения, другой тип обрабатывает принятые сообщения, третий отправляет сообщения... В чем проблема обрабатывать сообщения в основном потоке? Мне удобно...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Как правильно отключить TCP соединение чтобы сервер не спами

Сообщение Saltant 04 дек 2019, 12:36

Tolking писал(а):
Ведь таким образом крайне не удобно работать.

Мне удобно...

А вот людям пришедшим в геймдев не из геймдева не много рвёт крышу от такой новости)) У меня бомбило вначале тоже, а потом вроде более менее привык.
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2236
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Re: Как правильно отключить TCP соединение чтобы сервер не спами

Сообщение IDoNotExist 04 дек 2019, 14:25

Saltant писал(а):А вот людям пришедшим в геймдев не из геймдева не много рвёт крышу от такой новости)) У меня бомбило вначале тоже, а потом вроде более менее привык.

Для того кто понимает суть в многопоточном программировании это вообще не проблема. Менять объект одновременно из разных потоков нельзя и всё тут, даже если это не Unity объект и он у вас не кидает исключения этого тоже делать нельзя, а синхронизировать каждый объект через lock - это зло, курите что такое Deadlock, да и семафоры тоже так себе идея, самый надёжный вариант - обмениваться между потоками сообщениями через защищенную очередь и модифицировать небезопасные объекты только в одном конкретном потоке.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Как правильно отключить TCP соединение чтобы сервер не спами

Сообщение Jarico 04 дек 2019, 17:27

Saltant писал(а):мне оно не сильно заходит, ну а более медленные онлайн игры делать можно не особо заморачиваясь с тиками сервера, выстрелами в будущее, отмотки времени назад и т.п паттернами.


В Source Engine это называется лагокомпенсация, при стрельбе игроки с пингом 200-300 мс могут убить других игроков но в пределах 20-30 тиков (0.25-0.5 мс), на каждый тик создаются копии сущностей игроков (копии хранят состояния анимации игроков, положение хитбоксов и прочую инфу) поэтому сейчас в CS:GO и играх на Source Engine полно читов которые могут откатывать состояния давая возможность убивать игроков даже если они уже зашли 2-3 секунды назад за непробиваемое препятствие.

Я пытался воспроизвести аналогичную систему в своих проектах но т.к. в юнити задействуется 1 поток из коробки (без использования ECS и Jobs) это будет выглядеть очень не красиво (микрофризы и т.д.)... Крч без ECS и многопоточности этого не достичь....
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Пред.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 29