|
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 17
|
|
Прошу совета - клиент-серверная онлайн-игра через web с браузерным клиентом на JavaScript13.01.2017, 16:04. Показов 7470. Ответов 48
Метки нет (Все метки)
Добрый день
Суть моего обращения, такова: Разрабатываю компьютерную игру (пошаговую, передаваемые данные незначительны по объёму). Клиент, пишу на JavaScript HTML5 Canvas - с этим проблем не возникло, уже написал здоровый кусок этого клиента Теперь, надо продумать серверную архитектуру - на каком языке писать сервер игры, как задружить его с клиентами Стал рыть инет - сколько ни рыл, пока одни непонятки Суть в том, что (как понимаю) JavaScript не дружит с TCP-сокетами Дружит с веб-сокетами, но чтобы их реализовать на сервере, требуется какая-то просто диссертация как почитаешь Может быть, AJAX? Но как именно? Про node.js, читал. Тоже непонятки, как что, вроде не рекомендуют юзать Прошу добрых людей, направить меня носом моим в нужное русло. Чтобы избрать нормальную архитектуру сразу, и по сто раз не переделывать. Заранее спасибо за помощь.
0
|
|
| 13.01.2017, 16:04 | |
|
Ответы с готовыми решениями:
48
Клиент-серверная игра Архитектура приложения клиент, прошу совета Клиент-серверная игра. Подключение нескольких игроков |
| 19.01.2017, 14:21 | ||||||||||||||||||
|
Добавлено через 2 часа 40 минут Раз от TC негатива больше нет, то покажу пример, он точно будет работать, так как я проверил. Может ещё кому пригодится. На всякий случай сохранил этот пример в запись блога. Создайте папку для проекта. Находясь в папке проекта, нужно набрать команды:
В папке проекта создайте файл app.js (для серверной части). А в папке 'public' создайте один файл index.html Логика примера. После запуска серверного скрипта (node app.js) сервер создаёт ID и отсылает его клиенту. Клиент выводит ID. Если на клиенте нажать кнопку "Send data to the server", то сервер выведет принятые от клиента данные. public/index.html Кликните здесь для просмотра всего текста
app.js Кликните здесь для просмотра всего текста
Рекомендую сразу протестировать на удалённом хостинге heroku.com. Можно создать 5 бесплатных приложений. Вот пошаговая инструкция: Getting Started on Heroku with Node.js P.S. Перед отправкой на heroku нужно добавить в package.json строку: "start": "node app.js" package.json Кликните здесь для просмотра всего текста
0
|
||||||||||||||||||
| 21.01.2017, 07:29 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 17
|
|
| 21.01.2017, 11:57 [ТС] | |
|
Так я (как насколько понимаю) socket.io хорош в том что работает со всеми браузерами вообще, в т.ч. и со старыми (в которых нету поддержки штатных вебсокетов), в т.ч. и с мобильными теми из них где нету поддержки штатных вебсокетов. Во всём остальном (как я понял) хороши штатные вебсокеты.
Как обстоит сейчас дело, с поддержкой штатных вебсокетов в современных мобильных браузерах? Время идёт, старые технологии уходят в прошлое, новые технологии внедряются и применяются. Имеет ли смысл, в этой ситуации, идти по пути этого старого socket.io? Мне надо (хорошо, подробно) понять, на чём мне жениться сейчас - на socket.io, или на штатных вебсокетах. "Негатива" от меня, никакого нету, и быть не может, т.к. я новичок в теме. Читаю информацию, пытаюсь вынести зерно истины. И та и та технология, оправдана (иначе, её бы просто не было). Мне надо понять, что сейчас лучше в текущей современной ситуации.
0
|
|
|
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
|
|
| 21.01.2017, 12:19 | |
|
посмотри по теме
https://www.youtube.com/watch?... vp191Hb3Gg
0
|
|
| 21.01.2017, 12:51 | ||
|
0
|
||
|
Ренегат
|
|
| 21.01.2017, 13:07 | |
|
У них достаточная поддержка современных браузеров.
Вообще не надо забывать, что socket.io - просто абстракция над простыми сокетами. Для месседжера или других интересных вещей socket.io предоставляет достаточно удобный интерфес передачи json. Для каких-нибудь игр всё же наверное стоит брать чистые WebSocket. Ибо socket.io, как и любая абстракция, увеличивает пакеты данных и замедляет их передачу. Это как с jq, там где не сильно важна скорость и трафик клиента, то можно спокойно использовать всякоразные карусельки да аккордеоны. А вот там, где эти аспекты важны, но не важно сколько времени и сил займёт разработка (то есть плата покрывает физические расходы), вот там как раз WS в самый раз будет.
0
|
|
| 21.01.2017, 13:28 | |
|
JSON очень удобен для игр, особенно, когда ты начинающий и делаешь несильно активную игру, а RTS, карточные игры, или MMORPG. Такие типы игр допускают спокойно до 500 мсек задержек (между кликом и реакцией). На таких играх нужно тренироваться программировать, а потом какие-то игры можно делать WebSocket'ах, если это будет необходимо.
0
|
|
| 21.01.2017, 14:40 | |
|
Откуда вы знаете, что они использую ws и буферы?
0
|
|
|
Ренегат
|
|
| 21.01.2017, 14:47 | |
|
8Observer8, хотел сделать бота... потом забросил.
Был тут человек, то ли Tester6*, то ли ещё кто-то. Он хотел сделать свою игру на подобии этой. Он даже где-то достал код сервера. И пробудил во мне интерес к этой игре... Я взял их минифицированный код и решил пробежаться по нему... Неблагодарное это дело конечно. Но в конце концов узнал как там всё устроено. Так же на хабре писалось. Там кто-то делал армию ботов.
0
|
|
| 21.01.2017, 15:50 | |
|
Я сколько не пытался найти исходники оригинальной игры, так и ничего не получилось.
Нашёл только три клона, все они написаны на socket.io:
Я читаю несколько книг по сетевым играм. Там перечисляются и анализируются источники задержек. Причём размерам пакета не удиляется внимание. Задержки в любом случае будут, потому что большинство не имеют высокоскоростной интернет. Есть логические методы компенсации задержек: интерполяция позиций, предсказания, виртуальный локальный сервер на стороне клиента и много других способов, чтобы человек даже с 200 задержкой не чувствовал этого в активных играх. Это требует много практики и знаний. Тяжело изучать, но интересно. Раньше и не такие скорости интернета были и всё же были динамичные игры.
0
|
|
|
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 17
|
|
| 21.01.2017, 16:01 [ТС] | |
|
1. Comet, мне не нужно. Клиент соединился с сервером по вебсокету - всё, дальше они общаются так. Серверно-инициированные вызовы какие-то дополнительно... зачем?
2. Кароч из написанного, понял что надо всё же переходить на штатные вебсокеты. Эволюция движется, а костыли-абстракции хороши только на начальном этапе, когда в браузерах не было поддержки. Сейчас, она есть. 3. По поводу "проще кодить". Тут просто надо сильно разжованные примеры и туториалы, выкладывать. Покопал, в данном плане сейчас негусто. Спасибо тем, кто сейчас мне дал ссылки на годные примеры. Сам я 1Сник, у нас сейчас всё программирование фактически сводится к открыл яндекс, нажал 3 кнопки, скопипастил. ![]() 4. Буферы и т.п. хитрости, нужны (имо) для, так сказать, "further optimization". Опять же, главное, чтобы не превращалось в "костыли". Сам пишу ККИ, пока мне всё это не нужно. Но всё же и депрекатед методы (third-party), мне тоже не нужны. 5. JSON, JQuery. Зачем мне это всё нужно для кодинга игр? Я не знаю (может быть, пока) 6. Чистый ws на ngrok, уже успешно оттестировал. Если нету грамотных минималистичных сэмплов, сегодня-завтра выложу разжованный сэмпл
0
|
|
| 21.01.2017, 16:50 | ||
|
Тут всё на ваше усмотрение. Я выбрал socket.io только потому что с ними оргомная куча примеров в инете по играм, что не тутор по мультиплееру, то socket.io
0
|
||
|
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
|
|
| 21.01.2017, 17:29 | |
|
я эту тему начал копать когда, был удивлен тормозами в вебе. Делал когда-то сервер UDP рассылки с клиентским GUI, период обновления был 25 миллисек в реалтайме с графикой.
есть интересный пример на питоне - websocket с нуля
0
|
|
| 21.01.2017, 18:08 | |
|
Я накопал, что игра tanx.io сделана на Websockets.
Используется игровой сервер Colyseus на Node.js под бесплатной лицензией MIT. Вот исходники сервера: https://github.com/gamestdio/colyseus
0
|
|
|
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 17
|
|
| 21.01.2017, 20:23 [ТС] | |
|
8Observer8, а зачем мне работать с пакетами (JSON)? Вот подключилось клиент-сервер по вебсокету, и работает по нему. Дальнейшие оптимизации сетевого трафика, буду делать если они мне будут нужны.
0
|
|
|
Ренегат
|
||
| 21.01.2017, 21:37 | ||
|
SilverSurfer, json - формат данных. Не более. Надо различать. К форматам ещё относятся xml, yaml и ещё дофигищу было придумано под разные задачи. JSON просто удобно парсить в браузере. socket.io по дефалту использует этот формат для своих пакетов, ибо он там ещё хранит тип пакета и может ещё разную инфу хранить.
0
|
||
| 21.01.2017, 21:57 | |||||||||||||
0
|
|||||||||||||
|
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 17
|
|
| 21.01.2017, 23:20 [ТС] | |
|
Давайте отделим мух от котлет, и внесём ясность
1. JSON - формат передачи данных. Ок, понял вас. Что такое XML, я знаю, т.к. 1Сник я ![]() 2. Вот у меня сейчас работает сервер чистых вебсокетов, к нему подключаются клиенты. Между клиентами и сервером, идёт обмен текстовыми сообщениями (строками). Для отправки/приёма строк, юзаю штатные методы js-кода относящегося к работе с вебсокетами. 3. Нужно ли мне работать ещё и с самими пакетами, которые передаются по вебсокетам, с их форматом данных? По-моему, нет. По крайней мере, сейчас. Зачем мне это? 4. Нравится или не нравится мне формат передачи данных JSON - я (честно) не знаю. Так же как например, нравится или не нравится мне XML - ну, что-то мне в нём нравится, что-то нет. 5. Зачем мне JSON сейчас? Не знаю. По-моему, ни за чем, т.к. внутрь пакетов, не лезу.
0
|
|
| 21.01.2017, 23:20 | |
|
Доступ к базе через web-клиент и толстый клиент Прошу совета извлечь bin из старого PDB файла для PALM, возможно через VS2008 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни
1. Механизм отложенного высвобождения фосфора
Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ
Реализована разная скорость. . .
|
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2.
Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
|
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её.
Всё это стресс конечно. Почему?. . .
|
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот.
Ларри Уингет
|
|
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|