레이블이 -DW의 지하실인 게시물을 표시합니다. 모든 게시물 표시
레이블이 -DW의 지하실인 게시물을 표시합니다. 모든 게시물 표시

2025년 8월 1일 금요일

DW의 지하실 제작 #6 - 자동 데모, 난이도 설정 및 이어하기

@ 오토플레이 데모


게임의 규칙은 복잡하지 않습니다만, 아무런 설명도 없으면 좀 그렇죠?ㅎ

첫 스테이지에서 자동으로 진행되는 데모를 넣어보았습니다.

화면 아래에 간단히 설명도 붙였구요.

타이틀 화면을 가만히 두면(약 20초), 데모플레이가 시작됩니다.




@ 난이도 설정


새 게임 진입 시 난이도를 고를 수 있습니다.

쉬움, 보통, 어려움으로 3가지이구요. 기본 선택은 '보통'입니다.

난이도에 따라 회복 아이템의 개수, 몬스터 종류 비율이 달라집니다.

'어려움' 난이도에서는 '폰' 아이템이 시작점이 아닌 랜덤한 위치에 생성됩니다.




@ 이어하기


게임을 세이브하면 카트리지에 데이터가 저장 후 타이틀 화면으로 돌아갑니다.

시작 메뉴에서 '이어하기'를 선택해서 계속 플레이할 수 있습니다.


아래 키를 누르면, 아무때나 세이브 가능합니다.

키보드: SPACE 또는 ESC

조이스틱: A

조이메가: B 또는 START



@ 그 밖의 정보


스테이지 클리어를 위해서는 실제 키보드로 한글 단어(또는 문장)을 입력해야합니다.

만약 키보드를 쓸 수 없는 환경에서는 GRAPH 키를 눌러서 입력을 스킵하세요.

조이스틱(버튼B), 조이메가(버튼C)를 눌러도 스킵됩니다.


게임 플레이는 당연히 하이리스크 하이리턴입니다.

X-II 종류에 상관없이 배터리를 넣어서 켜면 모두 득점이 됩니다.

HP의 여유가 있다면, 모든 X-II를 다 켜서 고득점을 노려주세요!

'Z80 몬스터'가 튀어나오는 '요상한 X-II'는 주의하시구요.

참고로 X-II 종류는 레이더에서 색깔로 확인할 수 있습니다. (하양, 노랑, 빨강)


모든 몬스터는 장애물 또는 아이템(X-II, 배터리 등)을 통과하지 못합니다.

따라서 배터리를 다 줍는 것도 적에게 도움이 됩니다ㅋ



마지막으로 오토플레이 데모와 초반 진행 모습을 찍어보았습니다.

세이브 및 이어하기도 포함되어 있으니 참고하시구요.




2025년 7월 20일 일요일

DW의 지하실 제작 #5 - 게임 플레이 구현

재료(?)들은 준비되었으니, 이제 본격적인 코딩으로 들어갑니다.

.

.

사실 그냥 노가다입니다요~ ㅎ.ㅎ



내용을 설명으로 적어보면요...


플레이어는 바닥에 떨어진 배터리를 줍는다. 최대 5개 소지가능.

X-II에 배터리 2개를 넣으면 전원이 켜짐. 안켜지는 고장난 X-II도 존재.

적과 부딛히거나 바닥의 누액을 밟으면 체력이 소모됨.

피로회복제로 체력 회복 가능.


적들(유령 및 몬스터)는 주변의 켜진 X-II로 돌아가려함.

X-II에 적 하나가 들어가면, 화면에 한글 글자 1개가 나타남.

해당 스테이지에 맞는 한글 글자를 모두 얻으면, 최종 X-II를 얻을 수 있음.

최종 X-II에서 키보드 테스트(한글 입력)를 완료하면 스테이지 클리어!


주변의 방들은 서로 연결되어있으며, 휴대폰 아이템을 얻으면 화면에 지도가 나타남.

지도상에는 정상적인 X-II(흰색)와 고장난 X-II(빨간색)가 표시되며,

정상 X-II를 켜면 파란색으로 바뀜.


아이큐1000, 아이큐2000, 데이터레코더 등의 아이템으로 보너스 점수 획득가능.


... 이렇습니다. 글로 적으니까 복잡하네요ㅋ



그냥 영상으로 보시죠~ ㅎ.ㅎ/




'DW의 지하실'의 플레이는 이렇게 완성되었습니다.

스테이지 데이터는 아직 다 만들어진 상태는 아닌데요, 며칠 더 삽질이 필요하겠습니다.


