« Previous : 1 : 2 : 3 : 4 : 5 : 6 : 7 : Next »
Sand Castle - Prelude : The Faded Memories
(지원 OS : MS Windows)

게임 다운받기 (FilePlanet)
게임 다운받기 (FileFront)
음악 다운받기 (Last.fm)
음악 다운받기 (FileFront)
* 게임 소개시, 파일 직링크가 아닌 / 이 글 링크를 걸어주시길 부탁드립니다! *

Sand Castle은 수많은 모래알들이 쏟아지는 것을 이용하여
퍼즐을 풀어나가는 물리 퍼즐 게임입니다.
Sand Castle - The Faded Memories : Prelude 는 본편에 앞서 만들어진
예고편격의 게임이며, Freeware입니다.

Readme.txt (클릭하면 열림)


YouYube 에 올려진 동영상



Vimeo 에 올려진 동영상 보기


게임 다운받기 (FilePlanet)
게임 다운받기 (FileFront)
음악 다운받기 (Last.fm)
음악 다운받기 (FileFront)
* 게임 소개시, 파일 직링크가 아닌 / 이 글 링크를 걸어주시길 부탁드립니다! *

Posted by moonyeom

2010/04/29 16:27 2010/04/29 16:27
, , , , , , , ,
Response
3 Trackbacks , 14 Comments
RSS :
http://www.arcshock.com/kr/rss/response/34

SandCastle Prelude Trailer (Vimeo)

Vimeo 에 올라간 트레일러입니다.


SandCastle Prelude Trailer from Moonyeom on Vimeo.

Posted by moonyeom

2010/04/29 10:33 2010/04/29 10:33
, ,
Response
No Trackback , a comment
RSS :
http://www.arcshock.com/kr/rss/response/35

이 세상의 하드웨어는 참 다양하고, 그런 다양한 하드웨어에 모두 안정적인 프로그램을 개발하는 것이 쉬운 일은 아닙니다.
이번에 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

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

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

[소식] 블로그 이사 했습니다...

지금 보시는 이곳이,
ArcShock Game Studio 의 새 둥지입니다.
ArcShock.com 도 장만했네요... (생각보다 싸네)

근데, 설치형 블로그라는걸 만들었는데, 머리 많이 아프네요... =.=;;;
광님감자님께서 도와주시느라 수고하셨습니다.
(한두번 설명해도 모르면 답답할텐데, 이를 악물고 참아주셨지요)

아직 이삿짐을 덜 풀어서 좀 어수선합니다만, 차츰 좋아지겠지요.
(로고를 박아야 되는데... 어디다 뒀더라...)

Posted by moonyeom

2010/04/04 20:48 2010/04/04 20:48
Response
No Trackback , 10 Comments
RSS :
http://www.arcshock.com/kr/rss/response/32

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

덕분에 몇가지 생각못했던 문제가 드러났고요, 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

« Previous : 1 : 2 : 3 : 4 : 5 : 6 : 7 : Next »