Является ли многопользовательская игра на JavaScript плохой идеей? [закрыто]

8

Каковы возможные недостатки использования (на стороне клиента) JavaScript при создании многопользовательской игры?

Описание игры: Это MMORPG / RTS. Это означает, что игроки активно участвуют в создании структур в мире и сами создают большую часть контента.

jcora
источник
Мне любопытно: какой механизм вы используете для клиента, чтобы общаться с сервером, и какова задержка? Какую платформу вы используете для сервера?
Будет
Сервер работает на моем нетбуке под управлением Ubuntu Linux и написан на серверном JavaScript, который работает с использованием node.js.
jcora
Я не знаю, почему я изначально проголосовал за этот вопрос. Изменилось на отрицательное и рассматривает возможность проведения закрытого голосования, потому что "___ хорошая идея?" никогда не бывает ответным вопросом. Действительно, в своем ответе я даже указал, что на этот вопрос нельзя ответить точно.
Джоккинг
Кроме того, мне хочется изменить название на «Многопользовательская игра на JavaScript - плохая идея?» улучшит вопрос. Поначалу это кажется тривиальным изменением, но пересмотр вопроса о поиске недостатков делает его более ответственным, чем «какую технологию мне использовать?» своего рода вопрос. Спрашивая "эта технология хороша?" просто приглашает топора
Джоккинг
1
Я не знаю, что думают моды, но теперь мне это нравится намного лучше. вернуться к upvote
jhocking

Ответы:

9

Это хорошо, если:

  1. Сервер не отправляет информацию об игроках за полем зрения локального игрока (должен быть рассчитан на стороне сервера) локальному игроку (для предотвращения взлома стены).
  2. Все действия проверяются на наличие на сервере, когда игрок нажимает кнопку действия.
  3. Вы визуализируете только на клиенте - все действия выполняются на сервере и прогнозируются только на клиенте.
  4. Все запланированные действия выполняются на стороне сервера.
Triang3l
источник
Да, я делаю эти вещи.
jcora
10
Обратите внимание, что эти инструкции действительны для каждой многопользовательской игры, независимо от языка, платформы или чего-либо еще.
о0 '.
10

Подходит ли ваша игра для разработки на JavaScript, зависит от игры. Вы не описали свою игру, поэтому мы не можем ответить на вопрос в названии.

Однако я могу сказать, что ваше беспокойство по поводу взлома не является проблемой здесь. Не потому, что JavaScript не может быть взломан (он может и легко), но так же, как и любая другая технология на стороне клиента. Одним из основных принципов разработки многопользовательских игр является «никогда не доверяй клиенту». Создайте свою игру таким образом, чтобы все, что вам нужно было защитить от взлома, выполнялось на сервере, потому что клиент будет взломан. Это означает только отправлять команды пользовательского интерфейса от клиента (например, «игрок нажал кнопку« Бомба »)» и вычислять результаты действий игрока на сервере. Затем сервер отправляет обратно клиенту результаты этих действий.

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

jhocking
источник
Большое спасибо. Я отредактирую свой пост и опишу игру сейчас.
jcora
3
никогда никогда никогда никогда не доверяй клиенту, будь то его JavaScript или что-то еще!
the_e
1
Хотя все игровые клиенты действительно взломаны, некоторые из них более взломаны, чем другие.
Джонатан Коннелл
2
Это правда, но различие не имеет значения. При разработке безопасности для вашей игры, что имеет значение, если вариант A сложнее взломать, чем вариант B, если они оба будут взломаны?
Джоккинг
2

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

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

Самая большая проблема, которую я вижу в играх JavaScript, заключается в том, что многие браузеры имеют тенденцию заикаться, особенно Firefox был довольно плохим в прошлый раз, когда я проверял. По этой причине JavaScript не является хорошим выбором для чувствительного ко времени геймплея. Но для пошаговых или хотя бы медленных игр JavaScript может работать достаточно хорошо.

AAAAAAAAAAAA
источник
2

Изменить переменные Javascript довольно легко с помощью таких инструментов, как Firebug (для Firefox) или встроенных инструментов разработки Safari / Chrome. Вы можете просто набрать в консоли javascript, и он будет выполнен. Как простое правило, не полагайтесь на клиентскую сторону для обеспечения безопасности. Кроме того, с введением элемента HTML5 canvas, javascript предлагает вам некоторые реальные возможности для простых игр (например, существует полная версия Angry Birds для javascript / html5).

Pjotterke
источник