본문으로 건너뛰기
Bevy 기반으로 제작
Bevy

브라우저 게임을, 네이티브 앱으로 컴파일

프로젝트가 탭을 떠날 준비가 되면, Engine이 이를 내보내 Rust로 된 Bevy 프로젝트를 생성한 뒤 Windows, macOS, Linux 또는 Android 빌드로 컴파일합니다.

빌드 대상

Bevy 0.19

라이선스

MIT / Apache 2.0

언어

Rust (rustc ≥ 1.95)

렌더러

wgpu

Bevy란

Bevy는 Rust로 작성된 게임 엔진으로, MIT / Apache 2.0 이중 라이선스 아래 무료로 공개된 오픈소스입니다. 엔티티-컴포넌트-시스템(ECS) 아키텍처를 중심으로 설계되었고, WebGPU의 근간이 되는 것과 같은 그래픽 추상화 계층인 wgpu를 통해 렌더링합니다. 실제 네이티브 바이너리로 컴파일되며 — 브라우저도, 함께 배포할 런타임도 필요 없습니다.

왜 두 번째 엔진이 필요한가

Babylon.js는 aukimi를 가능하게 만드는 존재입니다: URL 하나로 열리는 3D 애플리케이션이죠. 하지만 완성된 게임은 종종 하나의 파일이어야 합니다 — 스토어 페이지에 올리거나, 플레이어에게 건네거나, 탭 없이 실행할 수 있는 무언가여야 하죠. 프로젝트를 다른 곳에서 다시 만들라고 하는 대신, Engine이 이를 번역합니다: 브라우저에서 만든 씬이 데스크톱이나 모바일 애플리케이션으로 컴파일되는 Bevy 프로젝트가 됩니다.

실제로 내보내지는 것

빌드는 씬을 스크린샷 찍듯 담아내지 않습니다. 그 대신 씬을 추출합니다: 지오메트리와 머티리얼은 표준 GLB로, glTF가 담을 수 없는 나머지 — 지형, 식생, 하늘, 후처리, 엔티티 데이터, 씬 설정 — 는 구조화된 JSON으로 함께 나오고, 이 두 파일로부터 완전한 Rust 프로젝트가 생성됩니다. 그 프로젝트는 평범한 Cargo 프로젝트이며, 직접 읽어볼 수 있습니다.

  • scene.glb — 지오메트리, 머티리얼, 애니메이션
  • scene.json — 지형, 식생, 조명, 설정
  • Bevy 0.19를 대상으로 생성된 Cargo 프로젝트

스크립트도 함께 이동합니다

Engine에서 작성한 게임플레이 스크립트는 사람이 손으로 Rust로 다시 작성하는 것이 아니며, 버려지지도 않습니다. 생성된 프로젝트에는 JavaScript 런타임(QuickJS)이 내장되어 있고 동일한 스크립팅 API가 그대로 연결되어 있어서, 브라우저에서 작성한 스크립트가 작성된 그대로 네이티브 빌드에서 실행됩니다. 이 두 API를 서로 어긋나지 않게 유지하는 것은 부수적인 일이 아니라 코드베이스의 상시 원칙입니다.

네 가지 타깃, 그리고 없다고 솔직히 밝히는 한 가지

Windows 실행 파일, macOS 앱 번들, Linux AppImage, Android APK가 오늘날 빌드 패널이 제공하는 타깃입니다. iOS는 목록에 있지만 꺼져 있습니다 — 필요한 툴체인은 스피너 뒤에 숨길 수 있는 것이 아니기 때문입니다. 빌드 서버가 여러분의 타깃을 처리할 수 없는 경우, 실패 메시지 대신 직접 컴파일할 수 있는 생성된 Rust 프로젝트를 받게 됩니다.

  • Windows 10/11 실행 파일
  • macOS 앱 번들
  • Linux AppImage
  • Android APK (Android 8 이상)

넘어가지 못하는 것은, 그렇다고 알려줍니다

두 개의 렌더러는 결국 두 개의 렌더러입니다. 브라우저 미리보기에는 있지만 아직 Bevy 쪽에는 대응물이 없는 것들도 있습니다 — 베이크된 라이트맵과 로컬라이즈드 라이트 프로브가 그 예입니다. 익스포터는 무엇을 옮기지 못했는지 정확히 나열한 변환 보고서를 작성합니다. 조용히 빠뜨린 뒤 완성된 빌드에서 차이를 발견하게 하는 대신 말이죠. 읽을 수 있는 빈틈은 미리 계획할 수 있는 빈틈입니다.

프로젝트를 실제 바이너리로 빌드하세요

게임은 브라우저에서 만들고, 애플리케이션으로 출시하세요.

프로젝트 후원