끌 때마다 디지몬이 죽을 때까지 방치된다고 가정했다 | 디지몬 육성기 개발일지 10화
디지몬 육성기 개발일지 · 10화
끌 때마다 디지몬이 죽을 때까지 방치된다고 가정했다
무엇을 — 훈련 반복, 배틀 중 비프음, 그리고 PC와 안드로이드의 호출·알림 규칙 전부를 다시 정했다.
왜 — 안드로이드 앱은 꺼져 있는 동안 게임이 돌지 않아서, 알림을 미리 걸어 둘 수밖에 없었다.
결과 — 앱을 끌 때마다 디지몬을 죽을 때까지 방치해 보는 계산을 돌려, 그때 올 알림을 전부 예약하게 했다.
9월 10일 오전 10시, 내가 처음 보낸 메시지는 두 가지 부탁이었다.
"훈련 끝나면 기본 Idle 상태인데, 훈련 메뉴만 활성화되어있는 상태로 되게 해줘. 훈련 끝나고 B버튼 누르면 바로 다시 훈련할 수 있게. 그리고 배틀 후에 병에 걸리면 비프음이 나는데, 배틀중에 비프음이 나서 결과를 바로 알 수 있어."
01이번 하루의 할 일 — 무엇이 울리고 언제 멈추나
첫 번째는 간단했다. 훈련이 끝나면 메뉴 선택이 풀려서, 다시 하려면 훈련 칸까지 커서를 옮겨야 했다. 이제는 결과 화면이 끝나도 훈련 칸이 선택된 채로 남아서 B 한 번이면 다시 시작한다.
하루의 대부분은 두 번째 쪽에서 갈라져 나온 일이었다. 호출은 언제 켜지고, 비프음은 언제 울리고, 트레이 알림과 안드로이드 알림은 언제 오는지. 오전 11시 16분에 이렇게 보냈다.
"호출상태, 알림에 대한 모든 조건 다 알려줘. 어떤 상황에서 호출 상태가 되고, 얼마나 오랫동안 호출상태인지, 어떤 상태에서 알림이 오는지 (비프음, 메시지) 트레이 상태일때, 활성화일때, 비활성화일때 모두 다 알려줘. APK랑 EXE 둘다"
02잘 안된 것 — 배틀 결과는 왜 먼저 들렸나
배틀에서 지면 20% 확률로 다치는데, 그 판정을 배틀 연출이 시작되기 전에 해 두고 있었다. 그러니 공격이 오가는 도중에 이미 "다쳤다"가 기록돼 있었고, 비프음이 그걸 바로 읽고 울렸다. 결과를 보기도 전에 소리로 먼저 알게 되는 셈이었다. 지금은 연출이 끝난 뒤에 울린다.
처음 알았을 때는 별 생각 없었다. 그냥 흔한 오류 중 하나일 뿐이었다.
그런데 그 수정 보고 끝에 AI가 "따로 발견한 것"을 하나 붙여 왔다. 10시 15분에 "따로발견한거 뭔소리야?"라고 되물었더니, 세이브를 불러온 뒤에는 호출이 잠긴 채로 남는다는 이야기였다. 게임을 다시 켜면 배가 고파도 호출이 안 오다가, 훈련을 한 번 하고 나면 그제야 온다는 것이다. 3분 뒤에 "그럼 그것도 재현해서 고쳐줘"라고 보냈다.
알아서 고치는구나 하는 신기함이 있었다. 동시에, 의도치 않은 버그가 나도 모르게 생기고 있구나 하는 불안함도 있었다.
03잘된 것 — 알림은 무엇을 기준으로 거나
11시 16분에 받은 조건 표를 들고 네 시간을 보냈다. 거슬린 건 없었는데, 그 네 시간 동안 게임을 돌리면서 테스트했던 것 같다. 오후 3시 11분에 규칙을 네 줄로 정해 보냈다.
"1. 호출 상태일떄 까지만 1분마다 비프음
2. 부화 직후 비프음이 울리는건 맞음. 하지만 XAI는 끝나고 비프음이 울려야 함.
3. 안드로이드 알림도 SETTING의 MESSAGE로 끌 수 있어야해. LANGUAGE도 안드로이드 알림에 먹고 한국어/영어 선택도 가능해야해.
4. 인카운터가 졸림, 질병보다 위야."
안드로이드 쪽이 남았다. PC는 게임이 트레이에 떠 있으니 그 자리에서 판단해 알리면 된다. 하지만 앱은 백그라운드로 가면 게임이 멈추니, 나갈 때 알람을 미리 걸어 두어야 한다. 그런데 걸어 두는 알람이 가장 빠른 것 하나뿐이었다. 저녁 7시 15분에 물었다.
"APK에서 왜 가장 빠른 알림 하나만 검사하는거야? 끌때 모든 알림상태를 계산해서 순차적으로 내보내주면 안되는거야?"
14분 뒤에 방법을 정해 보냈다.
"APK에서 백그라운드 알람이 PC 버젼에서 알림하고 완벽하게 동일했으면 좋겠어. 끄거나 백그라운드로 갈때마다 디지몬이 죽을때까지 방치되었을때를 가정하고 모든 알람을 계산해서 예약해두는거야. 그리고 켜면 리셋되는거고, 다시 끄거나 백그라운드시에 전부 계산. 어떄?"
어디서 떠올린 건 아니다. 그냥 생각한 거다. 주어진 조건에서 문제를 해결할 수 있는 방법을 생각했던 것이다. 어플은 생각보다 제약이 많다고 생각했다.
AI는 이걸 앱을 끌 때마다 보이지 않는 디지몬을 하나 복제해 1분씩 시간을 돌리는 방식으로 만들었다. 알림이 바뀌는 순간마다 알람을 하나씩 건다. 검사에서 실제로 나온 한 줄은 이랬다(성장기, 정오, 배고픔 3·근력 2에서 시작).
| +50분 | 근력 0 |
| +1시간 | 응가 (이후 매시간, 8개까지) |
| +1시간 20분 | 배고픔 0 |
| +6시간 | 질병 |
| +9시간 | 취침 호출, 30분 뒤 자동 취침 |
| +22시간 | 사망 직전 |
이 가운데 "6시간 뒤 질병"은 다음 날 설명서와 다시 맞춰 보다가 지워졌다. 배고픔이 0이라고 병이 드는 규칙은 설명서에 없었다.
042배속은 어디까지 2배인가
빌드하라고 보낸 직후, 7시 40분에 하나가 걸렸다.
"PC버젼도 그렇고 APK버젼도 그렇고 2배속으로 세팅해놓으면 알람도 두배 빨리 오나? 껐을때도 2배속도가 적용 되는거야?"
답은 켜져 있을 때만 2배라는 것이었다. 꺼 두거나 백그라운드에 있는 동안은 1배로 흘렀다. AI는 그대로 둘지, 꺼져 있어도 2배로 할지 고르라고 했다. 1분 뒤에 보냈다.
"속도 2배는 설정이야. 2배속으로 설정하면 켜져있든 꺼져있든 2배야"
7시 48분, 태블릿 잠금을 풀고 "이걸로 APK, EXE 둘 다 업데이트 해놔"라고 보내고 그날을 닫았다.
05아직 모르는 것 — 앱은 PC와 완전히 같아졌나
"완벽하게 동일"을 바랐지만 한 군데가 다르다. PC는 같은 이유로 호출 중이면 1분마다 다시 울린다. 앱은 원인이 바뀔 때만 알람이 온다. 1분마다 반복까지 걸면 알람 수가 열 배로 늘어난다고 해서 그날은 거기까지 가지 않았다.
i정보 코너
여기부터는 기술 정보만 모아뒀습니다.
| ENGINE | Godot 4.7 (Mobile 렌더링) |
| 훈련 반복 | 훈련이 끝나면 훈련 칸이 선택된 채 대기. B 한 번으로 다시 시작 |
| 배틀 부상 비프음 | 부상·질병 알림은 배틀 연출이 끝난 뒤에 울린다 |
| 호출이 켜지는 원인 | 사망 직전, 질병·부상, 배고픔 0, 근력 0, 졸림 |
| 비프음·알림 | 호출 아이콘이 켜져 있는 동안만. 배고픔·근력·질병·부상 10분, 졸림 30분 |
| 알림 우선순위 | 사망 직전 > 인카운터 > 졸림 > 질병 > 부상 > 배고픔 > 근력 |
| 안드로이드 알림 | 앱을 끌 때마다 복제한 디지몬을 1분씩 돌려 올 알림을 전부 예약, 켜면 전부 취소. SETTING의 MESSAGE·LANGUAGE를 따른다 |
| 게임 속도 | 2배로 설정하면 꺼져 있는 동안도 2배 |
자주 묻는 것
Q. 코딩을 몰라도 게임을 만들 수 있나? 이 개발일지가 그 기록이다. 나는 코드를 읽거나 고치지 않고, AI(Claude Code)에게 말로 시키고 화면으로 확인한다.
Q. 앱을 꺼 두면 디지몬은 어떻게 되나? 꺼져 있던 시간만큼 다시 켤 때 한꺼번에 흐른다. 그동안 올 알림은 끌 때 미리 계산해 예약해 둔다.
Q. 비프음은 언제까지 울리나? 호출 아이콘이 켜져 있는 동안만 1분마다. 돌보지 않고 10분(졸림은 30분)이 지나면 실수로 기록되고 조용해진다.
← 이전 화: 9화 · 배틀이 되자 버젼 하나가 완성됐다
다음 화 → 11화 · 꺼질 때마다 죽으니까 헷갈렸다
Digimon Raising Sim Devlog · Episode 10
Every Time the App Closes, I Assume the Digimon Is Left Alone Until It Dies
What — I redid training repeats, the mid-battle beep, and every call and notification rule on PC and Android.
Why — the Android app doesn't run the game while it's closed, so notifications have to be booked in advance.
Result — every time the app closes, it now simulates the Digimon being neglected until it dies and books every notification that would come.
At 10 AM on September 10th, the first message I sent was two requests.
"When training ends it goes back to plain idle — make it stay with only the training menu selected, so pressing B right after training starts another round. Also, when it gets sick after a battle it beeps, but the beep goes off during the battle, so you know the result right away."
01The day's to-do list — what beeps, and when does it stop?
The first one was simple. When training ended the menu selection cleared, so to go again I had to move the cursor back to the training slot. Now the training slot stays selected after the result screen, and one press of B starts again.
Most of the day branched off the second one. When does a call turn on, when does the beep sound, when do the tray and Android notifications come? At 11:16 AM I sent this.
"Tell me every condition for the call state and notifications. In what situations it goes into call state, how long it stays in call state, in what state notifications come (beep, message) — in the tray, when active, when inactive, all of it. Both APK and EXE."
02What didn't work — why could you hear the battle result first?
Losing a battle has a 20% chance of injury, and that roll was being made before the battle animation started. So while attacks were still flying, "injured" was already on record, and the beep read it and went off. You'd know the result by sound before you saw it. Now it beeps after the animation ends.
When I first found it, I didn't think much of it. It was just one of those common bugs.
But at the end of that fix report, the AI tacked on "something else I found." At 10:15 I asked back, "What's this thing you found separately?" — it was that after loading a save, calls stay locked. Relaunch the game and it won't call even when hungry, until you do one round of training. Three minutes later I sent, "Then reproduce that and fix it too."
There was the novelty of "oh, it fixes things on its own." At the same time there was the unease of "so bugs I never meant are piling up without me knowing."
03What went well — what should a notification be based on?
I spent four hours with the table of conditions I got at 11:16. Nothing bothered me about it; I think I spent those four hours running the game and testing. At 3:11 PM I sent the rules in four lines.
"1. Beep every minute only while it's in call state
2. Beeping right after hatching is correct. But it should beep after the XAI ends.
3. Android notifications should also turn off with MESSAGE in SETTING. LANGUAGE should apply to Android notifications too, with Korean/English selectable.
4. Encounter ranks above sleepy and sick."
That left Android. On PC the game sits in the tray, so it can judge and notify right there. But the app stops the game when it goes to the background, so alarms have to be booked on the way out. And it was booking only the single earliest one. At 7:15 PM I asked.
"Why does the APK only check the earliest notification? Can't it calculate every notification state when I close it and send them out in order?"
Fourteen minutes later I sent the approach.
"I want the APK's background alarms to be exactly the same as the PC version's notifications. Every time it's closed or goes to the background, assume the Digimon is left alone until it dies, calculate every alarm, and book them. Then when you open it, it resets, and when you close it or go to the background again, it calculates everything again. How's that?"
I didn't get it from anywhere. I just thought it up — I was thinking about how to solve the problem under the conditions I had. I felt apps have more restrictions than I'd expected.
The AI built it so that every time the app closes, it clones an invisible Digimon and runs time forward one minute at a time, booking an alarm each time the notification changes. One run that actually came out of the tests looked like this (starting at the Child stage, noon, hunger 3, strength 2).
| +50 min | Strength 0 |
| +1 h | Poop (then every hour, up to 8) |
| +1 h 20 min | Hunger 0 |
| +6 h | Sick |
| +9 h | Bedtime call, auto-sleep 30 min later |
| +22 h | About to die |
Of these, "sick after 6 hours" was removed the next day when we checked it against the manual again. The manual has no rule that an empty hunger meter makes it sick.
04How far does 2x speed go?
Right after I told it to build, at 7:40 PM, one thing caught me.
"On both the PC version and the APK, if I set it to 2x speed, do alarms come twice as fast? Does 2x apply even when it's off?"
The answer was 2x only while it's on. While closed or in the background it ran at 1x. The AI asked me to pick: leave it, or make it 2x even when off. A minute later I sent this.
"Speed 2x is a setting. If it's set to 2x, it's 2x whether it's on or off"
At 7:48 PM I unlocked the tablet, sent "Update both the APK and EXE with this," and closed out the day.
05Still unknown — is the app now exactly the same as PC?
I wanted it "exactly the same," but one thing differs. On PC, if it's calling for the same reason, it beeps again every minute. The app only gets an alarm when the cause changes. Booking the every-minute repeats too would multiply the number of alarms by ten, so that day it didn't go that far.
iInfo corner
Technical notes only from here on.
| ENGINE | Godot 4.7 (Mobile renderer) |
| Training repeat | After training, the training slot stays selected. One press of B starts again |
| Battle injury beep | Injury and sickness notifications sound after the battle animation ends |
| What turns on a call | About to die, sick or injured, hunger 0, strength 0, sleepy |
| Beeps and notifications | Only while the call icon is on. 10 min for hunger, strength, sickness and injury; 30 min for sleepy |
| Notification priority | About to die > encounter > sleepy > sick > injured > hunger > strength |
| Android notifications | Each time the app closes, a cloned Digimon is run forward one minute at a time and every upcoming notification is booked; all are cancelled on reopen. Follows MESSAGE and LANGUAGE in SETTING |
| Game speed | Set to 2x, it stays 2x while the app is off too |
FAQ
Q. Can you make a game without knowing how to code? This devlog is the record of trying. I don't read or edit code; I tell an AI (Claude Code) what to do in words and check the result on screen.
Q. What happens to the Digimon while the app is closed? The time it was closed passes all at once when you reopen it. Notifications that would come in the meantime are calculated and booked when you close it.
Q. How long does the beep keep going? Every minute, only while the call icon is on. After 10 minutes of no care (30 for sleepy) it's recorded as a mistake and goes quiet.
댓글
댓글 쓰기