# Uni-Run

`Uni-Run`은 마우스 입력으로 조작하는 2D 러닝 게임 프로젝트입니다.

현재 버전은 플레이어가 자동으로 달리는 형태의 기본 러너 구조를 가지고 있으며, 마우스 왼쪽 버튼을 이용한 점프와 더블 점프를 중심으로 진행됩니다. 공부용 프로젝트로는 점프, 충돌, 발판 스폰, 점수, 게임 오버 흐름을 익히기 좋지만, 게임 플레이 관점에서는 조작과 맵 구성이 단순하고 랜덤 배치가 불공정하게 느껴질 수 있습니다.

## 기획 방향

목표는 단순히 오래 버티는 러너 게임이 아니라, 플레이어가 매 순간 판단할 수 있는 요소를 가진 2D 러너 게임으로 발전시키는 것입니다.

참고 방향은 다음과 같습니다.

- 쿠키런: 코인, 아이템, 장애물 회피, 목표성
- 소닉: 속도감, 진행감, 박진감
- Canabalt: 단순 조작 기반의 공정한 무한 러너
- Geometry Dash: 리듬감 있는 장애물 패턴
- Super Mario Run: 자동 달리기 속 루트 선택과 보상 구조

## 현재 문제점

현재 구조에서 느껴지는 주요 문제는 다음과 같습니다.

- 플레이어의 선택지가 점프 중심으로 제한되어 있다.
- 게임이 오른쪽으로 달리는 흐름만 반복되어 단순하게 느껴진다.
- 발판 높이, 발판 간격, 장애물 배치가 각각 랜덤이라 운이 나쁘면 클리어 불가능한 구간이 생길 수 있다.
- 장애물의 역할이 다양하지 않아 플레이어가 다른 조작을 고민할 이유가 적다.
- 점수 외에 코인, 아이템, 루트 선택 같은 추가 목표가 부족하다.

## 핵심 조작

기본 조작은 마우스만 사용하여 단순하게 유지합니다.

- 마우스 왼쪽 버튼: 점프
- 마우스 왼쪽 버튼 길게 누르기: 높은 점프
- 마우스 왼쪽 버튼 떼기: 짧은 점프
- 마우스 오른쪽 버튼: 슬라이딩

왼쪽 버튼은 위로 피하는 행동, 오른쪽 버튼은 아래로 피하는 행동으로 구분합니다. 이를 통해 플레이어는 장애물 형태에 따라 점프할지, 슬라이딩할지 판단하게 됩니다.

## 주요 시스템

### 1. 속도 증가 시스템

게임 시간이 지날수록 발판, 장애물, 배경의 이동 속도가 조금씩 빨라집니다.

초반에는 조작에 익숙해지는 구간, 중반에는 장애물 판단 구간, 후반에는 빠른 반응을 요구하는 구간으로 난이도가 변합니다.

속도는 계속 증가하되, 지나치게 불합리해지지 않도록 최고 속도 제한을 둡니다.

### 2. 코인 시스템

코인을 획득하면 점수 또는 재화가 증가합니다.

코인은 안전한 위치뿐 아니라 위험한 루트에도 배치하여 플레이어가 보상과 위험 사이에서 선택하게 만듭니다.

예시:

- 기본 경로의 코인: 안전하지만 보상이 적음
- 높은 발판의 코인: 어렵지만 보상이 큼
- 장애물 근처의 코인: 위험하지만 추가 점수 획득 가능

### 3. 아이템 시스템

아이템은 게임에 목표성과 변화를 주기 위한 요소입니다.

초기 아이템 후보:

- 무적: 일정 시간 동안 장애물 충돌을 무시한다.
- 자석: 주변 코인을 자동으로 획득한다.
- 점수 2배: 일정 시간 동안 획득 점수가 증가한다.

처음에는 아이템 종류를 적게 유지하고, 각 아이템의 효과를 명확하게 느낄 수 있게 구성합니다.

### 4. 슬라이딩 시스템

마우스 오른쪽 버튼으로 슬라이딩을 실행합니다.

슬라이딩 중에는 플레이어의 자세가 낮아지고, 상단 장애물을 피할 수 있습니다. 슬라이딩은 점프와 반대되는 회피 방식이므로, 게임에 새로운 판단 요소를 추가합니다.

### 5. 상단 장애물과 위쪽 발판

기존에는 아래쪽 발판과 점프 장애물 중심으로 구성되어 있습니다.

개선 후에는 상단 장애물과 위쪽 발판을 추가하여 루트 선택을 만들 수 있습니다.

- 낮은 장애물: 점프로 회피
- 상단 장애물: 슬라이딩으로 회피
- 위쪽 발판: 더 많은 코인 또는 아이템이 있는 위험한 루트
- 아래쪽 발판: 보상은 적지만 비교적 안전한 루트

## 맵 랜덤 구조 개선

가장 중요한 개선점은 완전 랜덤 구조를 패턴 기반 랜덤 구조로 바꾸는 것입니다.

현재 방식처럼 발판 높이, 스폰 간격, 장애물을 독립적으로 랜덤 배치하면 클리어할 수 없는 구조가 나올 수 있습니다. 따라서 사람이 직접 클리어 가능하도록 설계한 패턴을 여러 개 만들고, 게임은 그 패턴들을 랜덤으로 선택해 이어 붙이는 방식이 적합합니다.

패턴 예시:

- 기본 점프 패턴
- 낮은 장애물 점프 패턴
- 상단 장애물 슬라이딩 패턴
- 코인 아치 점프 패턴
- 위쪽 발판 루트 패턴
- 아래쪽 안전 루트 패턴
- 아이템 획득 후 연속 장애물 패턴
- 쉬어가는 빈 구간 패턴

이 방식은 랜덤의 예측 불가능함을 유지하면서도, 플레이어가 납득할 수 있는 공정한 맵을 만들 수 있습니다.

## 난이도 흐름

난이도는 시간 또는 점수에 따라 단계적으로 상승합니다.

| 구간 | 주요 내용 |
| --- | --- |
| 0~30초 | 기본 점프, 낮은 장애물, 쉬운 코인 배치 |
| 30~60초 | 슬라이딩 장애물 등장 |
| 60~90초 | 위쪽 발판과 루트 선택 등장 |
| 90초 이후 | 속도 증가, 복합 패턴, 아이템 활용 구간 |

새로운 규칙은 한 번에 모두 등장하지 않고, 플레이어가 자연스럽게 익힐 수 있도록 순서대로 추가합니다.

## 1차 개발 우선순위

처음부터 모든 요소를 넣기보다, 게임의 공정성과 재미를 만드는 순서로 개발합니다.

1. 랜덤 맵을 패턴 기반 구조로 변경
2. 속도 증가 시스템 추가
3. 오른쪽 클릭 슬라이딩 추가
4. 상단 장애물 추가
5. 코인 추가
6. 아이템 추가
7. 난이도 단계 조절

## 최종 목표

`Uni-Run`의 최종 목표는 마우스 두 버튼만으로 조작하는 2D 러너 게임입니다.

플레이어는 점프와 슬라이딩을 이용해 장애물을 피하고, 코인과 아이템을 먹으며 더 오래 달립니다. 맵은 랜덤처럼 보이지만 실제로는 클리어 가능한 패턴들로 구성되어 있어, 운보다 판단과 반응이 중요한 게임이 되는 것을 목표로 합니다.
