두둥실게임즈DUDUNGSIL GAMES
DEVLOG EP.05

몬스터 180종과 손맛 있는 타격

22일 오전에 몬스터를 50종에서 180종으로 늘렸다. 그리고 이틀 동안 전투에 손맛을 넣었다. 히트스톱, 넉백, 슬로 모션, 층으로 쌓은 효과음, 전투 음악 두 곡.

  • 기록 기간2026-09-22 ~ 09-23
  • 커밋37개
  • 읽는 시간약 11분

Read this post in English →

9월 22일에 추가한 몬스터 초상화 72개를 어두운 보라색 칸에 격자로 늘어놓은 그림. 불, 물, 자연, 빛, 어둠 속성의 짐승, 곤충, 정령이 섞여 있다
9월 22일 오전 11시 44분 커밋에 들어간 64픽셀 초상화 중 72개.

「마계공단: 던전사업부」는 쳐들어오는 모험가 파티를 몬스터로 막는 모바일 던전 경영 게임이다. 몬스터를 모으고 키워서 층마다 배치하면, 전투는 자동으로 흘러간다. 그러니까 플레이어가 제일 오래 보는 화면이 전투 화면이다. 그런데 4편까지의 전투는 숫자는 맞는데 보는 맛이 없었다. 맞아도 맞은 것 같지가 않았다.

9월 22일과 23일, 이틀 동안 커밋은 37개였다. 22일 오전엔 몬스터를 180종으로 늘렸고, 오후부터 23일 오전까지는 게임 타격감에 매달렸다. 이번 편은 그 얘기다. 그림은 이번에도 그 이틀 커밋에 들어간 것만 썼다.

50종에서 180종으로

4편 마지막 날 밤에 몬스터를 50종으로 늘렸고, 다음 날 오전 11시 44분에 130종을 더 넣었다. 커밋 하나에 파일이 2,046개 바뀌었다.

새 130종은 처음부터 등급 사다리로 설계했다. 같은 생물이 견습, 정예, 찬란한, 신화의 네 단계로 나온다. 견습 이끼 멧돼지가 있고, 정예 이끼 멧돼지가 있고, 신화의 이끼 멧돼지가 있는 식이다. 그 결과 전체 180종이 일반, 희귀, 영웅, 전설 등급마다 45종씩, 불, 물, 자연, 빛, 어둠 속성마다 36종씩 딱 맞게 나뉘었다. 이렇게 맞춰 두면 "이 속성엔 전설이 없다" 같은 구멍이 안 생긴다.

9월 22일에 늘린 몬스터 180종 초상화 전체
9월 22일 11시 44분 커밋 기준 180종의 64픽셀 초상화. 위에서부터 두 줄씩 불, 물, 자연, 빛, 어둠 순서이고 줄마다 일반에서 전설 쪽으로 간다.

그림은 AI 도트 도구인 PixelLab으로 뽑았다. 종마다 영어 프롬프트를 따로 썼는데, 공통으로 붙인 문장이 있다. "사람 얼굴 없음, 모험가 갑옷이나 옷 없음, 사람이 아닌 몸". 몬스터가 모험가처럼 보이지 않게 막는 문장이다. 역할도 실루엣에 넣었다. 방패형은 넓고 무겁게, 근접형은 앞으로 덤비는 자세, 원거리형은 가늘고 활이나 지팡이가 보이게.

그런데 그날 밤 9시 33분에 하나를 다시 그렸다. 견습 이끼 멧돼지가 얼굴이 안 보이고 머리에 커다란 방패판을 달고 있어서, 다른 일반 몬스터들 사이에 놓으면 혼자 따로 놀았다. 이번엔 이미지 생성 도구에 기존 나무껍질 멧돼지 초상화를 스타일 기준으로 주고, 얼굴을 크게, 엄니가 보이게, 방패판은 빼고 다시 뽑았다.

