0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 17

Прошу совета - клиент-серверная онлайн-игра через web с браузерным клиентом на JavaScript

13.01.2017, 16:04. Показов 7370. Ответов 48
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день
Суть моего обращения, такова:
Разрабатываю компьютерную игру (пошаговую, передаваемые данные незначительны по объёму). Клиент, пишу на JavaScript HTML5 Canvas - с этим проблем не возникло, уже написал здоровый кусок этого клиента
Теперь, надо продумать серверную архитектуру - на каком языке писать сервер игры, как задружить его с клиентами
Стал рыть инет - сколько ни рыл, пока одни непонятки
Суть в том, что (как понимаю) JavaScript не дружит с TCP-сокетами
Дружит с веб-сокетами, но чтобы их реализовать на сервере, требуется какая-то просто диссертация как почитаешь
Может быть, AJAX? Но как именно?
Про node.js, читал. Тоже непонятки, как что, вроде не рекомендуют юзать
Прошу добрых людей, направить меня носом моим в нужное русло. Чтобы избрать нормальную архитектуру сразу, и по сто раз не переделывать.
Заранее спасибо за помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.01.2017, 16:04
Ответы с готовыми решениями:

Клиент-серверная игра
Здравствуйте, мне нужно реализовать клиент-серверную игру в крестики-нолики, где клиентом и сервером управляют 2 пользователя. Я пока не...

Архитектура приложения клиент, прошу совета
Ситуация - есть некий программный сервер с БД и текущими состояниями массива объектов. Приложение цепляется к нему по WCF. Приложение...

Клиент-серверная игра. Подключение нескольких игроков
Всем привет) Возник такой вопрос: У меня игра рулетка, клиент-серверная. Пока работает только так: для каждого подключенного игрока...

48
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,024
Записей в блоге: 242
21.01.2017, 23:29
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от SilverSurfer Посмотреть сообщение
Между клиентами и сервером, идёт обмен текстовыми сообщениями (строками)
Можно текстовыми сообщениями, то есть в своём формате, где вы знаете, что идёт на каком месте в строке и парсить, а мне больше нравится JSON. О вкусах не спорят.

Цитата Сообщение от SilverSurfer Посмотреть сообщение
3. Нужно ли мне работать ещё и с самими пакетами, которые передаются по вебсокетам, с их форматом данных? По-моему, нет. По крайней мере, сейчас. Зачем мне это?
Конечно, не нужно.
0
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 17
22.01.2017, 00:50  [ТС]
Выложил подробный работающий сэмпл, удалено (в конце там) - второй раз, расписать уже не смогу ))

8Observer8, как я понял, пересылаете не просто текстовые сообщения, а "структуры" данных (с набором полей, обращение через точку)
Для чистого ws, есть ли такое тоже?
Или м.б. проще написать какой-то wrapper структур в строчку текстовую, и обратно?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
22.01.2017, 01:00
SilverSurfer, ссылки на русские форумы запрещены...

Добавлено через 2 минуты
SilverSurfer, на счёт wraper... Как бы json и является таким врапером. Он просто превращает объект/массив/число/строку в json строку, которую можно будет распарсить в такой же объект/массив/число/строку.
А вообще лучше почитайте.
0
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 17
22.01.2017, 01:08  [ТС]
BANO, вы меня сейчас пока в одном просветите: на чистые веб-сокеты, можно ли (нужно ли, хорошо ли, и т.п.) наворачивать JSON? Или надо другой врапер?

