TL;DR
benilla는 Rust와Bevy로 처음부터 작성한 WoW 1.12.1 클라이언트로, 원본 프로토콜과 사용자가 제공한 게임 데이터를 이용해 캐릭터 생성부터 레이드까지 게임 전체를 플레이할 수 있는 구현임.- 원본 클라이언트 코드, 제삼자 WoW 크레이트, 게임 자산을 포함하지 않고 파일 형식, 네트워크 프로토콜, 인터페이스 엔진을 자체 구현함.
FrameXML·Lua기반의 기본 인터페이스와 다수의 1.12 애드온을 실행하며, 월드 렌더링·모델 애니메이션·이동·네트워킹·오디오 기능을 갖춤.- 현재 완전하게 플레이할 수 있으며, 소규모 기능 개선과 애드온·옵션·성능 작업이 진행 중임.
- macOS·Linux·Windows에서 빌드할 수 있고, 영문 빌드 5875 클라이언트 데이터와 Warden이 꺼진 1.12.1 서버가 필요함.
benilla 소개
benilla는 캐릭터 생성, 퀘스트, 전문기술, 던전, 공격대, 전장, 명예, 파티, 길드, 거래, 우편, 경매장을 비롯해 게임 전체를 플레이할 수 있는 완전한 WoW 1.12.1 클라이언트임.- 기본 1.12 인터페이스와 사용자의 애드온을 사용하며, 원본 프로토콜로 1.12.1 서버에 연결하고 사용자가 보유한 1.12.1 설치본에서 게임 데이터를 읽음.
- 모든 파일 형식, 네트워크 프로토콜, 인터페이스 엔진을 처음부터 작성했으며, 원본 클라이언트 코드와 제삼자 WoW 크레이트, 번들 게임 자산을 전혀 포함하지 않음.
포함 기능
- 파일 형식: MPQ 패치 체인, BLP, DBC, ADT, WDT, WDL, M2, WMO를 포함한 전체 자산 스택의 리더를 제공하고, 이를
Bevy의 자산 소스로 연결함. - 월드: 지평선까지 스트리밍되는 지형, 포털 컬링과 실내 조명을 적용한 건물, 장식물과 지면 오브젝트, 수영 가능한 물, 하늘과 날씨, 클라이언트 자체의 낮과 밤 조명·안개·감마를 제공함.
- 모델: 전체 애니메이션 컨트롤러를 갖춘 GPU 스키닝 M2, 파티클, 리본, 주문 시각 효과를 지원함. 캐릭터는 외형 설정, 방어구 합성, 무기와 마법부여 광채, 변신 형태, 은신, 탈것까지 구현함.
- 이동: 양방향 네트워크 이동, 느린 낙하부터 속박까지 서버가 부여하는 이동 모드, 충돌 처리가 있는 추적 카메라, 배와 비행선, 택시 비행을 지원함.
- 네트워킹: SRP6 인증부터 월드 세션 암호화와 ECS로의 오브젝트 미러링까지 구현하며, 이동과 채팅부터 전투·주문·파티·공격대·퀘스트·거래·우편·경매장·전장까지 게임 전반을 다룸.
- 인터페이스: 사용자의 설치본에 있는 패치 체인에서 기본 1.12 인터페이스를 실행하는
FrameXML·Lua엔진을 제공함. Questie, pfUI, Bagnon, Bartender2를 비롯한 대부분의 제삼자 1.12 애드온이 실행됨. - 선택에 따라 옵션 창과 ESC 메뉴는 1.12가 아니라 Classic Era 클라이언트의 구성을 따름.
- 오디오: 클라이언트 자체의 선택·크로스페이드 규칙에 따른 음악·환경음·효과음과 실내 및 수중 전환, 지역별 잔향을 제공함.
- 파일 형식 리더와 UI 엔진 핵심부는
Bevy에 의존하지 않는 순수 Rust로 작성됐으며, 월드 렌더러는 게임 클라이언트를 연결하지 않고도 실행됨. docs/MAP.md에는 코드에서 생성된 크레이트 및 하위 시스템 전체의 지도가 있음.
상태
- 현재 완전하게 플레이할 수 있음.
- 남은 작업은 완성된 클라이언트와 작동하는 클라이언트를 구분하는 자잘한 기능의 긴 목록이며, 이슈로 추적 중임.
- 애드온, 옵션, 성능 작업은 계속 진행 중임.
benilla는 충실한 1.12.1 클라이언트이자 다른 개발의 기반임.- 사전 빌드 다운로드는 제공하지 않음. 패키지 빌드, 특정 서버의 변경 사항, 1.12.1에 없던 기능은 포크에 맡기며 포크를 환영함. GitHub에서 모든 공개 포크를 확인할 수 있음.
- 다른 확장팩이나 클라이언트 버전, Warden(부정행위 방지)은 계획에 없음.
실행 방법
benilla는 macOS, Linux, Windows에서 빌드 및 실행 가능함.- 필요한 항목은 영문 1.12.1 클라이언트(빌드 5875)의 게임 데이터임.
benilla는 해당 데이터를 읽기만 함. - Warden이 꺼진 1.12.1 서버가 필요함. 개발 환경에서는 Warden이 꺼진 상태로 제공되는
vmangos를 사용하며,cMaNGOS와 다른 1.12.1 코어도 동일한 프로토콜을 사용함. - 안정 버전 Rust와 C 컴파일러가 필요함. 클라이언트의 Lua를 소스에서 빌드하기 때문임.
- macOS에는 Xcode 명령줄 도구가 필요함.
- Linux에는 ALSA·udev 개발 패키지와
pkg-config가 필요함. - Windows에는 Rust 설치 프로그램이 설정하는 MSVC 빌드 도구가 필요함.
WOW_DATA를 게임 설치의Data폴더 경로로 설정하고cargo run --release -p benilla를 실행함. Windows PowerShell에서는$env:WOW_DATA에 해당 경로를 설정한 뒤 같은 Cargo 명령을 실행함.- 각 릴리스는 Releases 페이지의 태그로 제공됨. 해당 릴리스를 처음 실행할 때
git checkout <tag>를 사용하며,main은 개발 최신 버전임. - 저장소 루트에
WoW라는 이름으로 설치본을 가리키는 링크를 만들면WOW_DATA설정을 대신할 수 있음. macOS·Linux에서는 심볼릭 링크를, Windows에서는 관리자 권한이 필요 없는 정션을 사용할 수 있음. - 서버 기본 주소는 기본 인증 포트인
localhost:3724임.WOW_HOST를 설정해 다른 서버를 지정할 수 있으며, 포트가 재매핑된 경우play.example.com:5000형식으로 입력 가능함. 로그인 화면의 Realmlist 버튼으로 서버를 지정하면 설정이 기억됨. - 자격 증명은 로그인 화면에서 입력하거나
WOW_USER와WOW_PASS를 설정해 로그인 화면을 건너뛸 수 있음. - 설정, 스크린샷, 애드온은 저장소 루트의
benilla-config/에 저장됨. 1.12 애드온은benilla-config/AddOns/에 넣음. - 플레이어 빌드부터 테스트까지의 나머지 안내는
docs/CONTRIBUTING.md에 있음.
기여
- 이슈 제보와 풀 리퀘스트 제출이 열려 있음.
docs/CONTRIBUTING.md에서 작업을 시작할 위치, 반영 기준, 변경 사항의 평가 방식, 풀 리퀘스트가 열린 뒤의 절차를 안내함.- 버그 제보, 질문, 아이디어는 Discord에서도 환영함.
- 초기 영감과 파일 형식 안내는
wowemulation-dev커뮤니티, 특히warcraft-rs에서 얻음.
라이선스와 프로젝트 안내
benilla는 독립 팬 프로젝트이며 Blizzard Entertainment와 제휴하거나 Blizzard의 승인을 받은 프로젝트가 아님.- 아트, 모델, 사운드, 맵, MPQ 콘텐츠,
FrameXML등 Blizzard 콘텐츠를 배포하지 않음. 사용자가 합법적으로 취득한 1.12.1 클라이언트를 제공해야 하며, 기본 인터페이스는 실행 중 해당 클라이언트의FrameXML을 사용함. crates/benilla-app/assets/ui/아래의 일부 파일은 자체 제작물이며 기본 파일의 복사본이 아님. 기본 파일에 적용하는 어댑터, 자체 제작한 설정 창과 스크립트 오류 로그로 구성됨.- World of Warcraft는 Blizzard Entertainment, Inc.의 상표임.
- 자체 코드는 선택에 따라 MIT 또는 Apache 2.0 라이선스로 제공함.
third_party/아래에 포함된 오디오 엔진kira와 WoW 1.12 클라이언트 방언에 맞춰 패치한 Lua 5.1은 각각 자체 업스트림 라이선스를 유지함.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요