이끼 멧돼지의 네 등급과 다시 그린 견습 버전
9월 22일 이끼 멧돼지 전투 그림의 첫 프레임. 왼쪽 두 개가 11시 44분 버전과 21시 33분에 다시 그린 견습, 나머지가 정예, 찬란한, 신화의.

같은 시각에 스토리 보스 4종(나이아, 이그니스, 엘더루트, 모르가나)의 전투 그림도 더 크고 화려하게 새로 뽑았다.

보스 나이아, 이그니스, 엘더루트의 이전 그림과 9월 22일 그림
9월 22일 11시 44분에 바꾼 보스 전투 그림. 왼쪽부터 나이아, 이그니스, 엘더루트이고 각각 왼쪽이 이전, 오른쪽이 새 그림.
개발자 노트130종을 한 번에 넣은 방식

종 목록은 JSON 파일 하나다. 종 ID, 이름, 속성, 등급, 역할, PixelLab 프롬프트가 들어 있고, 가져오기 스크립트가 이걸 읽어서 종 CSV랑 게임 테이블에 넣는다. 능력치는 손으로 안 넣고 역할 × 등급 표에서 기본값을 가져온다. 이 스크립트는 콘텐츠만 바꾸고 저장 데이터는 건드리지 않는다.

그림은 따로 돈다. 검토를 통과한 PixelLab 결과물이 한 장씩 있으면, 포장 스크립트가 그걸 받아서 전투 시트(대기 4, 공격 6, 피격 2, 쓰러짐 5프레임), 모션 띠, 64픽셀 초상화로 만든다. 등급마다 원본 칸 크기를 64, 72, 92, 108픽셀로 다르게 해서 높은 등급일수록 몸집이 크다. 사실 이 시점의 동작 프레임은 한 장짜리 그림에 간단한 자세 변형을 걸어 칸을 채운 거라 진짜 애니메이션은 아니었다. 그건 한참 뒤에 다시 손본다.

같은 커밋에서 화면 이동 성능도 손봤다. 화면을 옮겨 다니거나 비서가 말을 걸 때마다 같은 전투력 예상치를 몇 번씩 다시 계산하고 있었다. 그래서 전투 입력을 키로 만들어 최근 32개 결과를 기억하는 캐시를 붙였다. 저장 데이터나 배치 객체 자체는 캐시하지 않는다. 바깥에서 고치면 꼬이니까. 검사는 연출을 끈 전투와 켠 전투가 같은 결과를 내는지, 캐시된 값이 바깥 수정에 안 변하는지 본다.

손맛이 없던 전투

22일 오후 3시 46분 커밋부터 타격감 작업이다. 설계 문서에 참고한 게 적혀 있다. 다른 게임의 전투 영상을 보고 가져온 건 그림이 아니라 "순간의 무게"였다. 스킬이 나갈 때 화면이 잠깐 어두워지면서 캐릭터만 남는 것, 맞는 순간 번쩍이는 것, 맞은 쪽이 밀려나는 것.

원칙은 하나 정했다. 전투 계산과 이벤트 순서는 그대로 두고, 화면 쪽 연출만 위에 얹는다. 타격감 때문에 승패가 바뀌면 안 되니까.

그날 넣은 것들은 이렇다.

  • 카메라 포커스: 스킬을 준비하는 동안 시전자랑 대상 사이로 화면을 살짝 당기고, 배경만 어둡게 한다. 일반 등급은 줌 없이 배경 14%, 전설은 줌 8%에 배경 50%.
  • 화면 플래시: 희귀 이상 스킬 적중, 궁극기, 보스 격파, 치명타에 전장이 한 번 번쩍인다. 속성 색을 30% 섞어서.
  • 넉백: 맞은 쪽이 공격자 반대로 밀렸다가 돌아온다. 등급, 치명타, 스킬에 따라 최대 26픽셀. 14픽셀 넘게 밀리면 발밑에 먼지가 인다.
  • 조준 표식: 스킬을 쓰기 전에 대상 발밑에 속성 색 마름모가 내려앉는다.
  • 숫자: 한 유닛에 숫자 칸을 3개 둬서, 연타를 맞아도 앞 숫자를 덮지 않는다.
  • 말풍선: 직업, 역할, 보스별로 짧은 대사를 단다. 3배속에선 생략한다.