По сэмплу своему - сообщение отредактировать уже не могу, прошу удалить ссылку из него тогда, сейчас выложу текст сюда (просто, только что накатал его)
0
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 17
22.01.2017, 01:12  [ТС]
Не, сюда вставить не могу, пишет "слишком длинный текст"
Сохранил в txt, прикладываю его к данному сообщению (там с тегами, не красиво)
Вложения
Тип файла: txt сэмпл.txt (16.7 Кб, 7 просмотров)
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,024
Записей в блоге: 242
22.01.2017, 01:20
Цитата Сообщение от SilverSurfer Посмотреть сообщение
как я понял, пересылаете не просто текстовые сообщения, а "структуры" данных (с набором полей, обращение через точку)
Так-то JSON это тоже текстовое сообщение, которое имеет очень простой стандартный формат, где объект - это наборы ключ-значение через запятую в фигурных скобках или массивы таких объектов - в квадратных скобках. Я собираюсь свои небольшие сетевые игры интегрировать в vk и facebook, где общение с Vk API строится на пересылке JSON сообщений. JSON родной для JavaScript и поэтому легко автоматически парсится, что можно через точку обращаться, или по ключу, или по индексу в массиве.
0
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 17
22.01.2017, 01:26  [ТС]
1. Как обстоит дело с поддержкой JSON в браузерах?
2. Как прикрутить JSON к node?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
22.01.2017, 01:34
SilverSurfer, как вам уже и сказали, это зависит от задачи. Скорее всего, раз вы просто строчками обходитесь, то вам не понадобится json.

Добавлено через 50 секунд
Цитата Сообщение от SilverSurfer Посмотреть сообщение
1. Как обстоит дело с поддержкой JSON в браузерах?
2. Как прикрутить JSON к node?
Он именно из js вырос. У него с json дела обстоят лучше всех. И у ноды тоже. Вы читали ту статью, которую я кидал?
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,024
Записей в блоге: 242
22.01.2017, 12:10
SilverSurfer, советую приобрести эту книгу: Multiplayer Game Development with HTML5

В первой главе этой книги подробно объясняется, как сделать игру Крестики-Нолики на вебсокетах и node.js с использованием JSON.

Цитата из книги:

Once the socket is ready to send and receive data, you can send messages to the
server by calling the socket object's send method, which takes a string as the message
to be sent.

JavaScript
1
2
// Assuming a connection was previously established
socket.send('Hello, WebSocket world!');
Most often, however, you will want to send more meaningful data to the server, such
as objects, arrays, and other data structures that have more meaning on their own. In
these cases, we can simply serialize our data as JSON strings.

JavaScript
1
2
3
4
5
6
var player = {
   nickname: 'Juju',
   team: 'Blue'
};
 
socket.send(JSON.stringify(player));
Now, the server can receive that message and work with it as the same object structure
that the client sent it, by running it through the parse method of the JSON object.

JavaScript
1
2
3
4
var player = JSON.parse(event.data);
player.name === 'Juju'; // true
player.team === 'Blue'; // true
player.id === undefined; // true
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.01.2017, 12:10
Помогаю со студенческими работами здесь

Клиент-серверная база(подключение через хостинг)
Здравствуйте. Я хотел создать клиент-серверная база. Создал базу на Phpmyadmin. Теперь хочется подключиться к базу через хостинга. Но не...

Клиент-серверная программа, работающая через broadcast
Помогите написать, пожалуйста. Программа должна установить пакеты с одного компьютера на другие, находящихся в сети. Например, установить...

Прошу совета у опытных людей. Цикл while и 2 условия через логическое или (or)
Есть код. В два счетчика попадают числа, не важно как. Я хотел, чтобы при выполнении одного из условий, программа выходила из цикла. В...

Доступ к базе через web-клиент и толстый клиент
Подскажите как можно организовать доступ к базе (файловой или клиент-сервер) одновременно черзе веб и через толстый клиенты? Если такое...

Прошу совета извлечь bin из старого PDB файла для PALM, возможно через VS2008
Всем привет ! Скажу сразу - я не программист, но нужно мне с этим разобраться. Есть файл PDB 63кБт, он идёт как файл прошивки к софту...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
49
Ответ Создать тему
Опции темы

Новые блоги и статьи
Асинхронный приём данных из 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. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru