// 게임 개발시에 깜빡하기 쉬운 것들을 이곳에 적어두려고 합니다.
// 틈틈히 생각나는게 추가되면 요기다 업뎃할꺼고요...
// 근데, 이 모든 사실을 깜빡하면...?

01. 중복실행 방지
게임이 중복실행(두개 이상의 프로세스가 실행되어버리는 것)되면 뭔가 좀 어설퍼보입니다.
(얼마 전 데모를 플레이해본 Gyromancer, 실수로 더블클릭을 두번 한 결과, 무려 전체화면 게임이 두개 뜸 !)
이거 참 당황스럽고, 좀 묘한 의미에서 게임이 어설퍼보이게 됩니다.
또한, 데이타 저장 등에서 두 프로세스가 상호 충돌할 수 있으니...
특별한 이유가 없다면 무조건 중복실행은 막아두는게 좋겠습니다.

02. Radeon 카드 테스트
취향상 GeForce 카드를 사용하는지라,
간혹 프로그램 배포시에 Radeon 카드에서 예상 못한 문제가 발생하곤 합니다.
GeForce 계열의 GPU 에 비해 Radeon 계열의 GPU 는 훨씬 꼬장꼬장하기 때문에,
사소한 Render State 오류로도 먹통 화면을 나타내기도 하고요,
렌더링이 부분적으로 누락되는 문제가 생기기도 합니다.
가능하다면 GeForce 와 Radeon 두가지 개발 시스템을 갖추고 개발하는 것이 좋겠습니다만,
맛좋은 할리스 커피를 일주일에 다섯번밖에 먹지 못하는 가난한 개발자라면(그래서 가난해지는거쟎아 !!!)
일단 갖춰진 시스템에서 개발하고, 배포 전에 여러 지인들을 통해 테스트를 부탁하는 것이 좋겠습니다.

03. Mouse click scan
경우에 따라 DInput 을 쓰지 않고 그냥 마우스 값을 스캔해서 사용하는 때도 많은데요...
이때, 프로그램의 포커스가 다른 곳으로 옮겨갔을 경우에는 마우스 스캔을 하지 않도록 하는걸 깜빡하면
프로그램의 포커스가 옮겨갔을 경우에 대한 문제가 생깁니다.
당연한건데도 종종 까먹곤 하지요...

04. Lockable
D3D 의 디바이스를 Lockable 로 해놓는 경우가 종종 있어요.
임시로 DC 텍스트를 출력하기 위해서인데, 이건 정말 임시로 쓰는 경우에 해당하는데...
절대로, 절대로 글자출력을 Lockable Surface + GetDC 조합으로 해서는 안됩니다.
근데, 걍 테스트 코드로 그렇게 해둘 때가 있죠.
그리고 테스트 코드를 지운 후에...
Lockable 설정을 했던 것은 까맣게 있어버리는 경우가 있습니다...-.-;

05. MP3
BGM 으로 MP3 를 무심결에 사용할 뻔 하는 경우가 있습니다.
얼마전 광님께서도 말씀해주셨습니다만, MP3 는 파일포맷 자체에 라이센스가 있기때문에
게임의 배경음악으로 사용할 경우 문제가 발생할 수 있지요...
관련 사이트 : http://www.mp3licensing.com/royalty
암튼, 안전하게 OGG 정도로 갈아끼우는 것을 잊지 말아야 하겠습니다.


06. 전체화면과 관련된 이상한 오류
드물게 나타나는 오류인데,
전체화면과 창모드를 오갈때에 발생하기도 하고
그냥 전체화면 모드로 실행할때 발생하기도 합니다.
코드상의 문제인지 DX 와 윈도우즈 사이의 미묘한 문제인지 모르겠으나, 암튼 증상은 이렇습니다.
전체모드에서 프로그램의 캡션바가 떨어져나가지 않습니다.
하지만 화면상에는 캡션바가 없는 것으로 나오고요, 화면 해상도도 설정한 그대로인 상태가 됩니다.
추측으로는, 640*480 같은 저해상도에서 목격되는 것 같네요.
암튼, 이때문에 클라이언트 영역만 남아있다고 생각하고 프로그래밍할 경우에는
좌표를 얻어올때 문제가 될 수 있습니다.
일단 이 문제의 해결을 위해서 전체모드/창모드 설정시에
폼의 캡션바를 붙이거나 떼는 등의 작업을 손수 해주는 것이 안전할 것 같습니다만,
일단 이건 임시방편이고... 근본적으론 원인을 파악하는게 좋겠죠.

07. DirectSound 의 MainVolume 관련 오류
On-Board 형 사운드카드의 드라이버들 중에서
DirectSound 를 지원하긴 하는데 좀 이상하게 동작하는 카드가 종종 있는 모양입니다.
예를 들어, 게임이 실행되면 이상하게 윈도우 볼륨이 변한다는 분들이 종종 있는데요,
바로 이런 이유가 아닌가 합니다.
그런 증상을 디버깅해본 결과,
DirectSound 의 표준적인 코드에서도 오동작이 확인되었습니다.
DirectSound 의 PrimaryBuffer Volume 을 변경하면
윈도우의 WaveVolume 이 함께 변경되는 문제였는데요,
DirectSound 를 초기화 할때 다양한 방법을 사용해보았습니다만,
증상은 개선되지 않았습니다.
당장은 우회하는 방법으로...
PrimaryBuffer 의 볼륨은 건드리지 않고 효과음 각각의 볼륨만 조절하는 것으로
해결해두었습니다만...
뭔가 찝찝합니다.

