« Previous : 1 : 2 : 3 : 4 : Next »
이 세상의 하드웨어는 참 다양하고, 그런 다양한 하드웨어에 모두 안정적인 프로그램을 개발하는 것이 쉬운 일은 아닙니다.
이번에 SandCastle 을 개발하면서도 몇몇 하드웨어에서 문제를 일으키는 것이 발견되어 좀 고생을 했는데요...
이번에는 오래도록 괴롭히던 문제를 너무나 쉽게 해결한 사례를 말씀드려볼까 합니다.

저는 오래전부터 GEForce 계열의 GPU/그래픽카드를 선호해왔습니다.
특히, 최신 기술을 담는 3D 렌더링 엔진을 중점적으로 개발하다 보니, 어느정도 현재 유행하는 적당히 높은 사양에 맞춰 개발해왔죠.
게다가, 노트북이나 임베디드 컴퓨터는 별로 염두에 두지 않아왔습니다.
그리고...

수년동안 문제 없이 사용하던 엔진이 이번 SandCastle 베타테스트에서 문제를 나타내기 시작했습니다.
(더 낮은 사양을 지원해야 하는 인디게임의 특성과도 관련이 있겠지요.)
대표적인 사례는 ATI Radeon Xpress 1250 (256 MB) 가 장착된 노트북이었습니다.
여기서 SandCastle 의 화면이 심하게 깨지는 현상이 나타났지요.
Z버퍼 문제인가 싶어 몇가지 수정을 한 뒤 다시 테스트 요청을 하였으나 결과는 마찬가지였습니다.

뭐가 문제일까 짐작하고 고쳐보는 것으로는 대부분의 경우, 문제 해결이 안됩니다.
심각하고 오래가는 버그는 연역적인 추리로 해결되지 않기때문에 여지껏 남아있는 것이니까요.

몇주가 흘러도 문제는 미해결 상태로 머물렀습니다.
그래서 결국 해당 GPU와 비슷한 것(Radeon X300)을 장착한 노트북을 섭외하였습니다.
(해당 기종을 구하기가 쉽지 않았습니다... 하지만 노트북 대여 서비스까지 동원하지는 않았습니다... 돈 안들어서 다행...)
그리고 기존 코드 테스트, 문제점 발견, 그것을 해결하고 다시 테스트하여 정상동작을 확인하기까지...
고작 2시간 반만에 문제가 해결되었습니다.
오랫동안 괴롭히던 막연한 문제가, 실제 문제가 되는 하드웨어를 눈앞에 두고 나선 이렇게 쉽게 해결되는 것입니다.
하드웨어를 테스트하는 것이 얼마나 중요한지 다시 한번 실감하는 순간이었습니다.
(물론, 이것으로 모든 문제가 다 해결되었다고 생각해선 곤란하겠습니다만... 암튼...)

물론, 이 모든 과정에서 가장 중요하고 고마운 것은 베타테스터 분들입니다.
베타테스트 과정이 없었다면 해당 시스템에서의 문제도 알 수 없었을 것이고,
친절한 리포트가 없었다면 정확하게 문제의 시스템이 어느 계열이다 라고 추정할 수도 없었겠지요...

Posted by moonyeom

2010/04/14 09:45 2010/04/14 09:45
, ,
Response
No Trackback , 2 Comments
RSS :
http://www.arcshock.com/kr/rss/response/33

여러 지인들의 협조로 인해 베타테스트가 순조롭게 마무리되었습니다.
참여해주신 분들께 감사드리고요...

덕분에 몇가지 생각못했던 문제가 드러났고요, 2주 정도 더 손질을 하게 되었습니다.
라데온 카드의 일부 기종에서 화면이 깨지는 문제가 또 나타났고요,
힌트가 너무 쉽게 얻어져서 게임의 재미가 반감된다는 의견이 있었습니다.
그 외에도 가치있는 지적들이 많이 나왔습니다만, 일단 위의 두가지 문제를 우선 해결하기로 했습니다.

이제 조만간 게임이 공개될텐데... 설레고 두렵네요.
첨부터 잘 좀 만들껄... 하는 생각도 들고요...

Posted by moonyeom

2010/03/29 13:15 2010/03/29 13:15
, ,
Response
No Trackback , 6 Comments
RSS :
http://www.arcshock.com/kr/rss/response/30

여러 지인들의 지인들을 통해, SandCastle 의 클로즈베타가 시작되었습니다.
잘 돼야... 될텐데... (오래된 개그 따라한 것은 결코 아님)

Posted by moonyeom

2010/03/23 14:51 2010/03/23 14:51
, ,
Response
No Trackback , No Comment
RSS :
http://www.arcshock.com/kr/rss/response/29

이번주에 이런저런 마무리를 한 후, 다음주중에 클로즈베타에 들어갈 예정입니다.
Pig-Min Agency 측과 제 몇몇 지인들께서 테스트를 도와주시게 되었습니다.

현재까지의 진행상황은...
거의 마무리 손질 단계구요.
UI 에서의 약간의 불편함 등을 개선하고
Sound 관련된 약간의 문제점을 파악하는 등의 작업을 하고 있습니다.

첫 걸음을 뗀다는 느낌이 들어서인지 두렵기도 하고 설레임도 있네요.
뭐든 이렇게 시작하는거겠지요 ?

앞으로 갈 길이 멀겠지만,
항상 이렇게 조금 두렵고 조금 들뜬 기분으로 작업할 수 있었으면 하는 생각이 드네요.
일상을 떠난, 작은 행복이랄까요.

Posted by moonyeom

2010/03/16 20:46 2010/03/16 20:46
, ,
Response
No Trackback , 5 Comments
RSS :
http://www.arcshock.com/kr/rss/response/28

어제 상암DMC 에 오신 광님을 우연히 지하세계식당가에서 만났습니다.

그래서, 잠시 이야기를 나누게 되었는데요...

대화중에 SandCastle 에 대한 충격적인 사실을 알게 되었습니다.

 

SandCastle 에 등장하는 모래알들은 스위치에 부딧히면서 힘을 전달합니다.

그 힘으로 스위치가 눌리게 되고, 퍼즐이 풀리게 되는거죠.

이때 모래알이 스위치에 전달하는 힘의 크기가 충분하지 않으면 스위치는 눌리지 않습니다.

이 힘을 결정하는 요소는 다음과 같습니다.

 

1. 모래알의 수

   많은 모래알이 스위치를 누르면 당연히 더 잘 눌려집니다.

 

2. 모래알의 속도

   높은 곳에서 떨어지는 모래알은 중력에 의해 더 많이 가속되므로 스위치를 누르는 힘도 당연히 커집니다.

 

3. 모래알이 스위치에 부딧히는 각도

   빠른 속도의 모래알이라 해도 스위치의 누르는 면에 비스듬하게 부딧힌다면

   수직으로 부딧히는 것에 비해 누르는 힘이 당연히 약하게 작용합니다.

 

이런 내용들이 SandCastle 에 적용되어있구요, 저는 당연한 것이기 때문에 따로 튜토리얼 등을 통해 알릴 필요가 없다고 생각했습니다.

 

하지만.

광님은 이런 사실들(특히 2, 3번 내용)을 전혀 모르고 계셨습니다 !!!

이것은 제게는 충격적인 일이었습니다.

개발자가 당연히 알고 있는 사실이 사용자들에게는 전혀 당연하지 않을 수 있다는 것을 깨닫지 못했던거죠.

 

"개발자가 사용자 입장에 서는 것"은 어려운 일이고, 특히 이런 문제에선 더더욱 어려운 것 같습니다.

어렵지만, 꼭 해야 하는 일이기도 하죠.

Posted by moonyeom

2010/02/25 15:56 2010/02/25 15:56
, ,
Response
No Trackback , 4 Comments
RSS :
http://www.arcshock.com/kr/rss/response/26

SandCastle 을 만들면서 발생한 어떤 버그에 대한 히스토리입니다.

버그라는게 늘 의외의 생각하지 못하는 과정에서 나타나곤 합니다만, 이번 건 역시 그렇습니다.

이런 경험이 결국 품질관리를 어떻게 해야 하는지에 대한 노하우에 기여하게 되리라 긍정적으로 생각하며 위로하고 있습니다만...

 

일단, 해당 버그의 내용은 이렇습니다.

"게임의 옵션에서 효과음 볼륨을 줄였는데 음악이 같이 줄고, 음악 볼륨은 아무런 동작을 하지 않는다"

 

이건 분명 음악 볼륨 작업을 할 때에 테스트 해서 정상 동작을 확인했던 내용이었습니다.

어이없는 이런 실수가 왜 일어난걸까 궁금했습니다.

(창피하기도 했지만 뭐, 버그없는 프로그램은 없으니 주눅들 것은 없다고 스스로 위로를... 그래도 흑흑...)

소스코드를 뒤지다보니 결국 버그의 발생 히스토리가 밝혀졌는데, 이랬습니다.

 

