프로젝트 소개

Fio는 1인칭, 탑다운 및 대규모 세계를 구축, 편집, 실행하기 위한 통합 월드 편집기, 실시간 엔진 및 게임 제작 툴킷이다. 고전적인 Radiant와 Hammer/Worldcraft 워크플로우에서 영감을 받았으며, 저전력 ARM 하드웨어에서 효율성 우선 철학을 바탕으로 설계되었다. 핵심 아이디어는 편집기와 런타임이 동일한 라이브 월드 상태에서 작동한다는 것이다. Play를 눌러도 레벨을 별도의 런타임 표현으로 내보내거나 컴파일하거나 베이크하지 않으며, 세계는 그대로 계속 실행된다. 프로젝트는 이를 "맵이 곧 프로그램이고, 편집기가 곧 엔진이다"라고 설명한다. 편집 및 게임플레이 기능에는 임의의 볼록 다면체를 사용한 고전적인 브러시/CSG 편집, Source에서 영감을 받은 엔티티 I/O 게임플레이, 그리고 월드 객체에 직접 연결되는 영구 타입 지정 상태(문자열, 정수, 부동소수점, 불리언, null, UUID)인 LogicState가 포함된다. 네이티브 시스템에는 논리 게이트, 릴레이, 타이머, 트리거, 무버와 도어, 물리, 프롭, 경로 탐색, 플레이어 시작점, 절차적 지형 및 월드 포털이 포함된다. 게임플레이는 기존의 스크립팅 코드베이스가 아니라 엔티티, 입력, 출력, 상태 및 공간 관계로부터 조립할 수 있다. 대규모 세계를 위해 그리드 기반 공간 인덱스가 가시성, 거리 쿼리, 시뮬레이션 상주, 물리 동기화, 엔티티 조회 및 컬링을 지원한다. BigWorld는 이를 기반으로 매 프레임 모든 객체를 동일하게 처리하는 대신 엔티티를 전체, 축소 및 휴면 시뮬레이션 상태 간에 이동시킨다. 공간 계산, 변환, 컬링, 물리 동기화 및 엔티티 인덱싱과 같은 대량 수치 작업은 밀집 NumPy 배열로 처리되며, 불규칙하거나 상태 의존성이 높은 작업은 스칼라 Python으로 남는다. 렌더링은 NumPy 배열에서 직접 작동하는 간결한 OpenGL 3.3 Core 렌더러를 사용하며, 동적 조명, 동적 그림자, 안개, 유리, 물, 프러스텀 및 거리 컬링, GLB 에셋, 1인칭 및 탑다운 카메라 모드를 지원한다. 네이티브 월드 포털은 스텐실 버퍼 마스킹과 경사 근평면 클리핑을 사용하여 임의 위치 간의 비유클리드 연결을 제공하며, BSP, VIS/PVS 전처리 또는 오프라인 가시성 컴파일이 필요하지 않다. 다른 기능으로는 예제 플러그인이 포함된 플러그인 아키텍처, .fiopak 아카이브를 통한 이식 가능한 월드 패키징, 절차적 월드 생성 및 실험적 맵 생성 도구, 로컬 분할 화면 멀티플레이어가 있다. Windows, macOS 및 Linux용 바이너리가 제공되며, 소스에서 또는 포함된 Dockerfile을 통해 실행할 수도 있다. 소스에서 실행하려면 Python 3.10+가 필요하고 main.py를 실행하기 전에 requirements.txt를 설치해야 한다. 문서는 프로젝트 위키에서 확인할 수 있으며, 저장소는 활발한 개발 중임을 밝히고 기여와 실험을 환영한다.