Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.12.2012, 13:39
Аспирант
Отправить личное сообщение для faraday Посмотреть профиль Найти все сообщения от faraday
 
Регистрация: 10.03.2012
Сообщений: 50

Организация игровых комнат на сервере
Здравствуйте, как правильно пишутся на серверной стороне игровые румы? То есть у нас на входе имеется массив подкюченных пользователей. которые нужно разметить по отдельным комнатам, чтобы они играли друг с другом. Как это правильно организовывается?, каждая комната по идее должна быть инкапсулирована, со своими таймерами и методами. Первое что приходит в голову - это создание экземпляра класса на каждый рум, но насколько это применимо к серверам?
То есть задача сводится к тмоу, чтобы общий поток запросов-ответов пользователей распределялся по комнатам в которых они играют.
сервер node.js
Ответить с цитированием
  #2 (permalink)  
Старый 16.12.2012, 14:50
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

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

Последний раз редактировалось dmitriymar, 16.12.2012 в 15:26.
Ответить с цитированием
  #3 (permalink)  
Старый 16.12.2012, 15:30
Аспирант
Отправить личное сообщение для faraday Посмотреть профиль Найти все сообщения от faraday
 
Регистрация: 10.03.2012
Сообщений: 50

Просто я пытаюсь перейти от понимания работы клиентского кода, к разработке серверного, поэтому возможно вопрос банален или не правильно сформулирован. У меня сейчас есть server.js, который слушает порт и добавляет новых пользователей в массив, так же внутри есть примеру функция newRoom(user1,user2) которая должна создать комнату с двумя этими пользователями где они могут общаться друг с другом. Как такое обычно делается?
Ответить с цитированием
  #4 (permalink)  
Старый 16.12.2012, 15:48
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

хранение информации:
базы данных: текущее -редис, история - монго.....
дублирование информации -причины(защиты от сбоев, увеличение быстродействия....)
построение отношений:
передача параметров и проверки , взятие данных из баз ........

Сообщение от faraday
Просто я пытаюсь перейти от понимания работы клиентского кода, к разработке серверного, поэтому возможно вопрос банален или не правильно сформулирован.
причём здесь это ? сейчас абсолютное непонимание архитектуры строящегося приложения. Архитектура первична -код всего реализация архитектуры.
В вашем случае слои первичны в архитектуре:
слой проверки корректности адреса запроса
слой проверки юзера
слой корректности переданных данных(по отношению к сохранённым)
....
слои построения отношений
Сообщение от faraday
которая должна создать комнату с двумя этими пользователями где они могут общаться друг с другом. Как такое обычно делается?
абстрактно . как обычно делается хлеб ? нужны ингредиенты, хлебопёк и печь. а вот какие инградиенты будут, уровень хлебопёка, его рецепты ,режимы в каких работает печь -дело индивидуальное.

печь,хлебопёк, ингредиенты необходимы -это слои
какими печь,хлебопёк, ингредиенты будут -будут различными у всех-это индивидуально

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

Последний раз редактировалось dmitriymar, 16.12.2012 в 16:17.
Ответить с цитированием
  #5 (permalink)  
Старый 16.12.2012, 16:49
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Много таймеров плохая практика, если пойдёт ошибка хрен определишь источник так как порядок в каком срабатывает тот или иной функционал постоянно меняется. Постарайтесь всё свести к одному таймеру. Это может быть один таймер на рум, а ещё лучше один таймер на все румы(если румы физически по серверам неразделены).
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 16.12.2012 в 17:00.
Ответить с цитированием
  #6 (permalink)  
Старый 16.12.2012, 17:07
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

DjDiablo,
таймеры в румах не так организовываются. это просто значение времени, а не таймер, какое в базах пересчитывается при каждом запросе, или итерации общего таймера, или просто сервер дополнительный шлёт запросы и пересчитывается время и синхронизируется с клиентами если необходимо..

совершено действие игроком -поставь новый отрезок времени для рума -при каждой итерации(неважно какой) пересчитывай-если нужно синхронизируй с клиентской частью
правильная архитектура первична

Последний раз редактировалось dmitriymar, 16.12.2012 в 17:10.
Ответить с цитированием
  #7 (permalink)  
Старый 16.12.2012, 17:32
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

я децл невьезжаю о чём ты. Я имел ввиду setTimeout в nodeJs.

пересчёт игроврой ситуации в пошаговую игре лучше к событиям привязывать конечно.

а вот в реалтайм нужно пересчитывать регулярно, и постоянно. Народ то всё время двигается

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

или ты о чём ?
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 16.12.2012 в 17:42.
Ответить с цитированием
  #8 (permalink)  
Старый 16.12.2012, 17:47
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

DjDiablo,
ты мыслишь примерно как он -общими мерками.
Есть задача, есть решение в зависимости от задачи. нет универсального решения.
Рум. Для чего он? для стратегии? для игры в покер? для RPG? Для обмена фантиками бессрочного? ....
и в зависимости от ответа будет своё решение для взаимодействия , от него варианты архитектуры, а от неё уже будет зависеть варианты реализации.
Ответить с цитированием
  #9 (permalink)  
Старый 16.12.2012, 18:05
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Цитата:
ты мыслишь примерно как он -общими мерками.
с чего это.
Как минимум я чётко отделил реалтайм, от пошаговых игр.
Даже мысли небыло предлагать конкретное решение, так как непонятно что он вообще делает.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 16.12.2012 в 18:26.
Ответить с цитированием
  #10 (permalink)  
Старый 17.12.2012, 14:00
Аспирант
Отправить личное сообщение для faraday Посмотреть профиль Найти все сообщения от faraday
 
Регистрация: 10.03.2012
Сообщений: 50

Спасибо, буду практиковаться
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить результат выполнения скрипта на сервере в переменную ява gyper AJAX и COMET 5 19.11.2012 11:36
CouchDB - как от устанавливается на сервере? macdack Серверные языки и технологии 0 22.04.2012 17:09
Получить код js-скрипта, находящегося в файле на сервере RomanA Общие вопросы Javascript 4 04.04.2012 09:53
Написать скрипт, создающий ссылку на страницу, находящуюся на вашем сервере. Ирина Владимировна Общие вопросы Javascript 1 28.03.2012 19:02