2017-09-19 3 views
0

frontend (현재)에서 완전히 실행되는 three.js에서 3D 게임을 개발 중입니다. 모델 (주)와 뷰를 완전히 분리하는 것이 좋은 생각입니까?자바 스크립트 게임 (Three.js) 용 모델보기 컨트롤러 패턴. 좋은 생각?

예를 들어 필자는 필요할 때 내 움직이는 객체를 직접 조작 (변환, 회전)하지만 대신 모델 (게임 상태)에서 위치 벡터를 잡고 조작 한 다음 위치를 설정하려고합니다 각 프레임의 해당 벡터에서 개체의 같은 필자는 어떻게 든 개체의 회전을 저장하고 뷰의 각 프레임을 설정해야합니다.

구체적인 예 : 왼쪽 화살표 키를 누르면 플레이어 개체가 왼쪽으로 변환됩니다. 대신 각 프레임에 대해 플레이어 개체를 모델의 현재 벡터로 설정하고 왼쪽 화살표로 벡터를 모델로 변환합니다.

모델보기 패턴은 훌륭한 아키텍처 아이디어처럼 보이지만 성능이 떨어질 까봐 두려운가요?

답변

1

MVC (Model View Controller) 패턴으로 컨트롤러를 놓치 셨습니다. 컨트롤러는 모델 변경시 뷰를 업데이트하는 방법을 결정합니다.

구체적인 예제의 첫 번째 부분에서보기 코드는 왼쪽 화살표 키 스트로크를 모니터링합니다. 왼쪽 화살표가 눌려 있는지 확인하여 모든 프레임이 느려지므로 나쁜 생각입니다.

구체적인 예제의 두 번째 부분에서는 컨트롤러가 왼쪽 화살표 키 스트로크를 모니터링하고 그에 따라 모델을 업데이트합니다. 컨트롤러가 왼쪽 화살표에 대한 코드를 한 번만 실행하기 때문에 이것은 좋은 것입니다. 또한 컨트롤러가 여러 개의 키 누름이나 누른 키 같은 것을 처리하는 방법을 결정할 수 있음을 의미합니다.

브라우저의 WebGL 부분 인 프레임 업데이트 (초당 60 프레임)에서보기 코드가 실행됩니다. 왼쪽 화살표 키 코드는 브라우저의 (느린) 이벤트 대기열 부분에서 실행됩니다. 성능 향상을 위해서는 프레임 업데이트에서 실행되는 코드를 최적화해야합니다.