2012-06-02 3 views
1

저는 멀티 플레이어 RPG 용 서버를 코딩하고 있습니다. 현재 시야 범위 구현에 어려움을 겪고 있습니다. 일부지도는 다소 크기 때문에 클라이언트가 보는 것을 제한해야합니다. 내 접근 방식 :시야 범위, 플레이어 위치 업데이트

클라이언트에서 새 좌표를 얻으면 대상으로 이동 시작 시간과 함께 저장합니다. 매 x ms마다 나는 세계의 모든 생물체를 거쳐 현재 위치를 업데이트합니다. 위치를 저장 한 후 마지막으로 업데이트했습니다. 기본적으로 이동 시작 시간과 속도를 기반으로 새 위치를 계산하고 새 시작 시간을 저장하면서 현재 위치 변수에 해당 위치를 기록합니다. 일단이 업데이트가 완료되면, 나는 이동 한 모든 생물, 즉 마지막 업데이트 때와 다른 위치를 가진 사람들을 살펴볼 것입니다. 서브 루프에서 모든 생물/클라이언트를 다시 거쳐 나타나는 생물에 대해 알려야하는지 확인해야합니다. 현재이 업데이트는 매 100ms마다 실행 중입니다.

이 방법이 효과적이지만, 최선의 방법은 아닙니다. 그리고 나는 업데이트되고 점검되어야하는 세계에서 수천의 생물체 (플레이어, 괴물 등)가 생기면 어떤 일이 일어날 지 확신하지 못합니다.

이 특정 문제에 대한 리소스를 찾을 수 없어서 여기에서 묻습니다. 이 방법이 괜찮습니까? 곧 문제가 생길까요? 이 작업을 수행하는 표준은 무엇입니까? 가장 좋은 방법은 뭔가요?

답변

0

quadtrees을 사용하면 플레이어 캐릭터가 볼 수있는 영역을 기준으로 섹션을 구분할 수 있습니다. 그런 다음 게임의 모든 생물을 항상 반복 할 필요는 없습니다. 문제의 플레이어 캐릭터가있는 섹션 내의 것들과 무언가가 경계를 넘었을 때의 인접한 것들만 반복하면됩니다.

나는 개인적으로 이런 종류의 코딩을하지 않았지만 나는 GUI를 개발하고있는 우주 전투 게임에서 이것을 한 사람과 일했다!