WinGrid 데모
이 데모는 MMO 어플리케이션으로 SDK에 포함되어 있고 여기에서 설명되었던 기초 사항을 다루고 있습니다.
- 셀은 하나의 관심 지역 입니다.
- 빨간 점은 아바타 아이템 입니다.
- 안의 빨간색 사각형은 내부의 관심 지역 반경입니다(기본값: 셀 하나의 크기)
- 외부 빨간색 사각형은 외부의 관심 지역 반경입니다(기본값: 셀 세개의 크기)
마우스 입력:
- 왼쪽 버튼 드래그: 아바타 이동
- 휠: 관심 지역 확대 또는 축수
- 가운데 버튼 클릭: 기본값으로 관심 지역 재설정
- 오른쪽 클릭: 관심 지역 아바타 연결/비연결 토글
키보드 입력:
- M: 자동 이동 on/off 토글
- Num-Pad 5: 아바타를 중심으로 이동
- WASD 와 기타 Num-Pad 키: 아바타 이동
- +: 새로운 탭을 오픈하여 새로운 클라이언트 연결
- -: 탭을 닫고 클라이언트 접속 해제
- Insert: bot 시작 (동일 연결상에 아바타와 같이 이동하는 추가적인 아이템)
- Delete: bot 중지
- Space: 설정 탭으로 이동(왼쪽에서 두번째 탭)
예제
- bots와 클라이언트
Bots는 관심 지역을 가지고 있지 않습니다.
- 복수 클라이언트
다른 아바타들은 관심지역에 표시 됩니다. 이 정보는 아이템 프로퍼티들을 통하여 교환됩니다.;다른 클라이언트들은 관심지역의 범위 밖에 있을 지라도 새롭게 선택된 관심지역 크기로 항상 표시 됩니다.
떼어낸 관심 지역들은 붙여진 것 처럼 여전히 표시되고 있다는 것을 주목해 주세요: 관심 지역은 아이템이 아니므로 자유롭게 이동하면 보여질 수 없게 됩니다.
설정
설정 탭은 항상 왼쪽에서 두 번째 입니다.
- Player Text: 아바타 이름을 표시하는 문자열 입니다. 아이템 프로퍼티 입니다.
- Player Color: 플레이어 아바타의 색 입니다. 이것 또한 아이템 프로퍼티 입니다.
- Send movement interval: 얼마나 자주 수동 위치 갱신 정보가 전송될지와 얼마나 자동 이동이 발생할 지를 결정합니다. 위치 갱신은 아바타(아이템)가 움직 일 때만 전송된다는 것에 주의 하세요.
- Send reliable: 위치 갱신 전송시에 테스트 신뢰를 가능하게 합니다.
- Auto Move Interval: 한 방향으로 아바타가 움직이는 시간 입니다.
- Auto Move Velocity: 한번 이동 할때 마다 아바타가 이동할 거리 입니다.(“Send movement interval”)
- Auto Move: auto-move 를 사용할 수 없도록 설정 해 놓으면 bots 또한 움직이지 않습니다.
설정 변경은 동일한 제목을 가진 탭에만 적용 됩니다.
‘Space’ 는 설정과 게임 탭간 이동하는 단축 키 입니다.
레이더
세계에서 모든 아이템들의 위치 변화를 몇초 마다 보여주고 있습니다.
이 기능은 가상 세계에서 어떠한 일이 발생하고 있는지에 대한 더 좋은 인상을 주기 위해서 포함되었습니다.
전역 레이더는 전통적인 MMO 기능은 아니기 때문에 관심 지역 관리 프레임워크와는 관련이 없으나 샘플로 추가하였습니다.
카운터
서버 카운터 탭은 5초 마다 갱신됩니다.
그림은 한명의 플레이어가 움직이고 있는 하나의 연결된 클라이언트의 값을 표시 하고 있습니다.
수신된 이벤트는 5초마다 살펴봅니다: 카운터 데이터 이벤트만 포함하고 있으며 다른 이벤트는 수신되지 않습니다.
플레이어가 이동을 중지하게 되면 초당 오퍼레이션은 0 으로 떨어지게 됩니다.
auto-move 가 활성화 되면 각 달려가는 bot 는 초당 오퍼레이션 수가 증가 하게 되고 비활성화 되면 오퍼레이션 전송을 중지 하게 될 것 입니다:
관심 지역의 증가는 bot 위치를 초기에 전송하지만 auto-move 가 비활성화 되면 다른 위치 갱신정보는 전송되지 않습니다:
해석:
• 오퍼레이션: 40 = 20SetViewDistance + 20SetProperties -> 관심 지역이 20배정도 증가 됩니다.
• 이벤트: 10 = 10*ItemSubscribed -> 10 bots 가 보이게 됩니다.
최대화한 관심지역으로 10개의 bot들을 이동 시키는 결과는 다음과 같습니다:
초당 이벤트수와 오퍼레이션수는 거의 동일 합니다(아바타의 이동 갱신을 받지 않음)
최대화된 관심지역이 제거 되었을 때 송신 및 수신된 위치 갱신은 동일합니다. 카운터는 수신된 카운터로 인하여 이벤트의 최소값을 보여줍니다.
환경 설정
다음의 설정은 세계 파라미터 변경을 위해서 app.config 에서 설정할 수 있습니다:
XML
<add key="WorldName" value="Unity3d-Island"/>
<add key="GridTilesVertical" value="20"/>
<add key="GridTilesHorizontal" value="20"/>
<add key="GridTileHeight" value="1000"/>
<add key="GridTileWidth" value="1000"/>
존재 하지 않는 세계는 요구에 의해서 이러한 환경 설정값을 가지고 생성되지만 이미 존재하고 있는 세계는 이러한 설정값을 엎어치게 될 것 입니다.
- WorldName: 입장하려고 하는 세계의 이름
- GridTilesVertical: 그리드 세계의 위에서 아래로의 셀 개수
- GridTilesHorizontal: 그리드 세계의 왼쪽에서 오른쪽으로의 셀 개수
- GridTileHeight: 단일 셀의 위에서 아래로의 유닛 개수
- GridTileWidth: 단일 셀의 왼쪽에서 오른쪽으로의 유닛 개수