• Как написать игровой сервер?

    @Padaboo Автор вопроса
    Сергей: мне сообщество jmonkey тоже сказало про tcp udp и про формат передачи данных valve (counter strike).
  • Как написать игровой сервер?

    @Padaboo Автор вопроса
    Сергей: Понятно, а можете поделиться ссылками про tcp udp в играх что бы лучше понять разницу.
    За счет чего в квейк лаги с 20 игроков? из за скорости обновления?
  • Как написать игровой сервер?

    @Padaboo Автор вопроса
    Сергей: Понятно а про локацию что скажете, разлиновать всю карту по квадратикам, сделать из нее массив. в этот массив поместить игроков. игрокам назначить "радиус видимости" и в радиусе видимости доставлять пакеты?

    Потому что допустим на всей карте 1000 игроков и отправлять большуший серриализованный и зашифрованный пакет [player1,player1000] будет тяжело для самого пакета и тежяло расшифровывать и делать обход на клиенте.
  • Как написать игровой сервер?

    @Padaboo Автор вопроса
    Сергей: "мы на сервере моделируем весь игровой процесс. за единицу времени расчитали все изменения, собрали это в пакет и разослали этот "diff" всем 100 игрокам. и получили ответ с действиями каждого игрока. т.е. получается 100 сообщений таду и 100 обратно. далее все повторяется.

    далее. если в игре есть физика, то траекторию того же самого фаербола, можно расчитать и на клиенте(зная скорость, радиус поражения и т.д.), а вот попал он в итоге или нет уже зависит успел ли противник убежать или нет. но передавать координаты самого фаербола, вроде как и ненужно, клиент сам это отрисует, важно лишь событие попадания фаербола во врага."
  • Как написать игровой сервер?

    @Padaboo Автор вопроса
    Сергей: Допустим игроки дерутся и формируется пакет [player1,player2,] в нутри которых будут вшиты: действия, параметры, координаты, все это серриализовано и зашифровано. Мини кри получатеся.
    Синхронизация конечно самое основное: игрок1 ударил игрока2, нужно как то зашифровать этот удар, отправить на сервер и оповестить игрока 2 о нанесенном уроне.
    Все параметры тогда должны хранится на сервере а на клиенте только графика и отправка пакетов.
  • Как написать игровой сервер?

    @Padaboo Автор вопроса
    Сергей: просто нужно несколько идеи, дискуссий - за что вам и спасибо
  • Как написать игровой сервер?

    @Padaboo Автор вопроса
    Сергей: нет, я давно программирую - задача такая впервые
  • Как написать игровой сервер?

    @Padaboo Автор вопроса
    Сергей: Очень интересная мысль спасибо! А если взять например бег. Тут может быть два варианта как нажатие мышкой и бег в одном направлении
    и зажатая клавиша как в квейк. посылается пакет с направленим вектора, скоростью и клиент его рисует. Установился таймер в виде тика, сервер ждет от клиента следующий пакет с тем же действием ну или с путсым действием.
    И между этими действиями происходит выстрел, вешается таймер "отката" и после этого мы ждем следующий такой же пакет.

    дело в том что - что бы все это происходило плавно, нужно буквально флудить этими пакетами. а если отправлять их медленно тогда будут рывки, а запоздавшием сообщения будут отбрасывать персонажа назад
  • Как написать игровой сервер?

    @Padaboo Автор вопроса
    Сергей: Да серьезно хочу и начать именно с тестирования сообщений и синхронизации, потому что когда на него будет накручена игровая механика будет еще тяжелее.
    Нет, хочу сделать один раз что то серьезное - локации это не очень хорошо, единый мир лучше всего.
    Суть в том что: если слать часто очень подробные пакеты - будет идеально, но будут лаги с возрастанием количества пользователей.
    если слать пакеты редко, то клиента придется заставлять угадывать что будет делать игрок прежде чем придет следующий пакет и тут уже будет сложнее синхронизировать.
    Игрок пробежал 400 метров, а следующий пакет отбрасывает его назад и разворачивает на 30 градусов.

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

    Например персонаж бежит по дороги и происходит смена локации (визуально находясь в том же месте)
  • Как написать игровой сервер?

    @Padaboo Автор вопроса
    Сергей: а это уже смотря как выглядит сеть и "пакет" если так {user-data1,user-data2,user-data3}, а если от каждого по отдельности. И опять же как их синхронизировать? Бесперебойный флуд? Или накапливать и всем одновременно рассылать или может быть ставить в очередь?
  • Как написать игровой сервер?

    @Padaboo Автор вопроса
    Сергей: Но тогда какая нагрузка ложится на клиент: есть 199 персонажей или объектов, нам за один "пакет" приходит допустим действия о всех них и мы на клиенте их пытаемся изобразить пока не придет следующий пакет?
    Спасибо проясняется!
  • Как написать игровой сервер?

    @Padaboo Автор вопроса
    Тут к сожалению не чат и не муд. Тут додумывать координаты и передвижение другого игрока придется для "плавности".
  • Как написать игровой сервер?

    @Padaboo Автор вопроса
    Да сначала нужно написать чат, дали интересну ссылку по теме www.gabrielgambetta.com/fpm_live.html Всеравно какой то алгоритм синхронизации должен быть. Я нажал бежать в точку x клиент ее пробежал, но в какой то момент передумал и развернулся. В это время у другого игрока на клиенте он все еще бежит в ту же сторону.
    Тоесть мы будем в следующий раз уже перепроверять бежит ли он в ту же сторону.