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

Игровой сервер Node.js

02.07.2016, 23:29. Показов 6881. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли писать игровой сервер на Node.js и целесообразно ли это. Что ви можете посоветовать еще?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.07.2016, 23:29
Ответы с готовыми решениями:

Связь TCP сервер - сервер-клиент на node.js - браузер. нужна коррекция
Суть проблемы: написал по примерам программу, с помощью которой можно с браузера отправить команду на TCP сервер и получить ответ. Все...

Мои сервер и dev-сервер для node.js
Изначально был необходим dev-server для apache/nginx с кешированием файлов, который бы автоматически обновлял некоторые независимые js...

Сервер на node.js
Всем привет! У меня такой вопрос: Что такое сервер на node.js?И зачем он нужен? Заранее спасибо)

18
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
02.07.2016, 23:31
можно
игры на них пишутся
недавно тут был человек, который писал игру "чашка петри"
посмотрите в поиске, там он и исходники скидывал и игру, с которой он сдирал свою
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,018
Записей в блоге: 241
27.08.2016, 20:44
Насколько я знаю, сервер для игры agar.io на Node.js

Я хочу научиться делать маленькие серверы для маленьких браузерных игр на WebGL.

Пока нашёл и изучаю две этих книги:
0
28.08.2016, 02:18

Не по теме:

Цитата Сообщение от 8Observer8 Посмотреть сообщение
игры agar.io
Вот, это именно та игра, с которой Чеффул, вроде так его ник, содрал свою игру.

0
Coding is art
Эксперт JS
540 / 423 / 154
Регистрация: 04.09.2013
Сообщений: 1,066
28.08.2016, 23:14
я месяца 4 назад делал клона агар..
Не знаю правда, на сколько у них там продвинуто и горизонтально расширяемо..
Но у меня получилось сделать только 40 человек онлайн на 1-м трейте ( т.е. на 1-м запуске приложения ноды ).
В принципе, горизонтально расширение бы помогло держать и 500 человек, но там было слишком геморно его реализовывать и мы решили писать на C/C++.
Проблема ноды, для ММО игр, в том, что она однопоточна и комуникация между игроками становиться ( в горизонтальном расширении ) очень запутанной..
Если писать, то лучше на C/C++/Java, а уже по сокету можно и к ним подключиться.
1-я проблема с которой я столкнулся это общение с сервером и ( всеми любимый socketio ) не справлялся и прищлось использовать нативный WS и битовую ( буфферы ) передачу данных ( т.к. socketio передаёт слишком много разных данных + JSON.parse слишком ресурсоёмкая операция ). [ для сравнения на чистом ВС получилось 40 чел-к онайн с отправкой данных на сервер каждые 0.1 секунду, объёмом примерно 20 байт, а на сокете всего 5 человек с таким же интервалом, но там было около 200 байт + ответ от сервера ещё был ( т.е. я реализовывал всё передвежение и просчёты на сервере, т.к. юзеры могут поменить скрипт и например летать быстрее.. ) а отправлял только координаты мышки и нажатые клавиш ].
Вот.. моё ( имхо ) не стоит использовать ноду для сложных игр ( ММО ). Для шашек, монополии и т.п. в полне сойдёт..
0
1 / 1 / 0
Регистрация: 26.01.2016
Сообщений: 15
29.08.2016, 00:40
muxahuk1214,
Цитата Сообщение от muxahuk1214 Посмотреть сообщение
1-я проблема с которой я столкнулся это общение с сервером и ( всеми любимый socketio ) не справлялся и прищлось использовать нативный WS и битовую ( буфферы ) передачу данных ( т.к. socketio передаёт слишком много разных данных + JSON.parse слишком ресурсоёмкая операция ).
Тоже за 2 дня мучений наверно на все возможные грабли наступил из за неявного преобразования типов, в итоге вспомнил как в c++ передача данных работает ТОЛЬКО через буфер, применил на js и все завелось без проблем.
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,018
Записей в блоге: 241
29.08.2016, 09:09
Я нашёл, по-моему, очень хороший курс по Unity+Node.js+socket.io: Unity Multiplayer Game Development with Node