1. 음악/효과음 볼륨 조절 기능 작성

    음악은 mp3 를 DirectShow 를 통해 Play 하고 있었고

    효과음은 PCM 비압축 Wav 파일을 DirectSound 를 통해 Play 하고 있었습니다.

    따라서 음악 볼륨조절은 DirectShow 를 통해서, 효과음은 DirectSound 를 통해 따로 이루어지고 있었죠.

    두 볼륨조절이 서로 영향을 받지 않는 문제였다는 것입니다.

 

2. 기능 테스트

   당연히 정상적으로 테스트 되었습니다.

  

3. MP3 는 라이센스 문제가 있으니 OGG 로 바꿈

   배경음악을 라이센스 문제가 없는 OGG 로 바꿨으나, OGG 파일을 Play 하는 모듈을 만들어둔게 없어서

   SquallSound 라는 오픈모듈을 사용(상황1)하여 Play 하였습니다.

   정상적으로 음악이 플레이되었고요(상황2),

   그래서 모듈 교체가 성공적으로 이루어졌다고 판단(상황3)하게 되었습니다.

 

4. 버그 발생

   효과음 볼륨을 줄일때 배경음악이 함께 줄어드는 현상이 나타나게 되었습니다.

   이유는, SquallSound 가 내부적으로 DirectSound 를 통해 음악을 Play 하기 때문에

   효과음의 볼륨 조절에 함께 영향을 받게 된 것입니다.

 

이 히스토리에서 실수는 3번의 상황2 에서 일어났습니다.

배경음악을 위한 모듈이 변경되면서 영향을 받은 부분을 모두 테스트해야 했습니다.

그것은 배경음악의 Play, Stop 뿐 아니라 볼륨조절도 해당되는 것이었습니다.

하지만 Play, Stop 만 테스트하고 볼륨조절은 테스트하지 않았던거죠.

영향을 받을 수 있는 기능의 일부만을 테스트하고 정상이라고 섣불리 판단한 것입니다.

 

이런 문제때문에 테스트 항목을 미리 기록해두고,

프로그램에 변경사항이 발생할때마다 "모든 테스트 항목을" 새로 테스트하는 것이 필요합니다.

변경사항과 연관된 기능이라고 생각되는 것만 테스트해서는

이런 버그의 발생을 막기 어렵습니다.

사람은 분명 뭔가를 잊고 빼먹기 마련입니다.

 

프로그램을 만드는 입장에서 이렇게 빡빡하게 테스트까지 다 해서 작업을 마무리하는 것이 결코 쉽지는 않습니다.

당장 시간이 부족하구요, 또, 개발자가 자기것을 테스트할때에는 상당히 우호적인 경로만을 테스트하게 되는

미묘한 심리적 현상이 생기기도 합니다. (이건 저를 포함한 상당히 많은 개발자들을 통해 경험해왔습니다...)

 

그래서 이런 업무는 별도의 인력을 동원하는 것이 바람직합니다.

하지만 인디게임이라면 이런 테스터 동원이 충분한 규모가 되기 어려운 것이 현실입니다.

개발자가 1차적인 점검에 좀 더 노력을 기울일 수밖에 없겠지요.

그리고...

전에도 그래왔지만, 앞으로도 계속 Pig-Min Agency 에서 도와주실꺼라 믿고 있습니다. 움홧홧 !!!

Posted by moonyeom

2010/02/25 15:36 2010/02/25 15:36
, ,
Response
No Trackback , 4 Comments
RSS :
http://www.arcshock.com/kr/rss/response/25

[개발일지] BGM 녹음 2차

지난번 녹음때에 답답했던 문제를 해결했습니다.
바로 이런 문제였는데요...

1. 연주시에 소리가 스피커를 통해 나오지 않아서, 녹음이 끝난 후에야 확인할 수 있다
2. 그러다보니 각각의 트랙 연주가 원하는 느낌으로 나오지 않고 좀 더듬거리는 듯 들린다.

근데 어이없게도, 사운드카드 설정에서 녹음시 재생볼륨을 0 으로 해놓았던 문제였습니다.
이걸 키워주니 녹음중인 소리가 사운드카드로 나오네요...
쩝...

암튼, 들으면서 녹음할 수 있게 되어 좀 더 마음 편하게 녹음하게 되었습니다.
지난번의 노하우(?)를 살려, 이번에는 트랙녹음도 좀 더 편안하게 할 수 있었구요.
역시, 미약하지만 조금씩 익숙해지는 것 같습니다. (노이즈도 줄었어요 !!!)

Posted by moonyeom

2010/02/18 12:55 2010/02/18 12:55
, , ,
Response
No Trackback , a comment
RSS :
http://www.arcshock.com/kr/rss/response/22

[개발일지] 전화위복

