범인은 확인용 버튼 안에 있었다 | 디지몬 육성기 개발일지 3화

SMCo STUDIODEVLOG
DAY 04 · 2026.08.14

설정한 대로 안 될 때, 진짜 범인은 대개 딴 데 있다

디지몬 육성기 개발일지 · 3화

범인은 확인용 버튼 안에 있었다

조건을 정확히 맞춰 넣고 진화시켰는데 엉뚱한 종족이 나왔다. 범인은 진화 트리도, 엑셀도 아니었다.

2화 끝에서 예고했던 그 사고다. 에디터도 됐고 엑셀 백업도 됐으니 이제 진화가 트리 설정대로 착착 될 줄 알았다. 디버그 패널로 조건(퀘스트 해금 8, 노력치 4)을 정확히 채워 넣고 "다음단계" 버튼을 눌렀는데 — 설정과 전혀 다른 종족이 나왔다. 트리를 다시 열어봐도 멀쩡했고, 엑셀도 멀쩡했다. 그럼 대체 어디가 잘못된 걸까.

01오늘 할 일

어제 만든 두 가지 — 진화 트리 에디터와 엑셀 백업 — 가 실제로 게임 안에서 맞물려 도는지 확인하는 날이었다. 디버그 패널에서 조건 값을 채우고 즉시 진화시켜 보는 식으로, 트리에 그려 넣은 경로가 그대로 재현되는지 하나씩 검증할 계획이었다.

어제까지의 쁘띠몬, 실제 게임 인게임 캡처
어제까지의 모습. 오늘은 이 다음 단계로 넘어가는 게 목표였다.

02오늘의 삽질

디버그 창으로 조건을 정확히 맞춰놓고 넘겼는데도 엉뚱한 놈이 됐다.

실제로 보낸 요청 그대로

"정상적인 루트라면 쁘띠몬 → 토코몬x → 가부몬 → 토부캣몬으로 기본진화(fallback)만 가능해야 하는데, 토코몬 이후 드라코몬x, 그라우몬x로 진화하고 있어."

진화 트리 에디터를 다시 열어 조건을 하나하나 확인했다. 멀쩡했다. 어제 만든 엑셀도 다시 열어봤다. 그것도 멀쩡했다. 데이터는 문제가 없는데 결과만 계속 틀렸다. 설정 화면이 멀쩡해 보이는 것과 그 값이 실제로 판정에 쓰이는 것은 별개 문제였다.

03잘된 것

범인은 게임도, 데이터도 아니었다. 확인하려고 누른 디버그 패널의 "다음단계" 버튼 그 자체였다 — 조건을 평가하지 않고 진화 경로 목록의 첫 번째 종족으로 그냥 보내고 있었다. 검증하려고 쓴 도구가 검증 대상과 다른 규칙으로 돌고 있었던 셈이다. 그 버튼을 진짜 진화 로직(조건 → 기본진화 → 그래도 없으면 첫 번째)과 같은 경로를 타도록 고치고 나서 다시 돌려봤다.

조건을 정확히 채운 뒤 실제로 진화한 토코몬X, 실제 게임 인게임 캡처
오늘 같은 조건(퀘스트 해금 8·노력치 4)을 다시 채우고 돌려본 결과. 이번엔 정확히 토코몬X다 — 트리에 그려 넣은 그대로.

같은 날 응가를 여러 개 만들어 뒀더니, 이번엔 응가끼리 서로 반대 방향으로 움직이는 게 눈에 띄었다. 원인을 짐작해서 그대로 물어봤다.

실제로 보낸 요청 그대로

"응가도 1번과 2번의 생성 시간이 다르면 서로 반대 방향으로 움직이는데, 모두 같은 방향으로 동시에 작동했으면 좋겠어. 0.5초, 0.7초 단위에서 뭔가 생성되면 애니메이션이 엇박이 나는 거 아니야? 네 생각은 어때?"

추측이 맞았다. 각자 자기가 태어난 시각을 기준으로 박자를 세고 있던 게 문제였다. 전역 박자(모든 그림이 "지금 몇 번째 박자인지"를 공통으로 보고 그리는 시계 하나)를 두는 것으로 정리됐다. "고쳐줘"보다 "이게 원인 같은데 어떻게 생각해?"가 오늘도 더 빨랐다.

04실물기 비교 테스트

오늘도 실물기 사진을 꺼내 도트 단위로 맞춰보는 단계는 아니었다. 오늘 잡은 두 버그 다 화면 생김새가 아니라 내부 판정·타이밍 문제라, 비교할 실물기 사진 자체가 없다. 도트 단위 대조는 며칠 뒤 XAI 연출부터 진짜로 시작된다.

05다음에 할 것

다음은 실물기 XAI 연출을 재현할 차례다. 미리 말해두면 — 처음엔 "이 영상 보고 똑같이 만들 수 있어?"라고 실물기 촬영 영상을 통째로 던져줬는데, 이것도 잘 안 통했다. 영상은 "이런 느낌"까지만 전달되고, 정확한 타이밍은 결국 프레임을 하나하나 재서 숫자로 줘야 했다.

i정보 코너

여기부터는 순수 기술 정보만 모아뒀습니다. 굳이 안 읽으셔도 위 내용 이해에는 지장 없습니다.