Как досмотрю, то соберу конечный проект курса в HTML5/WebGL и залью на heroku.
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,018
Записей в блоге: 241
02.09.2016, 10:41
Несмотря на то, что выше категорически не рекомендуют использовать Node.js и его модуль socket.io, но я всё таки решил пойти на большой риск и продолжить изучать дальше Node.js для программирования браузерных онлайн игр.

Это вызвано тем, что я полтора года как перешёл на C# с C++ и пытался соединить свой запущенный сервер для чата на C# на своей машине и с другим компьютером через интернет, но у меня ничего не вышло, так как была какая-то загвоздка с серыми и белыми IP.

Потом я пытался сделать сервер на сервисе WCF TCP на бесплатном хостинге ASP.NET, но то же какая-то получилась проблема. Вроде с SignalR получилось, но я стал изучать Node.js и почти сразу стало получаться.

Я загрузил демку на бесплатный хостинг heroku. Если хотите, попробуйте открыть в разных вкладках браузера (чтобы увидеть мультипеер) и побегать по клику по правой или левой кнопками мыши: https://green-apps.herokuapp.com/
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
03.09.2016, 00:45
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Это вызвано тем, что я полтора года как перешёл на C# с C++ и пытался соединить свой запущенный сервер для чата на C# на своей машине и с другим компьютером через интернет, но у меня ничего не вышло, так как была какая-то загвоздка с серыми и белыми IP.
Мне кажется, что неудачи в других языках не могут подтолкнуть на изучение js.

Цитата Сообщение от muxahuk1214 Посмотреть сообщение
всеми любимый socketio ) не справлялся и пришлось
Ну... Сравнивать библиотеку для работы с протоколом и сам протокол как минимум глупо.
И вопрос: а с каких пор общая библиотека для передачи данных быстрее/эффективнее чем нативное использование протоколов?
0
03.09.2016, 07:30

Не по теме:

Цитата Сообщение от BANO Посмотреть сообщение
Мне кажется, что неудачи в других языках не могут подтолкнуть на изучение js.
Мне нужно было быстро написать сервер, чтобы сразу начать с ним работать удалённо. Ну так у меня получилось, что денег на VPS не было, хотелось найти бесплатный VPS и как можно быстрее начать с ним работать. Оказалось, что начать работать с хостингом heroku и socket.io оказалось для меня намного быстрее и проще, как для начинающего.

Скажу ещё о моём переходе с C++ на C#. Тут не только сервер, но и программирование игр тоже. Я долгое время изучал С++ и OpenGL. Как-то результаты очень медленно появлялись, потому что писать свой движок с нуля долго. Потом стало значительно быстрее, когда с открыл для себя Blender Game Engine и его скриптовый язык Python. Но потом я понял, что в BGE мне многого начинает не хватать, а к этому времени стал бесплатным Unreal Engine 4. Тут мне всего хватало, но скриптование на C++ мне давалось тяжело, а сам движок мой ноут ели тянул. И вдруг вышел Unity 5, который стал полностью бесплатным. И тут я открыл для себя всю простоту и элегантность Unity и C#. На ноуте я могу запустить хоть 10 штук Unity. Здесь всего достаточно. И я перешёл с С++ на C# и платформу .NET. В .NET я стал открывать для себя разные технологии.

0
03.09.2016, 11:50

Не по теме:

8Observer8, да уж, запутанная история.

0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,018
Записей в блоге: 241
11.10.2016, 16:46
Посоветую видео уроки: Multiplayer Nodejs Game Tutorial

Автор уроков делает игру: Raining Chain MMORPG

Ещё посоветую книгу: Multiplayer Game Development with Node.js

