안녕하세요. 지호입니다.
윈도우즈95에서 DirectX를 사용해서 게임을 만들려고 했는데, 군복무
때문에 어쩔수 없이 그만두게 되어 여기에 그 밑바탕이 되는 기본적인
소스를 올려드립니다.
먼저 사용환경은 윈도우즈95면 될 것이고, 개발환경은 비주얼씨4.0,
GameSDK입니다.
내용은 창을 하나 만들어(320x200), 거기에 배경으로 스트리트화이터 중
춘리의 배경 일부분을 뿌려줍니다. 배경 음악은 야니의 음악 중 하나로
알고 있는데, 격투게임과는 약간 어울리지 않지만, 좋더군요. MIDI화일
을 MidiStream화일로 바꾸어 사용합니다. GDK의 MID2STRM.exe를 사용하여
컨버팅하면 됩니다. 그리고는 동전넣는 딸랑소리가 난 뒤에 제가 그린
철사인간이 나타납니다. 동그라미 하나와 5개의 선으로 그려진 인간이죠.
원래는 제 동생이 그래픽을 해주기로 했었는데, 시간이 없다고 하나도
안그려주지 뭡니까? 너무 단순하게 그려서 잘 보셔야 할 겁니다.
캐릭터는 1명밖에 나오지 않습니다. 충돌체크를 구현하지 못했기 때문에
1명밖에 나올 수 없었습니다. 충돌체크는 배경과 스프라이트를 일정한
크기로 분할하여 얻어진 마스크비트맵을 사용하려 했었습니다.
움직임은 비교적 단순화하기 위해서 노력했는데, 많은 양의 그래픽만
감당할 수 있다면, 수많은 동작을 구현할 수 있었는데, 그렇지 못해서,
몇가지 동작밖에 없습니다. 동작은 호흡하는 동작, 펀치동작, 앉는 동작,
점프하는 동작, 특수공격 동작(겉으로 보기에는 펀치와 똑같지만, 효과음
이 다릅니다)이 있습니다. 펀치와 점프, 특수공격동작에는 스트리트파이
의 효과음을 사용했으니 리얼할 겁니다.
이것은 게임은 아니고, GDK의 폭스&베어같? ? 예제로서 도움이 되었으면
합니다. 폭스&베어같은 예제는 안정적인 성능을 위해 코딩이 매우
많은 편인데, 제 소스는 에러체크같은 것을 단순화시켰기 때문에 윤곽을
알기 쉬울 겁니다. 대신에 어떤 환경에서는 잘 안될 수도 있겠죠...
DirectDraw의 경우에는 Surface를 만들어 스프라이트들을 저장합니다.
윈도우를 만들어 실행할 수도 있고, 풀스크린으로 실행할 수도 있지만,
그건 메인에서 정해주어야 합니다. 즉, 실행시간에 모드를 바꿀 수는 없
습니다. 그건, 제가 bitmap을 따로 저장해 놓지 않기 때문에, 즉
Surface가 Lost되어도 다시 Restore하여 원래 그림을 로드시키지 않아서
Restore하지 못하게 했습니다.
DirectSound는 간단하게 DSUTIL.c에서 불러다 썼습니다. 정말 간단하더
군요. 웨이브만 리소스 스크립트에 지정해 주어 사용했습니다.
Midi화일의 연주는 GameSDK의 예제 중 iklowns라는 예제가 있죠. 거기에
포함된 미디연주소스를 사용했습니다. mid화일은 아니고, mds, 즉
midistream화일이라는 RIFF형식을 띈 포맷을 사용합니다. 이 포맷으로
바꾸어주는 유틸리티는 GDK? ? BIN\ 디렉토리에 있습니다. MID2STRM.EXE
사용키는 LEFT 키 : 왼쪽
RIGHT 키 : 오른쪽
UP 키 : 점프
DOWN 키 : 앉기
INSERT 키 : 펀치
LEFT+DOWN+RIGHT 키 : 특수공격
혹시라도 도움이 되었으면 좋겠습니다.....