프로젝트 소개

FOnline은 Fallout 1/2/Tactics 및 Arcanum의 고전적인 등각 스타일의 온라인 멀티플레이어 RPG를 구축하기 위한 MIT 라이선스의 C++20 엔진입니다. 2006년부터 지속적으로 개발되어 왔으며 커뮤니티 멀티플레이어 RPG를 지원하며, 현재 예로 Last Frontier가 언급됩니다. 설계는 멀티플레이어 우선입니다: 권위 있는 서버, 복제된 엔티티 상태, 클라이언트/서버 분리가 엔티티 모델의 핵심이며, 단순히 추가된 것이 아닙니다. 하나의 코드베이스가 서버, 클라이언트, 맵 에디터, 콘텐츠 파이프라인 및 데스크톱, 모바일, 브라우저용 패키징을 생성합니다. README에 설명된 기능 영역: - 멀티플레이어 핵심: 엔티티 관리자, 클라이언트 검증 및 신뢰할 수 없는 입력의 강화된 파싱을 갖춘 권위 있는 서버 런타임; 생성된 타입 안전 속성 래퍼와 자동 복제를 갖춘 공유 엔티티/속성/프로토타입 모델; TCP 소켓, Asio 기반 서버, 브라우저 플레이용 WebSocket, 순서화된 UDP 및 테스트용 프로세스 내 전송을 포함한 플러그형 전송; JSON 파일, SQLite, MongoDB 또는 메모리 내 저장을 단일 데이터베이스 파사드 뒤에서 비동기 커밋 큐 및 복구 로그와 함께 지원하는 플러그형 영속성; 재개 가능한 파일 전송 및 서버 측 업데이트 백엔드를 갖춘 내장 클라이언트 자동 업데이터. - 스크립팅: 백엔드 중립 스크립트 시스템 위의 AngelScript 게임플레이 스크립팅; 네이티브 API는 ///@ 주석에서 코드 생성으로 스크립트에 내보내져 메서드, 속성, 이벤트, 원격 호출 및 열거형을 동기화합니다; nullability는 스크립트/네이티브 경계에서 강제됩니다; 스크립트 디버깅은 네이티브 디버깅과 함께 지원됩니다. - 렌더링: OpenGL, Direct3D, Vulkan 및 SDL_GPU 백엔드와 서버 및 CI용 헤드리스/널 모드; 효과는 GLSL로 한 번 작성되고 glslang을 통해 SPIR-V로 컴파일되며 SPIRV-Cross를 통해 백엔드별로 변환됩니다; 3D 캐릭터 모델(FBX), 파티클, 비디오 재생 및 현대(Ogg/Vorbis) 및 클래식 Fallout 형식의 오디오를 갖춘 스프라이트 기반 등각 세계; ImGui 개발자 오버레이가 있는 창 모드, 테두리 없는 전체 화면 및 다중 클라이언트 가상 창 모드. - 세계 및 맵: 거리, 방향 및 이웃을 위한 공유 헬퍼가 있는 육각형 및 정사각형 그리드 지오메트리 모드; 경로 찾기, 선 추적, 이동 컨텍스트 및 서버 권한을 위해 설계된 차단 모델. - 콘텐츠 파이프라인 및 도구: 베이킹 파이프라인은 프로토타입, 맵, 대화, 지역화된 텍스트, 효과, 이미지, 모델 및 스크립트를 버전이 지정된 런타임 리소스 팩으로 변환합니다; PNG/TGA와 함께 클래식 2D 자산 형식(Fallout FRM, Arcanum ART 및 기타 레거시 형식)을 가져옵니다; 엔진 자체에 구축된 대화형 도구에는 헤드리스 자동화가 있는 맵 에디터, 콘텐츠 에디터, 자산 탐색기 및 파티클 에디터가 포함됩니다. - 엔지니어링 품질: 생성된 스위트별 타겟, 새니타이저 실행 및 커버리지를 갖춘 Catch2 단위 테스트; 모든 Clang 툴체인에서 -Werror로 강제되는 Clang 스레드 안전성 분석; 엄격한 스마트 포인터 및 nullability 어휘; 항상 켜진 스택 추적, 결정적 예외 안전 규칙 및 OOM 시 종료 할당 모델; Tracy 프로파일러 통합. 아키텍처: 엔진은 재사용 가능한 서브모듈입니다; 게임 저장소는 이를 Engine/로 추가하고, 단계별 CMake 파이프라인을 자체 구성으로 지정하고 프로젝트 이름이 지정된 빌드 타겟을 얻습니다. 게임은 콘텐츠, 스크립트, 구성, 브랜딩 및 릴리스 정책을 소유합니다. 프로토타입, 맵, 대화, 지역화 및 GUI와 같은 콘텐츠는 일반 텍스트 자산으로 작성되고 런타임 팩으로 베이킹됩니다. 지원 대상은 Windows, Linux, macOS, Android, iOS 및 Web(WebAssembly)입니다; README는 모든 기능이 모든 플랫폼에서 동일하게 성숙하지는 않다고 언급합니다. 저장소 레이아웃: Source/ (Applications, Client, Server, Common, Frontend, Scripting, Tools, Essentials, Tests), BuildTools/ (단계별 CMake 파이프라인, 코드 생성, 툴체인, 패키징), Resources/, ThirdParty/ (벤더링된 SDL, AngelScript, Asio, ImGui, glslang, SPIRV-Cross, Tracy 등) 및 Docs/. 유지 관리되는 문서는 아키텍처, 엔티티 모델, 맵 및 이동, 네트워킹, 영속성, 클라이언트 및 서버 런타임, 렌더링, 스크립팅, nullability, 빌드 및 베이킹 파이프라인, 도구, 테스트, 예외 안전, 스마트 포인터, 스레드 안전성 분석 및 플랫폼 디버깅을 다룹니다.