В ней всего 180 страниц, но в ней описана база без лишней воды. Я занимаюсь ещё переводом.

Содержание книги:
Кликните здесь для просмотра всего текста

Глава 1. Знакомство с программированием многопользовательских игр
-Понимание основ организации сети
-Программирование с применением сокетов на JavaScript
-Клиенты игры
-Игровые серверы
-Объединяем полученные знания - Крестики-нолики
-- Node.js - центр мироздания
---/Player.js класс
---/BoardServer.js класс
---/server.js класс
---/public/js/Board.js класс
---/public/js/app.js класс
-Сводка

Глава 2. Установка окружения
-JavaScript вне браузера с помощью Node.js
--Node.js
--Установка Node.js
-Написание модулей на JavaScript
--CommonJS
--RequireJS
-Управление пакетами Node.js с помощью Npm
-Управление пакетами на стороне клиента с помощью Bower
--Browserify
-Автоматизация рабочего процесса
--Grunt
--Gult
-Сводка

Глава 3. Змейка
-"Hello world" разработки игр
--Подготовка
---package.json
---Index.jade
--Основые модули игры
---game.js
---snake.js
--Вспомогательные модули
---app.client.js
--Цикл игры
---Независимость от частоты кадров
---Цикл игры, который базируется на времени
---Множество циклов игры
--Реализация полномочного сервера
---Интерфейс игрового сервера
---Изменение клиента в соответсвии с новыми данными
--Осмысление цикла игры
---Игровой цикл клиента
---Игровой цикл сервера
--Лобби и система игровых комнат
---Реализация лобби
---Реализация комнат
--Создание игровый матчей между игроками в комнате
---Приглашение друзей в игру
---Автоматизированное создание матчей
---Матчи основанные за практическом опыте
-Socket.io
-Сводка

Глава 4. Снижение сетевых задержек
-Что можно сделать с сетевыми задержками
--Синхронизация клиентов с зафиксированным шагом
-Фиксированный временной шаг
-Синхронизация клиентов
-Предсказание будущего с локальным сервером
--Отчёт о пользовательском вводе
-Корректировка ошибок
--Учитываем намерения, но не результат
--Если позиция объекта отличается на сервере и клиенте
--Интерполяция для сглаживания ошибок
-Сводка

Глава 5. Передовые технические новинки
-HTML5 - последний рубеж
-Раскрытие вашей игры на весь экран
-Улучшаем управление с помощью геймпада
-Соединение peer-to-peer с помощью WebRTC
-Видео и аудио в реальном времени с помощью Media Capture
-Сводка

Глава 6. Добавление защиты и честная игра
-Общие уязвимости
--Шифрование
--Защита от инжектирования скриптов
--Проверка на стороне сервера
--Искусственный интеллект
-Создание безопасных игр и приложений
--Полномочный сервер
--Геймплей основанный на игровых сессиях
--Защита от тёмных лошадок
-Не изобретайте заново колесо
--Установка модуля validator с помощью Npm
--Установка модуля js-sha512 с помощью Npm
--Установка closure-compiler с помощью Npm
-Честная игра и опыт пользователя
-Сводка

Алфавитный указатель
0
11.10.2016, 16:50

Не по теме:

Цитата Сообщение от 8Observer8 Посмотреть сообщение
Blender Game Engine и его скриптовый язык Python
Извини, но не могу не придраться, python не его скриптовый язык, он его только юзает.

0
11.10.2016, 17:00

Не по теме:

Цитата Сообщение от BANO Посмотреть сообщение
Извини, но не могу не придраться, python не его скриптовый язык, он его только юзает.
Обычно говорят: скриптовые языки движка Unity - это C# и UnityScript или скриптовые языки движка Unreal Engine 4 - С++ и Blueprint. Я имел ввиду, что для BGE пишутся скрипты на Python. Так же я мог написать, что C#, Lua и C++ - это скриптовые языки для ещё одного бесплатного движка Cry Engine 5. Всегда так пишут и всем понятно, что я НЕ имел ввиду, что движок написан на этом языке, а имел ввиду, что сктипты для этого движка пишутся на таком-то языке.

