JavaScriptのマルチプレイヤーゲームは悪い考えですか?[閉まっている]


8

マルチプレイヤーゲームを作成するときに(クライアント側の)JavaScriptを使用することの欠点は何ですか?

【内容紹介】それはMMORPG / RTSです。つまり、プレーヤーは世界の構造物に積極的に貢献し、コンテンツの多くを自分で作成します。


私は興味があります。クライアントがサーバーと通信するためにどのようなメカニズムを使用していますか。また、待ち時間はどのようなものですか。サーバーにはどのプラットフォームを使用していますか?
2011

サーバーはUbuntu Linuxを実行する私のネットブックで実行されており、node.jsを使用して実行されるサーバー側JavaScriptで記述されています。
jcora

もともとこの質問に賛成した理由がわかりません。「___は良いアイデアですか?」という理由から、反対票に変更し、近い投票を検討することを検討しました。決して答えられる質問ではありません。確かに、私の答えでは、質問に正確に答えることはできないとさえ指摘しました。
jhocking '17

また、タイトルを「JavaScriptのマルチプレイヤーゲームは悪い考えですか?」に変更したい気がします。質問を改善します。最初は些細な変更のように見えますが、欠点を探すように質問を書き直すと、「どちらの技術を使用すればよいですか?」ちょっと質問。「この技術は良いですか?」と尋ねる ちょうど斧研削を招待します。
jhocking 2014

1
私は改造が何を考えているのかわかりませんが、はそれが今ずっとずっと好きです。
投票に

回答:


9

次の場合は問題ありません。

  1. サーバーは、ローカルプレーヤーの視野の背後にあるプレーヤーに関する情報(サーバーサイドで計算する必要があります)をローカルプレーヤーに送信しません(ウォールハッキングを防ぐため)。
  2. プレーヤーがアクションボタンを押すと、すべてのアクションがサーバーで利用可能かどうかがチェックされます。
  3. クライアントでのみレンダリング-すべてのアクションはサーバーで実行され、クライアントでのみ予測されます。
  4. すべての時限アクションはサーバーサイドです。

はい、私はこれらのことをしています。
jcora

10
これらの手順は、言語、プラットフォームなどに関係なく、すべてのマルチプレイヤーゲームに有効です。
o0 '。

10

ゲームがJavaScript開発に適しているかどうかは、ゲームによって異なります。あなたはあなたのゲームについて説明しなかったので、タイトルの質問に答える方法はありません。

しかし、私はすることができ、あなたのハッキングの懸念はここでの問題はないと言います。JavaScriptをハッキングすることはできませんが(それが可能であり、簡単に)、他のすべてのクライアント側テクノロジーをハッキングできるためです。マルチプレイヤーゲーム開発の基本的な原則の1つは、「クライアントを信頼しない」です。クライアントがハッキングされるため、ハッキングから保護する必要のあるものがサーバー上で実行されるようにゲームを設計します。これは、クライアントからのUIコマンド(「プレーヤーが爆弾ボタンをクリックした」など)のみを送信し、サーバーでのプレーヤーアクションの結果を計算することを意味します。次に、サーバーはそれらのアクションの結果をクライアントに送り返します。

どのテクノロジーに依存していても、クライアント側コンポーネントがハッキングされることを想定してゲームを設計する必要があるため、JavaScriptのハック可能性は、JavaScriptを使用するかどうかを決定する際の考慮事項ではありません。


どうもありがとう。投稿を編集して、ゲームについて説明します。
jcora

3
決して決して決して決して決して決して決してそのクライアントを信頼しません、そのJavaScriptまたは他の何か!
the_e

1
すべてのゲームクライアントは確かにハッキング可能ですが、一部は他よりもハッキング可能です。
ジョナサンコネル2011

2
それは事実ですが、区別は関係ありません。ゲームのセキュリティを設計するときに、オプションAの方がオプションBよりもハッキングが困難で、両方がハッキングされる場合はどうなりますか?
ジョッキング

2

チートするためにクライアントコードを変更することができますが、これはマルチプレイヤーゲームの問題です。数学のタスクの反応速度または迅速な解決がゲームの一部である場合、不正行為を完全に防ぐことはできません。

その他のゲーム要素については、クライアントがプレーヤーに隠されているはずの情報を取得できないこと、および取得できないことを確認する必要があります。そしてもちろん、サーバーはプレイヤーが行ったすべてのアクションが合法であることを検証する必要があります。

私がJavaScriptゲームで目にする最大の問題は、多くのブラウザーが途切れがちになる傾向があることです。特に、前回チェックしたとき、Firefoxはかなり悪かったです。このため、JavaScriptはタイミングに敏感なゲームプレイには適していません。ただし、ターンベースのゲームまたは少なくともペースの遅いゲームでは、JavaScriptが非常にうまく機能します。


2

JavaScript変数の変更は、Firebug(Firefox用)やSafari / Chromeのビルドイン開発ツールなどのツールを使用して簡単に行うことができます。コンソールにJavaScriptを入力するだけで実行されます。単純なルールとして、セキュリティをクライアント側に依存しないでください。それとは別に、HTML5 canvas要素の導入により、javascriptは単純なゲームにいくつかの真の可能性を提供します(たとえば、Angry Birdsの完全なjavascript / html5バージョンがあります)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.