Snusmumriken
Один удар - и хедшот всем на сервере
fgntfg
Если все хосты читеры, то они играют в мод
fgntfg
всё просто
Saphire
Эм
Snusmumriken
Если все хосты читеры, то они играют в мод
А если только один - то всем скучно )))
Saphire
В случае с локстепом можно читерить сколько хочешь... Проблема в том, что другие игроки (точнее не они, а их игры) заметят, что случился рассинхрон, и просто кикнут читера из-за большого рассинхрона
Saphire
Вот и всё
Snusmumriken
Блин, слишком много умных слов. Дай определение нормальное, чтобы никаких недомолвок. Я не понимаю о чём ты говоришь.
fgntfg
А если только один - то всем скучно )))
Если все хосты одновременно общитывают данные и результат общёта для одного хоста отличается - то результат отбрасывается.
Snusmumriken
Тратить ресурсы на сравнение? Как определять, кто прав а кто нет?
Saphire
Блин, слишком много умных слов. Дай определение нормальное, чтобы никаких недомолвок. Я не понимаю о чём ты говоришь.
Если кто-то нелегально пытается модифицировать игру - он это легко сделает. Но при игре с людьми на модифицированных клиентах его просто будет выкидывать игра сама
fgntfg
У тебя 2 ядра и 2 гига.
Saphire
Если кто-то от него отличается - вылетает
fgntfg
О, даже не так
Snusmumriken
кого больше, тот и прав
Незначительные различия будут везде из-за ошибок округления.
fgntfg
можно проще.
Saphire
Даже если это просто баг или не одинаковые вычисления на разных клиентах
fgntfg
Можно перед началом раунда провести синхронизацию. Тоесть по каким-то формулам провести тесты и сравнить результаты.
fgntfg
А потом всё считать локально
Snusmumriken
Ах да, ребят, вы в курсе, что в сетевых играх, миры каждого игрока различаются? Каждый живёт в "своём" времени, их вообще невозможно синхронизировать.
Saphire
... в который раз мы всё говорим об одном и том же
fgntfg
МЫ - БРАТЬЯ
Snusmumriken
Не а ))) На это уйдёт куча времени.
Snusmumriken
Пинг - 5мс в локалке. Уже не получится.
Snusmumriken
Так, на секунду, все серверы останавливаются для синхронизации
Snusmumriken
Каждые десять секунд )))
Snusmumriken
Очень интересно
Saphire
Блин, дай мне найти эту ссылку
Saphire
Там все идеально показано, именно по этому дизайну сети в игре
Snusmumriken
Я уже дал
fgntfg
Так, на секунду, все серверы останавливаются для синхронизации
Можно сделать через оверхед над сетевым протоколом. И не останавливаться
Saphire
Можно сделать через оверхед над сетевым протоколом. И не останавливаться
Так и делают. Просто синхронизируют пару тройку параметров, а на стороне клиента стараются предугадать состояние
Snusmumriken
Там все идеально показано, именно по этому дизайну сети в игре
Для медленной игры. Не для быстрой. Предугадывание состояния - это норма.
Saphire
FFS
Saphire
Именно про ЭТО и говорится
fgntfg
А для быстрой - выделенный сервер. Или сервер выбирается в лобби голосованием или на рандом.
fgntfg
Можно, но это слишком. Лучше изобрести свой велосипед
fgntfg
Кстати о велосипедах. Хочу купить один
Snusmumriken
Карочи, там - нормальные срезы и синхронизация с учётом среднего пинга и прочих прелестей.
Saphire
https://gafferongames.com/post/introduction_to_networked_physics/
Saphire
ВОт
Saphire
Карочи, там - нормальные срезы и синхронизация с учётом среднего пинга и прочих прелестей.
https://en.wikipedia.org/wiki/Lockstep_(computing) >Lockstep systems are fault-tolerant computer systems that run the same set of operations at the same time in parallel. "локстеп" системы - ошибкоустойчивые системы, которые выполняют одинаковый набор операций в одно и тоже время параллельно друг от друга Т.е. с минимальным взаимодействием.
Saphire
Там в статье сначала делают простенькую физическую игру. В следующей - добавляют сеть. Именно тот самый lockstep
Saphire
Сначала у игроков либо одинаковое состояние, либо они их синхронизируют
Saphire
(Зависит от игры)
Snusmumriken
Там в статье сначала делают простенькую физическую игру. В следующей - добавляют сеть. Именно тот самый lockstep
Карочи, типа когда и клиент и сервер делают вычисления в одном направлении. Шоб при лаге - противники не падали сквозь стены на стороне клиента. Это всё очевидно. Но вот смотри. Один игрок нанёс другому урон. На какой стороне убавлять ХП или убивать игрока?
Snusmumriken
На какой стороне убивать?
Saphire
В ИДЕАЛЕ, так нафиг не должно быть "нанес урон"
Snusmumriken
У меня - игроки мочат друг друга. Там есть нанесение урона.
Saphire
Должно быть максимум "соприкоснулся", а вообще, "нажал клавишу"
Saphire
У меня - игроки мочат друг друга. Там есть нанесение урона.
Если у тебя протокол основан на "Х нанес урон У в А единиц" - в жопу такое, ибо хакается на раз два.
fgntfg
в идеале ты пишешь что есть пуля по вектору, или по координатам
Snusmumriken
Ноуп.
Хех, прочитай статью, которую я дал ))
Saphire
Это когда уже подтвердили, что пуля ВООБЩЕ должна быть.
Snusmumriken
Прочитай, блин.
Saphire
Сначала один посылает другому - вот я клавишу нажал. Они подтверждают это (у клиента это может уже дальше симулироваться, но в сети оно пока так)
Snusmumriken
Читать кто будет?
Saphire
Читать кто будет?
Где? Я только свою ссылку вижу
Saphire
А, это тонкий клиент с предикцией, и всё.
Saphire
У меня - игроки мочат друг друга. Там есть нанесение урона.
Так же нельзя верить игроку, когда он сообщает о его позиции в мире. Если вы доверитесь, взломанный клиент может сообщить серверу: — Я на (10, 10) А секундой позже: — Я на (20, 10)
Saphire
Это, из той статьи, которые ты скинул.
Snusmumriken
Вот я про то и говорю. Как твоя фигня будет на это реагировать?
Saphire
Вот я про то и говорю. Как твоя фигня будет на это реагировать?
Тем, что НАФИГ такого не будет? Там будет только ввод синхронизироваться.
Snusmumriken
Это от клиентов )) А что синкается от сервера?
Saphire
Это от клиентов )) А что синкается от сервера?
...в локстепе "сервера" как такого нет. Есть клиент, которого назначили "сервером", т.е. по сути он заведует авторизацией и выдает копию своего состояния всем, кто подключается
fgntfg
Надо не координаты посылать. А вектора. Через каждые n тактов - координаты, для сверки. Мало ли.
Snusmumriken
Бля, сапфир, ты упорот?
Saphire
Бля, сапфир, ты упорот?
...а вы? Сервер есть, в виде клиента который соединяет других клиентов с собой и друг с другом.
Saphire
Точнее, даже не так
fgntfg
Нужно валидировать всё