Вий
> Ты предлагаешь делать нетрадиционным способом, который плохо подходит для ММО и
> хорошо подходит для RTS.
Иначе ты не сможешь сделать 1000 игроков в одном месте. Сервер просто сдохнет от нагрузки на сеть.
Вий
> Обсуждать особенности применения такого способа мне не интересно, потому что он
> вообще не подходит например если игроков не 1000 а 10000
Если ты хочешь сделать 10000 игроков в одном мире без инстансов как в DU, то конечно так просто не выйдет, прийдётся посложнее чем тупо инпутами обмениваться.
Вий
> да и на 1000 будут постоянные проблемы из-за потери пакетов и медленного
> сетевого подключения у игроков.
Факторка рабтает. Никто не мешает послать не 1 пакет, а 2. И потеря пакетов происходит редко.
Да и вообще, это самый эффективный способ, если у юзера не хватит на него мощности сети(а юзеру достаточно 100 кб/сек на 1000 игроков), то значит что это не для него игра.
Mephistopheles
> Это пока не поиграешь каким ни будь не адекватным билдом на основе CoC механики
> или flicker strike
Пое вообще странная игра. Синглплеер игра по факту, а требует сети и лагает от соединения. На какие деньги содержатся игроки, учитывая что игра бесплатная, не особо понятно.
Der FlugSimulator
> ... даёт ссылку на РТС движок )))
Уж извини, сорцы факторки никто пока не выложил.
Der FlugSimulator
> Разные тайминги, шаги интеграции, реализация float на разных системах.
Что за чушь? Как по твоему тогда факторка работает? Ты вообше вкурсе, что операции с float полностью детерминированные?
Вий
> просто нужен софтверный физический движок
А чё, комуто хардварный завезли?
Вий
> целочисленной эмуляцией флота
И с обычным float прокатит. Я меня же работало, даи в факторке тоже, а там вообще всё на double.
Вий
> Все зависит от списка платформ, компиляторов
Это если ты для какихнибуть эльбрусов пилишь. А для обычных игр это не имеет значения. Да и вообще, можно же float с помощью инта сделать. Илиже не заниматься идиотизмом и поставить std::ratio так как float для игр не нужен.
samrrr
> На какие деньги содержатся игроки, учитывая что игра бесплатная, не особо
> понятно.
скинчики же, крайне ходовая и прибыльная херня.
samrrr
> И с обычным float прокатит.
Да и вообще есть мнение что в флоаты не нужны в сетевых протоколах таких игр как диабло.
А темболее у Вий игра спрайтовая, там вообще похрену на точность выше целочисленной:)
samrrr
>
> Пое вообще странная игра. Синглплеер игра по факту, а требует сети и лагает от
> соединения. На какие деньги содержатся игроки, учитывая что игра бесплатная, не
> особо понятно.
Донат и реклама обычно в таком случае используется .
Бесплатно обычно только хуй и то только на бумаге
Внезапно от создателей Альбиона был доклад о создании сетевой архитектуры.
https://www.youtube.com/watch?v=x_4Y2-B-THo
samrrr
> Уж извини, сорцы факторки никто пока не выложил.
> Как по твоему тогда факторка работает?
Это ты скажи ))). Ты ведь утверждал, что там только инпуты )))
samrrr
> Ты вообше вкурсе, что операции с float полностью детерминированные?
Только на одной машине в ряде случаев.
Про таймеры я вроде говорил.
Der FlugSimulator
> Это ты скажи ))). Ты ведь утверждал, что там только инпуты )))
Открой сорцы спринга да посмотри. В фактоке тоже самое.
Der FlugSimulator
> Только на одной машине в ряде случаев.
> Про таймеры я вроде говорил.
Чушь. Мне достаточно просто на серв фактокки зайти, чтобы понять полную безосновательность твоего бредового заявления.
samrrr
> Чушь. Мне достаточно просто на серв фактокки зайти, чтобы понять полную безосновательность твоего бредового заявления.
Если никогда серьезно с плавучкой не работал, так и говори. Плавучка детерминистична только при компиляции идентичным компилятором с идентичным набором флагов под идентичную архитектуру. Во всех остальных случаях гарантий нет. Одна и та же функция может давать разный результат в разных местах использования, один и тот же исполняемый файл может давать разный результат на разных процессорах. Про то, что при смене компилятора все плывет, я и не говорю. К счастью, в контексте MMORPG (как, впрочем, и факторки) никакого смысла использовать плавучку нет.
}:+()___ [Smile]
> Если никогда серьезно с плавучкой не работал, так и говори.
Это ты серьёзно не работал с плавучкой и поленился даже читать тред, так как пруфы того, что метод рабочий, я предоставил.
В виде ртс движка и ещё одной популярной игры, которые работают на принципах пересылки только инпутов игрока. И работают успешно.
}:+()___ [Smile]
> Плавучка детерминистична только при компиляции идентичным компилятором с
> идентичным набором флагов под идентичную архитектуру.
А ты чё, собираешься компилить разными компиляторами с разными флагами под разные архитектуры? Мазохист чтоли?
Вон факторка есть на 3 основных архитектурах осях.
}:+()___ [Smile]
> Одна и та же функция может давать разный результат в разных местах
> использования
Байки пошли. Такие сюрпрайзы бывают только если ты спецом отрёкся от стандарта флоата в виде -ffast-math Ну или какой говнокомпилятор от интела взял.
samrrr
> Вон факторка есть на 3 основных архитектурах.
Это каких?
samrrr
> пруфы
пруфов того, что в факторке все на даблах, как-то не наблюдалось.
Вий
> Это каких?
Не архитектур а осей. Архитектура то одна x64
kkolyan
> пруфов того, что в факторке все на даблах, как-то не наблюдалось.
Скачай да посмотри. Половина кода то открыта.
samrrr
> Это ты серьёзно не работал с плавучкой и поленился даже читать тред, так как пруфы того, что метод рабочий, я предоставил.
Это не пруф. То, что набором костылей можно добиться стабильности плавучки, я и не отрицаю (и до факторки так делали, даже презентация от кого-то была). Вот только в обычных условиях код с плавучкой таким свойством не обладает.
> Такие сюрпрайзы бывают только если ты спецом отрёкся от стандарта флоата в виде -ffast-math
Даже тривиальная функция
double test(double a, double b, double c) { return a * b + c; }
выдаст разный результат на архитектурах с FMA и без, без какого-либо -ffast-math. И это сейчас с SSE еще все просто, вот во времена x87 компилятор промежуточные результаты хранил в регистрах повышенной битности.
}:+()___ [Smile]
> выдаст разный результат на архитектурах с FMA и без,
Пруфы будут? Или только безосновательные заявления? Счего вдруг включение simd изменит результат операции? Жду демонстрационного проекта на винду, или в експлорере.
}:+()___ [Smile]
> То, что набором костылей
Только вот твой же пример, даже теоретически, чтобы иметь различный результат, прийдётся врубить simd. То-есть ты берёшь какую-то экзотическую конфигурацию флагов, и начинаешь заявлять, что по разному будет работать.
Зря вы нападаете на вариант с отправкой инпута. Надо как-то выкручиваться, этот вариант можно и нужно рассматривать. У него свои проблемы, но может быть их удастся решить.
А про плавающую точку... Производителей железа никто не заставляет пользоваться тем стандартом, но они пользуются. Зачем переделывать хорошо сделанное... Найти комп, который ему не соответствует, сегодня трудно, но лет 15-20 назад такие были.
Чтобы достичь эффекта, инпут надо направлять не только на сервер, но и с сервера рассылать всем в таком виде. Узкое место - рассылка с сервера. Моделирование же производить на каждом клиенте, за всех участников. Потянут ли клиентские машинки, вопрос.
И с лагом что делать? Сеть не быстрая, если не все клиенты в одной локалке. К тому же, лаг у всех разный.
Это не единственный вариант для сбивания квадратичной зависимости. Можно рассмотреть использование мультикастов, к примеру, или множества серверов доставки, с региональным распределением, или p2p связь.
В любом случае, все это высший пилотаж, не для начинающего разработчика. И инструментов готовых для этого не найдете.