Size: a a a

Node.js — русскоговорящее сообщество

2020 April 05

NN

Nikita Nesterchuk in Node.js — русскоговорящее сообщество
Задай вопрос сразу, может кто-то и ответит. Может впрос более общего характера и не только специфичен для игр окажется, для этогт тебе и кинули nometa
источник

EI

Ernest Isaev in Node.js — русскоговорящее сообщество
Сервер : Node / Socket io
Клиент : VueJs

Создаётся объект игры , по ивенту от клиента , к игре подключаются игроки , игрок нажимает старт , запускается игра

Клиенты узнают о новых данных таким образом

setInterval , раз в 100мс , проходит цикл , ищет нужную игру , и игрокам в этой игре сущность сокета в комнату шлёт пакет с обновлённой информацией

Вопрос таков

Насколько это корректный подход и как можно было бы увеличить производительность избежав глобального интервала
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Ernest Isaev
Так никто не отписался , что разрабатывал игры на ноде и советах )
Никто и не отпишется
источник

R

Remite in Node.js — русскоговорящее сообщество
Ernest Isaev
Сервер : Node / Socket io
Клиент : VueJs

Создаётся объект игры , по ивенту от клиента , к игре подключаются игроки , игрок нажимает старт , запускается игра

Клиенты узнают о новых данных таким образом

setInterval , раз в 100мс , проходит цикл , ищет нужную игру , и игрокам в этой игре сущность сокета в комнату шлёт пакет с обновлённой информацией

Вопрос таков

Насколько это корректный подход и как можно было бы увеличить производительность избежав глобального интервала
ну основная мысль должна быть такой
- нет смысла что-то делать если ничего не произошло
источник

AE

Alexey Ermakov in Node.js — русскоговорящее сообщество
Ernest Isaev
Сервер : Node / Socket io
Клиент : VueJs

Создаётся объект игры , по ивенту от клиента , к игре подключаются игроки , игрок нажимает старт , запускается игра

Клиенты узнают о новых данных таким образом

setInterval , раз в 100мс , проходит цикл , ищет нужную игру , и игрокам в этой игре сущность сокета в комнату шлёт пакет с обновлённой информацией

Вопрос таков

Насколько это корректный подход и как можно было бы увеличить производительность избежав глобального интервала
обновлять информацию тогда, когда кто-нибудь из игроков что-нибудь сделает?
источник

BH

Bogdan Hrebeniuk in Node.js — русскоговорящее сообщество
Ernest Isaev
Сервер : Node / Socket io
Клиент : VueJs

Создаётся объект игры , по ивенту от клиента , к игре подключаются игроки , игрок нажимает старт , запускается игра

Клиенты узнают о новых данных таким образом

setInterval , раз в 100мс , проходит цикл , ищет нужную игру , и игрокам в этой игре сущность сокета в комнату шлёт пакет с обновлённой информацией

Вопрос таков

Насколько это корректный подход и как можно было бы увеличить производительность избежав глобального интервала
А почему сервер не отправляет пакет с обновленной информацией тогда, когда эта информация обновилась?
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Ernest Isaev
Сервер : Node / Socket io
Клиент : VueJs

Создаётся объект игры , по ивенту от клиента , к игре подключаются игроки , игрок нажимает старт , запускается игра

Клиенты узнают о новых данных таким образом

setInterval , раз в 100мс , проходит цикл , ищет нужную игру , и игрокам в этой игре сущность сокета в комнату шлёт пакет с обновлённой информацией

Вопрос таков

Насколько это корректный подход и как можно было бы увеличить производительность избежав глобального интервала
Создай очередь из клиентов, которые хотят играть, и вместо setinterval бери игроков из этой очереди
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Alexey Ermakov
обновлять информацию тогда, когда кто-нибудь из игроков что-нибудь сделает?
Что ещё игрок может сделать после заявки на игру, кроме как отменить эту заявку?
источник

AE

Alexey Ermakov in Node.js — русскоговорящее сообщество
Sergey 🛸
Что ещё игрок может сделать после заявки на игру, кроме как отменить эту заявку?
а какие "новые данные" тогда игроки получают?
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
К примеру о том что его заявка обработана и отсылается номер комнаты для игры
источник

AE

Alexey Ermakov in Node.js — русскоговорящее сообщество
ну, когда заявка обработана - отправить данные
event based, а не каждые 100мс
источник

EI

Ernest Isaev in Node.js — русскоговорящее сообщество
В игре каждой есть карта , на карте 400-3600 точек , которые обновляют состояние раз в секунду , поэтому и приходится данные отправлять не по ивенту , а постоянно
источник

AE

Alexey Ermakov in Node.js — русскоговорящее сообщество
если это не шутер или какая-нибудь иная реалтайм игрушка, где всё завязано на внутренних "тиках"
источник

EI

Ernest Isaev in Node.js — русскоговорящее сообщество
Это реал тайм как раз
источник

R

Remite in Node.js — русскоговорящее сообщество
раз в секунду != реалтайм :)
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Ernest Isaev
В игре каждой есть карта , на карте 400-3600 точек , которые обновляют состояние раз в секунду , поэтому и приходится данные отправлять не по ивенту , а постоянно
Лучше обновляй данные по событию, а событие можешь генерировать раз в 100 мс
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Remite
раз в секунду != реалтайм :)
+
источник

EI

Ernest Isaev in Node.js — русскоговорящее сообщество
Как тогда быть если 3 пользователя одновременно нажмут кнопку и изменят состояние какой то клетки ?
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Ernest Isaev
Как тогда быть если 3 пользователя одновременно нажмут кнопку и изменят состояние какой то клетки ?
Принцип неопределенности Гейзенберга гарантирует что это не произойдёт
источник

AE

Alexey Ermakov in Node.js — русскоговорящее сообщество
Remite
раз в секунду != реалтайм :)
обобщенно - реалтайм, просто "секунда" слишком долго
имеется в виду не пошаговая, когда кто-то что-то сделал и дал знать другим, что он закончил ход)
источник