PDA

Просмотр полной версии : вопрос! как осуществить передачу данных между 2-мя 3-мя и более пользователями?


Viktor_UA
24.07.2005, 17:30
Подскажите, что необходимо и рационально использовать (PHP/XML/Perl...) для осуществления передачи данных в реальном времени между юзерами?????? К примеру игра "Преферанс" на троих (игра написана на флэше)! 3 юзера играют одновременно в игру с разных компьютеров через интернет! Как обеспечить процес синхронизации и передачи переменных от одного к двум другим клиентам??????
Заранее благодарен!

Bорон
24.07.2005, 17:37
идеальный вариант - сокет сервер.
хуже - скрипт который сохраняет на сервере ходы (состояния) играков. и каждый игрок к нему обращается после каждого хода и(или) раз в промежуток времени.

Viktor_UA
24.07.2005, 18:27
идеальный вариант - сокет сервер.
В двух словах можешь сказать что это такое и с чем его едят? Это должен быть специальный хостинг (я имею ввиду как поддержка PHP, CGI, Perl)?

хуже - скрипт который сохраняет на сервере ходы (состояния) играков. и каждый игрок к нему обращается после каждого хода и(или) раз в промежуток времени.

тоесть с помощью PHP данные записываються в файл на серваке и все коннектятся к нему и качают?

iNils
24.07.2005, 19:08
Реальное время обеспечит только сокет сервер.
Можно создать как на perl, так и на php. Лучше на perl, но поддержка постоянно весящего приложения, должно обеспечиваться хостером.

Чтобы узнать больше, посомтри в хелпе все об XMLSocket.

Viktor_UA
24.07.2005, 20:29
mySocket = new XMLSocket()
mySocket.connect("http://www.myHost.com/xmlSocket.asp",2000);

При таком коннекте все клиенты юзеров будут получать одну и ту же информацию? через порт 2000? Что такое xmlSocket.asp? С помощью чего можно написать этот файл? подскажите плиз

Заранее благодарен

iNils
24.07.2005, 21:07
Если у пользователя данный порт не заблокирован, то будет получать.
xmlSocket.asp это видимо совет сервер написанный на asp.

john
25.07.2005, 03:59
2Viktor_UA,
хых... желаю удачи,
как раз пишу сервер преферанса,
убойная по сложности задача ;)

естественно сокет плюс http

Viktor_UA
25.07.2005, 14:06
2Viktor_UA,
хых... желаю удачи,
как раз пишу сервер преферанса,
убойная по сложности задача

естественно сокет плюс http

...да, задачка по сути не из легких но реальная.

а на чём пишешь сокет? Вчера ознакомился с структурой *.xml и командами обработки оных файлов во флэше! Ничего вроде сложного! Но как пишеться сокет понятия не имею! ТЫ не мог бы мне помочь? Скажи, плиз, что необходимо использовать для написания этого сокета, и где можно прочитать подобную инфу о нём?????

Suhman
25.07.2005, 14:21
К примеру игра "Преферанс" на троих (игра написана на флэше)! 3 юзера играют одновременно в игру с разных компьютеров через интернет!

Не знаю, как там с программой, но ты задумайся, что такое аська, мобильные телефоны и другие средства коммуникации. Короче, никогда не знаешь, сговорились ли твои соперники или нет... :rolleyes:

vcj
25.07.2005, 19:29
Походу Сокет может быть написан на любом языке который поддерживаеть такую технологию..... к примеру DELPHI 6/7.... но юмор не в том..... повесить ДЕМОНА --- вот это уже проблема..... Мало кто хочет у себя на хостинге оставлять постоянно запущеную софтину которая выполняет якието функции да есчё и с открытыми под неё портами..... это нужен свой сервер....... так как это делают владельци онлайн игр.....
А про сокеты мош почитать здесь:
_http://www.flasher.ru/forum/showthread.php?threadid=53078
_http://codeproject.com/internet/#Client%2FServer+Development

и есчё гдето в Инете есть статья как написать свой чат на Флеше +РНР

K.A.T.A.F.A.L.K.E.R
25.07.2005, 19:43
Вы, верно, шутите? В самом названии я лично вижу слово "пошаговость"!!! Зачем усложнять себе жиснь сокетами??? Та элементарно запись в файл каким-нить серверным php и все тут, а каждые секунд 5-10 проверять обновления... Не умрет юзер если в крайнем случае лишние 5 сек. переждет :D

john
25.07.2005, 21:28
я пишу на java.
сокет у меня уже давно готов, как бы не в нем сложность.
сложность написать логику преферанса.

я уже написал одну сокет-многопользовательскую игру - многопользовательских покер, все нормально работает.

но проф сложнее. пришлось писать свой язык программирования описывающий логику игрового процесса.
хотя может я усложняю, ибо у меня требования выше ;)

