Форум → Сообщество → Флейм → алгоритм сетевых игр(к примеру CS)
алгоритм сетевых игр(к примеру CS)
Страницы: ← Предыдущая страница • Следующая страница →
-
22 февраля 2011 г. 20:00, спустя 36 минут 49 секунд
при самом беге клиент тоже периодически отправляет свои координаты, а сервер проверяет во-первых геодату, во-вторых с правильной ли скоростью бежит клиентYou can be anything you want to be. Just turn yourself into anything you think that you could ever be. -
22 февраля 2011 г. 20:07, спустя 7 минут 43 секунды
а как сервер это все делает + принимает другие пакеты одновременно? -
22 февраля 2011 г. 20:10, спустя 3 минуты 3 секунды
а как сервер это все делает
придумай че-нить своепринимает другие пакеты одновременно?
а как на компе одновременно работают десятки программ?You can be anything you want to be. Just turn yourself into anything you think that you could ever be. -
-
23 февраля 2011 г. 12: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. -
23 февраля 2011 г. 15:07, спустя 2 часа 39 минут 21 секунду
о бля… да хуй я придумаю курю я как скатина =) -
18 марта 2011 г. 18: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. -
18 марта 2011 г. 18:33, спустя 26 минут 15 секунд
для каждого подключенного клиента создавать свой экземпляр класса ClientHanlder, в котором храниться состояние клиента, принимаются пакеты, делаются всевозможные проверки и передается управление конечному методу
вот таким методом реализован эмулятор Линейки на Яве, и это очень сильно ограничивает максимальное число игроков, как я понял, когда пытался понять проблему максимума онлайна.
Почему то мне кажется, что первый вариант будет эффективнее. -
18 марта 2011 г. 18:44, спустя 10 минут 45 секунд
да, вот я тоже так думаюYou can be anything you want to be. Just turn yourself into anything you think that you could ever be. -
18 марта 2011 г. 18:54, спустя 10 минут 19 секунд
вот таким методом реализован эмулятор Линейки на Яве, и это очень сильно ограничивает максимальное число игроков, как я понял, когда пытался понять проблему максимума онлайна.
Почему то мне кажется, что первый вариант будет эффективнее.
да ну)) там один поток селектор (если конечно код не переписан с моего момента осмотра его), который и сздает эту проблему, один селектор тупо не справляется с количеством пакетов и его нельзя разложить на многоядер сразу. ну и так же дает возможность ддоса)Сапожник без сапог -
18 марта 2011 г. 19: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. -
18 марта 2011 г. 19:45, спустя 22 минуты 32 секунды
да ну)) там один поток селектор (если конечно код не переписан с моего момента осмотра его), который и сздает эту проблему, один селектор тупо не справляется с количеством пакетов и его нельзя разложить на многоядер сразу. ну и так же дает возможность ддоса)
эм… ты говоишь именно про действия (чат, бой, продажа)? -
18 марта 2011 г. 19:56, спустя 10 минут 38 секунд
mario, пр овсе сетевое взаимодействие, похуй или наведене на монстра или чат - однохуйственно :)
пакеты то одной структуры с разными данными просто внутриСапожник без сапог -
18 марта 2011 г. 20:05, спустя 8 минут 38 секунд
ааа да да… ты чуть ниже смотришь, я смотрел чуть выше по уровню просто )
mario, пр овсе сетевое взаимодействие, похуй или наведене на монстра или чат - однохуйственно :)
пакеты то одной структуры с разными данными просто внутри -
18 марта 2011 г. 20:20, спустя 14 минут 47 секунд
все многозадачные системы всегда сводятся к 1 задаче, много потоков можно объединить в один суммирующий
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!