-
Notifications
You must be signed in to change notification settings - Fork 0
Home
xfit은 zig와 그래픽 API는 vulkan을 사용하여 제작된 게임 엔진입니다. 현재는 alpha 버전으로 2D 렌더링을 지원하고 추후에 3D도 지원할 예정입니다.
소통이 필요하다면 github issue 나 [email protected] 메일 또는 'seongjun456' 디스코드 / Xfit 디스코드 채널로 연락주시면 되겠습니다!
xfit 프로젝트를 빌드하면 오프라인 문서 파일이 생성됩니다.(또는 zig build docs) 각 함수, 속성들 설명(주석)은 천천히 추가하겠습니다.
vulkan을 사용해서 기본적인 성능은 뛰어나기도 하지만 메모리 할당자의 직접 설계 및 렌더링 커멘드 저장해 놓기 그리고 벡터 그래픽 (텍스트) 표시 기술 등을 사용해 더욱 뛰어난 성능 및, 병목 적은 CPU, 멀티스레드(lock 병목 거의 없음)를 자랑합니다. 그리고 벡터로 표시할 수 있어 픽셀 데이터를 처리하지 않으므로 메모리 사용이 당연히 적습니다.
솔직히 말해서 엔진을 사용해서 짜는 코드 길이가 그리 짧은 편은 아니지만 zig 자체의 직관적인 언어 특성에 힘입어 그만큼 직관적으로 코드 어떻게 동작되는지 보고 쉽게 설계할수 있게 엔진 자체를 설계하였으며 세심한 동작이 가능하고 커스텀도 쉽습니다. 예제(examples)코드를 참고하거나 복붙해서 사용할수도 있습니다. 바로 아래의 장점과 연관되기도 합니다.
일단 Xfit 엔진은 코드 규모가 게임 엔진 치곤 그리 크지 않고 제가 바닥부터 설계한 엔진이기 때문에 오류, 버그가 나도 제가 비교적 쉽게 수정, 개선 할 수 있고, 일단 위에서 말한 메모리 할당자 기능을 안정성있게 구현하기 위해 멀티스레드 위의 동작을 대비하여 버퍼 생성, 삭제, 업데이트 작업 등을 명령 큐 비동기 방식으로 처리하였으며 필요한 곳에 atomic 변수를 적극적으로 사용하였지만 빠진 부분이 있을수도 있습니다(..ㅋㅋ)
지금은 Windows, Linux, Android를 지원하고 Web 환경도 지원할 예정입니다.
앞으로 제가 이 엔진으로 게임을 개발하면서 계속 개선해나갈것이기 때문에 꾸준히 업데이트 될 것입니다.
zig만 있다면 glslc(shader 컴파일러) 말고 windows에서 다른거 설치 필요 없이 사용 가능하고, android는 sdk, ndk 그리고 jdk만 추가로 있으면 됩니다. 종속 라이브러리들이 컴파일 된 상태로 포함돼 있기 때문에 만약 포함된 라이브러리가 호환되지 않는다면 연락주세요.
-
현재로써는 따로 에디터는 없기 때문에 일단 2D 오브젝트 배치에 도움을 주는 에디터는 개발 예정입니다.
-
shape(벡터) 객체와 이미지 동시에 표시하면 같은 render_command에서 shape가 무조건 앞에 나옵니다. pixel_shape는 해당 없음. 그러니 필요하다면 render_command를 따로 만들어야 합니다.
-
x86, armeabi(-v7a) 즉 32비트 아키텍처를 지원하지 않고 앞으로도 지원할 계획이 없습니다. 또한 OpenGL, DirectX를 따로 지원하는게 아니라서 구형기기에서 동작하지 않을 수 있습니다.
-
2D 이미지(맵) 에디터 개발
-
3D 간단한 폴리곤 그래픽 표시 및 간단 조명 부터
-
PBR 렌더링, 복잡한 조명, 레이트레이싱
-
거리에 따른 3D 테셀레이션
-
2D, 3D 물리
-
더 많은 플랫폼 지원 -> 리눅스까지 지원하므로 일단은 웹 플랫폼 지원만 추가 예정
등등..