구현에 사용한 기술
- TypeScript
- 캔버스 렌더링
- Web Audio
- PWA
- Capacitor (Android·iOS)
개발 중인 서비스 사례
친구들이 함께 만들어 생일자에게 건네는 픽셀 타운
한 사람이 타운을 열면 친구들이 링크를 타고 들어오고, 그동안 생일자에게는 아무것도 보이지 않습니다. 마을은 빈 터로 시작합니다 — 편지·사진·그림을 남긴 친구마다 그 사람의 나무가 한 그루 서고, 서로의 나무에 물을 주며, 함께 걷고 뛰고 오락기 점수를 모으면 풍선과 꽃길과 조명이 늘어납니다. 같은 시각에 접속할 필요가 없고, 무언가를 남긴 친구는 그 모습으로 타운에 서 있습니다. 생일 0시에 온 마을이 피고, 생일자는 걸어 들어가 편지를 읽으며, 생일자가 본 나무에는 열매가 맺힙니다. 타운마다 생일자의 이름과 포토월, 친구들이 남긴 작은 픽셀 그림 마당이 그 타운의 재료로 놓이고, 타운마다 자기 곡을 자기 악기로 연주합니다. 타운은 생일 당일과 다음 날까지 열려 있다가 마을 연대기 — 자란 날들의 타임랩스와 함께 키운 사람 전원의 명부 — 로 남습니다. 타운마다 공방이 있어, 친구들은 타운에서 주운 코인으로 — 돈이 아니라 — 생일 마을에 장식을 하나씩 남깁니다. 선물이 4·8·12개 모이면 이미 서 있던 장식에도 잎·꽃·리본·불빛이 더해지고, 장식마다 남긴 친구의 이름과 캐릭터가 보입니다. 공개 방문자에게는 이름 없이 보입니다. 선물 전체를 가입 없이 체험할 수 있습니다 — 첫 화면이 열두 타운 전부를 예시 생일로 열고, 그 장면을 찍어 나눌 수 있습니다.
해피버스타운은 아직 개발 중인 서비스입니다. 웹에서는 첫 화면이 모든 타운을 예시 생일로 열어 누구나 가입 없이 걸어 볼 수 있고, 생일자가 공개한 오픈하우스도 웹에서 방문할 수 있습니다. 타운을 열고 친구를 초대해 건네는 실제 선물은 iOS 앱에서 진행되며, 앱은 테스트 중이라 아직 공개 스토어에 없습니다. 예시 속 사람·편지·사진은 실제 고객의 선물이 아닙니다.
서비스 개발 기록
메시지로 흘러가 버리던 생일 축하를 가져와, 친구들이 함께 만들어 한 번 건네는 장소로 바꾸면 생일자의 손에 무엇이 남는지 확인하는 제품입니다.
이 항목은 이미 달성한 성과가 아니라, 운영과 검증에서 다음 결정을 내리기 위해 보는 근거입니다.
변경 이력
이 페이지가 따라잡은 날이 아니라 제품에서 실제로 바뀐 날을 적습니다. 덮어쓰지 않고 한 줄씩 쌓기 때문에, 서비스가 거둬들인 것도 새로 생긴 것 옆에 그대로 남습니다.
생일 마을의 장식이 선물과 함께 자라게 했습니다. 선물이 4·8·12개 모이면 이미 있던 장식에도 잎·꽃·리본·불빛이 더해집니다. 타운마다 공방의 상품을 컬러로 보여주고, 설치된 모습과 다 자란 모습을 나란히 비교할 수 있습니다.
친구가 남긴 장식마다 이름을 붙였습니다. 생일자가 장식을 누르면 누가 남겼는지와 그때의 캐릭터가 보이고, 같은 목록이 앨범으로 이어집니다. 공개 방문자에게는 이름 없이 풍경만 보입니다.
체험하기에서도 사진을 찍습니다. 열두 예시 타운 어디서든 지금 장면을 타운 이름과 날짜가 박힌 폴라로이드 한 장으로 저장하고 나눌 수 있습니다. 가입도 선물도 필요 없습니다.
선물이 자라는 마을이 됐습니다. 마을은 빈 터로 시작하고, 편지·사진·그림을 남긴 친구마다 나무가 한 그루 서며, 서로 물을 주어 키웁니다. 함께 움직이고 오락기 점수를 모으면 풍선과 꽃길이 늘고 명당에 심을 열쇠가 생깁니다. 생일 0시에 온 마을이 피고, 다음 날 밤 마을이 멈추면 연대기 — 타임랩스와 키운 사람 전원의 명부 — 가 남습니다.
타운마다 한 사람을 위한 전시가 생겼습니다 — 그 타운의 재료로 쓴 생일자의 이름, 포토월, 친구들이 한 줄을 붙여 남기는 작은 픽셀 그림 마당. 광장에서 시작해 지금은 열두 타운 전부에 있고, 작품은 앨범에 남습니다.
열두 타운이 저마다 생일 노래에서 나온 자기 곡과 자기 악기를 갖게 됐습니다 — 파리는 아코디언, 서울은 가야금, 놀이동산은 회전목마 오르간. 맵 안의 연주자에게 다가가면 그 자리의 음악이 앞으로 나오고, 곡 사이에는 음악이 쉽니다.
오락기의 세 게임 — 달리기, 케이크 쌓기, 초 꽂기 — 을 다시 짰습니다. 한 판 안에서 난이도가 올라가고, 끝나면 다음에 무엇을 해 볼지 알려 주며, 셋을 하나의 오락실 풍경으로 새로 그렸습니다.
놀이동산의 링 던지기를 진짜로 던지게 했습니다. 링 셋, 좌우로 오가는 표시, 그리고 말뚝에 걸리거나 튕겨 나가는 링. 걸린 링은 한 마디와 함께 부스 앞 더미에 쌓입니다.
바닷가 체험 타운에 길동무가 생겼습니다. 곁을 따라 걸으며 바다·모래밭·광장을 소개하고, 지도에서 다시 부를 수 있습니다. 지금은 바닷가에만 있습니다.
지도에 아래 절반이 생겼습니다. 전체 화면 타운 지도 아래로 이 타운이 어떤 곳인지, 지금까지 무엇이 쌓였는지 — 편지·사진·꾸밈·친구 — 와 즐길 거리 목록이 이어지고, 한 줄을 누르면 캐릭터가 그리로 뛰어갑니다.
별자리 그리는 방식이 바뀌었습니다. 하늘에 자유롭게 긋는 대신 별을 짚고 다른 별로 끌면 그 사이에 선이 걸리고, 지나간 별에는 불이 켜지며, 남는 것은 어느 별을 이었나뿐입니다.
가입 없는 체험이 세 타운에서 열두 타운 전부로 열렸습니다. 체험자는 생일자의 자리에 서고, 타운에 선 친구들이 말을 겁니다.
타운을 여는 방식으로서의 실시간 파티를 거두었습니다. 새 타운은 친구들이 각자의 시간에 채워 한 번 건네는 선물이고, 실시간 룸 서버는 이미 열린 파티와 앨범을 읽을 수 있게 남겨 두는 용도로만 남습니다.
다 같이 있어야 찍히던 밤 10시 대표 사진을 없앴습니다. 제품에서 «같은 시각에 접속하라»를 요구하던 마지막 자리였습니다.
대신 찍는 순간이 없는 사진을 두었습니다. 하루 중 아무 때나 광장의 빈 칸을 채우고 포즈를 고르면 채운 사람에게 폴라로이드가 한 장 나오고, 그날의 사진은 자정에 스스로 완성됩니다.
놀이동산·야구장·영화관·동물원·콘서트 타운이 열려 타운이 열두 곳이 되었습니다. 지금은 걸어볼 수 있고, 이 타운으로 파티를 여는 문은 아직 잠겨 있습니다.
파티 다음 날 같은 초대 링크가 앨범을 엽니다. 표지는 그 파티가 그린 그림입니다.
기념품이 타운의 도구가 됐습니다. 주우면 바로 손에 들리고 그 타운에서만 되는 일을 합니다 — 바다는 서핑보드로 타고, 눈밭은 스키로 달리고, 연은 걸을수록 오릅니다. 둘째부터는 곁 사람에게 건넵니다.
축하를 남기는 자리 넷의 첫 동작이 글칸이 아니라 손짓이 됐습니다 — 걸고, 꾹 눌렀다 놓아 보내고, 타이밍 맞춰 쌓고, 건넵니다. 글은 그다음 차례가 됐습니다.
밤이 되면 촛불·네온·전구가 하늘과 함께 눌리지 않고 제 색으로 빛납니다.
초대장 카드 안에 타운이 들어왔습니다. 받은 사람이 어디로 가는지 카드 한 장으로 봅니다.
첫 화면부터 타운까지 전 화면을 어둡게 하는 스위치가 생겼습니다. 초대장·기념 카드·사진처럼 밖으로 나가는 물건은 밝은 판 그대로입니다.
타운마다 두 번째 색이 생겨, 같은 타운을 다른 계절처럼 볼 수 있습니다.
오락기에 세 번째 게임이 들어왔습니다 — 달리기와 케이크 쌓기에 이어, 돌아가는 케이크에 초 꽂기.
케이크가 다 차면 초가 광장으로 번져 촛불 화환이 됩니다. 다 채우는 것이 끝이 아니라 다음을 여는 일이 됐습니다.
v1.0 — 생일자의 시간대를 따르는 낮·밤과 계절, 살아있는 NPC, 손님이 함께 놓는 장식, 그리고 오디오 파일 없이 그 자리에서 합성하는 소리.