오늘은 기존에 구현한 벽돌깨기 게임에 다단계 레벨 및 게임 흐름 제어 기능을 추가하는 작업을 진행했다. 또한, 웹 배포 과정에서 발생한 여러 문제들을 해결했다.

1. 다단계 씬 및 기본 UI 구축

  • 게임의 흐름을 단계별로 나누기 위해 StartScene, GameScene_Level1, WinScene, LoseScene 등 여러 씬을 생성했다.

  • 각 씬에 Canvas를 추가하고, TextMeshPro를 활용하여 타이틀 텍스트, 점수 및 생명 표시 텍스트, 그리고 게임 시작/다시 시작/처음으로 돌아가기 버튼과 같은 기본적인 UI 요소들을 배치했다.

  • 모든 생성된 씬들을 유니티 Build Settings에 추가하고, StartScene이 가장 먼저 로드되도록 순서를 조절했다.

  • UI 요소들을 재활용하기 위해 ScoreText, LivesText, RestartButton, GoToStartButton 등 자주 사용되는 UI들을 프리팹으로 제작했다.

2. 게임 매니저 (GameManager) 확장 및 씬 전환 로직 구현

  • GameManager.cs 스크립트를 대폭 수정하여 씬 전환, 생명 관리, 점수 관리, 레벨 진행(다음 단계 로드), 게임 승리/패배 처리 등의 핵심 게임 흐름을 제어하도록 했다.

  • 공이 바닥 벽에 닿아 사라지지 않던 문제를 해결하기 위해 GameManager.csBallLost() 함수에 Destroy(currentBall); 코드를 추가하여 공이 소실될 때 실제 게임 오브젝트가 파괴되도록 했다.

  • 생명이 모두 소진되거나 모든 벽돌을 깼을 때 각각 LoseScene 또는 WinScene으로 전환되도록 로직을 연결했다.

  • GameManager 인스턴스 관리 방식을 재점검했다. 초기에는 씬마다 GameManager 오브젝트를 배치하고 해당 씬의 UI만 연결하려 했으나, 이로 인해 버튼 작동 및 Paddle Transform 연결 문제와 같은 참조 오류가 발생했다. 이 문제는 DontDestroyOnLoad를 사용하지 않는 현재 구조에서 각 씬의 GameManager가 해당 씬의 리소스만 정확히 참조하도록 연결하는 작업이 필요함을 확인했다.

3. WebGL 배포 및 실행 환경 문제 해결

  • 게임을 웹에서 플레이하기 위해 유니티 프로젝트를 WebGL 형식으로 빌드하는 작업을 진행했다.

  • 첫 번째 문제: 빌드된 index.html 파일을 로컬에서 직접 열었을 때 file:// URL 보안 정책으로 인해 게임이 실행되지 않는 오류가 발생했다. Python의 http.server 모듈을 사용한 로컬 웹 서버(python -m http.server)를 통해 이 문제를 해결했다.

  • 두 번째 문제: 웹 서버를 통해 실행했음에도 Unable to parse Build/빌포.framework.js.br! (Brotli 압축) 또는 Unable to parse Build/빌포.framework.js.gz! (Gzip 압축) 오류가 발생했다. 이는 로컬 웹 서버가 해당 압축 형식의 HTTP 응답 헤더를 제대로 보내지 못하기 때문으로 판단했다.

  • 해결: 유니티 Build SettingsPlayer Settings에서 Publishing Settings 섹션의 Compression Format 옵션을 Brotli 또는 Gzip에서 Disabled로 변경하여 빌드를 다시 진행함으로써 압축 해제 문제를 우회했다.


오늘의 작업을 통해 벽돌깨기 게임의 다단계 구성과 기본 게임 흐름 제어를 위한 씬 및 UI 준비를 마쳤다. 또한, WebGL 빌드 시 발생할 수 있는 주요 환경 문제를 해결하여 웹에서의 게임 실행 가능성을 확보했다. 버튼 작동 및 오브젝트 참조와 관련된 미해결 문제는 다음 작업에서 집중적으로 다룰 예정이다.

벽돌깨기 게임: 이후 진행할 내용

  • 남아있는 버튼 작동 및 오브젝트 참조 문제 해결: 각 씬의 GameManager가 해당 씬의 UI 및 Paddle Transform과 같은 게임 오브젝트를 정확히 참조하도록 연결을 최종 확인하고 필요시 로직을 개선한다.

  • 사운드 효과 추가: 공의 충돌, 벽돌 파괴 등 주요 이벤트에 사운드를 넣는다.

  • 다양한 벽돌 및 파워업 아이템: 여러 번 쳐야 깨지는 벽돌이나 특수 아이템을 추가한다.

  • 웹 배포 (WebGL): 게임 개발이 완료되면 웹 브라우저에서 플레이할 수 있도록 빌드하고 온라인에 배포한다. (현재 진행 중이며, 기본적인 실행은 가능)