2025년 7월 16일 수요일

DW의 지하실 제작 #4 - 사운드 넣기

게임이 MSX2 기본 사양(물론 VRAM은 128KB)이라, 사운드도 그냥 PSG만 사용합니다.

CPU 여유가 되면 FM도 넣어볼까 생각은 해봤었는데, 그래픽 때문에 좀 불가능할 것 같네요

BGM과 효과음도 모두 PSG만 사용하니까, 효과음 출력 시 BGM 한채널이 MUTE되는 걸 볼 수 있겠습니다!


먼저 타이틀에 쓰일 곡으로 '드뷔시 달빛'을 템포를 약간 올려서 넣었구요.

게임 메인 BGM은 '라데츠키 행진곡'입니다.

제목은 기억 못하더라도(제가 그랬...ㅋ) 곡 자체는 귀에 익으실 겁니다요 ㅎ.ㅎ


사운드 루틴은 VDP의 스캔라인 인터럽트를 활용합니다.

아무래도 V블랭크 구간에서는 그래픽 작업때문에 CPU가 바빠서 사운드 타이밍을 밀었습니다~


아래는 CPU로드 그래픽을 켠 상태이니, 참고하세요.

색칠된 스캔라인 개수가 CPU로드를 나타낸다고 보시면 됩니다.

사운드는 한 프레임 출력의 절반쯤에서 처리되고 있어요.




사운드는 딱히 설명할 부분이 없네요. 으흠...

그냥 영상으로 구경하시죠~ ㅎ.ㅎ/



그럼, 다음 편에서 뵈어요~ ㅎ.ㅎ/


2025년 7월 13일 일요일

DW의 지하실 제작 #3 - 스프라이트 구성

아시다시피 MSX의 스프라이트는 컬러코드가 4BIT입니다.

V9938의 G7(스크린8)에서는 그래픽은 RGB 8BIT 출력이 됩니다만, 스프라이트는 여전히 4BIT죠.


근데, 한가지 문제라면,

스크린8에서는 스프라이트가 16컬러로 고정되어 출력됩니다. 팔레트 레지스터의 영향을 받지않아요.

바꿔말하면 MSX1의 스프라이트랑 비슷한 색으로 나옵니다. 실제로는 EGA 16컬러에 더 가까운 듯요 ㅎ.ㅎ


암튼 잡설은 여기까지구요, 스프라이트를 만들어봅시다요!

이전 글에서 언급했지만, 플레이어는 비트맵 그래픽(16 x 24)로 구현되어 있습니다.

나머지 몬스터와 잡다 효과용 패턴만 스프라이트를 적용합니다.


먼저 그림판으로 밑그림을 그려보아요.



이제 스프라이트 데이터를 만들어야하는데요.

예전엔 주로 DD구락부를 썼지만, 이번엔 그냥 YY-CHR 프로그램을 사용했습니다. (귀찮 귀찮...ㅋ)

'2BPP MSX' 포맷으로 놓으면, 연속한 번호(짝, 홀)의 패턴 두개를 2BIT 컬러로 보여주는데요.

실제 MSX2에서는 스프라이트 OR 연산된 출력과 같은 효과를 얻을 수 있습니다. 

적 캐릭터 하나당 8개의 패턴이 필요하고, 애니메이션 효과를 위해 4배의 패턴을 그려야합니다.



참고로, 실제 VRAM에는 아래처럼 1BPP 데이터로 들어갑니다요.



VDP는 8 x 8 패턴 256개의 스프라이트를 처리합니다.

보통 게임에서는 16 x 16 패턴을 쓰니까, 64개의 스프라이트라고 보면 되겠죠?

여기서 캐릭터가 상하좌우 등의 여러가지 모습을 보여주려면, 실제 한번에 쓸 수 있는 패턴 수가 팍팍 줄어버립니다.

결국 전체 패턴 메모리를 여러벌로 쓰는 방법밖에는 없죠.


아래는 VRAM Page 0의 가용 메모리를 쪼개서 스프라이트로 할당한 모습입니다.

참고로 스프라이트 어트리뷰트도 2벌을 쓰고 있습니다. 테어링을 막는 가장 쉬운 방법이죠. 페이지 플립이요!




그럼, 실제 화면에서는 어떻게 나오는지 보아요.

애니메이션은 6프레임 당 한번씩 패턴이 바뀝니다. 바꿔말하면, 초당 10프레임으로 애니메이션이 진행됩니다.




