|
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 17
|
|
Прошу совета - клиент-серверная онлайн-игра через web с браузерным клиентом на JavaScript13.01.2017, 16:04. Показов 7373. Ответов 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 | |
|
Помогаю со студенческими работами здесь
40
Доступ к базе через web-клиент и толстый клиент Прошу совета извлечь bin из старого PDB файла для PALM, возможно через VS2008 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|