2016-08-22 14 views
-1

サーバーに.tmxファイルを格納するTiledMapがあります。 プレーヤーが接続しているときは、.tmxファイルを「クラス」/「Ressource」(?)として受け取ってから、.tmxファイルでマップをロードする必要があります。.tmxファイルをサーバーにロードしてクライアントに送信する

私の問題は、どのObjectで私が.tmxファイルを保存して、それを送信してからマップをロードできるかです。

例:サーバー上で

InputStream is = TiledMap.class.getResourceAsStream("map.tmx");

その後、プレイヤーが接続され、彼は私のKryoエンジンを経由して、このオブジェクトを受け取ると、地図をロードします。

TiledMap map = new TmxMapLoader().load(>>THE OBJECT RECIEVED<<); 

・ホープ誰かいます助けてくれてありがとう:

+0

Nope nope nopeまず、kryonetを介してタイルマップオブジェクトを送信するのは簡単ではありません。第二に、これは悪いアプローチです。むしろ、すべてのマップをクライアントに保存してから、サーバーからクライアントにマップ名を送信し、クライアントがマップをロードできるようにする必要があります。 – Sneh

+0

確かに、クライアント内に.tmxファイルを保存すると、誰でもマップを編集できます。私は、画像ではなく.tmxファイルを送信したいだけです!生の.tmxファイルはそれほど大きくありません。 – Liquidz

+1

ファイルが編集されるのを心配している場合は、マップファイルのハッシュをサーバーに保存し、クライアントが新しいマップをロードしようとするたびに、クライアントに保存されているマップのハッシュをサーバーに送信します。それらが一致していれば、編集していないことを知っています。そうでなければ、マップを編集しました。 :) – Sneh

答えて

1

あなたはこれを過度に複雑にしていると思います。私は、プレイヤーが地図を修正することによって不正行為をすることができないようにしたいと思っています。しかし、資産が依然としてクライアント上にある場合、プレーヤーはそれらの資産を単に変更することができます。したがって、アセットファイルが変更されていないかどうかを確認する必要があります。クライアントで1つのファイルが変更されているかどうかを確認する場合、2つのファイルをチェックするのは簡単です。

クライアントマップのハッシュを作成し、サーバーに送信し、ハッシュがサーバー上のハッシュと同一であるかどうかを確認します。これはあなたが行かなければならない方法です。オブジェクトのインスタンスをクライアントに送信しない。

この投稿は役に立ちます。Getting a File's MD5 Checksum in Java

関連する問題