최근 Java 원숭이 (3)의 멀티 스레딩을 최근에 wiki’s tutorial을 통해 시도해 보았습니다. 프로토 타입 임상 시험을 테스트하고 싶었 기 때문에 '큐브 (Cube)'라이브러리 (hub.jmonkeyengine.org/wiki/doku.php/jme3:contributions:cubes)를 사용하여 일부 큐브를 생성 한 프로그램을 만든 다음이를 직렬화합니다 일부 바이트 데이터 (서버가 플레이어 근처의 맵 청크에 대해 수행하는 작업)입니다. 위키의 네트워킹 자습서 (hub.jmonkeyengine.org/wiki/doku.php/jme3:advanced:networking)에서 언급했듯이 서버에서 보낸 청크를 모방하는 것이 목적입니다. 별도의 스레드에서 발생합니다.).멀티 스레딩 (jME3)을 사용하여 게임 상태 가져 오기
각 청크에는 노드를 저장할 노드가 있고 청크는 청크의 업데이트를 보낸 경우 청크가 교체되거나 플레이어가 새 영역으로 이동 한 경우 청크가 교체됩니다). 코드는 here입니다. 하지만 문제는 바이트에서 읽을 수 있기 전에 빈 청크를 다시 만들어야한다는 것입니다. 응용 프로그램 설정을 수집해야합니다. 이것뿐만 아니라, 나는 (함수가하는) 별도의 스레드 내에서 게임 장면을 수정할 수 없다. 아래의 코드는 93 행 이상입니다.
//...
//(In Update Loop)
if (future.isDone()) {
//Binds the temporary data to the clone object
blockTerrainClone = (BlockTerrainControl) future.get();
future = null;
//...
Callable<BlockTerrainControl> serverInput = new Callable<BlockTerrainControl>() {
public BlockTerrainControl call() {
/*Creates a temporary data storage object, then assigns the data.
I can't mutate the current BlockTerrainControl which is being rendered,
as this is a seperate thread.*/
BlockTerrainControl data = new BlockTerrainControl(CubesTestAssets.getSettings(app), new Vector3f());
CubesSerializer.readFromBytes(data, serializedBlockTerrain);
//Returns the data
return data;
}
};
(아래쪽) 멀티 스레딩 위키 문서의 일부 장면을 수정하고 게임 상태에 액세스 할 수 있지만 많은 세부 사항으로하는 방법을 포함 않습니다. 누구든지 해당 섹션을 확장하고 별도의 스레드 (또는이 경우에는 한 스레드에서 다른 스레드로 데이터 전송)에서 블록을 서버에서 클라이언트로 전송할 수있는 방법을 설명 할 수 있습니까?
질문에 아무것도 입력하지 않은 경우 추가해 드리겠습니다. 읽어 주셔서 감사합니다.