john
25.07.2005, 21:33
2K.A.T.A.F.A.L.K.E.R

во-первых трафик, http запрос тянет за собой, куки, хедеры и всякую дребедень. Нужно передать пару байтов, а запрос идет килобайтный.

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

в-третьих, нагрузка на сервер, если будут долбить сервер одновременно 1000-5000 клиентов - загнется все к чертовой матери.

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

K.A.T.A.F.A.L.K.E.R
26.07.2005, 17:57
2K.A.T.A.F.A.L.K.E.R
использование сокета в многопользовательских играх - стандартная практика. без альтернатив.

Ну это ты зря! Альтернативы есть везде. Обрати внимание на БК - сам никогда не играл, но видел как происходит. Если я не ошибаюсь, никакими сокетами там и не пахнет! 1000-5000 человек??? К БК это не относится. Умножь эдак на 100 - тогда будет правда. Кроме того, там ведь тоже штрафы за простой... Хотя нет, не штрафы. Поражение! И никто еще не умер, никто еще не жаловался, и никто не нагружал себя сокетами. Почему? Да скорее всего потому что айПи (на 100% не уверен) у сервера один, а количество портов (читать: подключений) не резиновое! Или я в этом не прав??? А что касается хэдеров - их можно урезать посредством флеша, и поверь мне: если умно сделать, никто разницы даже не заметит. А сокеты... Как минимум не факт что они на серваке поддерживаются. Это ведь опция - хочу - открываю, не хочу - не открываю.

john
26.07.2005, 18:04
создание многопользовательских игр - моя работа.
не вижу смысла даже спорить.
"http vs socket" обсуждайте пожалуйста на каком нибудь PHP форуме.

john
26.07.2005, 18:14
Почему? Да скорее всего потому что айПи (на 100% не уверен) у сервера один, а количество портов (читать: подключений) не резиновое! Или я в этом не прав???

ну что "не резинововое" - прав, конечно :) но вполне достаточное,
например на win 2003 server можно повесить чуть больше 64 000 соединений (два байта). В линуксе не помню.

а порты и соединение - не одно и тоже.

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

K.A.T.A.F.A.L.K.E.R
26.07.2005, 18:21
по поводу разрешения открытия сокета на сервере, явно проявляется ваш опыт использования фри-хостинга. нормальный игровой сервер ставится либо на своей площадке либо на колокейшен.

Не угадал. Здесь проявляется мое нежелание как положено настроить PHP на компе :) А насчет своей площадки... Не думаю, что у человека создавшего сию тему она имеется...

Viktor_UA
29.07.2005, 18:23
по поводу разрешения открытия сокета на сервере, явно проявляется ваш опыт использования фри-хостинга. нормальный игровой сервер ставится либо на своей площадке либо на колокейшен.

Для написания игры необходимо n-раз её тестить! А значит необходимо на своей машине создать "оболочку", "атмосферу" для теста игрушки?! Тоесть поставить апачи и открыть порт? Каким образом его открывать? Подскажите плиз, как протестить, скажем, чат на флэше который использует Сокет-Коннекшын?
Я пользуюсь фри-хостингом на холм.ру. А каким ты пользуешься хостингом?

john
29.07.2005, 18:58
да создавайте "атмосферу" сколько угодно :)
на локальной машине тестируется через localhost порт любой, к примеру 1234

по поводу сервера -
есть готовые бесплатные сервера,

http://www.oregano-server.org/
http://www.openamf.org/
http://www.rawfish-software.com/ (это совсем новый, помоему не free, но много возможностей)

можно изменить если не устраивает - код открытый, это на java,
качайте редактор кода - ту же Idea (http://www.jetbrains.com/idea/download/) смотрите код, читайте доки.

DeadMorozz
29.07.2005, 19:00
Для перла и пхп у меня на машинке стоит локальный сервер с дистрибутива Денвер (http://www.denwer.ru/) Дмитрия Котерова.
Вполне рабочий вариант, если нет шелла на внешнем сервере, например.

Viktor_UA
29.07.2005, 20:19
по поводу сервера -
есть готовые бесплатные сервера,

http://www.oregano-server.org/
http://www.openamf.org/
http://www.rawfish-software.com/ (это совсем новый, помоему не free, но много возможностей)

Чё-то не могу врубитья как там регистрировать аккаунт на халяву!?!?!?!

DeadMorozz
01.08.2005, 11:55
Также заслуживает внимания и Smart Fox Server Lite (http://www.smartfoxserver.com/products/lite.php), разработка проекта gotoandplay.it (http://gotoandplay.it/). Не помню точно, в чем ограничения бесплатной версии, но он есть под большое количество серверных ОСей, подробно документрирован и снабжен большим числом исходников и компонентов.