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

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

  • Frozzeg

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

    Spritz 22 февраля 2011 г. 12:00, спустя 36 минут 49 секунд

    при самом беге клиент тоже периодически отправляет свои координаты, а сервер проверяет во-первых геодату, во-вторых с правильной ли скоростью бежит клиент
    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 22 февраля 2011 г. 12:07, спустя 7 минут 43 секунды

    а как сервер это все делает + принимает другие пакеты одновременно?
  • Frozzeg

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

    Spritz 22 февраля 2011 г. 12:10, спустя 3 минуты 3 секунды

    а как сервер это все делает

    придумай че-нить свое

    принимает другие пакеты одновременно?

    а как на компе одновременно работают десятки программ?
    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 23 февраля 2011 г. 1:06, спустя 12 часов 55 минут 21 секунду

    потоки?
  • Frozzeg

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

    Spritz 23 февраля 2011 г. 4:27, спустя 3 часа 21 минуту 40 секунд

    Mr.Pihto, когда будут интересные вопросы - приходи)

    а над этим сам можешь подумать
    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 23 февраля 2011 г. 7:07, спустя 2 часа 39 минут 21 секунду

    о бля… да хуй я придумаю курю я как скатина =)
  • Frozzeg

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

    Spritz 18 марта 2011 г. 11:07, спустя 23 дня 2 часа 59 минут

    итак, теоретик вступает на тропу войны

    не пойму как лучше сделать обработку пакетов

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

    схема получается примерно такая


    TradeHandler
    /
    GameHandler — BattleHandler
    / \
    PacketHandler - MovementHandler
    \
    ChatHandler - etc..

    но как-то это все запутанно что-ли


    второй вариант

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

    например приходит пакет на атаку (внутри класса ClientHandler), здесь же мы делаем различные проверки, исходя из состояния игрока (есть ли оружие, верна ли цель и т.п.), если все ок - передаем управление методу BattleHandler.Attack()

    схема примерно такова



    TradeHandler
    |
    | BattleHandler
    |/
    ClientHandler —- Questhandler
    \
    MovementHandler

    но и здесь что-то мне не нравиться…
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • mario

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

    Spritz 18 марта 2011 г. 11:33, спустя 26 минут 15 секунд

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

    вот таким методом реализован эмулятор Линейки на Яве, и это очень сильно ограничивает максимальное число игроков, как я понял, когда пытался понять проблему максимума онлайна.
    Почему то мне кажется, что первый вариант будет эффективнее.
  • Frozzeg

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

    Spritz 18 марта 2011 г. 11:44, спустя 10 минут 45 секунд

    да, вот я тоже так думаю
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • phpdude

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

    Spritz 18 марта 2011 г. 11:54, спустя 10 минут 19 секунд

    вот таким методом реализован эмулятор Линейки на Яве, и это очень сильно ограничивает максимальное число игроков, как я понял, когда пытался понять проблему максимума онлайна.
    Почему то мне кажется, что первый вариант будет эффективнее.

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

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

    Spritz 18 марта 2011 г. 12:23, спустя 28 минут 59 секунд

    благо в C# 4.0 с этим проблем нет
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • mario

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

    Spritz 18 марта 2011 г. 12:45, спустя 22 минуты 32 секунды

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

    эм… ты говоишь именно про действия (чат, бой, продажа)?
  • phpdude

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

    Spritz 18 марта 2011 г. 12:56, спустя 10 минут 38 секунд

    mario, пр овсе сетевое взаимодействие, похуй или наведене на монстра или чат - однохуйственно :)

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

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

    Spritz 18 марта 2011 г. 13:05, спустя 8 минут 38 секунд


    mario, пр овсе сетевое взаимодействие, похуй или наведене на монстра или чат - однохуйственно :)

    пакеты то одной структуры с разными данными просто внутри
    ааа да да… ты чуть ниже смотришь, я смотрел чуть выше по уровню просто )
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 18 марта 2011 г. 13:20, спустя 14 минут 47 секунд

    все многозадачные системы всегда сводятся к 1 задаче, много потоков можно объединить в один суммирующий

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