간단한 멀티 플레이어 게임을 만들기 때문에 브라우저 측에서 그래픽을 구현하기 위해 THREE.js를 선택했습니다. 브라우저에서 모든 것이 잘 동작합니다.node.js 환경의 THREE.js
다음 생각 : 서버가 사용자 작업의 대부분을 체크 아웃해야합니다. 그래서 저는 서버에 세계 사본을 가지고 사용자와 상호 작용 한 다음 사용자에게 상태를 돌려 줄 필요가 있습니다.
코드의 좋은 부분이 클라이언트 측에서 작성되었으므로 node.js와 호환되고 계속 이동했습니다. (object.geometry
을 사용할 수있는 좋은 충돌 감지 - 내가 원했던 것입니다.)
그 결과 충돌 감지 코드가 작동을 멈췄습니다. 서버 측에서 Raycaster는 문자열
} else if (object instanceof THREE.Mesh) {
var geometry = object.geometry;
// Checking boundingSphere distance to ray
if (geometry.boundingSphere === null) geometry.computeBoundingSphere();
sphere.copy(geometry.boundingSphere);
sphere.applyMatrix4(object.matrixWorld);
if (raycaster.ray.isIntersectionSphere(sphere) === false) {
return intersects; // _HERE_
}
에 종료하고 object.matrixWorld
이 신원 매트릭스 때문이 발생합니다. 그러나 개체가 초기화됩니다. mesh.position
및 mesh.rotation
은 서버와 클라이언트에서 동일합니다 (브라우저에서 Raycaster는 매력으로 작동 함).
내가 생각하기에, object.matrixWorld
은 renderer.render(self.three_scene, self.camera);
의 어딘가에서 업데이트됩니다. 물론 그것은 서버 측에서하고 싶은 것이 아닙니다.
그래서 질문은 : object.matrixWorld
을 서버 측의 각 시뮬레이션 틱에서 업데이트하는 방법은 무엇입니까?
내가 원한 것을 시뮬레이트하는 다른 방법이 있다면 조언을 해줄 수도 있습니다.
좋은 2 시간 동안 "왜 내 레이 캐스터가 로컬에서 작동하지만 서버 측에서 작동하지 않습니까?" 큰 감사합니다, 이것도 서버 측에서 작동합니다 :) – Starwave