슉슉 순간이동하는 알 | 디지몬 육성기 개발일지 1화
디지몬 육성기 개발일지 · 1화
슉슉 순간이동하는 알
부화 연출과 이동을 넣었다. 그런데 알이 걷는 게 아니라 화면을 순간이동하기 시작했다.
0화에서 만든 건 "눌리는 버튼 3개 달린 배경화면"이었다. 디지몬이 화면에 있지도 않았다. 오늘은 그 껍데기 안에 진짜 살아 움직이는 걸 넣는 날이다 — 부화, 이동, 스탯. 결과부터 말하면 셋 다 들어가긴 했는데, 그 과정에서 알이 잠깐 동안 순간이동 능력을 얻었다.
01오늘 할 일
세 가지를 목표로 잡았다.
- 알 상태에서 화면에 실제로 떠 있게 하기 (지금까지는 아무것도 없었다)
- PLAYAREA 안에서 좌우로, 그리고 위아래로도 자유롭게 움직이게 하기
- 배고픔·힘·무게 같은 스탯을 실제 값으로 만들고 화면에 반영되게 하기
02오늘의 삽질
이동을 이렇게 시켰다. "1분 지나면 알이 좌로 2도트(0.5초), 우로 4도트(0.5초)…" — 동작마다 걸리는 시간을 0.5초로 맞춰서 준 것이다. 그런데 막상 돌려보니 거리는 다른데 시간은 같으니까 속도가 매번 제멋대로였고, 한 도트씩 걷는 게 아니라 그냥 다음 자리로 슉 하고 나타났다. 설상가상으로 그때는 화면 경계를 잡아주는 것도 없어서, 알이 위아래로도 마음대로 튀어 다녔다 — PLAYAREA를 아예 벗어나서 떠다니는 것도 봤다.
실제로 보낸 요청 그대로"애니메이션이 한번에 슉슉 순간이동하는 느낌이야. 1도트씩 움직여야 해. 좌/우로 움직일 때 1도트당 0.2초의 속도로 움직이게 바꿔줘."
"몇 초 동안 움직여라"가 아니라 "1도트당 몇 초로 움직여라"로 바꿔서 말한 게 핵심이었다. 그리고 움직일 수 있는 범위 자체를 PLAYAREA 사각형으로 고정해서, 그 밖으로는 애초에 못 나가게 막았다. 이후로 이동 관련 요청은 전부 "도트당 속도"로만 줬다 — 이 프로젝트에서 가장 먼저 배운 교훈 중 하나다.
03잘된 것
이동 버그만 빼면 나머지는 순조로웠다.
- 알이 60초 뒤 부화하는 타이머가 첫 시도에 정확히 돌았다
- Idle 애니메이션을 "초 / 프레임 / 스프라이트 번호 / 이동 도트수 / 방향" 5열 표로 통째로 줬는데 120프레임짜리가 그대로 들어갔다
- 배고픔·힘·무게가 실제 값으로 바뀌면서 화면 위쪽 아이콘 상태도 같이 갱신됐다
04실물기 비교 테스트
오늘도 아직 실물기 사진을 꺼내서 도트 단위로 맞춰볼 단계는 아니었다. 지금은 "부자연스러워 보이지 않는지"를 눈으로 확인하는 정도였다 — 걷는 게 뚝뚝 끊기지 않는지, PLAYAREA 안에서만 얌전히 도는지. 도트 하나하나를 실물기와 대조하는 진짜 검증은 며칠 뒤, XAI 연출을 만들 때 가서야 시작된다 (그리고 그때는 도트매트릭스 배경이 0.3도트 밀려 있는 걸 잡느라 30분을 쓴다).
05다음에 할 것
스탯이 화면에 뜨긴 했지만 아직 갈 길이 멀다. 다음은 진화 트리를 다루는 에디터 차례인데, 미리 스포일러를 하나 남기면 — 여기서 게임 로직이 아니라 에디터 내부 API를 붙잡고 1시간 넘게 헤매게 된다. "connections_layer is missing" 에러만 붙잡고 십수 번을 되묻는 진풍경이 예정되어 있다.
i정보 코너
여기부터는 순수 기술 정보만 모아뒀습니다. 굳이 안 읽으셔도 위 내용 이해에는 지장 없습니다.
| ENGINE | Godot 4.7 (Mobile 렌더링) |
| 오늘 만든 노드 | MovementManager, StatManager, AnimationManager, DigiCore (상태 저장소) |
| 이동 방식 변경 | "동작당 고정 시간" → "1도트당 0.2초" — 거리가 달라도 속도가 일정해짐 |
| 이동 범위 | PLAYAREA 사각형으로 클램프 (오늘 이전엔 경계 없이 화면 밖까지 나감) |
| Idle 애니메이션 | 초 / 프레임 / 스프라이트 번호 / 이동 도트수 / 방향 — 5열 표 120프레임 통째로 반영 |
| 부화 타이머 | 60초 (실제 기기와 동일한 wall-clock 기준) |
| 재현 목표 | "비슷한 게임"이 아니라 실물기(Digital Monster X, XB 버전) 사양 그대로 |
← 이전 화: 0화 · "Node2D는 뭐야?"
다음 화 → 2화 · 1시간 동안 같은 에러만 봤다
Digimon Raising Sim Devlog · Episode 1
The Egg That Learned to Teleport
I added a hatch animation and movement today. Instead of walking, the egg started teleporting around the screen.
Episode 0 ended with "a background image with three clickable buttons." No Digimon on screen at all. Today was about putting something alive inside that shell — hatching, movement, stats. Spoiler: all three landed, but along the way the egg briefly picked up teleportation as a side effect.
01Today's goals
Three things, in order.
- Get the egg actually rendering on screen (there was nothing there before)
- Let it move freely inside PLAYAREA — left/right, and up/down too
- Turn hunger/strength/weight into real values that actually show on screen
02Today's mess
I specified movement like this: "after 1 minute, the egg moves 2 dots left (0.5s), 4 dots right (0.5s)…" — every motion got the same 0.5-second duration. Once it actually ran, different distances with the same duration meant wildly different speeds, and instead of stepping dot by dot, the egg just snapped straight to the next spot. To make it worse, there was no boundary clamp yet, so it could jump up and down freely too — I watched it float clean outside PLAYAREA more than once.
the actual request, verbatim (translated)"The animation feels like it's teleporting all at once. It needs to move one dot at a time. Change the left/right movement to a speed of 0.2 seconds per dot."
The fix was switching from "move for X seconds" to "move at X seconds per dot" — that was the key. On top of that, I locked the movable area to the PLAYAREA rectangle itself, so it simply couldn't leave. Every movement request from then on was specified as dots-per-second, full stop — one of the earliest hard lessons of this whole project.
03What went well
Aside from the movement bug, everything else landed cleanly.
- The 60-second hatch timer fired exactly on schedule, first try
- The idle animation went in as a single 5-column table — seconds / frame / sprite number / movement dots / facing — and a full 120-frame table dropped in intact
- Hunger/strength/weight started reflecting real values, and the icon row at the top updated right along with them
04Comparing against the real device
Still too early for dot-by-dot comparison against real device photos. Today's "verification" was just eyeballing whether it looked unnatural — no jerky steps, staying obediently inside PLAYAREA. Actual dot-level comparison against the real hardware doesn't start for a few more days, when the XAI sequence gets built (and that's when 30 minutes get burned tracking down a dot-matrix background that's drifted 0.3 dots off).
05What's next
Stats are on screen now, but there's a long way to go. Next up is the evolution tree editor — and here's a spoiler: this is where more than an hour gets lost, not on game logic but on wrestling with the editor's internal API. A parade of "still nothing shows up," chasing down a single "connections_layer is missing" error more than a dozen times, is already scheduled.
iInfo corner
Pure technical detail from here down. Skipping it won't hurt your understanding of the above.
| ENGINE | Godot 4.7 (Mobile rendering) |
| Nodes added today | MovementManager, StatManager, AnimationManager, DigiCore (state store) |
| Movement fix | "fixed time per motion" → "0.2s per dot" — speed now stays constant regardless of distance |
| Movement bounds | Clamped to the PLAYAREA rect (before today, no boundary at all — it could leave the screen) |
| Idle animation | seconds / frame / sprite number / movement dots / facing — a 5-column, 120-frame table dropped in whole |
| Hatch timer | 60 seconds (same wall-clock basis as the real device) |
| Fidelity target | Not "a similar game" — the exact rules of the real device (Digital Monster X, XB version) |
댓글
댓글 쓰기