2016-08-22 5 views
-1

서버에 .tmx 파일을 저장하려는 TiledMap이 있습니다. 플레이어가 연결되면 .tmx 파일을 "클래스"/ "Ressource"(?)로 받아야하며 .tmx 파일로 맵을로드해야합니다.서버에 .tmx 파일로드 및 클라이언트에 보내기

내 문제는, 어떤 개체에서 .tmx 파일을 저장하여 전송 한 다음지도를로드 할 수 있습니까?

예 : 서버에서

:

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

그리고 플레이어가 연결

, 그는 내 Kryo 엔진을 통해이 Object를받을 및지도로드 :

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

희망 그 사람 도울 수 있습니다, 미리 감사드립니다 :)

+0

아니요 아니요. 우선 kryonet을 통해 타일 ​​된 맵 객체를 보내는 것이 쉽지는 않을 것입니다. 둘째, 이것은 나쁜 접근입니다. 오히려 모든 맵을 클라이언트에 저장 한 다음 서버에서 클라이언트로 맵 이름을 보내야하며 그러면 클라이언트가 맵을로드 할 수 있습니다. – Sneh

+0

그래,하지만 클라이언트에 .tmx 파일을 저장할 때 모두가지도를 편집 할 수 있습니다. 이미지 만 아니라 .tmx 파일을 보내고 싶습니다! 원시 .tmx 파일은 그렇게 크지 않습니다. – Liquidz

+1

파일을 편집하는 것이 걱정되면 서버에 맵 파일의 해시를 저장 한 다음 클라이언트가 새 맵을로드하려고 할 때마다 클라이언트에 저장된 맵의 해시를 서버에 보냅니다. 일치하지 않으면 수정이 없다는 것을 알고, 그렇지 않다면지도를 편집합니다. :) – Sneh

답변

1

당신이 이것을 지나치게 복잡하게 만들고 있다고 생각합니다. 나는 당신이 선수들이지도를 수정함으로써 속임수를 쓰지 못하게하려고한다. 그러나 자산이 클라이언트에 남아있는 경우 플레이어는이를 수정할 수 있습니다. 따라서 자산 파일이 수정되지 않았는지 확인해야합니다. 클라이언트에서 한 파일이 수정되었는지 확인하는 경우 두 파일을 확인하는 작업은 간단합니다.

클라이언트 맵의 해시를 만들어 서버로 보내고 해시가 서버의 해시와 동일한 지 확인합니다. 이것이 당신이 가야 할 길입니다. 개체의 인스턴스를 클라이언트에 보내지 않습니다.

이 게시물은 도움이 될 것입니다. Getting a File's MD5 Checksum in Java

관련 문제