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