Форум → Программирование → PHP для идиотов → Создание браузерной игры с нуля, вопросы внутри
Создание браузерной игры с нуля, вопросы внутри
- 
                    
                    
                         Авг. 13, 2010, 11:09 п.п., спустя 1 день 20 часов 40 минут
                                    
                                Итак, модель сообщений разработана, для передачи использую IFrame, добился кроссбраузерности… теперь последняя проблема. Как из одного потока сообщить что-нибудь всем клиентам (или какой-либо группе)? Т.е. вот получил я сообщение о том, что юзер1 переместился из локации1 в локацию2 - как дать понять об этом другим? Если это невозможно из-за конструктивных особенностей PHP, придётся переходить на что-то типа Erlang. Авг. 13, 2010, 11:09 п.п., спустя 1 день 20 часов 40 минут
                                    
                                Итак, модель сообщений разработана, для передачи использую IFrame, добился кроссбраузерности… теперь последняя проблема. Как из одного потока сообщить что-нибудь всем клиентам (или какой-либо группе)? Т.е. вот получил я сообщение о том, что юзер1 переместился из локации1 в локацию2 - как дать понять об этом другим? Если это невозможно из-за конструктивных особенностей PHP, придётся переходить на что-то типа Erlang.
- 
                    
                    
                         Авг. 13, 2010, 11:37 п.п., спустя 27 минут 58 секунд
                                    
                                я немного недопонял. Расскажи подробнее, как у тебя организована связь с сервером. Ну, постоянное соединение типа Comet? Авг. 13, 2010, 11:37 п.п., спустя 27 минут 58 секунд
                                    
                                я немного недопонял. Расскажи подробнее, как у тебя организована связь с сервером. Ну, постоянное соединение типа Comet?
- 
                    
                    
                         Авг. 13, 2010, 11:42 п.п., спустя 4 минуты 38 секунд
                                    
                                Подумал: если в PHP процессы могли бы как-то обмениваться между собой данными, то можно было бы замутить такую штуку: каждый процесс game.php не завершается после формирования странички, а уходит в цикл, разрываемый только закрытием сессии. В цикле он 1) проверяет, не пришло ли сообщений от его клиента - если пришли, записывает их в общую область памяти; 2) проверяет, нет ли в общей области памяти новых сообщений 3) отбирает из них те, которые имеют отношение к его клиенту (по территориальному признаку, по id боя и т.д.) 4) отправляет своему клиенту xml с обновлениями => к шагу 1. Авг. 13, 2010, 11:42 п.п., спустя 4 минуты 38 секунд
                                    
                                Подумал: если в PHP процессы могли бы как-то обмениваться между собой данными, то можно было бы замутить такую штуку: каждый процесс game.php не завершается после формирования странички, а уходит в цикл, разрываемый только закрытием сессии. В цикле он 1) проверяет, не пришло ли сообщений от его клиента - если пришли, записывает их в общую область памяти; 2) проверяет, нет ли в общей области памяти новых сообщений 3) отбирает из них те, которые имеют отношение к его клиенту (по территориальному признаку, по id боя и т.д.) 4) отправляет своему клиенту xml с обновлениями => к шагу 1.
 Можно ли реализовать такую систему на PHP?
 Будет ли она тормозить, когда в онлайне будет, скажем, 5000 пользователей?Спустя 230 сек.Абырвалг , сейчас я пишу чат: клиент нажимает на кнопку "отправить", сообщение отсылается на сервер через невидимый IFrame методом POST, сервер проверяет а допустимость длины, отсутствие мата и спама, и если всё хорошо, присылает <script>, который немедленно выполняется в IFrame и выводит в текстовое поле сообщение. Как выводит его и у других клиентов?
 Просто в web-программировании я полный нуб и по-моему я немного недопонимаю архитектуру PHP.
- 
                    
                    
                         Авг. 13, 2010, 11:47 п.п., спустя 5 минут 50 секунд
                                    
                                хм. А зачем тут ифрейм? Это можно просто на аяксе. Авг. 13, 2010, 11:47 п.п., спустя 5 минут 50 секунд
                                    
                                хм. А зачем тут ифрейм? Это можно просто на аяксе.не завершается после формирования странички, а уходит в цикл, разрываемый только закрытием сессии. 
 Хочешь демона - http://phpdaemon.net/
- 
                    
                    
                         Авг. 14, 2010, 12:03 д.п., спустя 15 минут 59 секунд Авг. 14, 2010, 12:03 д.п., спустя 15 минут 59 секундА зачем тут ифрейм? 
 А мы не ищем лёгких путей =) Нет, на самом деле, отправлять Аяксом можно, а получать? Только один раз - а после этого переподключение. Вот я заодно и потренировался работать с фреймом.
 Насчёт phpDaemon - спасибо, похоже, то что нужно. Не знал о такой вещи.
- 
                    
                    
                         Авг. 14, 2010, 6:30 д.п., спустя 6 часов 26 минут 29 секунд Авг. 14, 2010, 6:30 д.п., спустя 6 часов 26 минут 29 секундА зачем тут ифрейм? 
 А мы не ищем лёгких путей =) Нет, на самом деле, отправлять Аяксом можно, а получать? Только один раз - а после этого переподключение. Вот я заодно и потренировался работать с фреймом.
 Насчёт phpDaemon - спасибо, похоже, то что нужно. Не знал о такой вещи.
 http://dklab.ru/lib/dklab_realplexor/Спустя 26 сек.http://rutvit.ru/realplexor/demo