유닛도 키웠다. 76~88픽셀이던 걸 100~112픽셀로, 보스는 176픽셀로. 대신 같은 줄에 서면 얼굴을 가려서 앞뒤 열을 반 칸씩 엇갈리게 놓는 지그재그 배치로 바꿨다.

히트스톱과 한 번에 하나만

23일 오전에 다시 보니 이번엔 너무 시끄러웠다. 평타 하나에도 화면이 흔들려서 정작 치명타랑 스킬이 안 튀었다.

그래서 오전 10시 24분에 평타의 화면 흔들림을 뺐다. 대신 때린 쪽과 맞은 쪽만 접촉 자세로 잠깐 멈춘다. 히트스톱이다. 예비 동작은 12분의 3초에서 12분의 4초로 늘리고, 공격 후 복귀는 12분의 6초, 피격 자세 유지는 12분의 4초로 정했다. 넉백은 0.24초에서 0.3초로. 숫자로 보면 별거 아닌데, 이 몇 프레임이 있어야 "때렸다"가 보인다. 말풍선도 화면에 한 번에 하나만 뜨게 했다.

11시 10분엔 스포트라이트를 넣었다. 영웅 이상 스킬, 처치, 보스 권능, 궁극기가 나오면 나머지 유닛이 전부 어두워지고, 맞는 그림이랑 숫자가 작아지고, 말풍선도 안 뜬다. 주인공 하나만 남는다.

16분 뒤엔 마지막 장면을 손봤다. 한쪽을 전멸시키는 마지막 일격은 0.3배속 슬로 모션으로 보여 주고, 결과 배너는 그게 끝날 때까지 기다린다. 보스가 2단계로 넘어가면 화면 가장자리가 붉게 뛰고, 마지막 보스층에서 수비 쪽 체력이 30% 아래로 떨어지면 층 전체가 빨갛게 맥박친다. 마지막까지 버티는 모험가 이름도 띄운다.

11시 43분엔 정보를 붙였다. 상성이 맞으면 "효과적!", 반대면 "저항"이 뜬다. 층에서 켜진 조합 효과는 오른쪽 위 칩으로, 지금 결과 화면 기준으로 MVP가 될 몬스터 위엔 별이 따라다닌다.

게임 효과음 만들기: 소리를 층으로 쌓았다

소리도 같은 이틀에 다 갈아엎었다. 원래 타격음은 사인파 하나를 쓸어내린 데 흰 소음을 섞은 거라, 커밋 메시지에 적은 대로 "충격이 아니라 테스트 톤"처럼 들렸다.

22일 오후 2시 45분 커밋에서 타격음을 세 층으로 다시 합성했다. 마른 어택(트랜지언트), 음이 뚝 떨어지는 몸통, 대역을 자른 질감 소음. 문서에 이렇게 적어 놨다. 피치 드롭이 없으면 합성음은 타격이 아니라 삐 소리로 들린다.

그 위에 두 층을 더 얹는다.

층내용
속성 색불은 불티 튀는 소리, 물은 물방울과 기포, 자연은 나무 두드림, 빛은 종소리, 어둠은 낮은 웅웅거림
등급 장식희귀는 종 한 음, 영웅은 올라가는 두 음, 전설은 화음과 낮은 울림, 긴 잔향

종족마다 울음소리도 만들었다. 슬라임, 곤충, 야수, 새, 언데드 같은 열 계열로 나눠서 목소리 성질을 다르게 하고, 속성이 음색을, 등급이 몸집을 정한다. 등급이 오를수록 낮고 길어진다. 일반은 0.32초, 전설은 0.53초. 같은 종은 늘 같은 소리를 내게 종 ID로 피치를 정했다. 그리고 전투 화면에서 등급을 판정하는 규칙을 소리 쪽도 그대로 쓴다. 보이는 등급이랑 들리는 등급이 다르면 이상하니까.

