본문 바로가기
공부/유니티

개발일지: 유니티로 플래피 버드 클론 게임 개발

by Excidus 2022. 12. 30.

학교 오픈소스 과제로 유니티를 활용해 플래피 버드 클론 게임을 개발했다. 이번 프로젝트는 유니티의 기본 기능과 2D 게임 개발 워크플로우를 익히는 데 초점을 맞췄으며, 유튜브 강의와 커뮤니티 자료를 참고해 완성했다. 개발 과정에서 얻은 경험과 깨달음을 정리했다.

1. 프로젝트 개요

  • 프로젝트 목표: 플래피 버드의 핵심 메커니즘을 구현해 유니티 2D 게임 개발을 학습한다.
  • 참고 자료: 유튜브 플래피 버드 강의를 기반으로 개발했으며, 에셋은 ‘우리집 고양이’와 ‘냥캣’ 캐릭터를 참고해 커스터마이징했다.
  • 게임 특징:
    • 플레이 방식: 화면 터치 시 캐릭터가 위로 점프하고, 터치하지 않으면 중력에 의해 하강한다.
    • 파이프: 랜덤한 높이로 생성되며, 파이프 사이를 통과할 때마다 점수가 증가한다.
    • 목표: 최대한 많은 파이프를 통과해 고득점을 기록한다.
  • 배포: 안드로이드 APK 파일로 빌드해 깃허브에 업로드했다.

2. 개발 과정

캐릭터 이동 및 물리

  • 구현: Rigidbody2DCollider2D를 사용해 캐릭터의 점프와 하강을 구현했다. 터치 입력(Input.GetMouseButtonDown)을 감지해 상향 힘(AddForce)을 적용했다.
  • 구현 경험: 중력 값과 점프 힘의 균형을 맞추는 데 시간이 걸렸다. 초기에는 점프가 너무 약하거나 과도하게 높았으나, ForceMode2D.Impulse와 적절한 힘 값을 조정해 자연스러운 움직임을 얻었다.
  • 배운 점: Rigidbody2D의 물리 설정은 게임의 느낌에 큰 영향을 미친다. 디테일한 조정이 중요하다.

파이프 생성 및 랜덤 배치

  • 구현: 파이프는 프리팹으로 제작해 Instantiate를 통해 주기적으로 생성했다. Random.Range를 사용해 파이프의 높이를 랜덤화했다.
  • 구현 경험: 초기에는 파이프 간격이 너무 좁거나 넓어 난이도가 불균형했다. 파이프 생성 주기와 높이 범위를 조정해 적절한 난이도를 구현했다.
  • 배운 점: 랜덤화는 플레이어 경험에 큰 영향을 미치므로, 적절한 범위 설정과 테스트가 필수다.

점수 시스템

  • 구현: 캐릭터가 파이프를 통과할 때 점수를 증가시키는 로직을 추가했다. OnTriggerEnter2D를 사용해 파이프 사이의 트리거 영역을 감지했다.
  • 구현 경험: 점수가 중복으로 증가하는 버그가 발생했다. 트리거 호출을 단일화하고 플래그 변수를 추가해 문제를 해결했다.
  • 배운 점: 충돌 이벤트는 디버깅이 중요하며, 트리거 로직은 간결하게 유지해야 한다.

에셋 및 시각적 디자인

  • 구현: ‘우리집 고양이’와 ‘냥캣’을 참고해 캐릭터와 배경을 디자인했다. SpriteRenderer로 스프라이트를 렌더링하고, 간단한 애니메이션을 추가했다.
  • 구현 경험: 스프라이트 크기와 해상도 조정이 처음엔 어려웠다. Pixels Per Unit 설정을 조정해 화면에 맞게 최적화했다.
  • 배운 점: 에셋의 시각적 품질은 게임의 첫인상을 결정한다. 에셋 관리와 최적화가 중요하다.

빌드 및 배포

  • 구현: 안드로이드 플랫폼으로 빌드해 APK 파일을 생성했다. Build Settings에서 안드로이드 타겟을 설정하고, 깃허브 Release에 업로드했다.
  • 구현 경험: 빌드 과정에서 APK 설치가 실패하는 문제가 있었다. 안드로이드 SDK 경로와 빌드 설정을 확인해 해결했다.
  • 배운 점: 플랫폼별 빌드 설정과 디버깅은 배포 과정의 핵심이다.

3. 개발 중 주요 이슈와 해결

  • 점프 불균일: 점프 높이가 기기마다 달랐다. Time.deltaTime을 사용하지 않고 ForceMode2D.Impulse를 적절히 조정해 일관성을 확보했다.
  • 파이프 생성 오류: 파이프가 화면 밖에서 생성되는 문제가 있었다 혀. 생성 위치를 화면 좌표로 제한하고, 디버그 로그로 위치를 확인해 수정했다.
  • 터치 입력 문제: 모바일에서 터치 입력이 간헐적으로 무시되었다. Input.GetMouseButtonDown 대신 Input.touchCount를 테스트하며 안정성을 높였다.

4. 마무리

이번 플래피 버드 클론 프로젝트를 통해 유니티의 2D 게임 개발 워크플로와 물리 시스템, 입력 처리를 깊이 이해할 수 있었다. 특히 간단한 게임이라도 난이도 조절과 사용자 경험이 얼마나 중요한지를 체감했다.