Понедельник, 25 Ноября 2024, 22:26

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
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 стал работать ? biggrin
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 компиляцией тоже никого не удивишь).


  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг