🦀 웹 기반의 게임 프로젝트를 시작하려합니다.
평소에 만들고 싶던 '던전 탐험' 게임 + 커뮤니티의 웹사이트를 만들어보고 싶었는데 이 기회에 만들어 볼 겁니다.
게임 기획 & 아키텍처 설계 - GPT 이용
에셋 생성 - GPT 이용
코드 구현 및 생성 - Cursor, Codex
내가 만들고 싶던 게임의 모호한 계획과 방향성을 GPT 와 의논하면서 상세히 정리하는 것부터 시작.
여러 프롬프트를 거친 결과, 아래와 같은 기획이 나왔습니다. 🦀
게임 방향성과 목적 기획
1. 세계관 및 설정
- 주인공: 알 수 없는 이유로 미궁에서 깨어난 존재. 기억도 배경도 없음.
- 미궁: 끝을 알 수 없는 어둡고 불길한 공간.
- 빛이 거의 없고, 플레이어는 오직 횃불 하나에 의존.
- 어둠 속에서는 “볼 수 없다”라는 제약이 게임플레이의 본질이 됨.
2. 플레이 목적
- 단순히 탈출이나 보스 처치가 목표가 아님.
- 핵심은 “탐험 과정에서의 경험을 기록하고 공유하는 것”.
- 플레이어는 캡처 기능을 활용해:
- 특이현상 (이상한 벽, 빛의 틈새, 미지의 문양)
- 괴물 (공포스러운 존재, 스쳐 지나간 그림자)
- 보물 (의문스러운 아이템, 쓸모없는 잡동사니)
- 이벤트 (다른 모험가의 흔적, 기묘한 장치)
등을 발견하고 기록 + 커뮤니티 업로드
3. 게임 목표
- 개인적으로는 미궁을 “계속 헤매는 경험”을 즐기는 것.
- 메타적으로는 커뮤니티 게시판을 채우는 것이 게임의 궁극적인 목표.
- 플레이어들이 남긴 게시글과 스크린샷이 쌓여서, 미궁의 집단적 기록이 형성됨.
- 어떤 현상은 여러 사람이 같은 걸 보고 토론할 수도 있고, 누군가가 처음 발견하는 레어한 현상도 있음.
4. 차별 포인트
- 보통의 던전 탐험은 전투 → 보상 구조인데, 여기서는 발견 → 기록 → 공유 구조.
- 이 게임은 커뮤니티가 곧 백과사전이 되고, 세계관 해석이 플레이어들 손에 달려 있음.
- 즉, “게임 + SNS + 집단적 탐험기록”이 결합된 형태.
|
🦀 그리고 게임 플레이 생명 주기에 대해서도 모호하게 생각되던 내용들도 GPT와 같이 정리해봤습니다.
아래는 그 결과입니다. 🦀
플레이어 행동 패턴 정리
1. 방 이동하려 할 때
- 입장: 새로운 방으로 들어감.
- 머무르기: 현재 방에 남아서 다른 행동(탐색, 휴식, 준비)을 할 수 있음.
2. 방에 입장했을 때
- 살펴보기: 방 안의 구조, 단서, 숨겨진 요소를 확인.
- (확률적으로 이벤트 발생: 특이현상, 숨겨진 길, 트랩 등)
- 줍기: 방 안의 아이템, 보물, 쓰레기(!)를 획득.
- (획득 → 인벤토리 저장 → 나중에 커뮤니티 캡처 공유 가능)
3. 몬스터를 만났을 때
- 공격: 기본 행동, 무기 또는 도구 사용.
- 방어: 피해를 줄이고 반격 기회 노림.
- 스킬: 캐릭터 고유 능력 활용 (쿨타임, 리소스 소비).
게임 UX 플로우 (간단 도식)
- 탐험 중
→ [이동 선택] → 입장 / 머무르기
- 새 방 입장 시
→ [행동 선택] → 살펴보기 / 줍기 → (특정 확률로 이벤트 or 몬스터 조우)
- 몬스터 조우 시
→ [전투 행동] → 공격 / 방어 / 스킬 → (결과에 따라 생존, 도주, 아이템 드랍)
UI 적용 아이디어
- 중앙 이미지 영역: 상황에 맞게 교체 (예: 빈 방, 아이템 있는 방, 몬스터 있는 방).
- 하단 버튼 UI는 상황에 따라 버튼 세트가 바뀌도록 설계.
- 이동 단계: [입장] [머무르기]
- 방 탐색 단계: [살펴보기] [줍기]
- 전투 단계: [공격] [방어] [스킬]
|
🦀그리고 이런 플레이 생명주기를 만들면서 정리된 내용들을 통해 상세한 플레이어 상태머신 또한 구현할 수 있었습니다. 🦀
상태머신 개요
States
- Idle 대기(방 선택 전)
- Move.Select 이동 의사결정
- Move.Entering 입장 처리 중
- Room.Explore 방 내부 행동(살펴보기/줍기/머무르기)
- Event.Resolve 특수 이벤트 처리(함정/NPC/기믹)
- Combat.Decide 전투 선택(공격/방어/스킬/도주)
- Combat.Resolve 데미지/드랍/사망 판정
- Resting 휴식(자원 회복, 시간 경과)
- Capture.Prompt 캡처/공유 팝업
- GameOver 사망 또는 광원 소진 등으로 진행 불가
Resources(예시)
- HP, MP, STA, Torch(횃불 게이지), Bag(인벤토리), Keys 등
주요 Guards(예시)
- hasTorch(), hasSpaceInBag(), isDoorLocked(), isMonsterHere(), torchLow()
|
위와 같은 기획으로 명확한 프레임을 잡는데 큰 도움을 받을 수 있으며, 필요하면 유연하게 기획을 변경할 수도 있습니다.