ФорумСообществоФлейм → алгоритм сетевых игр(к примеру CS)

алгоритм сетевых игр(к примеру CS)

  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 17 февраля 2011 г. 13:28, спустя 5 минут 54 секунды

    а что насчет
    отправка ид своего обекта+координата Х + координата У+1


    ID ты не должен отправлять в клиенте, ID присваивается на сервере при подключении клиента и там же храниться

    т.е. ты создаешь список ключ-значение, ключ это сокет, значение это айди клиента, когда приходит новый пакет, по сокету вытаскиваешь ID клиента и двигаешь нужный объект

    представь что я написал левый клиент и теперь могу вписать любой ID, т.е. управлять чужими кубиками


    и второе

    отправляй не координаты, а команды, типа move_up, move_down. координаты объектов должны хранится на серваке, как и любая инфа

    представь что я в своем левом клиенте отправил координату x + 9999 вместо x + 1
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 17 февраля 2011 г. 13:57, спустя 29 минут 1 секунду

    точняк.. спс..а в целом алгоритм пральный?
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 17 февраля 2011 г. 14:11, спустя 14 минут 15 секунд

    второй мессадж тока щас заметил. внатуре! даже не думал об этом. спс ещё раз=)
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 17 февраля 2011 г. 14:21, спустя 9 минут 28 секунд

    я так понимаю у тебя на каждого клиента отдельный поток, это не есть гуд, т.к. поток занимает в памяти 1 МБ, представь что у тебя 4к онлайна, это 4 ГБ оперативы только на потоки, юзай пул потоков и асинхронные сокеты
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 17 февраля 2011 г. 14:27, спустя 6 минут 21 секунду

    ок. почитаю. а сервер по команде мув_ап отсылает клиентам новые координаты или подобную команду и клиенты сами там разберутся?
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 17 февраля 2011 г. 14:31, спустя 4 минуты 3 секунды

    вот тут уже лучше отсылать сами координаты
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 17 февраля 2011 г. 14:45, спустя 14 минут 10 секунд

    вот примеры, почему лучше

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

    второй: представь у тебя глюкнул инет, а в это время какой-нить игрок 50 раз отправил команду move_left, но тебе пришла всего 1, последнияя, получается у всех, у кого не лагало чувак сдвинулся на 50 позиций, а у тебя всего на 1

    а в случае с координатами тебе придет последний пакет с текущими координатами того игрока (т.е. получится такой резкий рывок на 50 позиций, зато сохраниться синхронность)
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 17 февраля 2011 г. 14:53, спустя 8 минут 18 секунд

    Frozzeg, а еще бег/движения всяческие интерполируют (забаньте меня если слово спутал, не помню напамять точно, гуглить влом) по прошлым координатам. поэтмоу когда сет ьотваливается люди "бегут" еще пару секунд :)))) а потом появляются на других местах бывает, если интерполяция ошиблась :D
    Сапожник без сапог
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 17 февраля 2011 г. 15:01, спустя 7 минут 13 секунд

    ага, это что касается таких игр типа lineage, а вот в кс походу вообще никаких проверок движения не делается, только задержка в самом клиенте при считывании клавиш W A S D, отсюда и спидхаки, находиться адрес в оперативной памяти с переменной задержки и изменяется на 0, хотя может там все по другому, это я предполагаю
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 17 февраля 2011 г. 15:08, спустя 6 минут 58 секунд

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

    стим античит не пропускает большинство читов просто)
    Сапожник без сапог
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 17 февраля 2011 г. 15:39, спустя 31 минуту 52 секунды

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

    т.е. ты создаешь список ключ-значение, ключ это сокет, значение это айди клиента, когда приходит новый пакет, по сокету вытаскиваешь ID клиента и двигаешь нужный объект

    в клиенте ид отправлять нельзя но к в аждом клиенте хранится собственный ид.. прально?
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 17 февраля 2011 г. 15:44, спустя 4 минуты 56 секунд

    в клиенте ид отправлять нельзя но к в аждом клиенте хранится собственный ид.. прально?


    не только собственный, но и всех остальных
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • Mr.Pihto

    Сообщения: 1386 Репутация: N Группа: Адекваты

    Spritz 17 февраля 2011 г. 15:46, спустя 2 минуты 5 секунд

    м. спс
    Спустя 14 сек.
    терь все понятно
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 17 февраля 2011 г. 15:47, спустя 10 секунд

    можно сказать что у клиента нету приоритетов между своим ID и ID Других клиентов, есть просто список всех ID, в том числе и твой, далее когда приходит пакет от сервака, ты лезешь в список, достаешь нужный элемент по ID и работаешь с ним
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 17 февраля 2011 г. 15:53, спустя 6 минут 39 секунд

    а что значит,
    Thread()
    {
    while (1)
    {
    #

    например?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!