Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/34: Рейтинг темы: голосов - 34, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 13.01.2017
Сообщений: 17

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

13.01.2017, 16:04. Показов 7203. Ответов 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
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 225
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
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 225
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
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 225
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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru