Я планирую сделать многопользовательскую игру в реальном времени для Android (2-8 игроков) и считаю, какое решение для многопользовательской организации является лучшим:
Сделать сервер на компьютере, и клиент на мобильный, все communition идут через сервер (Clientâ -> PC SERVER -> Все клиенты)
Использование Bluetooth, я еще не использовал, и я не знаю, это его трудно сделать мультиплеер на блютуз
Сделать сервер на одном из устройств, и другие устройства подключаются (через сеть, но я не знаю, это трудно проблемы Resolve с устройствами через NAT?)
Другое решение?
Ответы:
Отказ от ответственности; Я не делал много с Java и андроид платформы.
Однако мой более обширный опыт работы с языками «.net» на окнах мобильных платформ, наряду с платформой окон, является то, что хороший 75-90% всего кода, необходимые для создания и поддержания Bluetooth или подключение к сети передачи данных поддерживаются / поддерживается ОС или библиотек, которые были бы необходимость доступа к оборудованию.
До сих пор это также кажется верным для Android, поскольку ОС предоставляет методы для создания соединений для передачи данных через Bluetooth или Интернет, а также включает / отключает соответствующее оборудование.
Я полагаю, что Bluetooth будет предпочтительным способом подключения, так как это будет наименее затратным для реализации (без серверов). И позволяют более местного сбора / игры. Bluetooth довольно прост в использовании. он работает аналогично обычным сетевым сокетам, когда вы знаете, к какому устройству вы хотите подключиться.
Остальные являются правильными в том, что v2.0 Bluetooth / v2.1 в настоящее время не способны поддержки больших нагрузок данных. Это изменится с возможным распространением v3.0 и выше. и есть способы обойти это ограничение.
В настоящее время, хотя есть простое понятие, но комплексное решение, которые вы можете попробовать. Я использую его на некоторое время, он похож на равном равный, но это подразумевает наличие в игре, размещенную на всех устройства одновременно. Таким образом, если соединение временно потеряна, замедлили или игрок упал какой-либо причине, остальные игроки не будут затронуты. Это позволяет пользователям, которые были сброшенные вернуться в текущую игру с небольшим или без нарушения других игроков или их собственной игре.
CON: Каждый игрок на самом деле играл бы в свой уникальный экземпляр игры, который был бы связан с другими игроками, чтобы игры не отклонялись слишком далеко друг от друга.
CON: код поддержки может быть обширным / сложным и сложным, чтобы обернуть голову в зависимости от того, чего вы хотите достичь.
PRO: не требуется центральный сервер или устройство! $$$ содержание не требуется.
PRO: Тяжелое обмен данными будет происходить только тогда , когда игрок (вос) присоединился, или игра была инициализирована. - Даже это может быть уменьшен путем обеспечения того , чтобы все игры будут генерироваться и прогрессировать так же , как все игроки. ПОТЕНЦИАЛЬНО снижает потребление энергии, которое происходит из-за интенсивного использования сети.
PRO: Данные становится менее чувствительным время, так как эти устройства будут уже есть все данные , которые они требуют , чтобы сохранить игру собирается без других игроков. Позволяет вам больше сосредоточиться на реальном игровом опыте для отдельных пользователей, а не для группы игроков.
Мне не хватило времени на реализацию полноценного игрового движка, который бы использовал это. Игры, которые я сделал, были ограничены воссозданием игр, похожих на Monopoly и Uno, которые, казалось, работали очень хорошо.
Самый простой был один, который эмулируется Uno. Я в основном сложены палубы проигравших после игрок выиграл, чтобы убедиться, что игрок выиграл все игры. В 95% случаев я не мог сказать, что играю не в ту же игру, что и все остальные.
Я начал создавать игру, похожую на Master of Orion II, но сама игра была для меня немного сложнее.
источник
Это в значительной степени зависит от игры, но некоторые друзья и я думал о тех же вопросах только пару месяцев назад, и вот что мы решили. Я снова в плюсе и минусе.
Компьютер на основе сервера
Pros
Cons
Peer To Peer с одним из них под контролем
Pros
Cons
Что касается Bluetooth, я ожидаю, что он будет похож на метод одноранговой связи выше. Я также не думаю, что у вас должны быть какие-либо проблемы с NAT.
РЕДАКТИРОВАТЬ : Это также в значительной степени зависит от вашего опыта. Я бы начал с написания некоторых сравнительно небольших клиент-серверных игр, чтобы сначала научиться работать с сетью. Это сложная тема, которую легко ошибиться с первого раза. Я получил право прямо с третьей попытки. Следуйте известным схемам и не пытайтесь придумать что-то самостоятельно.
источник
Одно из самых важных соображений, которое вам нужно сделать, - это надежность. Телефоны не очень надежны; на самом деле, вы должны предположить, что в игре на 8 игроков кто-то может отключиться (входящий звонок, плохой прием, игрок выходит ...)
Имея это в виду, поймите, что вы должны минимизировать влияние отключенного пользователя. Во втором варианте вы по сути сделали телефон сервером. Если этот телефон станет MIA, игра фактически закончена для всех игроков.
Джон рассказал о плюсах и минусах традиционной клиентской <-> серверной архитектуры. Это, пожалуй, самый надежный способ обеспечить надежный многопользовательский опыт для всех.
Вы также можете рассмотреть технику по типу симуляции блокировки шага. Это может быть реализовано чисто одноранговым способом. Общая идея заключается в том, что каждый клиент должен отправлять свое обновление (серию команд или их отсутствие) на каждом этапе моделирования. На следующем этапе моделирования команды каждого игрока применяются к игровой логике. Во многих играх RTS используется такая схема сети.
Метод может быть сложным для реализации и может быть очень сложным для отладки. Это, безусловно, сложнее, чем иметь более традиционную архитектуру клиент-сервер. Это также подразумевает лаг между входом игрока и тем, когда игра реагирует на ввод. Тем не менее, если один из игроков выбывает, оставшиеся игроки могут просто исключить его из игры и продолжить. Это также может потенциально уменьшить сетевой трафик по сравнению с другими схемами.
Если вы хотите узнать больше об этой технике, начните с этой превосходной статьи на эту тему. В противном случае я бы настоятельно не рекомендовал использовать сетевую схему, в которой за многопользовательский сеанс отвечает один телефон, и предложил бы более простую клиентскую <-> архитектуру сервера.
источник