상세 컨텐츠

본문 제목

게임 GUI 구현에 대한 조언

프로그래밍 관련/게임프로그래밍

by AlrepondTech 2020. 9. 16. 01:48

본문

반응형

 

 

 

 

 

=================================

=================================

=================================

 

 

 

 

 



출처: http://wrice.egloos.com/4970240


게임 GUI 구현에 대한 조언  

게임 GUI 구현에 대해 간단히 개인적인 경험을 적어보려고 합니다.

일반인들이 흔히 GUI 라고 하면 너무 당연하게 생각합니다. "버튼", "리스트 박스", "콤보 박스", "라디오 버튼", "체크 박스" 등등... HTML 을 작성할줄 아시는 분들이라면 몇가지 테그 이름만 알면 바로 바로 웹 브라우져가 화면에 그려주기 때문에 이게 매우 만만하고 간단한걸로 생각되지만, 이게 게임 프로그래머들에게는 항상 악몽같은 존재입니다.





게 임 프로그램 내부에서는 MFC 를 사용할수 없습니다. 물론 웹 브라우져를 사용할수도 없습니다. 그렇기 때문에 게임 프로그래머가 GUI 컴포넌트드를 일일이 다 구현해주어야 합니다. GUI 가 사용하기는 쉬울지 몰라도 그걸 구현하려고 하면 일이 장난 아니게 커집니다.

흔히 GUI 구현의 난이도를 과소평가하기 쉬운데, 사실 이게 정말 정말 난이도도 높고 구현도 오래걸립니다.

 





외 국에서는 차라리 PC 용 게임 개발이 별로 없고 콘솔용 게임 개발이 주를 이루기 때문에 마우스 입력을 요구하는 복잡한 GUI 를 필요로 하지 않습니다. 국내에서는 콘솔 게임 개발 회사가 없다시피 하고, 대부분 PC 게임을 개발하기 때문에 대부분 작은 형태로든 큰 형태로든 GUI 개발을 요구하게 됩니다.

간단한 게임으로 "카트 라이더"나 "스타크레프트" 같은 게임만 되어도, 온라인 게임 시작하기 전에 대기실이 있고, 본 게임 들어가기 전까지는 모두 2D 로 구성되어있는데, 이게 모두 GUI 로 구성되는 것입니다. 3D 게임을 만든다고 해도 그 게임을 플레이하는 플레이어는 플레이 시간의 거의 절반을 2D 인터페이스에서 보낼수도 있는 것입니다.






제 가 이렇게 2D 인터페이스 구현만 실제 게임에서 두번 구현해봤고, 지난 학기 텀 프로젝트로 또 한번 구현을 시도했습니다. 이런 경험에서 우러나오는 조언 몇가지를 적어봅니다. (직접 구현을 해야하는 상황이라는 것을 전제로 적었습니다.)

  1. 최근 공개된 NHN 의 게임 오븐의 UI 툴이 매우 잘 구현되어있습니다. 반듯이 참고하세요.
  2. GUI 컴포넌트 전부를 다 구현하려고 하지 말고 꼭 필요한 것만 구현해서 사용하세요.
  3. 사 용되는 GUI 컴포넌트의 종류를 최소한으로 줄이도록 협상하세요. 유명한 스타크레프트나 워크레프트를 봐도 모든 GUI 컴포넌트가 다 구현되어 있지 않습니다. 초기 버전의 카트 라이더는 복잡한 컴포넌트 없이, "버튼"만으로 구성되어있었습니다. (아닐수도.. )
  4. CEGUI 는 무료라서 끌릴수도 있지만 비추입니다. 문제는 속도가 매우 느리고 상속구조가 복잡합니다. 무엇보다도, 이걸 사용한 상용 게임이 없습니다. 이걸 사용한 무료 게임들을 보면 대략 퀄리티를 짐작할수 있습니다.
  5. WoW 에 사용되는 User Interface 를 사용자들이 직접 수정할수 있도록 XML 포멧을 공개하고 있습니다. 이것도 참고가 됩니다.
  6. Flash 의 유저 인터페이스 관련 부분을 자세히 설펴보시면 그것도 도움이 됩니다. (예전글1, 예전글2 참고)
  7. GoF 의 Design Pattern 책을 참고하세요. UI 와 관련된 패턴들이 몇가지 소개됩니다.
  8. W3C 의 DOM 표준안을 참고로 하세요. OO 관점에서 인터페이스 설계가 아주 잘되어있습니다. JavaScript 에 익숙하시다면 웹 브라우져에서 어떤식으로 동작하는지 사용해가면서 확인할수도 있습니다. 제가 지난 학기에 시도했다는 것이 이것입니다. 구현코드는 이곳에서 다운 받을수 있습니다. 다만 구현된 컴포넌트는 아직 3가지 밖에 없습니다. ("이미지", "버튼", 그리고 "라디오버튼")
  9. 모 든 UI 동작과 관련된것들은 Event 를 사용하도록 구현하세요. 간단한 예로 HTML 이 있겠습니다. 무슨 동작이든 event listener 를 javascript 로 작성하듯이 lua 같은 스크립트로 동작하도록 하시면 되겠습니다. (DOM Event 참고)
  10. 혼자서 전체 UI 를 개발한다고 할때 대략 9개월 정도 소요될것을 예상하시면 될것 같습니다. 거기에 게임 오븐에서 제공하는것 같은 "사용하기 편리한 툴"을 개발하는데 추가로 3개월 정도 더 소요될걸로 예상하시면 될것 같습니다.


가장 강력히 추천하건데, GUI 는 직접 구현하지 말고 사다가 쓰십시요. ScaleForm 이라는 Flash 를 게임에다가 사용할수 있도록 하는 녀석이 있습니다. Flash 의 vector 그래픽 표현도 가능해서 에니메이션 표현도 가능합니다. 이런걸 직접 만드는건 거의 불가능하다고 생각하는데, 저렴한 가격(?)에 사서 쓸수 있으니 그것만으로도 감사해야할 일입니다.


트랙백 주소 : http://wrice.egloos.com/tb/4970240
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

 Commented by 쌀밥 at 2009/06/24 01:23 

관련해서 좋은글을 발견했습니다:
http://junnasal.springnote.com/pages/302780

 Commented by 쌀밥 at 2009/07/25 15:01 

예전부터 알고 있던것이기는 한지만, 이번에 Torque X 관련 책을 읽으면서 새삼 느끼는 것입니다만, Torque 에서 제공하는 UI 관련 툴이 상당히 발전을 많이해서 참고삼기에 좋은 것 같습니다.

 Commented by 쌀밥 at 2009/07/27 13:22 

루니아 전기가 사용했다는게 어떤거지요?? 목적어거 빠져서 이해가 잘...;; ㅅ.ㅅ;;

 Commented by 쌀밥 at 2009/08/01 04:42 

Elemental Engine 2 의 동영상 튜토리얼들 중에도 GUI 관련 설명이 잘 되어있군요... 좀 허접하고 버그도 보이기는 하지만 참고할만한것 같습니다.

 

 

 

 

=================================

=================================

=================================

 

 

 

반응형


관련글 더보기

댓글 영역