개발하면서 실제로 막혔던 것과, 게임 규칙을 정할 때 한 판단을 모아둡니다. 프로젝트 소개는 README, 코드를 고치는 법은 DEVELOPMENT.md에 있습니다.
웹과 네이티브를 같은 코드로 굴리면서 "한쪽에서 됐다고 다른 쪽도 된다고 볼 수 없다" 는 걸 반복해서 배웠습니다.
| 문제 | 원인 | 해결 |
|---|---|---|
| 폰에서만 캐릭터 화면이 죽음 | transform 이 웹(SVG 속성)과 네이티브(RN 스타일 키)에서 다른 것을 가리킴 |
네이티브가 기대하는 배열 형태로 전달 (#19) |
| 팀 전원이 폰으로 앱을 못 엶 | 프로젝트는 SDK 57, 스토어 Expo Go 는 SDK 54까지만 지원 | SDK 57용 APK 직접 설치 (#11) |
| LAN IP 로 접속하면 화면이 안 뜸 | crypto.randomUUID 는 보안 컨텍스트에서만 존재 (http://192.168.x.x 는 아님) |
getRandomValues 로 UUID 직접 조립 |
| 웹에서 버튼이 조용히 먹통 | react-native-web 의 Alert 가 아무것도 안 하는 빈 함수 |
lib/dialog.ts 로 플랫폼 분기, 직접 호출 금지 |
| 앨범 사진이 서버를 끄면 사라짐 | ComfyUI 결과 URL 은 서버가 켜져 있는 동안만 유효 | URL 대신 결과를 받아서 보관 (웹 IndexedDB / 폰 파일) |
| 정한 것 | 왜 |
|---|---|
| 성장은 경험치로, 노화는 함께한 일수로 | 둘 다 경험치면 "열심히 돌봤더니 빨리 늙었다"가 되어 보상이 뒤집힙니다 |
| 돌봄마다 부작용을 붙임 | 하나만 반복해서는 세 스탯을 유지할 수 없게. 부작용은 버튼에 미리 표시합니다 |
| 실패를 죽음이 아니라 여행으로 | 방치하면 "심심해서 세상 구경을 나섰다"로. 떠나기 전 경고가 떠서 갑작스럽지 않게 |
| 돌봄에 걸리는 시간을 장면으로 | 연타 방지를 쿨다운으로 잠그는 대신 진행 바로 (밥을 먹는 중입니다...) |
각 문제의 에러 로그와 조사 과정은 링크된 이슈에 원문이 있습니다. 서술형으로 길게 쓴 판본이 필요하면 커밋
0a59471의 README 에 남아 있습니다.