ENGINEGodot 4.7 (Mobile 렌더링)
진화 버그 원인진화 트리·엑셀 데이터가 아니라 디버그 "다음단계" 버튼 — 조건 무시하고 next_forms[0]으로 강제 진화시키고 있었음
수정디버그 버튼도 실제 진화 로직(조건 충족 → 기본진화 → 첫 번째)과 같은 함수를 타도록 통일
응가 엇박 원인각 응가가 자기 생성 시각 기준으로 박자를 셈 → 전역 박자(공용 틱)로 통일해 해결
교훈검증 도구 자체가 검증 대상과 다른 규칙으로 돌 수 있다 - 설정 화면이 멀쩡해 보여도 실제 판정 로직은 따로 확인해야 한다
재현 목표"비슷한 게임"이 아니라 실물기(Digital Monster X, XB 버전) 사양 그대로
#디지몬#Godot#ClaudeCode#인디게임개발#개발일지

← 이전 화: 2화 · 1시간 동안 같은 에러만 봤다
다음 화 → 4화 · 영상을 통째로 줬더니 "느낌"만 돌아왔다

SMCo STUDIO — 코딩 모르는 사람이 AI랑 게임엔진만으로 게임을 만드는 기록 DAY 04 / ???
이 화만 요약해서 인스타그램에도 올려뒀습니다. 진짜 범인이 뭐였는지는 여기 블로그에만 있어요.
인스타그램에서 보기 →
SMCo STUDIODEVLOG
DAY 04 · 2026.08.14

When settings don't take effect, the real culprit is usually somewhere else

Digimon Raising Sim Devlog · Episode 3

The Culprit Was Inside the Verify Button

I set every condition exactly right and evolved the creature — and got a completely different species. The culprit was neither the evolution tree nor the spreadsheet.

This is the incident teased at the end of Episode 2. Editor: done. Excel backup: done. I figured evolution would now just follow the tree exactly. I filled in the debug panel's conditions (8 unlocked areas, 4 effort) precisely and hit "next stage" — and got a species that had nothing to do with the configured path. Reopened the tree — fine. Reopened the spreadsheet — also fine. So where, exactly, was this going wrong?

01Today's goal

Today was about confirming the two things built yesterday — the evolution tree editor and the Excel backup — actually work together inside the running game. The plan was to fill in condition values through the debug panel and force an immediate evolution, checking one by one that each path drawn into the tree actually reproduced.

Puttimon as of yesterday, real in-game capture
Where things stood yesterday. Today's goal was moving past this stage.

02Today's mess

I matched the debug panel's condition values exactly and handed it off — and still got the wrong species.

the actual request, verbatim (translated)

"On the correct route, Puttimon should only be able to reach TokomonX -> GabumonX -> TobucatMon as a fallback. But after Tokomon it's evolving into DracomonX or GrowlmonX instead."

I reopened the evolution tree editor and checked every condition, one at a time. Fine. Reopened yesterday's Excel file too. Also fine. The data had nothing wrong with it, yet the result kept coming out wrong. A settings screen that looks correct and a value that's actually being read by the evaluation logic turned out to be two separate problems.

03What went well

The culprit was neither the game nor the data. It was the debug panel's "next stage" button itself — it wasn't evaluating conditions at all, just sending the creature to whatever species happened to sit first in the evolution-path list. The very tool used to verify the system was running on different rules than the system it was verifying. Once that button was fixed to go through the same real evolution logic (conditions -> fallback -> first-in-list only as a last resort), I ran it again.

TokomonX, the species that actually appeared after filling in the exact conditions, real in-game capture
Same conditions (8 unlocked areas, 4 effort) filled in again today. This time it's exactly TokomonX — precisely what the tree says it should be.

The same day, having left several poops sitting around to test something else, I noticed two of them bobbing in opposite directions. I guessed at the cause and asked about it directly.

the actual request, verbatim (translated)

"When poop #1 and #2 are created at different times, they end up moving in opposite directions — I'd rather they all moved the same direction at the same time. Isn't it that whenever something spawns on the 0.5s/0.7s tick, the animation ends up on a different beat? What do you think?"

The guess was right. Each poop was counting its own beat from its own spawn time. The fix was a single global beat — one clock that every drawing checks against ("what beat number is it right now") instead of counting its own. "What do you think is causing this?" beat "just fix it" again today.

04Comparing against the real device

Still not at the dot-level comparison stage today. Both of today's bugs were internal logic/timing problems, not something with a visual shape to hold up against a device photo. Real dot-by-dot comparison starts for real in a few days, with the XAI sequence.

05What's next

Next up is reproducing the real device's XAI sequence. Spoiler: the first approach was handing over an entire recording of the real device and asking "can you build this to match, exactly?" That didn't really work either. Video only conveys "roughly this vibe" — the precise timing still had to come from counting frames by hand and turning them into numbers.

iInfo corner

Pure technical detail from here down. Skipping it won't hurt your understanding of the above.

ENGINEGodot 4.7 (Mobile rendering)
Evolution bug causeNot the tree or the Excel data — the debug "next stage" button, which ignored conditions and force-evolved into next_forms[0]
FixRouted the debug button through the same real evolution logic (conditions met -> fallback -> first-in-list only as last resort)
Poop desync causeEach poop counted its beat from its own spawn time -> unified onto one global shared tick
LessonThe verification tool itself can run on different rules than what it's verifying — a correct-looking settings screen still needs the actual evaluation logic checked separately
Fidelity targetNot "a similar game" — the exact rules of the real device (Digital Monster X, XB version)
#Digimon#Godot#ClaudeCode#IndieGameDev#DevLog
SMCo STUDIO — a record of making a game with AI and a game engine, knowing no code DAY 04 / ???

댓글

이 블로그의 인기 게시물

DXRP v0.2 — 두 기기를 한 화면에, 서로 싸우게

DXRP v0.1 안드로이드 APK 공개

DXRP v0.1 — 액정 육성 게임, PC에서 무료로