뭐 게임프로그래밍 하다보면 자료구조나 알고리즘에 익숙해야 한다는 소리를 많이 들었을것이다.
뭐 기초가 탄탄하면 분명히 좋을것이나 배움을하는데 응용과 함께하는것보다 좋은예는 없다고본다.
 예를 들면 트리를 배운다치면 책으로 이론을 읽었다.. 대충 어떤건지만 알게된다..
머릿속에있는걸 정리해서 외부로 추출해보면(공책에 정리한다던지) 제대로 설명해놓질못한다.
 반대로 절두체컬링이나 LOD같은걸 공부하면서 트리를 공부하게된다면 왠만한경우엔 대부분이
그것을 잘 이해하는것같다.

그런  이유로 이번에 정리하는 포스팅에서 살펴볼것은 순환큐라고 도 불리는
원형 큐(circular Queue)이다. 뭐 아는 사람도 있고 모르는 사람도있고
기본적인 구현방법이라던지 이론적인것은 네이버나 구글에 쳐서 대충 읽길바란다.

자!! 원형큐의 특징을 생각해보면서 밑의 두 사진을 보자.

문제를 하나 내보겠다 밑의 두사진에서 볼수있는것중에서 한가지 공통점을 찾아보아라
resize

대부분 알법한 온라인 게임 2개 서든어택과 아이온의 스크린샷이다.
이 두개의 스크린샷에서 발견할수있는 공통점이 원형큐를 이용해 만들수있는 것중하나이다.
(물론 다른방식으로도 구현가능하다)

자 모두 눈치를 챈사람도있고 모르겠는 사람도 있고 모르겠는사람도있을것이다.
정답은...... 자국이 남는다는 것이 공통점이다. 서든같은경우 총알 자국이고 아이온의 경우에는
발자국이라고할수있겟다. 예를 들면 노드를 밑에 처럼 구현할수있다.
<

이러한 자국같은경우에는 그릴수있는 갯수에 제한이되있다. 서든어택에서
한벽에 대고 계속 총질을 하다보면은 어느순간부터 총질을할떄마다 젤처음 남은 자국부터
사라져가는것을 볼수있을것이다. 왜냐하면 게임이시작되고나서 생기는 모든 흔적들을 저장하고
그리게 된다면 게임이 장기전이될시 저장하고 그려야할 정보들이 넘쳐나게 되어 원활한 게임진행을
방해할수도있다.(성능상으로)

 그렇기에 대부분의 3D게임에서 이런 자국노드들의 최대 갯수 N을 정해놓고 새로운것을 추가하면
제일 오래된것을 삭제하는 방식의 순환큐를 구현하여 쓰는것이다.

뭐 다른 용도로도 쓰이겠지만 내가 아는건 이것뿐이라 여기까지만 정리해놓도록 하겠다.

Posted by 랜스.

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다


Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/119
  2. Virats 2009/08/31 15:55  Modify/Delete  Reply  Address

    그 흔한 버퍼링도 순환큐죠.

  3. 아!!! 2011/04/15 11:59  Modify/Delete  Reply  Address

    이런 원리였군요..

: 1 : ... 69 : 70 : 71 : 72 : 73 : 74 : 75 : 76 : 77 : ... 182 :