08. (또) Radeon 문제
사실은 Texture 규격에 대한 문제입니다.
노트북용 Radeon 칩에서 DXT 압축 텍스쳐에 문제가 발생했습니다.
2의n승 규격에 맞지 않는 DXT 텍스쳐를 만들지 못하는 문제였는데요,
엔진에서 해당 상황을 체크하고 있었습니다만
요즘 카드는 웬만하면 다 되다보니 간과하고 있었습니다.
(나온지 몇년 된 온보드 인텔칩에서도 처리되는 문젠데 이건...)
암튼, 해당 상황에서는 DXT 압축을 풀어서 텍스쳐를 올리도록 수정하여 해결했습니다.
수많은 DirectX 상태 플래그를 다 점검하는 수고를 하지 않으면
사소한 문제를 간과하기 쉽습니다만...
그렇다고 그 많은 상태값을 다 처리하자니 너무 하위기종까지 신경쓰는 것 같기도 하고...
그래서 어느정도까지만 선택하여 체크하기로 하였습니다.
예를 들어, 텍스쳐의 가로세로 크기가 같아야만 한다는 규정따위는...
부두카드를 지원할게 아니라면 그냥 무시하자...는 식이죠.
(너무 귀챠니즘에 빠진건 아닐까...)

09. Reserved...
10. Reserved...

Posted by moonyeom

2010/04/13 23:15 2010/04/13 23:15
, , , ,
Response
A trackback , 5 Comments
RSS :
http://www.arcshock.com/kr/rss/response/4

개발자로서의 인디게임

게임계에 투신(이라기보다는 실족)한지 벌써 10년이 넘었습니다.
(쓰다보니 헉 소리가 나네)

초창기의 게임계까지는 아니고, 그 다음세대라 할 수 있는 1990년대 하반기의 게임개발계는...
반지하 단칸방에 예닐곱명이 모여 방바닥에 차오르는 습기를 걸레로 닦아가며 라면 끓여먹던 시절이었습니다.
그때에는 배고픔을 견딜만큼의 열정이라는 것이 있었던 것 같습니다.
많이 싸워 헤어지고 또 다른 사람과 뭉치고 하면서,
그닥 훌륭한 경력관리를 하진 못했지만 그래도 지금 기억에 남는 추억 몇개는 건진 것 같습니다.

하지만 잃은 것도 많았습니다.
친했던 사람들이 사소한 작은 이해관계로 인해 갈라서는 것을 보며
그들에게, 또 저 자신에게 실망하기도 했구요,
서서히 자본의 힘이 게임계를 잠식하면서,
꿈과 희망보다는 돈과 노동으로 변질되어가는 개발자의 위상 변화에 가슴이 먹먹해지기도 했습니다.
하지만, 그것이 산업화의 당연한 귀결이라면 받아들일 밖에요.

그러다보니 게임계에 입문한 이후 꿈꿔왔던 "나만의 작품"이라는 것은 구름 저 멀리 사라져갑니다.
그저 월급쟁이, 회사원일 뿐이죠.
(그래서인지, 예전에는 스스로를 개발자라 불러왔지만 지금은 때때로 회사원이라고 부르기도 합니다.)

대략 2005년쯤부터 인디게임에 관심을 가졌던 것 같습니다.
그 당시에는 아무것도 모르고 그저 웹을 돌아다니며 눈에 띄는 플래쉬게임을 플레이해보고
좋은건 네이버 블로그에 챙겨두곤 했지요.
그 게임들의 가벼움, 신선함, 자유로움에 반하고...
그리고 기성 게임들은 눈길을 주지 않을 참신한 영역을 건드리는 도전정신에 매료되었지요.

외계행성에 불시착한 후, 그들의 언어를 배워가는 게임.
상처입은 봉제인형들의 마음의 병을 치료하는 게임.
무릎 관절 수술과정을 소개하는 게임.
그리고 그 밖의 수많은, 정말 밤하늘의 별처럼 수많은 게임들...
(밤하늘에 보이는 별은 고작 6천개 미만이라는 얘기는 생략)

셀 수 없을만큼 많은 소재와 번뜩이는 재치에 감탄을 연발하며,
이런것이 게임이다 하는 막연한 동경을 가지게 되었습니다.
그리고, 언젠가는 나도... 라는 생각을 품어왔던 것 같습니다.

이제 슬슬 시작을 하는 단계인데요,
과연 꿈꿔왔던 것처럼 매력적인 세상일까...?
아직 잘 모르겠네요.
하지만 최소한, 지금 이 순간만은 신나네요.
(그럼 이런거 쓸 시간에 프로그램이나 더 짜 !)

Posted by moonyeom

2009/12/15 22:52 2009/12/15 22:52
, , , ,
Response
2 Trackbacks , 7 Comments
RSS :
http://www.arcshock.com/kr/rss/response/5