프로젝트 소개
Lightyear는 Bevy 게임 엔진으로 서버 권위형 멀티플레이어 게임을 작성하기 위한 네트워킹 라이브러리입니다. WebTransport를 통해 WebAssembly와 호환되며, Rust 크레이트로 배포됩니다(Bevy 0.19의 경우 lightyear = "0.30").
시작하기: 저장소는 예제, simple_box 예제를 재현하는 튜토리얼, 추가 문서를 위한 작업 중인 book을 제공합니다.
저장소 구조: 워크스페이스 크레이트는 crates/ 아래에 역할별로 그룹화되어 있으며, 디렉터리 이름에서는 lightyear_ 접두사가 빠지지만 Cargo 패키지 이름에는 유지됩니다. 그룹에는 io(aeronet, link, udp, crossbeam, websocket, webtransport와 같은 저수준 링크 및 백엔드), connection(connection, raw_connection, netcode, steam), core(최상위 lightyear 크레이트와 core, sync, utils, frame interpolation), inputs(inputs, inputs_native, input_bei, inputs_leafwing), replication(replication, prediction, interpolation), transport(serialization, transport, message), integration(Avian과 같은 Bevy 생태계 통합), 그리고 platform, deterministic, tools 및 tests 크레이트가 포함됩니다.
README에 설명된 기능:
- 전송 독립적 IO: UDP 소켓, 그리고 WebSocket, Steam 및 WebTransport 지원을 위한 aeronet.
- 직렬화: postcard가 기본 직렬화기이며, 사용자 정의 직렬화 함수 제공을 지원합니다.
- 메시지 전달: 서로 다른 순서 및 신뢰성 보장을 가진 채널, 그리고 약 1200바이트보다 큰 메시지를 위한 패킷 단편화.
- 입력 처리: 플레이어 입력은 클라이언트에서 매 틱마다 버퍼링되고, 틱 N에 대한 클라이언트 입력은 서버의 틱 N에서 처리됩니다. 입력은 각 패킷에 최근 프레임을 포함하여 패킷 손실로부터 보호됩니다. leafwing-input-manager 및 bevy-enhanced-input을 위한 선택적 통합이 있습니다.
- 결정론적 복제: 입력만 복제되고 시뮬레이션이 결정론적일 때 지원되며, lockstep 및 prediction/rollback과 호환됩니다.
- 월드 복제: 복제, 관심 관리, 사전 스폰 및 관련 기능을 위해 bevy_replicon을 사용합니다.
- 고급 복제: 롤백을 포함한 클라이언트 측 예측, 스냅샷 보간, 구성 가능한 입력 지연, 우선순위 기반 전송을 통한 대역폭 관리, 그리고 예측 및 보간된 엔티티 간 상호작용을 위한 지연 보상.
- 토폴로지: 클라이언트-서버, P2P, 그리고 클라이언트가 서버 역할을 하는 호스트-클라이언트 모드.
- 예제: 기능과 avian 같은 다른 Bevy 크레이트와의 통합을 다루는 다수의 예제.
README는 또한 관련 프로젝트를 나열합니다. 여기에는 lightyear-template 스타터 프로젝트와 Lumina 및 cycles.io 같은 게임, 그리고 Lightyear 버전을 Bevy 버전에 매핑하는 호환성 표(0.28-0.30은 Bevy 0.19, 0.26-0.27은 0.18, 0.25는 0.17, 0.20-0.24는 0.16, 0.18-0.19는 0.15, 0.16-0.17은 0.14, 0.10-0.15는 0.13, 0.1-0.9는 0.12)가 포함됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.