- 
                    
                    
                         Авг. 14, 2010, 10:12 д.п., спустя 3 часа 42 минуты 32 секунды Авг. 14, 2010, 10:12 д.п., спустя 3 часа 42 минуты 32 секундысейчас я пишу чат: клиент нажимает на кнопку "отправить", сообщение отсылается на сервер через невидимый IFrame методом POST, сервер проверяет а допустимость длины, отсутствие мата и спама, и если всё хорошо, присылает <script>, который немедленно выполняется в IFrame и выводит в текстовое поле сообщение. Как выводит его и у других клиентов? 
 юзай аякс, зачем фреймы?Спустя 30 сек.тоже обновление окно чата можно на jquery рефрешемСпустя 177 сек.что то вродеvar auto_refresh = setInterval(
 function ()
 {
 $('#window_chat').load('chat.php');
 }, 4000);Спустя 121 сек.по поводу обмена данными клиент <-> сервер, опять тот же jquery refresh, в ответ клиенту приходит json тело с необходимыми данными и обновляем
- 
                    
                    
                         Авг. 14, 2010, 11:59 д.п., спустя 1 час 46 минут 37 секунд
                                    
                                Pasha, дело в том, что чат сможет работать в 2 режимах. В быстром режиме строка будет отображаться по мере ввода в режиме реального времени. Можно будет стирать очепятки и писать дальше. Если пользователь дошёл до конца строки, она обрывается многоточием и продолжается с первой свободной. Если нажал Enter или если вышло определённое время с момента ввода последнего символа - тоже начинается новая строка. А теперь представьте, сколько раз в секунду придётся вызывать refresh(), чтобы создать такой эффект "живого разговора"? Авг. 14, 2010, 11:59 д.п., спустя 1 час 46 минут 37 секунд
                                    
                                Pasha, дело в том, что чат сможет работать в 2 режимах. В быстром режиме строка будет отображаться по мере ввода в режиме реального времени. Можно будет стирать очепятки и писать дальше. Если пользователь дошёл до конца строки, она обрывается многоточием и продолжается с первой свободной. Если нажал Enter или если вышло определённое время с момента ввода последнего символа - тоже начинается новая строка. А теперь представьте, сколько раз в секунду придётся вызывать refresh(), чтобы создать такой эффект "живого разговора"?
 Flare, чёрт… Придётся ставить Linux, чтобы попробовать. Но производительность впечатляет :-)
- 
                    
                    
                        
- 
                    
                    
                         Авг. 14, 2010, 10:10 п.п., спустя 7 часов 37 минут 7 секунд
                                    
                                DenisS1, нахуй юзеру отправлять текст, если он его набирает? Если хочет отправить, пусть жмет энтер, иначе пусть дописывает/исправляет что ему нужно. Авг. 14, 2010, 10:10 п.п., спустя 7 часов 37 минут 7 секунд
                                    
                                DenisS1, нахуй юзеру отправлять текст, если он его набирает? Если хочет отправить, пусть жмет энтер, иначе пусть дописывает/исправляет что ему нужно.
 п.с. Вообще пользователи сами будут такому недовольны, потому как отправка чего-то без их ведома - это уже плохо.
- 
                    
                    
                         Авг. 14, 2010, 11:57 п.п., спустя 1 час 47 минут 4 секунды
                                    
                                Givi, тут как раз есть все прозрачно, ибо пользователи знают, что текст отправляется без их ведома Авг. 14, 2010, 11:57 п.п., спустя 1 час 47 минут 4 секунды
                                    
                                Givi, тут как раз есть все прозрачно, ибо пользователи знают, что текст отправляется без их ведома
- 
                    
                    
                         Авг. 16, 2010, 11:35 п.п., спустя 1 день 23 часа 38 минут
                                    
                                Ещё одна проблема: не знаю, как принять XML-файл на сервере. Отправить отправил с помощью XMLHttpRequest(), а что писать в $_POST[] в качестве идентификатора? Авг. 16, 2010, 11:35 п.п., спустя 1 день 23 часа 38 минут
                                    
                                Ещё одна проблема: не знаю, как принять XML-файл на сервере. Отправить отправил с помощью XMLHttpRequest(), а что писать в $_POST[] в качестве идентификатора?
- 
                    
                    
                         Авг. 17, 2010, 2:45 п.п., спустя 15 часов 10 минут 1 секунду
                                    
                                var_dump($_REQUEST)https://smappi.org/ - платформа по созданию API на все случаи жизни Авг. 17, 2010, 2:45 п.п., спустя 15 часов 10 минут 1 секунду
                                    
                                var_dump($_REQUEST)https://smappi.org/ - платформа по созданию API на все случаи жизни
- 
                    
                    
                         Авг. 18, 2012, 10:11 п.п., спустя 732 дня 7 часов 25 минут
                                    
                                На горе кудрявый дуб, Авг. 18, 2012, 10:11 п.п., спустя 732 дня 7 часов 25 минут
                                    
                                На горе кудрявый дуб,
 Под горою липа.
 Петька Маньку завалил-
 Делает Филиппа.
Пожалуйста, авторизуйтесь, чтобы написать комментарий!
 
         
                                     
                                     
                                     
                                     
                                     
                                    