웹 다마고치
크롬에서 웹서핑하는 동안 페이지 위를 돌아다니는 다마고치를 키우는 확장 프로그램입니다.
설치 방법 (개발자 모드)
chrome://extensions 접속
- 우측 상단 개발자 모드 켜기
- 압축해제된 확장 프로그램을 로드합니다 클릭 →
chrome-tamagotchi 폴더 선택
- 아무 웹페이지나 열면 캐릭터가 등장합니다
사용 방법
- 캐릭터: 모든 웹페이지 위에 떠서 4초마다 랜덤한 위치로 돌아다닙니다. 클릭하면 말풍선으로 반응합니다.
- 관리 메뉴: 툴바 아이콘 클릭 → 배고픔/기분/청결/에너지 상태 확인, 먹이주기/놀아주기/씻기기/재우기, 이름 변경 가능
- 성장 단계: 알 → 아기 → 유년기 → 청소년기 → 성체 (시간이 지나고 잘 돌보면 자동 진화)
- 방치 시: 상태가 계속 나빠지고, 배고픔·기분·청결이 모두 0에 도달하면 다마고치가 떠나버립니다 (초기화로 재시작 가능)
- 에너지 부족(15 이하): 잠들어서 이동을 멈춥니다. “재우기”로 회복시켜주세요.
- 감정 표현: 배고프면 눈물(💧)을 흘리고 말풍선으로 칭얼거림, 기분 좋으면 하트(💕), 더러우면 파리(🪰)가 떠다닙니다.
- 응아: 시간이 지나면 랜덤하게 응아(💩)를 싸고, 방치하면 청결도가 더 빨리 떨어집니다. “씻기기”로 한번에 치우세요.
- 즉각 리액션: 팝업에서 먹이주기/놀아주기/씻기기/재우기를 누르면, 열려있는 모든 탭의 캐릭터가 바로 반응합니다 (말풍선 + 파티클 + 모션).
- 씻길 게 없을 때: 응아도 없고 청결도도 높은데 씻기기를 누르면 “이잉 씻기 싫어요~” 같은 말과 함께 고개를 절레절레합니다 (상태는 변하지 않음).
- 가장자리 순찰: 캐릭터는 기본적으로 모니터 화면의 가장자리를 따라 걸어다닙니다.
- 놀아주기 = 카오스 모드: 놀아주기를 누르면 잠깐 동안 화면 전체를 정신없이 와다다다 뛰어다니다가, 다시 가장자리로 복귀해서 순찰을 이어갑니다.
- 응아 클릭 청소: 화면에 떠 있는 응아(💩)를 직접 클릭하면 빗자루(🧹)가 쓱 지나가며 그 응아만 청소됩니다. (청결도 소폭 회복)
- 캐릭터 선택: 관리 메뉴에서 새/고양이/강아지/드래곤 중 원하는 캐릭터로 언제든 바꿀 수 있습니다.
- 드래그해서 던지기: 캐릭터를 마우스로 클릭한 채 드래그했다가 놓으면, 놓는 순간의 속도로 날아가서 중력을 받아 통통 튕기다가 멈춥니다. 착지하면 진행 방향이 반전되고 자동으로 가장자리 순찰로 복귀합니다. (살짝 움직이고 놓으면 클릭으로 처리되어 방향만 전환됩니다.)
- 쫑알쫑알 잡담: 걸어다니는 동안 14~26초마다 랜덤하게 말풍선으로 아재개그나 시시콜콜한 잡담을 합니다.
- 재우기 = 그 자리에서 취침: “재우기”를 누르면 그 자리에 멈춰서 자고, 버튼이 “🌞 깨우기”로 바뀝니다. 깨우기 버튼을 누르거나 캐릭터를 마우스로 드래그해야 깹니다 (자동으로 깨지 않음).
- 잠든 채로 던지면: “으악~~! 놀래라!” 하며 놀랍니다. 깨우기 버튼으로 깨우면 “잘잤어요~”라고 말합니다.
- 말풍선 위치: 캐릭터가 화면 좌측에 있으면 말풍선이 오른쪽에, 우측이면 왼쪽에, 상단이면 아래쪽에, 하단이면 위쪽에 뜨도록 캐릭터 위치에 맞춰 자동으로 반대편에 표시됩니다.
- 생명주기 (사망 조건): 아래 세 가지 중 하나라도 해당하면 그 자리에 비석(🪦)이 남습니다.
- 노환: 태어난 지 120시간(5일) 경과
- 병: 응아가 있거나 청결도 50 미만인 “더러운 상태”가 끊김 없이 72시간 지속
- 굶주림: 배고픔 20 이하인 “배고픈 상태”가 끊김 없이 48시간 지속
- 브라우저를 꺼뒀다 켜도 지나간 시간이 정확히 계산되며, 중간에 케어해주면(먹이/청소) 해당 타이머가 리셋됩니다. 비석을 클릭하면 사망 원인을 말해줍니다. 사망 원인은 항상 한 가지로만 고정되고(동시에 여러 조건이 겹쳐도 우선순위상 하나만 기록), 죽은 뒤엔 드래그로 던지는 것도 막혀서 더 이상 해를 끼칠 수 없습니다.
- 클릭 시 상황별 메시지: 알(아직 알이에요) / 잠든 중(…쿨쿨…) / 평소(잡담+방향전환) / 사망(원인별 마지막 인사)
기술 구조
background.js: 5분마다(chrome.alarms) 상태를 갱신하는 백그라운드 서비스 워커. 브라우저가 꺼져있던 시간도 반영해서 한번에 계산합니다.
content.js / content.css: 모든 페이지에 주입되는 캐릭터 오버레이. chrome.storage.onChanged로 상태 변화를 실시간 반영합니다.
popup.html / popup.js: 관리 메뉴 UI. chrome.runtime.sendMessage로 background와 통신합니다.
- 상태는
chrome.storage.local에 저장되며 외부로 전송되지 않습니다.
확장 아이디어
- 여러 마리 동시 육성
- 미니게임 추가
- 페이지 스크롤/클릭 등 실제 사용자 행동에 캐릭터가 반응하도록