Astra 나오고, 며칠동안 미치듯이 만들어 보왔습니다..
따뜻한 퍼즐과 공방 느낌으로 편안함을 주는 퍼즐 게임을 만들고 싶어서 만들어 보았는데.. ㅎㅎ
mvp는 하루정도면 되더군요.. 여기에 살을 붙이고, 디테일한 수정이 들어가니..
역시 토큰이 녹아 나가네요..
모바일도 지원되고, 폰을 해서도 됩니다.
로그인은 기록 저장을 위해서 어쩔수가 없네요..
수리소는 좀더 손을 봐야 합니다..
반응 좋으면, 바로 다음 월드 업데이트 하겠습니다. ㅋ
한번 해 보시고, 재미있으시면 공유 좀 해주세용.. ㅎㅎ
피스월드 입니다. https://www.pieceworlds.com/


WebKit 공지에 스크립트가 쓴 저장소를 7일에 지운다는 항목이 있는데, 대상 목록이 Indexed DB, LocalStorage, Media keys, SessionStorage, Service Worker registrations and cache 입니다. 조건은 deleting all of a website's script-writable storage after seven days of Safari use without user interaction on the site 라서, 사파리는 매일 쓰면서 피스월드만 일주일 안 들어오면 걸립니다. 비회원 기록만 사라지는 게 아니라 서비스워커 등록과 캐시가 같은 목록에 있어서, 오프라인으로 담아둔 2.2MB도 같이 빠집니다.
예외가 하나 있습니다. 같은 글에 Web applications added to the home screen are not part of Safari and thus have their own counter of days of use 라고 되어 있고, 그런 웹앱의 데이터가 지워질 것으로 보지 않는다고 덧붙여 뒀습니다. 이미 넣어두신 홈 화면에 추가가 그대로 방어책이 되는 셈입니다.
세 가지 궁금합니다. 비회원 안내에 이 브라우저에만 이라는 위치 조건 말고 기간 조건도 같이 적으실 생각인지, 다운로드하고 도전하기 앞에 홈 화면에 추가를 먼저 권하는 순서로 둘 여지가 있는지, 그리고 다음 월드를 올리실 때 이미 캐시를 담아간 쪽은 어떻게 새 월드를 받게 하실 생각인지요.
비회원은 제한적일수 밖에 없어서, 로그인이 되는 것이 좋은데.. 데이타가 날라가는 것은 좀더 고민해 보려고 합니다. 로컬에 저장된 것은 로그인이 되면 연동이 되도록 우선 구성해 두었고요..
새로운 월드가 올라오면 다시 다운로드 받으면 업데이트 되는 형태로 구성은 해 두었는데.. 오류가 발생할수도 있을지 모르겠네요.
안정적으로 사용하려면 어쩔수 없이 로그인이 필요할 수 밖에 없다고 생각합니다.
비회원은 데모로 사용해 보고, 마음에 들면 로그인후 계속 사용하는 형태로 구성하려고 생각중입니다. ㅎㅎ
로컬 기록을 로그인 시점에 연동하신다면 연동보다 삭제가 먼저 오는 경우가 생깁니다. 사파리 7일 캡은 그 사이트에서 사용자 조작이 없는 상태로 사파리 사용 7일이 지날 때 도는 것이라, 매일 들어오는 사람은 안 걸리고 데모만 해보고 한동안 안 들어온 사람이 정확히 걸립니다. 그런데 말씀하신 흐름이 비회원으로 해보고 마음에 들면 로그인이라, 그 사이 간격이 길수록 로그인하는 시점에 연동할 기록이 비어 있을 확률이 올라갑니다. 가입 유도를 접속 순간이 아니라 첫 월드를 깨서 아까워지는 지점에 붙이시면 같은 로그인 유도라도 이 구간을 덜 타게 됩니다.
새 월드 배포 쪽도 한 겹 더 있습니다. MDN 문서를 보면 워커 갱신은 스크립트를 다시 받아 바이트 단위로 다르면 새 워커를 설치하고, 직전 요청이 24시간을 넘었으면 브라우저 캐시를 건너뛴다고 되어 있습니다. 여기까지는 말씀하신 대로 다시 받으면 갱신됩니다. 문제는 설치까지만 되고 대기 상태에 머무는 구간입니다. 같은 문서에 skipWaiting 이 대기 상태에 남아 있을 워커를 강제로 활성으로 만든다고 되어 있고, 지금 열려 있는 클라이언트와 다른 활성 클라이언트 모두에 즉시 반영하려면 Clients.claim 을 같이 쓰라고 적혀 있습니다. 홈 화면에 추가해서 쓰는 쪽은 앱을 잘 안 닫기 때문에 이 대기 구간이 길어집니다. 오류가 날지 모르겠다고 하신 자리가 여기일 수 있습니다.
묻고 싶은 건 둘입니다. 새 월드가 올라왔을 때 갱신을 워커 교체로 하시는지 아니면 워커는 그대로 두고 데이터 파일만 따로 받는 구조인지. 그리고 캐시 이름에 버전을 붙여서 활성화 시점에 옛 캐시를 지우는 방식인지요. 앞의 방식이면 대기 구간이 그대로 걸리고, 뒤의 방식이면 옛 월드 캐시가 계속 남아 용량만 늘어나는 쪽이 걱정됩니다.