Это было бы невозможно с API-интерфейсами, предоставляемыми веб-браузерами (вам нужно было бы использовать что-то вроде Socket.IO и общаться через сервер, как говорили другие). К счастью, поскольку вы используете TideSDK, это возможно, если вам не требуется высокая эффективность сети. Вам потребуется предоставить сервер, но он не обязательно должен быть достаточно мощным для размещения реальных игр.
Общий метод клиента и сервера
Существуют и другие способы организации сети, но вы можете поискать их, если считаете, что их проще реализовать.
Ваш сервер будет размещать фактическую загрузку игры и обеспечивать возможности подбора игроков. Клиенты, которые загружают люди, будут связываться с этим сервером подбора игроков, чтобы найти других, кто хочет играть.
Сервер подбора партнеров должен выбрать одного из этих клиентов в качестве хоста для остальных. Наконец, сервер подбора партнеров сообщит клиенту, выбранному в качестве хоста, что он является хостом, и предоставит ему информацию о каждом подключении (порты и IP-адреса), а другим клиентам предоставит информацию о подключении для выбранного хоста. Хост подключится к другим клиентам.
Хост-компьютер будет единственным, кто фактически выполняет какую-либо обработку игрового процесса, а другие клиенты просто отображают любую информацию, которую им отправляет хост. Клиенты отображают текущее состояние игры с точки зрения каждого игрока на своих соответствующих компьютерах и фиксируют пользовательский ввод, который отправляется на хост для обработки.
Реализация
TideSDK предоставляет Ti.Network.TCPSocket объект, который может устанавливать необработанные TCP-клиентские соединения с TCP-серверами. К сожалению, он также не позволяет создавать необработанные TCP-серверы. Вместо этого TideSDK предоставляет Ti.Network.HTTPServer. объект, который реализует сервер протокола HTTP через TCP, и Ti.Network.HTTPClient, который предоставляет HTTP-клиент (на самом деле это просто абстракция над обычным API запросов AJAX). Вы можете использовать предоставленный HTTP-сервер на хост-компьютере и напрямую подключаться к нему на клиентах с помощью предоставленных HTTP-клиентов. Обмен данными будет осуществляться по протоколу HTTP. Насколько я могу судить, это ваш единственный вариант здесь.
Я не нашел там ни одного примера кода (кроме того, что есть в документации TideSDK), но вы можете найти его, если вам действительно интересно.
Следующие шаги
Если бы я хотел продолжить использование TideSDK, я бы сделал следующее:
- Сообщите разработчикам TideSDK, что вас интересует серверный сокет TCP. Необработанное TCP-соединение будет намного быстрее, чем HTTP.
- Протестируйте HTTP-соединение и убедитесь, что оно достаточно быстрое для моей игры.
person
Michael Younkin
schedule
30.05.2013