그럼, 다음 편에서 뵈어요~ ㅎ.ㅎ/


2025년 7월 10일 목요일

DW의 지하실 제작 #2 - 그래픽(비트맵) 구성

그래픽 데이터를 만들어봅시다.

모든 스크린샷은 에뮬에서 캡쳐한 것이니 참고하시구요.


먼저 부팅 후 게임 오프닝에 나올 X-II의 모습입니다.

256 x 192 사이즈로 맞춘 비트맵입니다.




다음은 타이틀 화면에 나오는 컴컴한 지하실의 모습이네요ㅋ




스크린8에서는 VRAM 페이지 용량이 64KB입니다. 결국 2페이지로 게임 구현이 되어야합니다.

페이지 1에는 플레이어, 아이템, 배경 등에 쓰일 그래픽이 들어가겠구요.

그래픽 처리를 쉽게 할 수 있도록, 게임 화면의 백업 데이터를 남겨둡니다.




아래는 페이지 0에 표시된 게임 화면입니다. 표시영역은 256 x 192 픽셀이욤.

아래쪽에 보이지 않는 부분(256 x 64 픽셀)은 스프라이트 데이터로 쓰이겠습니다.




대충 어떤식으로 보여지는지 아시겠죠?


그럼, 다음 편에서 뵈어요~ ㅎ.ㅎ/


2025년 7월 6일 일요일

DW의 지하실 제작 #1 - X-II를 찾아서



국딩 시절에는 이 광고를 보면서, 다들 최고급 기종에 대한 환상 같은 게 있었죠. 명조체 한글이라니!

물론 실물을 만져보는 순간... 그 환상은 뿅~하고 사라졌지만요ㅋㅋ


그 후 30년 정도는 X-II를 잊고 지냈습니다만...

2018년에 일명 대란이 터지면서 창고(?)에서 잠자던 X-II가 쏟아져나왔지요.

저도 당시의 본체 2대를 받아서 열심히 굴리고 있습니다 ㅎ.ㅎ/


그리곤 시간이 꽤 흘렀네요.

당시의 X-II를 수리해서 쓰는 경우도 많아서, 이젠 X-II를 갖고 계신 분들이 많은데요.

갑자기 이런 생각이 떠올랐습니다.


창고에서 정상 동작하는 X-II를 찾는 게임을 만들면 재밌을까? 이런 생각이요!


일단 제목부터 지어봅니다. 'DW의 지하실'

네, DW는 그 회사의 이니셜 맞습니다ㅋ



@ 요구환경


게임 사양은 256KB(2메가비트)의 작은 메가롬팩으로 제작됩니다.

램 64KB의 기본 MSX2에서 실행됩니다만, VRAM은 128KB가 필수가 되겠습니다.



@ 그래픽


모든 그래픽은 스크린8(VDP G7 모드)을 사용합니다.

이 모드는 그래픽 부하도 높고, 팔레트를 쓸 수 없고, 스프라이트 색이 고정된다는 등의 제약이 있지만,

한번쯤은 256컬러 모드로 게임을 만들어보는 것도 재밌을 것 같더라구요.

게임 화면은 흔히 보는 탑뷰 형식입니다.



@ 사운드


현재 PSG만 사용하는 것으로 진행중입니다만, 혹시 여유가 되면 FM을 추가할 가능성도 있습니다.

사실 여유가 되면 PSG PCM을 넣는 쪽이 더 끌립니다만, 아직 확정된 건 아니네요.



@ 게임 플레이


한줄로 표현하면,

-> 지하실에 흩어진 건전지를 모아서 X-II를 켠 후, 동작 테스트가 되면 스테이지가 클리어!

가 되겠습니다. 간단하죠? ㅎ.ㅎ


지하실은 여러개의 방으로 구성이 됩니다.

스크롤은 불가능하고 장면전환 되는 식이에요. 메탈기어를 떠올려보시면 되겠습니다.


주인공을 방해하는 DW의 망령들이 돌아다닙니다만,

RGB 모니터를 좋아하는 유령이라서, X-II를 켜서 물리칠 수 있습니다요!

음... 모니터 속으로 사라진다는 표현이 더 맞겠네요.


최종 X-II 키보드 테스트에서는,

유령들이 알려주는 단어(또는 문장)를 입력해야합니다.

실기에서 플레이하려면 키보드가 멀쩡한 기종을 쓰는 게 유리하겠죠? (X-II 실기는 애로사항이...)



마지막으로 타이틀 화면을 올려보아요~



그럼, 이만...