0
11.10.2016, 17:03

Не по теме:

8Observer8, окей. Прости что не правильно тебя понял. Мои извинения.

0
0 / 0 / 0
Регистрация: 02.06.2017
Сообщений: 1
02.06.2017, 17:48
muxahuk1214, на с++ не подскажешь в какую сторону смотреть? Так же пробую на Node что-то делать.. но ещё не тестировал - изучаю материал. Если есть старые наработки на Node.JS и не жалко ими поделиться - был бы очень благодарен
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,018
Записей в блоге: 241
02.06.2017, 20:21
Цитата Сообщение от YuliyF Посмотреть сообщение
на с++ не подскажешь в какую сторону смотреть?
Multiplayer Game Programming: Architecting Networked Games

Цитата Сообщение от YuliyF Посмотреть сообщение
Если есть старые наработки на Node.JS и не жалко ими поделиться
Этот пример с github'а вы можете протестить, запустив в разных вкладках браузера: http://battle-world.herokuapp.com/?debug
0
Coding is art
Эксперт JS
540 / 423 / 154
Регистрация: 04.09.2013
Сообщений: 1,066
03.06.2017, 03:20
вот например:
https://github.com/huytd/agar.io-clone

Могу лишь добавить, что node.js не подходит для серьёзных вычислительных операций, которые требуют ММО игры, хотя можно запустить 100 или даже 1000 серверов, и они будут справляться со всем, но это затраты куда больше, чем сделать 10 на C/C++ серверов.
Писать на ноде можно, но я бы не удивлялся бы потом, что проц не выдерживает..
0
9948 / 2948 / 497
Регистрация: 05.10.2013
Сообщений: 8,018
Записей в блоге: 241
03.06.2017, 06:26
На node.js хорошо тренироваться начинать делать сетевые игры, потому что он очень простой в освоении по сравнению с сервером C++. Пройдёт намного меньше до того момента как начинающий запустит реальный простейший сервер, который будет просто отвечать на запрос клиента, так как есть бесплатные хостинги heroku, openshift и т.д. где есть инструкции, как можно развернуть приложение. На C++ есть некоторые сложности с серыми и белыми IP и в целом с пониманием запуска на VPS и вообще сам по себе C++ сложнее и требует большей квалификации.

Конечно же начинать нужно с карточных игр, крестиков-ноликов, шашек и т.д. Как только вы научились отправлять строку на сервер, а он отправлять обратно и рассылать другим клиентам, то уже можно приступать к самим играм, это самое интересное. Я считаю, писать лучше на TypeScript, так как этот язык очень похож на такие языки как C#, Java, C++, Python и если вы будете потом переписывать сервер на C++, C# и т.д. то будет легче, чем с JS.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.06.2017, 06:26
Помогаю со студенческими работами здесь

Свой сервер на Node.JS
Извиняюсь за каламбур, но для чего делаю свой сервак на Node ? apache, nginx не подходит или это вообще из другой оперы ?

Сервер Node.JS, отвечающий страницей Google
Добрый день. Читаю Professional Node.js: Building Javascript Based Scalable Software. Сделал сервер, отвечающий на любой запрос страницей...

Как запустить Node сервер в фоне
Подскажите пожалуй сто, как(то есть какими консольными командами) запустить приложение node в фоновом режиме ? Linux Добавлено через 1...

Отправка информации на сервер JavaScript: Node.js
Не выполняется работа скрипта, на сервер ничего не приходит <form name="admin" action="/admin_del"...

Клиент на Node.js с socket.io, а сервер на C# или Java
Я хочу сделать чат своему сайта например. А сервер хочу написать на с#. Можно ли так делать? Например вот так слущаю на сервере: const...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru