=======================
=======================
=======================
출처: http://wrice.egloos.com/4970240
게임 GUI 구현에 대한 조언 |
게임 GUI 구현에 대해 간단히 개인적인 경험을 적어보려고 합니다.
일반인들이 흔히 GUI 라고 하면 너무 당연하게 생각합니다. "버튼", "리스트 박스", "콤보 박스", "라디오 버튼", "체크 박스" 등등... HTML 을 작성할줄 아시는 분들이라면 몇가지 테그 이름만 알면 바로 바로 웹 브라우져가 화면에 그려주기 때문에 이게 매우 만만하고 간단한걸로 생각되지만, 이게 게임 프로그래머들에게는 항상 악몽같은 존재입니다.
게 임 프로그램 내부에서는 MFC 를 사용할수 없습니다. 물론 웹 브라우져를 사용할수도 없습니다. 그렇기 때문에 게임 프로그래머가 GUI 컴포넌트드를 일일이 다 구현해주어야 합니다. GUI 가 사용하기는 쉬울지 몰라도 그걸 구현하려고 하면 일이 장난 아니게 커집니다.
흔히 GUI 구현의 난이도를 과소평가하기 쉬운데, 사실 이게 정말 정말 난이도도 높고 구현도 오래걸립니다.
외 국에서는 차라리 PC 용 게임 개발이 별로 없고 콘솔용 게임 개발이 주를 이루기 때문에 마우스 입력을 요구하는 복잡한 GUI 를 필요로 하지 않습니다. 국내에서는 콘솔 게임 개발 회사가 없다시피 하고, 대부분 PC 게임을 개발하기 때문에 대부분 작은 형태로든 큰 형태로든 GUI 개발을 요구하게 됩니다.
간단한 게임으로 "카트 라이더"나 "스타크레프트" 같은 게임만 되어도, 온라인 게임 시작하기 전에 대기실이 있고, 본 게임 들어가기 전까지는 모두 2D 로 구성되어있는데, 이게 모두 GUI 로 구성되는 것입니다. 3D 게임을 만든다고 해도 그 게임을 플레이하는 플레이어는 플레이 시간의 거의 절반을 2D 인터페이스에서 보낼수도 있는 것입니다.
제 가 이렇게 2D 인터페이스 구현만 실제 게임에서 두번 구현해봤고, 지난 학기 텀 프로젝트로 또 한번 구현을 시도했습니다. 이런 경험에서 우러나오는 조언 몇가지를 적어봅니다. (직접 구현을 해야하는 상황이라는 것을 전제로 적었습니다.)
- 최근 공개된 NHN 의 게임 오븐의 UI 툴이 매우 잘 구현되어있습니다. 반듯이 참고하세요.
- GUI 컴포넌트 전부를 다 구현하려고 하지 말고 꼭 필요한 것만 구현해서 사용하세요.
- 사 용되는 GUI 컴포넌트의 종류를 최소한으로 줄이도록 협상하세요. 유명한 스타크레프트나 워크레프트를 봐도 모든 GUI 컴포넌트가 다 구현되어 있지 않습니다. 초기 버전의 카트 라이더는 복잡한 컴포넌트 없이, "버튼"만으로 구성되어있었습니다. (아닐수도.. )
- CEGUI 는 무료라서 끌릴수도 있지만 비추입니다. 문제는 속도가 매우 느리고 상속구조가 복잡합니다. 무엇보다도, 이걸 사용한 상용 게임이 없습니다. 이걸 사용한 무료 게임들을 보면 대략 퀄리티를 짐작할수 있습니다.
- WoW 에 사용되는 User Interface 를 사용자들이 직접 수정할수 있도록 XML 포멧을 공개하고 있습니다. 이것도 참고가 됩니다.
- Flash 의 유저 인터페이스 관련 부분을 자세히 설펴보시면 그것도 도움이 됩니다. (예전글1, 예전글2 참고)
- GoF 의 Design Pattern 책을 참고하세요. UI 와 관련된 패턴들이 몇가지 소개됩니다.
- W3C 의 DOM 표준안을 참고로 하세요. OO 관점에서 인터페이스 설계가 아주 잘되어있습니다. JavaScript 에 익숙하시다면 웹 브라우져에서 어떤식으로 동작하는지 사용해가면서 확인할수도 있습니다. 제가 지난 학기에 시도했다는 것이 이것입니다. 구현코드는 이곳에서 다운 받을수 있습니다. 다만 구현된 컴포넌트는 아직 3가지 밖에 없습니다. ("이미지", "버튼", 그리고 "라디오버튼")
- 모 든 UI 동작과 관련된것들은 Event 를 사용하도록 구현하세요. 간단한 예로 HTML 이 있겠습니다. 무슨 동작이든 event listener 를 javascript 로 작성하듯이 lua 같은 스크립트로 동작하도록 하시면 되겠습니다. (DOM Event 참고)
- 혼자서 전체 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 관련 설명이 잘 되어있군요... 좀 허접하고 버그도 보이기는 하지만 참고할만한것 같습니다.
=======================
=======================
=======================
'프로그래밍 관련 > 게임프로그래밍' 카테고리의 다른 글
CustomUI IME editbox 멀티라인 텍스트박스~ (DXUT editbox상속) 관련 (0) | 2020.09.16 |
---|---|
게임 GUI 멀티 해상도 팁 (0) | 2020.09.16 |
네이버 게임게발자 질문/답변 서버 패킷 안보내질때 (0) | 2020.09.13 |
매니지드 언어(Java, C# 등등) 로 MMORPG 만들기 어떤가요? (0) | 2020.09.13 |
[서버] 자바로된 PC 온라인 게임 서버 제작 가이드 (0) | 2020.09.13 |