2010-03-02 2 views
0

Я разрабатываю игру, в которой игроки являются программируемыми ботами, конкурирующими в конкурсе на программирование. Боты могут быть запрограммированы на любом языке - Java, Ruby, Python, C#. Я ищу способ передачи игровых данных по сети или каким-то образом, с помощью которых игровой сервер может разговаривать с ботами. Что было бы лучше для этого? Должен ли я использовать XMPP или какую-либо другую форму вызова удаленного метода?Данные об игре по сети

ответ

1

То, что вы воспринимаете, не является проблемой RMI, а является отправкой сообщений. Я уверен, что есть несколько решений, которые вы могли бы использовать, и, основываясь на ограниченном знании вашего приложения, я бы сказал, что XMPP является одним из них. Он является агностиком языка и имеет библиотеки (и серверы), доступные на большинстве поддерживаемых языков.

Является ли это лучшим решением, я не могу сказать, но я думаю, что он жизнеспособен. Он дает вам возможность передавать от точки к точке, указывать на многие точки и средства для вашего игрового сервера для трансляции всем клиентам.

0

Веб-сервис, основанный на REST, может быть проще в использовании, если вам нужно много языков, чтобы иметь возможность его называть.

+0

Это не webapp. Это настольное приложение, написанное в QtRuby. Но REST все еще не отвечает, как я могу отправлять/получать сообщения от ботов с помощью PUSH. – Sathish

-2

Проблема со многими инфраструктурами Remoting заключается в том, что они обычно не переносятся между фреймворками. Хотя XMPP может работать на вас - основная проблема, которую вы можете обнаружить, - это чрезмерные данные, пересекающие сеть из-за всего содержимого заголовка/присутствия в отправляемых данных. Кроме того, поскольку XMPP основан на XML, любые двоичные данные должны быть отправлены в виде строки Base64.

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

+1

Ваш совет заключается в создании собственной инфраструктуры обмена сообщениями или RMI, которая поддерживает несколько языков?!? – Robin

+0

Он строит игру, а не бизнес-приложение - может быть, гораздо больше сетевого трафика - я бы сказал, что механизм рамок/коммуникаций более низкого уровня был бы полезен - и для игры, в которой есть игровой сервер, выставляя веб-сервис вроде коммуникация имеет много накладных расходов и что с RMI вам нужно быть осторожным в отношении не переносных механизмов - java не может использовать .Net remoting .... Если он решит пойти по маршруту обмена сообщениями, я бы не рекомендовал использовать его построить свое собственное промежуточное ПО - это было бы безумным, но использование долговременных сообщений для общения с игрой также могло бы быть сумасшедшим. – saret

+0

Также его вопрос касался не только того, какой каркас он должен использовать, если вы его читаете («Должен ли я использовать XMPP или какую-то другую форму вызова удаленного метода? ») - он также спрашивал, есть ли XMPP или один из механизмов удаленного вызова процедур (RPC), таких как RMI/DCOM/Corba/.Net Remoting, встроенный в некоторые из перечисленных f rameworks/languages ​​(Java, Ruby, Python, C#), и я утверждал, что это не обязательно переносимый маршрут - кроме того, у него могут быть и другие проблемы, а также этот маршрут – saret

0

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

Смежные вопросы