HiTEL 게제동(GMA) 공개자료실

DIRECTX를 이용한 격투게임 예제
작성자:최치호(tuckfish)
96-03-27
첨 부:[1608]fighter.zip
안녕하세요. 지호입니다. 윈도우즈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 키 : 특수공격 혹시라도 도움이 되었으면 좋겠습니다.....