html5 мультиплеер
| |
MrVasLuk | Дата: Суббота, 11 Июля 2015, 14:48 | Сообщение # 1 |
участник
Сейчас нет на сайте
| Здравствуйте! Делаю игру наподобие agario. Нужно сделать так, чтобы координаты всех игроков записывались в ini файл на сервере. Когда игрок играет, эти координаты должны считываться и на их месте должны появляться объекты других игроков.А еще чтобы эти объекты телепортировались на новые координаты, когда другие игроки их двигают. Я первый раз работаю с html5, могу что-то недопонимать.
увеличь популярность своего проекта/канала YouTube/странички вк: FREE Social Promotion
|
|
| |
Vinchensoo | Дата: Суббота, 11 Июля 2015, 14:50 | Сообщение # 2 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| html5 не умеет писать информацию в файлы на сервере, это клиентское приложение.
|
|
| |
MrVasLuk | Дата: Суббота, 11 Июля 2015, 15:00 | Сообщение # 3 |
участник
Сейчас нет на сайте
| Тогда как сделать мультиплеерный html5? Мне главное, чтобы в клиент передавалось положение всех игроков и чтобы на этом месте появлялись и двигались объекты другого игрока (obj_otherplayer)
увеличь популярность своего проекта/канала YouTube/странички вк: FREE Social Promotion
|
|
| |
Vinchensoo | Дата: Суббота, 11 Июля 2015, 15:23 | Сообщение # 4 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Очевидно же, сделать сервер. Вам идеально подойдут веб-сокеты(посмотрите socket.io) и любой серверный язык(удобнее всего будет на node js, наверное).
А как сделать это на ГМ- я не знаю.
|
|
| |
Qvant | Дата: Суббота, 11 Июля 2015, 15:34 | Сообщение # 5 |
почти ветеран
Сейчас нет на сайте
| 1
2
3
Сообщение отредактировал Qvant - Суббота, 11 Июля 2015, 15:37 |
|
| |
harmoxyne | Дата: Суббота, 11 Июля 2015, 15:43 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| Цитата MrVasLuk ( ) координаты всех игроков записывались в ini файл Я тебе как человек, слегка прогоревший на этом, скажу - выбрось эту идею и делай в БД. IO для БД в тысячи раз быстрее, чем для файлов, это раз. В БД есть защита от одновременной записи с разных источников (это полезная штука, блокировка транзакций, по-моему, зовется), тебе не придется париться с этим самому. Ну и, естественно, тебе придется либо делать отдельный файл для каждого игрока, либо страдать, ибо одновременный доступ к файлу с разных источников - слегка плохая вещь.
|
|
| |
mehanic | Дата: Суббота, 11 Июля 2015, 15:52 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Как мне известно, а известно довольно не точно, можно отправлять сокеты с гмс на любой айпи и порт... следовательно использовать посторонние дополнения смысла не вижу... юзаем networking и читаем статьи Xdominator или мои.:)
http://forum.hellroom.ru/index.php?topic=21720 Мультиплеер GMS(Game Maker Studio networking) туториал на русском создание игры:}
|
|
| |
Vinchensoo | Дата: Суббота, 11 Июля 2015, 15:54 | Сообщение # 8 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Цитата mehanic ( ) Как мне известно, а известно довольно не точно, можно отправлять сокеты с гмс на любой айпи и порт... следовательно использовать посторонние дополнения смысла не вижу... юзаем networking и читаем статьи Xdominator или мои.:) Обычно во многих конструкторах сокеты не доступны в html5 версии. Связано это с различной организацией апи и вообще работы у сокетов беркли и веб-сокетов(хтмл5). Как в гтс- не знаю, но лучше сначала проверить.
|
|
| |
Qvant | Дата: Суббота, 11 Июля 2015, 15:56 | Сообщение # 9 |
почти ветеран
Сейчас нет на сайте
| Цитата mehanic ( ) юзаем networking и читаем статьи Xdominator или мои.:) расскажи как , когда networking в Game Maker html5 стал работать ?
|
|
| |
mehanic | Дата: Суббота, 11 Июля 2015, 16:18 | Сообщение # 10 |
был не раз
Сейчас нет на сайте
| В любом случаи делать мультиплеер игру в гмс на хтмл 5 не вижу смысла... тормознуто, баги и т.д .. лешче сделать ехе и арендовать серыер для этого, при этом всё будет работать и функциональность будет одинаковая.:) (ох ужас сколько ошибок с телефона...) Добавлено (11 июля 2015, 16:18) --------------------------------------------- Кстати, по теме вопроса... если работают функции http_get_... то юзай asynchronous HTTP
http://forum.hellroom.ru/index.php?topic=21720 Мультиплеер GMS(Game Maker Studio networking) туториал на русском создание игры:}
|
|
| |
JackNazaryan | Дата: Суббота, 11 Июля 2015, 19:38 | Сообщение # 11 |
старожил
Сейчас нет на сайте
| Не используй базу данных, при большом кол-ве игроков она просто треснет
Используй вебсокеты. Клиент - HTML5, сервер - какой пожелаешь (даже на php можно развернуть вебсокет-сервер, мы это как раз внедряем в Raptor game engine)
По сути тогда БД нужна только для того, чтобы координаты восстанавливались в случае падения. То есть каждые N минут пускаешь в очередь запросы к базе данных и записываешь координаты игроков. Но не надо использовать БД постоянно - это не то чтобы какой-то смертный грех, просто твой сервер рано или поздно скажет "адьос, синьор"...
Нам в Disaytid помогла освоиться в этой технологии статья в бложике, однако есть и готовые решения. Это всё про PHP, как дела обстоят в явах, аспах и руби - не знаю... гуглить уже надо. Могу помочь, если надо, это в личку.
|
|
| |
harmoxyne | Дата: Суббота, 11 Июля 2015, 19:52 | Сообщение # 12 |
заслуженный участник
Сейчас нет на сайте
| Цитата JackNazaryan ( ) Не используй базу данных, при большом кол-ве игроков она просто треснет Да, я слегка не так выразился) Главная суть моего высказывания была в том, что оперировать чем-то в файлах - плохо, лучше БД. А так, если будет сервер, то, мне кажется, можно хранить координаты в оперативной памяти, иногда записывая их в БД.
|
|
| |
MrVasLuk | Дата: Воскресенье, 12 Июля 2015, 13:10 | Сообщение # 13 |
участник
Сейчас нет на сайте
| Немного непонятно, но попробую разобраться потом. Спасибо всем=)
увеличь популярность своего проекта/канала YouTube/странички вк: FREE Social Promotion
Сообщение отредактировал MrVasLuk - Воскресенье, 12 Июля 2015, 13:11 |
|
| |
Vinchensoo | Дата: Воскресенье, 12 Июля 2015, 20:37 | Сообщение # 14 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Цитата JackNazaryan ( ) По сути тогда БД нужна только для того, чтобы координаты восстанавливались в случае падения. То есть каждые N минут пускаешь в очередь запросы к базе данных и записываешь координаты игроков. Но не надо использовать БД постоянно - это не то чтобы какой-то смертный грех, просто твой сервер рано или поздно скажет "адьос, синьор"... Современные базы несколько умнее, чем ты себе представляешь. + кеширование мемкешд/редис. + noSQL, что для игр вообще божественно подходит. Для экшн игры писать клиент на хтмл5- в целом не лучшее решение.
|
|
| |
XDominator | Дата: Понедельник, 13 Июля 2015, 10:53 | Сообщение # 15 |
постоянный участник
Сейчас нет на сайте
| Кстати agar на самом деле имеет далеко не лучшее время отклика, и рывки + задержки проявляются довольно часто.
html5 не интересовался, как и web разработкой вообще в целом, потому спрошу - html5 не может работать с сокетами напрямую? Просто писать такую вещь, как координаты, в БД, откуда потом их забирать - какое то вообще наглухо странное решение, на мой взгляд, а уж про потенциальное быстродействие такой схемы даже говорить не хочется.
И как при таком раскладе игрокам отсылаются данные о координатах других игроков обратно?
Ghaarp
The soul lighter(Android, logic)
Zzzzombie RAGE!!!(For android)
Сообщение отредактировал XDominator - Понедельник, 13 Июля 2015, 10:54 |
|
| |
Vinchensoo | Дата: Понедельник, 13 Июля 2015, 11:29 | Сообщение # 16 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Цитата XDominator ( ) html5 не интересовался, как и web разработкой вообще в целом, потому спрошу - html5 не может работать с сокетами напрямую? Просто писать такую вещь, как координаты, в БД, откуда потом их забирать - какое то вообще наглухо странное решение, на мой взгляд, а уж про потенциальное быстродействие такой схемы даже говорить не хочется. 1. Не может, только веб-сокеты, а это немного другой протокол. Если я не ошибаюсь, тройное рукопожатие происходит по http протоколу, дальше все работает через ТСР(браузер не закрывает соединение с веб-сервисом). 2. Смотря какая бд. Тот же mysql умеет работать ПОЛНОСТЬЮ в оперативной памяти и работает он достаточно быстро. Про nosql - молчу.
Я, например, видел гоночку, которая была реализована через обычный long-pooling. Ничего не лагало. Тут вопрос кривизны рук.
|
|
| |
JackNazaryan | Дата: Понедельник, 13 Июля 2015, 18:17 | Сообщение # 17 |
старожил
Сейчас нет на сайте
| Vinchensoo, я очень хорошо знаю возможности Nosql, поскольку мы тут в проекте используем связку MongoDB + Memcache. Просто если дело доходит до перемещений в реальном времени, начинаешь убеждаться, что грузить apache и memcache кучей запросов - плохо и нерентабельно. За короткое время один игрок может создать десятки тысяч запросов. Оно вам надо? Лучше на сокетах делать, там данные хранятся в обыкновеннейших переменных. И никаких проблем с нагрузкой.
|
|
| |
Vinchensoo | Дата: Понедельник, 13 Июля 2015, 19:31 | Сообщение # 18 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Цитата JackNazaryan ( ) Vinchensoo, я очень хорошо знаю возможности Nosql, поскольку мы тут в проекте используем связку MongoDB + Memcache. Просто если дело доходит до перемещений в реальном времени, начинаешь убеждаться, что грузить apache и memcache кучей запросов - плохо и нерентабельно. PHP? Ну так не PHP единым. Апач вообще достаточно медленный в плане отдачи информации от сервера. Благо есть nginx, да и куча других серверов для раздачи динамики.
Цитата JackNazaryan ( ) . За короткое время один игрок может создать десятки тысяч запросов. Оно вам надо? Лучше на сокетах делать, там данные хранятся в обыкновеннейших переменных. И никаких проблем с нагрузкой. Что-то вы вообще мешаете все в кучу. Причем тут 10к запросов от клиента и формат хранения данных? Можно легко хранить все в памяти, используя в качестве транспорта http протокол. И опять же, можно передавать данные через сокеты и хранить все в mysql базе без элементарных индексов. Цитата JackNazaryan ( ) И никаких проблем с нагрузкой.
Это очень спорное утверждение. Во-первых, проблемы с нагрузкой будут- гонки потоков, блокировки, синхронизация обращения к общим данным(в зависимости от технологии). Конечно, если у нас игра такова, что синхронизаций данных почти нет(например, всякие фермочки) - без проблем, можно все держать в памяти. Как только число блокировок и перекрестных обращений вырастет в разы- это все вылезет. И фиксить такие вещи- долго и сложно.
Мы, например, используем redis в качестве кеша и он работает ну очень быстро. В определенных типах игр его можно использовать как основное хранилище, реплицируя данные в mysql для надежности.
Таки-повторюсь: Цитата Vinchensoo ( ) Я, например, видел гоночку, которая была реализована через обычный long-pooling. Ничего не лагало. Тут вопрос кривизны рук. Цитата Vinchensoo ( ) Для экшн игры писать клиент на хтмл5- в целом не лучшее решение. У Java есть интересные решения in-app storage, чтобы не тратить время на переброску информации к серверу базы данных(даже если на локалхосте, все равно мини-задержки появляются)
Мне кажется, "никаких проблем"- это очень поспешный вывод.
|
|
| |
JackNazaryan | Дата: Понедельник, 13 Июля 2015, 19:37 | Сообщение # 19 |
старожил
Сейчас нет на сайте
| Vinchensoo, пожалуй, вы правы. Есть какие-то хорошие альтернативы html5? (кроме флэша, потому что "флэш маст дай")
|
|
| |
Vinchensoo | Дата: Понедельник, 13 Июля 2015, 19:50 | Сообщение # 20 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Цитата JackNazaryan ( ) Vinchensoo, пожалуй, вы правы. Есть какие-то хорошие альтернативы html5? (кроме флэша, потому что "флэш маст дай") unityWebPlayer. Правда от него тоже отказываются. Я думаю, что рано или поздно все придут к написанию веб-приложений только на JS(скорость железа растет, оптимизатор JS тоже умнее, JIT компиляцией тоже никого не удивишь).
|
|
| |
|