![]() |
Реализация сетевой игры с пиринговой сетью
Хочу сделать простую игру - крестики-нолики, для связи приложений между собой использую пиринговую сеть.
Пользователь должен придумать и ввести свой ник и нажать подключится, после чего получить ID свободного игрока и обмениваться с ним данными. По какому алгоритму это можно организовать? |
Вас сейчас затролят. Потому что алгоритм там примерно такой:
- получить имя у пользователя - отправить имя серверу, если имя не занято, пустить пользователя в лобби - запросить список пользователей в лобби - по запросу пользователя начать игру со свободным пользователям отобразить игровое поля - решить какой из игроков ходит крестиками, какой ноликами - отправить ход другому игроку - получить ход от другого игрока ... - если один из игроков выиграл отчистить поле, начать игру заново Т.е. алгоритм там по сути элементарный. А вы наверное что-то другое спросить хотите. Но в целом, крестики-нолики - пошаговая игра, гуглите статьи по peer-to-peer чат, и на его основе делаете что вам надо, только естественно, вместо чат-сообщений клиенты друг-другуг отправляют ходы. |
Первые 2 пункта можно и пропустить назначая уникальные имена.
|
В том то и прикол, что сервера НЕТ, точнее есть, но он только может рассылать всем сообщения которое я на него отправил(при этом передает всем мой ID), оповещать о подключении нового пользователя, передовая его ID(не ник, ни другие данные), о его отключении(тоже передает ID), и через несколько секунд после подключения к серверу оповещает меня о подключении пользователей, которые уже находятся в сети. Если бы можно было бы при подключении(а лучше до подключения) получить сразу список всех пользователей было бы всё проще.
|
В том то и прикол, что сервер есть. Да, в п2п траффик идет напрямую от пользователя к пользователю и это круто - нет нагрузки трафика на сервер, короткие пинги и т.д. Но без сервера никак, потому что иначе ты не организуешь лобби и не передашь пользователям их идентификаторы, которые они затем используют для того, чтобы подключиться друг-к-другу. Ну и плюс, собственно, сами идентификаторы выдает сервер, просто у адоба есть бесплатный сервис для этого дела. Так что если ты мне покажешь статью про п2п чат без сервера - с меня пива и большие квадратные глаза.
В общем, для начала рекомендую почитать http://labs.adobe.com/wiki/index.php/Cirrus:FAQ |
Я могу использовать сервер, но без возможности подключения к нему через сокеты
Добавлено через 9 минут Если я с помощью запросов к пхп буду добавлять пользователя в лобби, то как их от туда удалять?, например если разорвется соединение с нетом или прервется процесс браузера, я не смогу обработать такое событие. Если запрос с удалением МЕНЯ из лобби будут отсылать другие клиенты, то ктоже его пошлет если я в игре буду один? |
Цитата:
|
Я тоже делаю одно приложение пиринговое, в свободное время. Необходим 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
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.