2016-11-15 13 views
2

私は、2人のプレイヤーが戦闘に参加し、画面上のボタンを押してお互いにダメージを与えるゲームを作ろうとしています。キャラクターが扱うことができるダメージは、1〜10の間の乱数でなければなりません。攻撃されたキャラクターが受けるダメージは同じ乱数でなければなりません。複数の言語での乱数

ゲームはAndroidとiOS(JavaとSwift)の両方でプレイできるようになりますが、受け取ったダメージやダメージのために同じ乱数が生成されるようにするにはどうすればよいですか?攻撃されたプレイヤーに与えられたダメージを自分の健康状態から差し引くことができることに気がつきましたが、JavaとSwiftで同じ乱数シーケンスを生成する方法があるかどうか疑問に思っていました。サーバーを通過する。

+0

シードを使用して「ランダム」を作成すると、決定的なシーケンスに従います。 – shmosel

+0

@shmosel Swiftで同じシードを使用できますか?同じシーケンスが得られますか? – 4castle

+0

@ 4castle私はそうではないと思います。 – shmosel

答えて

1

おそらく、各ピアをクライアントとサーバーの両方にすることができます。これはピアツーピアネットワークと呼ばれます。しかし、クライアントがハッキングされていないことを確認する必要があります。それは実装が難しいかもしれません。厳しい状況で、小さなサーバーが最善の方法です。

(PSこのための最良の言語が最も可能性の高いHaxeだろう。私は前にこの言語を使用している)

...実は、私はそれについて考え、そしてあなたがの間で共有されるランダムシードを持つことができます同輩。両方の相手の両方のダメージをカウントして、それが有効であることを確認することができます。

編集: HaxeのMath.random()は、ドキュメントに従って、特定のシードを持つプラットフォーム間で同じように見えます。他のプラットフォームの中でも、iOSやAndroidコードにコンパイルできます。

1

これには独自のクラスを作成する必要があります。 2つの言語で組み込みの乱数ジェネレータを使用しても、これは保証されません。ただし、これを保証するカスタムロジックを記述することはできます。

たとえば、0と1の間に100,000の乱数のリストが表示されることがあります。そのリストをテキストファイルとして保存し、両方のプロジェクトから参照できます。

上記は、両方のクライアントが互いに通信することなく、問題を解決するのに最も近い方法です。あなたはサーバーを使用しないソリューションを求めてきたので、それは私の答えです。しかし、サーバーやその他の形式のネットワーク通信を使用することは、本当に正しい答えと思われます。

関連する問題