[re] 오랜만에 질문 하나 드립니다~

조회 수 7193 추천 수 96 2003.08.08 02:20:02
우선 말씀드릴 것은...
저는 3D엔진과 클라이언트,서버의 네트웍 모듈만 만들었습니다.
엔진은 물론이요 네트웍 모듈 역시 코룸 프로젝트만이 아닌 다른 게임들에서도 범용적으로 쓸 수 있게 만든 DLL모듈입니다.따라서 게임내용과 관련된 처리는 완전히 빠져있습니다.
해서 제가 코룸에 관련된 기술적인 내용에 대해서는 정확히 알고있지 못합니다.쏘렌토의 엔진을 납품한다고 해서 쏘렌토에 대해서 잘 알지는 못하는것처럼요.그리고 제가 안다고 해도 진행중인 게임 프로젝트의 기술적인 부분은 발설해서는 안될걸로 생각합니다.회사 재산이며 다른 문제를 유발할 수 도 있으니까요.

그래서 코룸과는 전혀 상관없이....제가 예전에 서버프로그래밍 할때 썼고 아마도 지금 다른 게임들도 상당히 많이 쓰고 있을 방식을 말씀드리겠습니다.

어떤식으로든 맵 위에서 돌아다니는 온라인 게임은 공간을 분할합니다.3D든 2D든 말이죠.분할하지 않는다면 지구 땅덩어리 끝의 A군이 한마디 하면 반대쪽 끝에 있는 B군이 A군이 하는 소리를 들을것입니다.필요에 따라선 그럴수도 있겠지만 이는 불필요한 부하를 유발하죠.

분할은 트리를 이용할수도 있고 그리드를 이용할수도 있습니다.일단 분할된 공간에 속하는 게임 개체들(이를테면 다른 플레이어)끼리는 정보를 공유할 필요가 있습니다. 같은 공간에 속한다는 것은 그 개체를 보고 있거나 관련하여 게임을 진행하고 있다는 얘기니까요.고로 같은 공간에 속하는 모든 개체들에게는 각각의 데이타를 패킷으로 날려줄 필요가 있습니다.

뭐 이 정도는 충분히 생각하고 계셨겠죠?

마을을 예로 드셨는데 제 생각엔 마을에 들어갔다고 해서 마을에 있는 다른 캐릭터들의 정보를 몽땅 보내오진 않을겁니다. 그 기준은 마을이 아니라 '플레이어의 시야영역' 혹은 유사한 다른 단위겠죠.리니지2는 접속자수가 많고 시야영역이 길기 때문에 한번에 같은 공간(추상적인 의미의)에 속하는 플레이어들이 많을것입니다. 마을에 들어가는 순간 수백명의 캐릭터를 보았다면 그들은 이미 나(플레이어)와 한 공간에 속한것이므로 그들의 데이타를 모두 받을 필요가 있는거죠.

그러나 일반적으로 다른 캐릭터들이 시시각각 상태가 계속해서 변하는 경우는, 그것도 한꺼번에 모든 상태 수치가 변하는 경우는 거의 없습니다.몇가지 항목이 시간차를 두고 변할 뿐이죠. 따라서 변화에 따른 부분적인 데이타만 갱신해주면 패킷사이즈를 크게 줄일수 있습니다.실제로 대부분의 게임은 변동분에 대해서만 패킷을 전송합니다.
요약하면 한 영역에 속했을때, 그들의 데이타를 전혀 가지고 있지 않은 상태에선 많은 패킷을 받아야 하지만, 한번 받고 나면 그들이 다른 공간으로 이동해서 사라져버릴때까지는 변동되는 데이타만 작은 패킷으로 받으면 되는 것입니다.

별것도 아닌 내용을 장황하게 설명했네요.도움이 되셨는지?


댓글 '1'

풍이

2003.08.09 14:23:41
*.111.131.49

답변감사합니다. ^^
파일 첨부

여기에 파일을 끌어 놓거나 파일 첨부 버튼을 클릭하세요.

파일 크기 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )
List of Articles
번호 제목 글쓴이 날짜 조회 수
» [re] 오랜만에 질문 하나 드립니다~ [1] 여치 2003-08-08 7193
42 [질문] 게임 hongiro 2003-07-07 12297
41 [re] [질문] 게임 [1] 여치 2003-07-08 8310
40 [re] [질문] 게임 [2] hongiro 2003-07-08 6641
39 [퍼온글] 프로그래밍의 도 여치 2003-06-20 6141
38 NPC 길찾기 시스템과 맵구조에 대한 질문이에요 ^^ [2] 풍이 2003-06-03 7588
37 [펌] 어릴적 기억 [1] 청년 2003-03-18 6225
36 마소의 도전...X-box의 후기 베지타 2003-01-15 9120
35 swicth 문에 대한 질문 [2] hongiro 2002-11-14 6358
34 direct3d8.0 hongiro 2002-11-07 10214
33 [re] direct3d8.0 여치 2002-11-07 5533
32 [필독] 프로그래밍, 신이 내린 최고의 노가다 [1] 베지타 2002-10-21 7758
31 지금 게임학원에 hongiro 2002-10-20 6325
30 [re] 지금 게임학원에 [1] 여치 2002-10-20 6171
29 멀티스레드 프로그래밍에서 동기화는 왜 필요할까? [1] 여치 2002-10-19 5848
28 가상함수는 어떻게 호출되나? 여치 2002-10-19 6657
27 메모리카피는 어떻게 이루어지나? [3] 여치 2002-10-19 9538
26 정밀한 퍼포먼스 체크 여치 2002-10-19 7184
25 Overlapped I/O(중첩입출력)란 무엇인가? 여치 2002-10-19 31150
24 sse와 정수 레지스터의 연산속도 비교 여치 2002-10-19 5421



XE Login

天安門大屠殺 六四天安門事件 反右派鬥爭 大躍進政策 文化大革命 六四天安門事件 The Tiananmen Square protests of 1989 天安門大屠殺 The Tiananmen Square Massacre 反右派鬥爭 The Anti-Rightist Struggle 大躍進政策 The Great Leap Forward 文化大革命 The Great Proletarian Cultural Revolution 人權 Human Rights 民運 Democratization 自由 Freedom 獨立 Independence 多黨制 Multi-party system 民主 言論 思想 反共 反革命 抗議 運動 騷亂 暴亂 騷擾 擾亂 抗暴 平反 維權 示威游行 法輪功 Falun Dafa 李洪志 法輪大法 大法弟子 強制斷種 強制堕胎 民族淨化 人體實驗 胡耀邦 趙紫陽 魏京生 王丹 還政於民 和平演變 激流中國 北京之春 大紀元時報 九評論共産黨 獨裁 專制 壓制 統一 監視 鎮壓 迫害 侵略 掠奪 破壞 拷問 屠殺 肅清 活摘器官 障テ社會 誘拐 買賣人口 遊進 走私 毒品 賣淫 春畫 賭博 六合彩 台灣 臺灣 Taiwan Formosa 中華民國 Republic of China 西藏 土伯特 唐古特 Tibet 達償ワ喇嘛 Dalai Lama 新疆維吾爾自治區 The Xinjiang Uyghur Autonomous Region free tibet