ФорумСообществоФлейм → алгоритм работы онлайн игр... типа l2

алгоритм работы онлайн игр... типа l2

  • Mr.Pihto

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

    Spritz 30 октября 2010 г. 9:52

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

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

    Spritz 30 октября 2010 г. 12:32, спустя 2 часа 40 минут 37 секунд

    А что там знать? все по логике - клиент запрашивает каждую секунду(например) определенные сырые параметры в сервера. Сервер возвращает их клиенту, и на их основе клиент рендерит всю сложившуюся на данный момент картину так, чтобы это было "удобочитаемо"(в плане 3д) для юзера(геймера)….

    Может те чето конкретно надо…
  • Mr.Pihto

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

    Spritz 31 октября 2010 г. 10:46, спустя 22 часа 13 минут 39 секунд

    по конкретнее… как, допустим, в л2 только что подключившийся клиент знает координаты всех остальных игроков и знает что они делают.. в какую точку бегут…
  • Rotten

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

    Spritz 31 октября 2010 г. 11:44, спустя 58 минут 26 секунд

    На сервере вся та инфа хранится, на сервере…
    Сервер передает клиенту всю ту необходимую инфу, при помощи которой необходимо отобразить, что в данный момент, в радиусе ближайших 100(или сколько-там) метров творится…
    Где хранится та вся инфа? Да где угодно… но я думаю самый распостраненный способ - возвращать клиенту xml-ку, которую он для себя распарсает, вытянет необходимые параметры - и с помощью них отобразит всю сложившуюся ситуацию(на каких координатах находится твой перс, на каких - враг, на каких - второстепенные персы, какой спелл наносиш в сию секунду ты - а какой перс)… Все просто как дверная ручка.
  • phpdude

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

    Spritz 31 октября 2010 г. 12:04, спустя 19 минут 17 секунд

    возвращать клиенту xml-ку

    суров)))
    Сапожник без сапог
  • Дмитрий

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

    Spritz 31 октября 2010 г. 13:35, спустя 1 час 31 минуту 18 секунд

    Mr.Pihto, а перехвати снифером трафик погляди что гоняет между сервером и клиентом.
  • Mr.Pihto

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

    Spritz 31 октября 2010 г. 16:22, спустя 2 часа 46 минут 53 секунды

    Rotten, на сервере? тобиш это каждый клиент постоянно отсылает инфу серверу?
    Дмитрий, точняк
  • Frozzeg

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

    Spritz 31 октября 2010 г. 20:10, спустя 3 часа 48 минут 2 секунды

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

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

    инвентарь, делаем запрос на получение своих итемов, итемы хранятся в базе данных, у каждого иетма есть свои параметры: например заточка, количество итемов, является ли оружем или броней и т.п., в том числе и owner_id (владелец данного предмета), соотвественно делается запрос SELECT * FROM items WHERE owner_id = твой, результат отправляется тебе
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • adwo

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

    Spritz 1 ноября 2010 г. 4:15, спустя 8 часов 4 минуты 41 секунду

    Я смотрю тут одни геймдевелоперы :D
  • Rotten

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

    Spritz 1 ноября 2010 г. 5:35, спустя 1 час 20 минут 1 секунду

    Mr.Pihto, НЕТ, клиент делает запрос к серверу… а сервер весь готовый результат отсылает..
  • Mr.Pihto

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

    Spritz 1 ноября 2010 г. 7:16, спустя 1 час 41 минуту 51 секунду

    ну так на сервере откудато должны быть координаты игроков чтоб отослать новому клиенту.. и координаты должны быть свежие.. а чтоб такое получилось то каждый клиент допустим ежесекундно должын слать свои координаты
  • Frozzeg

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

    Spritz 1 ноября 2010 г. 7:29, спустя 12 минут 49 секунд

    ежесекундно должын слать свои координаты

    в шутер происходит именно так, но по протоколу UDP

    если такой механизм ты будешь использовать в таких серверах как La2 (который работает по протоколу TCP), то это просто убьет твой сервер, в ла2 клиент не посылает каждую секунду свои координаты, он один раз посылает запрос на бег в определенную точку и бежит туда, при этом через некоторый промежуток времени сервер сравнивает, правильно ли ты бежишь (т.е. если после пяти секунд движения в клиенте ты пробежал на 5 метров больше, то сервер отсылает пакет на возврат тебя на 5 метров назад)
    Спустя 40 сек.
    Mr.Pihto, а перехвати снифером трафик погляди что гоняет между сервером и клиентом.

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

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

    Spritz 1 ноября 2010 г. 7:29, спустя 1 секунду

    Ну я имею ввиду, что делая запрос - клиент вместе с этим запросом высылает свои параметры(местонахождения, действия чара и тд)…
    Короче - это как в аджаксе: посылая запрос, ты цепляешь к гет/пост строке определённые параметры(user/other db record id, etc), и на основании этого айди (а в случае онлайн-игр - общей инфы) - сервер строит всю картину, и также возвращает некие результаты, с помощью которых клиент сможет отобразить все действие на компе…
  • phpdude

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

    Spritz 1 ноября 2010 г. 7:35, спустя 6 минут 8 секунд

    если такой механизм ты будешь использовать в таких серверах как La2 (который работает по протоколу TCP)

    только сервер авторизации, игровой по юдп. пакеты насколько я помню подписываются, но независимым от прошлого пакета ключем, иначе сетевые лаги бы приводили к падению клиента
    Сапожник без сапог
  • Frozzeg

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

    Spritz 1 ноября 2010 г. 7:42, спустя 6 минут 19 секунд

    phpdude, и тот и другой TCP
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.

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