2016-11-28 4 views
1

Прежде всего я программист-программист/разработчик, извините за некоторые очевидные вопросы. Эта тема больше вопросов дизайна, чем программирования.Создайте простой бэкэнд с node.js и socket.io для мобильной игры

У меня есть a.t.m Android-игра в прямом эфире в магазине игр, я использую стороннее бэкэнд и сетевое решение. Теперь я хочу создать собственный простой сервер и сетевое решение. Зачем? Потому что:

  • Возможность добавления новых функциональных возможностей, свободной от воли (на стороне сервера)
  • Перемещение GameLogic от клиента на стороне сервера
  • Изучение развития серверной
  • Изучение сети (не p2p , так что никакая перфорации)
  • Получения опыта разработки серверных и технологии

Для вашей информации моя игра - это что-то вроде Spades.

Теперь мои вопросы:

Я имею в виду использовать Node.js, Socket.io и MongoDB, чтобы создать свою систему серверной.

Это то, что я хочу сделать:

сети:

  • Только отправка от сервера к клиенту и наоборот
  • io.to (разъем # идентификатор) .emit ('эй') (сервер клиента)
  • socket.Emit ("JoinRoom") (клиент-сервер)

Backend функции:

  • Аутентификация пользователя
  • Регистрация информации игрока (имя, уникальный идентификатор, оценка, дата создания и т.д.)
  • Обновление забивает каждый раз
  • Регистрация в список друзей, чтобы они могли играть вместе
  • Etc ,

Что мой GameLogic сделать для каждой комнаты (ATM мой GameLogic является стороной суммарно клиент, так уязвимы для взлома и обмана):

  • Когда комната создана, подождите 10 секунд, так что другие люди могут присоединиться
  • Когда 10 секунд закончились, вызовите функцию, которая обрабатывает стартап процессу
  • Randomize 52 палубы карты
  • AI выборе ставки
  • AI выбора козырного
  • AI игры, когда его очередь
  • Определения, кто имеет следующий поворот
  • Определения, который выиграл
  • Обновления оценки в базе данных
  • Когда игра закончена открытие комнаты так люди может оставить и присоединиться к игре
  • и т.д.

можно ли создать это с п ode.js, socket.io и mongoDB? И если да, то разумно ли это делать с node.js, socket.io и mongoDB или лучше сделать это с другой технологией?

Или следует использовать node.js и socket.io для сетевой части и другую технологию (пример asp.net) для логики игры? Я прочитал, что node.js не очень хорош для тяжелых задач CPU, и я думаю, что игровая часть CPU тяжелая.

Возможно, некоторые из вас могут захотеть узнать, сколько будет поддерживать моя система? Ну, atm У меня есть 20 CCU, но моя игра в течение 3 недель в магазине, и я не продвигаю много, потому что сначала хочу сильную бэкэнд-систему. Я хочу, чтобы мой backend мог обрабатывать 10 000 CCU, возможно, я никогда не дойду до него, но это моя цель.

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

+0

Очень широкий вопрос, и, несмотря на длинное описание, возможно, недостаточно деталей. Вы беспокоитесь о том, что ваш сервер привязан к процессору из-за логики игры, но вы даете очень мало деталей о его сложности. Кроме того, одновременные пользователи, вероятно, не являются хорошей мерой здесь, так как большая часть работы выполняется только на «поворотах». Лучшей мерой будет количество поворотов за период времени ... – jcaron

+0

@jcaron Большинство тяжелых задач находятся в начале игры и играют в игру. - При запуске массив, состоящий из 52 карт, перетасовывается (массив строк) - игральная карта AI, в лучшем случае AI пеет через свою колоду 1 раз (состоит из максимум 13 карт), в худшем случае 4 раза. Итак, в 1 игровой сессии от начала и до начала: - мин. 4 оборота макс. 10, ставки между игроками, которые выиграют больше всего карт. -Игрок, выигравший ставку, выбирает козырь так, чтобы 1 поворот здесь. -И затем игра начинается, и каждый игрок должен играть, пока его колода не закончится. Таким образом, максимум 63 оборота за сеанс игры. –

ответ

0

NodeJS - прекрасный выбор для этого типа вещей. Множество параллельных IO в относительно коротких очередях. Вы можете определенно создать масштабируемую серверную часть с перечисленными вами технологиями.

Эта игровая логика может быть сложной, но я сомневаюсь, что вы даже заметите всплеск CPU для правил и проверок, которые необходимо реализовать для карточной игры. На каждом этапе у вас будет, возможно, 5-10 правил для проверки и, возможно, итерации по 52-карточному массиву (дважды!). Не проблема. Для задач, связанных с ЦП, подумайте «1000 итераций» (обработка изображений?) Или «математические вычисления» (чрезмерная фибоначчи?).

Я укажу вам на actionherojs в качестве узла сервера со встроенным чатом (для общения в игровой комнате), встроенных задач (для ваших 10-секундных тайм-аутов и разворота AI) и хорошей структуры проекта для запуска новое приложение NodeJS с нуля.

Удачи!

+0

Спасибо, что много глины за ваш ответ и подтверждение того, что это возможно. Пока я вижу ваш ответ как мое решение, я подожду пару часов, прежде чем принять его, возможно, кто-то еще докажет обратное. –