2015-06-13 4 views
0

Я хочу вернуть небольшое игровое сообщество. Идея состоит в том, чтобы сделать приложение, которое работает как клиент чата для подключения к игровым серверам. Я пытаюсь понять понятия о том, как соединения работают с примерами, которые я нашел в Интернете, поскольку я сам преподаю, видя примеры.Соединения сервера AIR

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

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

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

+0

Проблема, которая у вас есть, интересна, но это не очень хороший вопрос для stackoverflow. Взгляните на http://stackoverflow.com/help/how-to-ask для получения информации о том, как задать вопрос. Когда у вас есть действительно общий вопрос, подобный вашему, лучший подход - погрузиться с некоторым примером кода и затем задайте конкретные вопросы. С помощью API Adobe вы можете начать с http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/Socket.html. –

ответ

0

Это очень широкий вопрос, но я стараюсь дать вам как можно больше информации с точки зрения зрения. Поскольку я еще не уверен, что вы хотите иметь соединение P2P (игровое приложение с игровым приложением) или стандартную модель сервера, я просто упомянул о разных подходах к этой проблеме.

Adobe имеет support for P2P с давних времен. Прочтите некоторые FAQ, особенно «Как RTMFP отличается от RTMP?» (Я пытаюсь выбрать Источники с инфографикой, так как это помогло мне это понять).

Что вы действительно должны начать играть и делать первые шаги, должно быть NetConnection. Это основная функция, которая позволит вам обмениваться данными с сервером, работающим, например. PHP или подключение к Flash Media Server (FMS). FMS является для вас незабываемым, поскольку он действительно повышает идеи, которые вы можете сделать, но создание FMS не так просто, чтобы разместить собственный экземпляр еще сложнее. Поэтому, если вы придете к выводу, что хотите путешествовать по дороге с помощью FMS, я могу предложить вам Onyx Server. Они в основном продают себя как услугу Streaming, но на самом деле вы получите доступ к FMS за хорошую цену (экземпляры FMS на Amazon были самыми худшими в последний раз, когда я проверял). FMS базовый только файл Flash AS2 с некоторыми дополнительными командами. Ваша FMS может обрабатывать постоянные соединения (!) В режиме реального времени (!) С любым клиентом, который подключается к нему. Каждый может сначала подключиться к серверу, а затем вы можете выбрать в своем FMS Script, что клиент должен принести в таблицу, чтобы остаться на сервере или отклонен. После этого у вас есть очень строгий инструмент для игры. Например, вы можете подключить к нему игровой экземпляр, сообщить серверу, что враг был атакован, а сервер почти мгновенно (скорость действительно потрясающая, нет ощущения задержки, это действительно мгновенно. Его называют SharedObjects) проходят эта информация до игрового экземпляра врага. Я использовал FMS только для одного проекта, и было очень долго ездить, чтобы понять это и работать с ним, но это был действительно хороший опыт, поскольку вы кодируете Сервер на «том же» языке, что и сама игра (AS2, AS3 = ECMA).

Если вы не хотите тратить деньги на этом этапе, вы можете использовать экземпляр Adobe RTMFP на p2p.rtmfp.net. Это, насколько мне известно, только для тестирования, и вы будете отвергнуты, если вы злоупотребляете сервисом для реального проекта, но для начала и тестирования это будет сделано. Если вы используете Cirrus Engine, вы можете даже следовать за this Tutorial. Вы найдете пример кода там:

// Cirrus connect info 
private const SERVER:String = "rtmfp://p2p.rtmfp.net/"; 
private const DEVKEY:String = "{YOUR_DEVELOPER_KEY}"; 

// Used to connect to the Cirrus service 
private var _netConnection:NetConnection; 

_netConnection = new NetConnection(); 

// Listen for status info 
_netConnection.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus); 

// Connect to Cirrus using our unique URI 
_netConnection.connect(SERVER + DEVKEY); 

Мой adive для вас будет: Попробуйте освоиться с NetConnection. Это действительно прямо. Когда я впервые начал использовать его, я пару дней боролся и много читал в Интернете, но я многому научился. Вы тоже должны.Используйте NetConnection и попробуйте создать два простых экземпляра AS3/FLA вашего кода, которые подключаются к одному домену (теперь используйте домен adobe rtmfp) и попытайтесь обменять некоторые простые String-Data между этими экземплярами.

принять некоторые боли ваших плеч, добавьте минимальное количество слушателей вашей NetConnection так:

//Main NetConnector 
nc = new NetConnection(); 

//Troubleshooting Listener 
nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
nc.addEventListener(NetStatusEvent.NET_STATUS, status_handler); 
//nc.objectEncoding = ObjectEncoding.AMF0; //Default 
nc.client = this; 
nc.connect("https://some-domain"); 

//////////////////////////////////////////////////////////////////////////////// 
/// CALL ERROR LISTENER 
//////////////////////////////////////////////////////////////////////////////// 

private function status_handler(e:NetStatusEvent):void { 
    //trace("NetStatusEvent"); 
    dispatchEvent(new CallEvent(CallEvent.CALL_NATIVE_NET_STATUS, e, true)); 

} 

private function securityErrorHandler(e:SecurityErrorEvent):void { 
    //trace("SecurityErrorEvent"); 
    dispatchEvent(new CallEvent(CallEvent.CALL_NATIVE_SECURITY_ERROR, e, true)); 

} 

вы получите много ошибок и NetStatus и NetSecuriy событий. Flash будет часто запускать ошибки Sandbox-Violation, когда вы теперь знаете, что делаете. Это может расстраивать, но если вы держите его в руках, отправляйте каждую ошибку и сравнивайте реализации с реализацией других, вы обернете свою голову вокруг этого и сможете делать с ней действительно аккуратные вещи.

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

Удачи.

+0

Спасибо за информацию. –

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