멋진 raylib 게임 프레임워크에서 포크됨: https://www.raylib.com/
주의 사항: rayfork는 아직 초기 개발 단계에 있으므로 현재 전문적으로 사용하는 것은 권장되지 않습니다.
rayfork에는 .c 파일이 하나만 있고 libc에만 의존합니다. 즉, 명령줄에서 라이브러리로 쉽게 컴파일할 수 있습니다.
# -c compiles the code as a library
# -EHsc disables exceptions on msvc
gcc -c rayfork.c
clang -c rayfork.c
cl -c -EHsc rayfork.c
rayfork는 플랫폼 레이어를 제공하지 않습니다. 즉, 창을 생성하거나 OpenGL을 로드하거나 입력을 캡처하지 않습니다.
이는 귀하에게 가장 적합한 방법을 사용하여 여러 플랫폼(게임 콘솔 포함)에서 rayfork를 쉽게 사용할 수 있도록 의도된 것입니다. GLFW, SDL, sokol-app 및 사용자 정의 플랫폼 레이어와 함께 rayfork를 사용하기 위한 템플릿이 있습니다.
렌더러에는 현재 OpenGL33 및 OpenGL-ES3 백엔드(더 추가 예정)가 있으며, 이는 libc에 대한 유일한 종속성과 함께 모든 플랫폼에서 rayfork를 컴파일할 수 있는 이식 가능한 방식으로 구현됩니다. OpenGL 프로세스는 명시적으로 rayfork에 전달되며 이를 지원하는 간단한 매크로가 있습니다.
이로 인해 PC, 모바일 또는 콘솔 등 모든 플랫폼에 대해 rayfork를 쉽게 컴파일할 수 있습니다.
IO를 수행하는 함수는 선택 사항인 경우가 많으며 명시적으로 IO 콜백을 요청합니다. libc IO 함수에 대한 간단한 래퍼가 rf_default_io
로 제공됩니다.
명시적으로 할당하는 함수는 할당자를 요청하고 때로는 임시 메모리 할당자(함수 내에서 해제되는 메모리)도 요청합니다. libc의 malloc/free에 대한 간단한 래퍼가 rf_default_allocator
로 제공됩니다.
모든 종속성은 사용자 지정 할당자를 염두에 두고 사용되며, 라이브러리는 사용자가 알지 못한 채 할당하지 않습니다.
할당자 또는 io 콜백이 필요한 모든 함수에는 원래 함수를 래핑하고 rf_default_allocator
및/또는 rf_default_io
사용하여 호출하는 _ez
버전이 있습니다. 이는 코드를 빠르게 테스트하는 데 유용합니다.
라이브러리는 단 하나의 헤더와 소스 파일이며 전처리기 정의를 사용하여 컴파일 타임에 사용자 정의할 수 있습니다. 특정 라이브러리에 연결해야 하는 그래픽 백엔드에 따라 추가 컴파일 플래그가 필요하지 않습니다.
raylib는 처음에는 교육 목적으로 만들어졌으며 시간이 지남에 따라 XNA와 유사한 매우 유용한 게임 라이브러리로 발전했습니다.
그러나 그 특성으로 인해 raylib의 여러 디자인 선택으로 인해 전문 게임 개발자가 사용하기가 어렵습니다.
맞춤 플랫폼 레이어를 사용하기 어려움(예: Android Studio를 사용하여 Android에서 맞춤 플랫폼 레이어와 함께 사용)
다른 플랫폼(예: iOS, 콘솔)에 포팅하기 어려움
메모리 할당 및 io에 대한 제어가 거의 없습니다.
rayfork는 이러한 문제를 해결하고 raylib의 API를 사용하여 전문 게임을 쉽게 개발할 수 있도록 설계되었습니다.
저는 raylib과 C99를 좋아하고 이를 이용해 게임을 개발하고 싶었기 때문에 이 프로젝트를 시작했습니다.
그러나 많은 라이브러리는 내가 라이브러리에서 찾는 원칙(이 기사 참조)을 따르지 않아 게임에서 라이브러리를 사용하는 것을 어렵게 만들고 성가시게 만듭니다. 이것이 바로 인디 개발자가 자신의 프로젝트를 개발하는 데 자신 있고 쉽게 사용할 수 있는 라이브러리를 만들고 싶은 이유입니다. 제어성, 휴대성 또는 품질을 희생하지 않고 말이죠.
위에서 언급한 원칙을 존중하는 라이브러리를 사용하여 쉽게 게임을 개발하고 싶다면 rayfork에 기여하는 것을 고려해 보세요.
이슈 탭을 확인하고 기여하기 위해 할 수 있는 많은 일을 찾을 수 있습니다.
나는 또한 내 전문 분야 이외의 일을 개발하는 데 도움을 찾고 있습니다.
#rayfork 채널의 raylib discord 서버에서 저에게 연락하세요. 저는 @BananyaDev#0001입니다. 또는 트위터 @SasLuca입니다.
스네이크 케이스에 대한 명명 규칙을 유지하고 인터페이스 함수에는 rf_function_name
사용하고 개인 함수에는 _rf_function_name
사용하십시오.
모든 함수에 rf_public
또는 RF_INTERNAL
접두사를 붙입니다.
인터페이스에 추가 헤더를 포함하지 말고 일반적으로 포함을 최소화하도록 노력하세요.
코드 영역을 접으려면 #pragma region #pragma endregion
사용하고 코드를 더 쉽게 이해하려면 해당 영역 접기를 지원하는 편집기를 사용하는 것이 좋습니다.
이 기사의 조언을 일반적으로 적용해 보십시오. 더 중요한 조언 중 일부는 다음과 같습니다.