커스텀 스레드 풀 모델 특징
• 스레드 수를 조절해, 성능을 최적화 할 수 있다.
• 입력순서와 처리 순서가 달라 질 수 있다.
• Lock 문제가 발생한다.
• 스레드가 잠기는 경우에는 성능 손해가 크다.
– 데이터베이스나 외부 서비스 동기화 쿼리에 의한 성능 손해가 매우 크다
커스텀 스레드 풀 모델 특징
• 스레드 수를 조절해, 성능을 최적화 할 수 있다.
• 입력순서와 처리 순서가 달라 질 수 있다.
• Lock 문제가 발생한다.
• 스레드가 잠기는 경우에는 성능 손해가 크다.
– 데이터베이스나 외부 서비스 동기화 쿼리에 의한 성능 손해가 매우 크다게임에서는 치명적인
문제가 될 수 있다
타일 분할 간단 소개
• 구현이 간단하다
• 초기화 비용이 거의 없다 (via 동적분할)
• 시야 거리를 동적으로 바꾸기 어렵다
• 객체의 밀도가 낮아도 속도향상은 적다
7
119 10
85 6
1 2 3
13 14 15 16
12
4
보이는영역
보이지
않는 영역
나
서로의 행동을 지켜본다
8번으로 이동시 시야에서 사라진다
10번으로 이동시 시야에 나타난다
서버가 보는 심리스 월드
• 클라이언트 기법은 이미 많은 곳에서 소개
• 서버상에서 심리스 월드 구현에 대한 이야기
심리스 월드를 바라보는 관점
레벨 디자인 : 세계가 단절 없이 이어져 있다.
클라이언트 : 리소스 절차적 로딩을 한다.
서버 : 같은 공간분할 데이터로 관리된다.
눈에 보이는 객체는 같은
서버에 배치하는 것이 좋다
서버에서의 인터랙션 : 객체의 값 읽기/변경
같은 메모리 공간상에 없으면
처리가 매우 복잡하다
외형, 이동 및 액션
공격/피격, 강제 상태 변경
심리스 월드의 서버 제약
눈에 보이는 객체들은 같은 서버에 배치하는 것이 좋다.
메모리, 동시 접속자의 제한
플레이어 100 vs NPC 1000+
거대한 심리스 월드 해결방법
• 조각내기
– 걸어서 이동 할 수 없는 곳은 모두 분리하다.
– 배타고 대륙이동, 전송게이트로 이동, 등등..
• 서버 분산
– 프록시 객체를 이용해서 여러 서버에 분산가능
– 안정화 시키기 매우 어렵다.
• 메모리, CPU 를 늘린다.
– 공간분할후 부분적으로 독점을 해서 멀티스레드로 확장
– 이게 짱인듯…
정리
• 지리적인 기준으로 인터랙션을 할 경우
게임 월드의 개념이 필요하다.
• 월드의 크기가 커지면 공간 분할을 한다.
• 심리스를 할 수 있는 것과 해야만 하는 것
을 구분한다.