Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Реализация сетевой игры с пиринговой сетью (http://www.flasher.ru/forum/showthread.php?t=193390)

Grot55 26.01.2013 17:21

Реализация сетевой игры с пиринговой сетью
 
Хочу сделать простую игру - крестики-нолики, для связи приложений между собой использую пиринговую сеть.
Пользователь должен придумать и ввести свой ник и нажать подключится, после чего получить ID свободного игрока и обмениваться с ним данными. По какому алгоритму это можно организовать?

iflamberg 26.01.2013 22:24

Вас сейчас затролят. Потому что алгоритм там примерно такой:
- получить имя у пользователя
- отправить имя серверу, если имя не занято, пустить пользователя в лобби
- запросить список пользователей в лобби
- по запросу пользователя начать игру со свободным пользователям отобразить игровое поля
- решить какой из игроков ходит крестиками, какой ноликами
- отправить ход другому игроку
- получить ход от другого игрока
...
- если один из игроков выиграл отчистить поле, начать игру заново

Т.е. алгоритм там по сути элементарный. А вы наверное что-то другое спросить хотите. Но в целом, крестики-нолики - пошаговая игра, гуглите статьи по peer-to-peer чат, и на его основе делаете что вам надо, только естественно, вместо чат-сообщений клиенты друг-другуг отправляют ходы.

Astraport 26.01.2013 22:52

Первые 2 пункта можно и пропустить назначая уникальные имена.

Grot55 27.01.2013 00:08

В том то и прикол, что сервера НЕТ, точнее есть, но он только может рассылать всем сообщения которое я на него отправил(при этом передает всем мой ID), оповещать о подключении нового пользователя, передовая его ID(не ник, ни другие данные), о его отключении(тоже передает ID), и через несколько секунд после подключения к серверу оповещает меня о подключении пользователей, которые уже находятся в сети. Если бы можно было бы при подключении(а лучше до подключения) получить сразу список всех пользователей было бы всё проще.

iflamberg 27.01.2013 00:26

В том то и прикол, что сервер есть. Да, в п2п траффик идет напрямую от пользователя к пользователю и это круто - нет нагрузки трафика на сервер, короткие пинги и т.д. Но без сервера никак, потому что иначе ты не организуешь лобби и не передашь пользователям их идентификаторы, которые они затем используют для того, чтобы подключиться друг-к-другу. Ну и плюс, собственно, сами идентификаторы выдает сервер, просто у адоба есть бесплатный сервис для этого дела. Так что если ты мне покажешь статью про п2п чат без сервера - с меня пива и большие квадратные глаза.

В общем, для начала рекомендую почитать http://labs.adobe.com/wiki/index.php/Cirrus:FAQ

Grot55 27.01.2013 00:42

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

Добавлено через 9 минут
Если я с помощью запросов к пхп буду добавлять пользователя в лобби, то как их от туда удалять?, например если разорвется соединение с нетом или прервется процесс браузера, я не смогу обработать такое событие. Если запрос с удалением МЕНЯ из лобби будут отсылать другие клиенты, то ктоже его пошлет если я в игре буду один?

dimarik 27.01.2013 01:04

Цитата:

Сообщение от iflamberg (Сообщение 1117989)
В том то и прикол, что сервер есть.

Единого сервера может не быть. Он размазан по клиентам.

Tails 27.01.2013 03:06

Я тоже делаю одно приложение пиринговое, в свободное время. Необходим web сервер для соединения клиентов. Схема простая:
1. Флешка запрашивает у Cirrus адрес для p2p соединения. (Адобовский сервер)
2. Коннектится к нашему серверу, передает полученный id.
3. Сервер получает id, заносит его в базу данных подключенных пользователей и отсылает клиенту список с другими id клиентов.
4. Флешка получает адреса, осуществляет соединение.


Часовой пояс GMT +4, время: 20:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.