
Frozen Bubble — Rust 리메이크는 원작 그래픽과 음악, 100개 레벨의 1인용 캠페인을 담은 버블 슈팅 게임이다. 독립 커뮤니티 프로젝트로, 공식 Frozen-Bubble 출시작은 아니다.
macOS용 ZIP은 저장소의 Releases 페이지에서 출시가 있을 때 내려받을 수 있다. Apple Silicon용 arm64와 Intel용 x86_64 빌드를 제공한다. 압축을 푼 뒤 Frozen Bubble.app을 Applications 폴더로 옮겨 실행하면 된다. 그래픽과 레벨, 오디오는 앱에 포함돼 별도 에셋을 받을 필요가 없다. 다만 로컬 빌드는 임시 서명(ad-hoc signing) 상태이며 Apple 공증을 받지 않았다. 각 릴리스의 서명·공증 상태는 릴리스 노트에서 확인해야 한다.
소스에서 빌드하려면 안정 버전의 Rust 툴체인을 설치한 뒤 저장소 루트에서 실행한다.
cargo run --release --locked
macOS에서 더블클릭으로 실행하는 앱을 만들려면 Xcode Command Line Tools와 Python 3을 설치한 뒤 다음 명령을 실행한다.
make release
이 명령은 dist/Frozen Bubble.app, 아키텍처를 표시한 ZIP, 이에 대응하는 소스 아카이브와 SHA-256 체크섬을 만든다. cargo build --release만 실행하면 명령줄 실행 파일이 만들어지며, macOS 앱 번들과 아이콘은 make release가 추가한다. Python 패키지나 타사 패키징 도구는 필요하지 않다.
Linux 빌드에는 그래픽 드라이버와 X11·ALSA 개발 라이브러리가 필요하다. Debian/Ubuntu에서는 다음 명령으로 설치한 뒤 빌드할 수 있다.
sudo apt install build-essential pkg-config libx11-dev libxi-dev libgl1-mesa-dev libasound2-dev
cargo run --release --locked
현재 릴리스 플랫폼으로 실제 테스트한 것은 macOS다. Linux와 Windows는 Macroquad의 플랫폼 백엔드를 사용하지만, 이 리메이크의 릴리스 대상으로 검증되지는 않았다.
게임에는 원작의 100개 캠페인 레벨과 그래픽·사운드트랙·효과음이 포함된다. 같은 색 거품을 모으는 방식, 벽에 맞고 튕기는 탄환, 거품 낙하와 하강하는 천장도 구현했다. 메뉴와 레벨 미리보기, 일시정지 화면, 해금 레벨 저장, 재시도·이어하기, 전체 화면과 음량 조절을 지원한다. 원작의 색각 이상용 거품 그래픽도 포함한다.
조작은 방향키로 조준하고 레벨 선택 화면에서 레벨을 고르며, 위쪽 화살표나 스페이스바로 발사한다. 아래쪽 화살표는 대포를 가운데로 맞춘다. Enter는 시작·패배 후 재시도·승리 후 다음 레벨 이동에 쓰이고, P는 일시정지·재개, R은 현재 레벨 재시작, Escape는 메뉴 열기·뒤로 가기·현재 게임 재개에 쓰인다. F는 전체 화면을 전환하고, M 또는 F11은 음악을, F12는 효과음을 켜고 끈다. 홈 메뉴에서는 마우스로도 선택할 수 있으며, 하위 메뉴에 키보드 조작법이 표시된다. 캠페인을 진행하다 종료하려면 Quit을 선택한다.
진행 상황은 $XDG_DATA_HOME/frozen-bubble-remake/progress에 저장되며, 해당 변수가 설정되지 않았으면 ~/.local/share/frozen-bubble-remake/progress를 사용한다. FROZEN_BUBBLE_SAVE로 저장 파일의 전체 경로를 지정할 수도 있다. 그래픽·오디오 설정은 같은 위치의 별도 settings 파일에 저장된다. 선택할 수 있는 레벨은 해금된 레벨뿐이며, 레벨을 다시 시작해도 진행 상황은 지워지지 않는다. 메뉴를 열어도 현재 게임은 유지된다.
게임 시뮬레이션은 원작의 32px 거품, 28px 간격의 엇갈린 행, 20ms 단계, 발사·조준 속도, 충돌 기준, 세 개 이상을 모으는 규칙, 천장에 연결된 거품 무리를 따르도록 구성됐다. 천장은 아홉 번째 발사마다 내려오고, 8초가 지나면 재촉 경고가 나타나며 10.5초에는 강제로 발사한다. 앞선 공이 날아가는 동안에도 발사대는 즉시 다음 공을 장전한다.
화면은 원작의 640×480 구성을 유지하며, 창 크기가 바뀌면 레터박스로 표시하고 발사체 이동을 보간한다. PNG·Ogg 에셋과 레벨은 변경하지 않고 복사했으며 GIF 거품은 손실 없이 PNG로 변환했다. 에셋 출처를 확인할 수 있는 가져오기 스크립트가 제공되지만, 빌드하거나 플레이할 때 원본 게임 저장소가 필요한 것은 아니다.
이 프로젝트는 진행 중이며 픽셀 단위로 완벽하거나 게임플레이가 완전히 동일하다고 주장하지 않는다. 남은 1인용 작업에는 무작위 레벨 모드, 원작의 최고 점수표, 정확한 화면 전환 타이밍이 있다. 충돌 후 거품을 붙일 빈 이웃 칸을 고르는 방식도 원작의 좌표 반올림 구현과 일부 경계 사례에서 다르다. 멀티플레이, 네트워크 플레이, 로컬 대전, 녹화, 레벨 편집기는 범위에 포함되지 않는다.
버그 보고와 1인용 게임의 충실도 개선, 플랫폼 테스트 참여를 받는다. 자세한 내용은 기여 안내, 변경 기록, 릴리스 안내를 참고하면 된다.
make check
cargo run --release -- --smoke-test
렌더링 검사는 진행 상황이나 설정을 수정하지 않고 /tmp/frozen-bubble-*.png에 아홉 개 화면을 저장한 뒤 종료한다. 여기에는 발사대가 다음 공을 장전한 상태에서 이전 공이 날아가는 장면도 포함된다.
라이선스는 GNU GPL 버전 2 전용인 GPL-2.0-only다. 원본 라이선스 전문은 COPYING, 출처와 저작자 표기는 NOTICE에서 확인할 수 있다. 원작은 GPL 버전 2를 명시했으며 리메이크도 해당 라이선스를 이어받았다. 보증은 제공하지 않는다.
원작 게임과 에셋의 저작권은 2000~2012년 The Frozen-Bubble Team에 있다. 디자인과 프로그래밍은 Guillaume Cottenceau, 아트워크는 Alexis Younes와 Amaury Amblard-Ladurantie, 사운드트랙은 Matthias Le Bidan이 맡았다. 원작 크레딧 전체가 보존돼 있다. Rust 리메이크 기여분도 GPL-2.0-only로 배포되며, 타사 Rust 의존성은 각자의 라이선스를 따른다. 앱과 릴리스 아카이브에는 라이선스와 크레딧이 포함되며, 바이너리 릴리스를 배포할 때는 이에 대응하는 소스 아카이브도 함께 공개해야 한다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요