23일 오전엔 소리에도 우선순위를 줬다. 큰 장면이 나오면 평타 소리를 줄이고, 평타는 0.15초에 두 번까지만 낸다. 평타 때 내는 울음소리도 목소리마다 횟수를 제한했다. 화면에서 스포트라이트를 받는 장면이 소리에서도 앞에 서게 하려는 거다.

전투 음악 두 곡

10시 43분엔 전투 음악을 넣었다. 로비 테마의 '출근' 멜로디를 변형한 두 곡이다. 일반 층은 132BPM D단조, 보스층은 144BPM에 로비 멜로디의 한 음을 반음 내려서 불길하게 만들었다. 외부 곡이나 음악 생성 서비스 없이 스크립트로 합성했다. 효과음이 중음역을 차지하니까 음악은 낮은 쪽에 두고, 폰 스피커에서도 베이스가 들리게 가장 낮은 음을 정해 뒀다. 궁극기 컷인 동안엔 음악이 절반으로 줄어든다.

개발자 노트타격감을 확인하는 방법

연출은 눈으로 봐야 하는데, 에디터에서 매번 실제 시간으로 돌려 보면 프레임이 들쭉날쭉해서 전후 비교가 안 된다. 그래서 고정 스텝 녹화기를 만들었다. 1/30초씩 시계를 밀면서 전투를 12초 동안 기록하고, 연출이 쓰는 시계도 녹화 시계로 바꿔 끼운다. 그러면 같은 전투가 매번 같은 화면으로 찍힌다.

나중엔 녹화기가 그 사이에 난 효과음도 전부 기록하게 했다. 별도 스크립트로 프레임이랑 소리를 섞어서 소리 있는 영상으로 뽑는다. 효과음 우선순위는 이렇게 들어 봐야 판단이 됐다.

넉백, 포커스 줌, 숫자 3칸, 대사 표는 전투 모션 검사에 넣었다. 넉백 방향이 맞는지, 제자리로 돌아오는지, 줌이 풀리는지 같은 건 자동으로 본다. 다만 문서에도 적었듯이 안드로이드 실기기 스피커로 듣는 확인은 이때까지 못 했다.

몬스터를 '직원'이라고 부르기로

22일 오후 4시 18분엔 화면에 나오는 '몬스터'를 전부 '직원'으로 바꿨다. 세는 단위도 '마리'에서 '명'으로. 마계공단이 회사니까, 대사에서만 쓰던 회사 말을 버튼이랑 시스템 메시지까지 넓힌 거다. 코드 안의 이름은 그대로 뒀다. 23일 밤엔 '자유 방어'도 '격퇴'로 바꿨다.

그 밖에 이틀 동안 한 것들.

  • 매주 바뀌는 세 파티를 연달아 막는 주간 토벌대를 구현했다. 스토리 2장을 깨면 열린다.
  • 튜토리얼 첫 무료 채용은 희귀 직원이 확정으로 나오게 했다. 두 번째부터는 원래 확률이다.
  • 등급별 능력치 배율을 1.0/1.15/1.35/1.6에서 1.0/1.3/2.0/3.0으로 크게 벌렸다. 아래에 따로 적었다.
  • 격퇴에서 지면 결과 화면에 이유를 보여 준다. 정찰이 낮아서 숨은 특성이 빠졌다든가.
  • 설정에 쿠폰 입력 칸을 만들고, 이스터에그를 하나 숨겼다. 다른 방법으로는 못 얻는 쌍둥이 보스 이드니안이 나온다. 코드는 비밀이다.
  • 스토리 1~3장에 컷씬 10개를 더 넣고 그림 20장을 새로 그렸다. 이야기 쪽은 다음 편에서 한다.

그날 밤엔 이드니안의 전투 크기도 줄였다.

