
인디게임 개발일지 #1 - 1인 개발의 시작과 프로토타이핑
1인 게임 개발의 시작점인 초기 기획과 프로토타입 설계, 그리고 핵심 재미 검증 단계에 대한 기록입니다.
새로운 게임을 개발하기 위해 첫 번째 삽을 떴습니다. 1인 개발의 가장 큰 적은 ‘끝없는 아이디어의 확장’과 ‘중도 포기’이기 때문에, 이번 프로젝트에서는 철저하게 핵심 메커니닉 위주의 템포 빠른 프로토타이핑을 진행하기로 다짐했습니다.
1. 핵심 기획: 어떤 재미를 줄 것인가?
이번에 기획한 게임의 프로젝트명은 Project Nebula입니다. 우주를 무대로 한 탑다운 2D 로그라이트 슈팅 게임이며, 메인 아이디어는 다음과 같습니다.
“제한된 산소와 자원을 관리하면서, 쏟아지는 우주 파편과 무인 기계들 사이에서 부품을 노획하여 우주선을 실시간으로 업그레이드하고 탈출하라.”
단순히 피하고 쏘는 재미를 넘어, 나의 기체를 실시간으로 조립하고 커스텀하는 깊이(Build-crafting)를 주고 싶었습니다.
mindmap
root((Project Nebula))
핵심 재미
실시간 기체 조립
관성 물리 슈팅
자원 관리 압박감
프로토타입 타겟
관성 이동 조작감
부품 노획 알고리즘
3분 전투 코어 루프
기획 위험 요소
과도한 관성으로 인한 피로
기체 조합 밸런스 붕괴
flowchart LR
A[우주선 출격] --> B[전투 및 무인기 파괴]
B --> C[부품/자원 노획]
C --> D{실시간 커스텀}
D -->|선체 강화| B
D -->|탈출 모듈 완성| E[우주역 탈출]
2. 프로토타이핑: ‘회색 박스’로 재미 검증하기
아름다운 도트 아트나 화려한 이펙트는 잠시 접어두고, Unity 엔진의 기본 사각형과 원형만을 사용하여 물리 조작감과 전투의 기본 감각을 세팅했습니다.
// 기체의 기본 이동 메커니즘 (관성 물리 적용)
public class PlayerController : MonoBehaviour
{
public float thrustForce = 5f;
public float torqueForce = 120f;
private Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
float rotation = Input.GetAxis("Horizontal") * torqueForce * Time.deltaTime;
transform.Rotate(0, 0, -rotation);
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.W))
{
rb.AddForce(transform.up * thrustForce);
}
}
}
프로토타이핑 단계의 세 가지 규칙:
- 아트 리소스를 사용하지 않는다: 그래픽이 예쁘면 재미없는 룰도 재미있다고 착각하기 쉽습니다.
- 사운드는 입으로 내본다: 콰광! 피융! 소리를 직접 내보며 묵직한 조작감이 느껴질 때까지 밸류를 튜닝합니다.
- 핵심 루프만 구현한다: 상점, 타이틀 화면, 엔딩은 전부 무시하고 오직 3분간의 전투 플레이 룸만 개발합니다.
3. 1차 테스트 피드백 및 개선안
스스로 30회 이상 반복해서 플레이해보며 느낀 점은 다음과 같습니다.
- 관성이 너무 심해 조작이 답답함: 마찰력(Drag) 값을 튜닝하여 미끄러짐을 방지하고 칼같은 조작이 가능하도록 완화함.
- 성장 체감이 너무 늦음: 부품 획득 확률을 높이고 초반 무기 발사 속도를 상향 조정.
다음 개발일지에서는 부품 슬롯 결합 시스템의 구현 내용과 부품 조립 시 외형이 변하는 구조적 모듈 디자인에 대해 이야기해 보겠습니다.