マルチプレイヤー フラッシュ ゲーム (AS3) を使用していますが、マルチボックス化を防止したいと考えています。たとえば、ユーザーが 1 台のコンピューターでゲームの 2 つ (またはそれ以上) のインスタンスを実行できないようにします。それを行う簡単で信頼できる方法はありますか?IPアドレスに基づいてそれらをフィルタリングしたくありません。
LocalConnection を使用しようとしましたが、信頼できませんでした。ほとんどの場合は機能しましたが、何らかの理由で失敗することもありました。
次に、SharedObject を使用してランダムな値を書き込み、定期的な間隔の変更を確認しようとしました。アイデアは、2 番目のインスタンスが開始されると、以前の値が上書きされ、最初のインスタンスのチェックインが失敗するということです。
public function MultiboxPreventer(callback:Function)
{
uniqueKey = Math.random() * uint.MAX_VALUE;
so = SharedObject.getLocal("prefs");
so.data.multiboxKey = uniqueKey;
so.flush();
trace("MB init: " + so.data.multiboxKey);
so = null;
this.callback = callback;
var t:Timer = new Timer(10000, 0);
t.addEventListener(TimerEvent.TIMER, checkKey);
t.start();
}
private function checkKey(event:TimerEvent):void {
so = SharedObject.getLocal("prefs");
if(so.data.multiboxKey != uniqueKey) {
callback();
}
trace("MB check: " + so.data.multiboxKey);
}
しかし、これをテストすると、各インスタンスが独自の SharedObject を持っているかのように動作するため、互いの値を書き換えることはありません。
これを達成するための最良の方法は何ですか?