9월 23일에 줄인 쌍둥이 보스 이드니안의 전투 크기 비교
9월 23일 밤 9시 26분 커밋에 남긴 비교. 쌍둥이 보스 이드니안을 176픽셀에서 148픽셀로 줄였다.

게임 밸런스: 등급 배율을 벌렸더니

등급 배율 얘기는 조금 더 적어 둔다. 22일 밤 10시 26분에 직원 체력, 공격, 방어의 등급 배율을 희귀 1.3배, 영웅 2배, 전설 3배로 벌리고 레벨업 골드 배율도 1.0/1.2/2.0/3.5로 맞췄다.

바꾸고 나서 스토리 시뮬레이터를 돌렸더니 1-7이 이상했다. 1-6 벽을 넘는 데 필요한 성장이 6번에서 3번으로 줄면서, 1-7에 도착했을 때 일반 직원 레벨이 13~14가 아니라 10~11이었다. 보스 나이아는 세졌는데 일반 층이 약해진 거다. 권장 전투력 1,470에 맞춰 30번 돌리면 28번 이기던 게 8번으로 떨어졌다. 실제 도착 전투력으로는 30번 다 이기니까 막히는 건 아니고, 권장 전투력과 실제 난이도가 어긋난 거였다.

그래서 1-7 적 레벨을 16에서 15로 내렸고, 권장 전투력에서 28/30, 그 80%에서는 0/30이 나오는 걸 확인했다. 같은 방식으로 1~3장 34개를 이어서 돌리고 기준을 벗어난 12개만 고쳤다. 기준은 권장 전투력이면 85% 이상 이기고, 그 80%면 40% 이하로 이기는 것. 플레이어 전투력에 맞춰 적이 알아서 세지는 방식은 쓰지 않는다. 적은 스테이지마다 고정이다.

2026.09.22~23 주요 커밋

  1. 배치 균형, 상황별 전투력 예상
  2. 몬스터 180종, 화면 이동 성능
  3. 보스 전투 그림 교체
  4. 속성·등급 층으로 쌓은 전투 효과음
  5. 주간 토벌대, 채용 마무리
  6. 전투 무대 연출, 전장 확장
  7. 몬스터 → 직원
  8. 견습 이끼 멧돼지 다시 그림
  9. 등급 배율 조정, 스토리 재보정
  10. 쿠폰 입력과 이스터에그
  11. 히트스톱, 긴 후속 동작, 말풍선 하나만
  12. 일반 층·보스층 전투 음악
  13. 스포트라이트, 효과음 우선순위
  14. 마지막 일격 슬로 모션, 보스 단계
  15. 상성 표시, 조합 칩, 실시간 MVP
  16. 자유 방어 → 격퇴

지금 게임에서는

출시한 게임에도 직원은 180종 그대로다. 전투 음악 두 곡도 그대로 쓰고 있고, 상성이 맞으면 지금도 "효과적!"이 뜬다. 직원 울음소리와 타격음은 10월 중순에 ElevenLabs로 만든 소리로 많이 바꿨지만, 속성 색과 등급 장식을 층으로 쌓는 구조는 이때 정한 그대로다. 직원 그림도 이후에 여러 번 다시 그렸는데, 그 얘기는 뒤에서 한다.

이틀을 돌아보면 전투를 바꾼 건 숫자 몇 개였다. 맞는 순간의 짧은 멈춤, 최대 26픽셀 밀림, 12분의 1초 더 긴 예비 동작, 0.3배속 마지막 일격. 이틀 동안 새 기능보다 이미 있는 장면을 어떻게 보이고 들리게 할지에 커밋을 더 많이 썼다.

다음 편은 스토리를 4장부터 엔딩까지 이어 쓴 9월 24~29일 얘기다. 게임이 궁금하면 게임 소개 페이지에서 먼저 볼 수 있다.

NOW AVAILABLE

마계공단: 던전사업부

용사는 침입자, 몬스터는 직원. 폐쇄 위기의 제7던전을 살려 주세요.

스토어로 이동합니다. Android(Google Play) 버전은 준비 중이에요.