지난번 개발의 발목을 잡힌 문제를 대강 해결했습니다.
내용은 다음과 같습니다.

1. 사용자가 물체를 벽을 뚫고 있도록 설치할 수 있다.

2. 위와 같이 설치된 물체를 타고 모래가 벽을 뚫고 흘러들어가는 경우가 생긴다.

위의 두가지 문제를 해결하기 위해 좀 더 정교한 파티클 바운딩을 구현하려고 하다보니
마음도 심난하고 프로젝트 자체에 문제가 발생할 듯 하여 걱정이 많이 되었습니다.
파티클 바운딩이 정교해지면 그에 따라 퍼포먼스가 많이 떨어질 수 있기 때문이었습니다.
퍼포먼스에 문제가 생긴다면 프레임이 떨어지거나 아니면 모래알 수를 줄일수밖에 없는데,
둘 다 게임의 느낌을 심각하게 훼손시킬 것으로 생각되었기 때문입니다.

하지만 생각을 좀 다른 방향으로 해보았습니다.
물체의 바운딩면만 서로 겹치지 않는다면 쉽게 피할 수 있는 문제라는 생각을 하게 되었습니다.
이를 위해서 약간의 코드가 추가되었습니다만, 그로 인한 퍼포먼스 하락은 그다지 크지 않았습니다.
난감한 문제를 만났다고 생각했지만...
생각보다 쉽게 해결한 듯 하고, 결과적으로 퍼즐은 더욱 물리적이 되었습니다.
(물체가 움직이다가 뭔가에 걸려서 멈추는 등의 연출이 나타나게 되었죠)
전화위복이 된거죠.

Posted by moonyeom

2010/02/14 01:05 2010/02/14 01:05
, ,
Response
No Trackback , 4 Comments
RSS :
http://www.arcshock.com/kr/rss/response/21

Sand Castle : Prelude 작업이 막바지를 향해 가고있는 가운데,
덜컥 발목을 잡는 문제가 발생했습니다.
광님의 지적으로 다시 생각해보게 된 문제인데요...

"어디까지 현실적인 물리를 보여줘야 하나" 라는 점입니다.

지금까지 구현된 내용으로는 대략 이런 문제들이 나타나는데요.

1. 사용자가 물체를 벽을 뚫고 있도록 설치할 수 있다.

2. 위와 같이 설치된 물체를 타고 모래가 벽을 뚫고 흘러들어가는 경우가 생긴다.

뭐, 대략 위와 같은 문제들입니다.

이게...
처음에 개발하면서 두가지 모두 그냥 허용하기로 했던 것인데요,
프로그램 부하를 줄이기 위해 저런 정도는 그냥 희생하는것이 좋겠다고 판단한거죠.

하지만 광님의 의견은, 이런 비현실적인 상황이 연출되면서 게임에 대한 몰입감이 떨어져버린다는 것이었어요.

쉽게 고쳐질 부분이 아닐 것 같아 걱정입니다.
뭔가 정면돌파보다는 우회하는 방법을 생각해내야 할 것 같네요.
개발 일정이 2주밖에 안 남았거든요...

암튼, 오늘의 교훈...
"유저들의 시각으로 생각하는 것은 개발자로서는 참 쉽지 않구나..."

Posted by moonyeom

2010/02/01 23:26 2010/02/01 23:26
, ,
Response
A trackback , 5 Comments
RSS :
http://www.arcshock.com/kr/rss/response/18

[개발일지] BGM 녹음하다 !

지난 토요일에 SandCastle 에 사용될 BGM 의 초안을 작업해보았습니다.
사용한 악기는 전기기타와 키보드.
이걸 대체 어떻게 녹음해야 할지 참 막연하더군요...

대략 정신없는 녹음과정을 정리해보면 다음과 같습니다.

보기 싫으면 펼치지 마시고요


뭐 암튼, 이렇게 약 1시간 반의 사투 끝에 임시로 SandCastle 엔딩곡이 나왔고요...
이걸 들고 Pig-Min Agency 세미나 장소로 출동...

그런데 의외로 Pig-Min Agency 측의 광님은 곡의 느낌을 좋게 들어주셨습니다. 너그러운 분...<(*^o^*)>
덕분에 의기소침했던 것을 좀 털어버리고, 계속 열심히 하면 되겠구나 하는 힘을 얻을 수 있었습니다.

Posted by moonyeom

2010/01/18 12:27 2010/01/18 12:27
, , , ,
Response
A trackback , 4 Comments
RSS :
http://www.arcshock.com/kr/rss/response/16

« Previous : 1 : 2 : 3 : 4 : Next »