리즈
@Septag
Rizz (ریز)는 C 언어로 작성된 작고 다중 플랫폼이며 최소한의 게임/앱 개발 프레임 워크입니다. 기계와 소콜 리브에서 영감을 얻었습니다. 현재 진행중인 작업이며 기능 및 개선 사항은 다른 플랫폼에 지속적으로 추가됩니다.
샘플 모델은 Ferre Pookeazem의 제공입니다
설계 및 기본 사용
설계 원칙, 아키텍처 및 프레임 워크의 기본 사용에 대한 자세한 내용은 문서 Rizz Architecture 및 기본 사용법을 읽으려면 문서/안내서에서도 사용할 수 있습니다.
메모
이것은 게임 엔진이 아니며 프로그래머가 자체 엔진/렌더러/물리학을 구축 할 수있는 상대적으로 낮은 수준의 프레임 워크입니다. Rizz 의 핵심은 렌더링 기술/물리학을 구현하지 않거나 특정 엔터티 시스템을 사용자에게 부과하지 않습니다. 게임 개발자를위한 기본 빌딩 블록 만 제공합니다. 다른 기능은 플러그인으로 구현됩니다.
특징
핵심
- 휴대용 C 코드 : C11 (GCC/Clang), C99 (MSVC) 호환 코드, 데이터 지향 사고 방식으로 설계되었습니다.
- 플러그인 시스템 : 엔진에는 작은 코어가 있습니다. 플러그인을 통해 많은 기능이 구현됩니다.
- 최소 의존성 : 외부/큰 종속성 없음. 소스에 포함 된 소수의 작은 의존성 만.
- C/C ++ 코드의 핫 리 로딩 : 플러그인/게임 코드는 일부 제한 및 규칙을 통해 핫로드가 가능합니다.
- 섬유 기반 작업 시스템 : 사용하기 쉬운 섬유 기반 작업 시스템.
- 반사 : 구조 , 열거 및 기능에 대한 간단한 반사 시스템을 제공합니다 .
- Async Asset Manager : Flexible Reference Counting Asset Manager. 새로운 자산 유형은 제 3 자 코드로 관리자에게 추가 할 수 있습니다.
- 자산 및 셰이더의 핫 롤링 : 모든 게임 내 리소스 및 셰이더는 핫 롤로드 될 수 있습니다.
- 가상 파일 시스템 : Async 읽기/쓰기. 디렉토리 또는 아카이브는 가상 디렉토리로 장착 될 수 있습니다.
- 코 루틴 지원 : 코 루틴은 N 프레임 또는 N 밀리 초에 일시 중단 될 수 있습니다.
- 맞춤 충돌 처리 : 충돌을위한 맞춤형 콜백. Crash.dmp 파일 생성 (Windows 만 해당)과 함께
제도법
- 다중 그래픽 API 지원 : 금속 (iOS, MACOS). OpenGL-ES 2/3 (Android). Direct3d11 (Windows), OpenGL 3.3 (Linux)
- 휴대용 셰이더 : GLSL에서 한 번 셰이더를 쓰면 도구 세트는 셰이더를 다른 API로 자동으로 변환합니다.
- 멀티 스레드 GPU 명령-버퍼 : 무대 API가있는 여러 스레드에서 DRAW 명령을 제출할 수 있습니다.
- Compute Shad
플러그인
많은 엔진 기능이 플러그인에서 구현되며 각 링크를 방문하여 읽기를 읽습니다.
- Imgui : 유틸리티 API가있는 Dear-Imgui 플러그인
- 2DTOOLS : 2D 렌더링 도구 : 스프라이트, 스프라이트 애니메이션, TTF 지원이있는 글꼴 그리기
- 소리 : 간단한 사운드 시스템. 오디오 믹서 및 2d-sounds.
- 입력 : 게임 패드 및 터치 지원이있는 입력 시스템
- 3DTOOLS : 3D 렌더링 도구 : GLTF 3D 모델 지원, 기본 디버그 원시 생성 및 드로잉
- Astar : A-Star Path-Finding 구현 플러그인
- 충돌 : 2.5D/아이소 메트릭 충돌 감지 플러그인
- 유틸리티 : 기타 유틸리티 기능. 현재 스플라인 및 소음 생성기
- 기초 : 기초 _universal 텍스처 형식 지원 (자산 유형 이름 :
"texture_basisu" )
디버깅 및 프로파일 링
- 원격 프로파일 러 : 원격 디버거/명령 콘솔 및 로그 뷰어 용 통합 리모컨 .
- 그래픽 API 내성 : 디버그 응용 프로그램 수준 그래픽 호출 및 객체.
- 메모리 디버거 : 모든 서브 시스템의 메모리 할당 디버그 및 모니터.
지원되는 플랫폼
- 창
- 리눅스
- 마코스
- 기계적 인조 인간
- 라즈베리피
- iOS
짓다
Rizz 는 모든 주요 모바일 (iOS, Android), PC (Windows, Linux, MacOS) 및 Web (Webasm) 플랫폼에서 실행되도록 설계되었습니다. 그러나 엔진이 어릴 때까지 현재 플랫폼이 구축되고 테스트됩니다.
- Windows : Visual Studio 14 2015 업데이트 3 (Win64)으로 Windows10에서 테스트했습니다.
- Linux : Clang (6.0.0) 및 GCC (7.3.0)로 Ubuntu 16에서 테스트했습니다. 패키지 요구 사항 :
- libx11-dev
- libxrandr-dev
- libxi-dev
- libasound2-dev (
sound 플러그인을 빌드하려는 경우) - libglew-dev
- MACOS : MacOS High Sierra에서 테스트 - Appleclang 9.1.0
- Android : Android의 경우 Android 프로젝트 구조 준비, 코드 구축 및 최종 APK 포장을 처리하는 Python 스크립트 Android.py가 있습니다.
android.py 의 시작을 읽으십시오. - Raspberrypi : RPI1 ModelB Ubuntu-Jessie (GCC Raspbian 4.9.2)에서 테스트. 패키지 요구 사항 :
- libasound2-dev (
sound 플러그인을 빌드하려는 경우)
- iOS : iOS의 경우 iOS 프로젝트 초기화를 관리하는 Python 스크립트 iOS.py가 있습니다.
cmake 옵션
번들 (기본 = 0, Android/iOS = 1) :
-
BUNDLE=0 Rizz 가 rizz --run game.dll (Linux에서 rizz --run ./game.so )으로 게임을 실행하는 실행 가능한 호스트로 제작되었음을 나타냅니다. 이진 크기 감소와 게임 코드 및 플러그인의 라이브로드가 필요한 개발에 권장됩니다. -
BUNDLE=1 rizz를 정적 라이브러리로 빌드합니다. 단일 독립형 실행 파일이있는 Rizz 및 기타 플러그인을 링크하고 번들로 묶으므로 실행 파일과 묶음의 묶음 과 지정한 모든 플러그인 만 있습니다. 번들을 올바르게 만들려면 다음 구성 에이 CMAKE 인수를 설정해야합니다.- blondle_target : 빌드하려는 실행 파일의 대상 이름 (첫 번째 예 :
-DBUNDLE_TARGET=01-hello ) - blendle_target_name : CMAKE 대상과 응용 프로그램의 실제 이름이 다른 경우 인수를 사용하여이를 해결하십시오. (첫 번째 예 :
-DBUNDLE_TARGET_NAME=hello ) - blendle_plugins : 애플리케이션에서 요구하는 플러그인을 세미콜론으로 분리합니다. (첫 번째 예 :
-DBUNDLE_PLUGINS=imgui )
enable_hot_loading (default = 1, android/ios = 0)을 사용하면 자산을 핫로드하고 자산 디렉토리를 모니터링 할 수 있습니다. 모바일 OS에서 작동하지 않습니다.
enable_profiler (default = 0/debug, default = 1/release)
build_examples (default = 1, Android /iOS = 0) /examples 디렉토리의 예제 프로젝트 빌드.
msvc_static_runtime (default = 0) : msvc 특이 적. '/md'대신 '/mt'플래그로 릴리스 구성을 컴파일합니다.
msvc_multithreaded_compile (default = 1) : msvc 특이 적. 멀티 스레드 컴파일을 켜십시오 (닌자로 꺼집니다)
clang_enable_profiler (default = 0) : clang sperient. -ftime-trace 플래그를 켭니다. Clang-9 이상에서만 지원됩니다
예
예제 기본 예제는 예제 디렉토리 에서이 리포지토리에 포함되어 있습니다.

우주 침략자 클론 - Github 프로젝트 링크

변화
v0.5
물티
v0.4
- 브레이킹 : JSON 파서, SJSON을 CJ5로 교체하십시오
- 브레이킹 : Sprite 플러그인으로 이름이 2dtools 로 변경되었습니다
- 브레이킹 : 외부 매크로 API (rizz_log_xxxx)는 이제 내부와 동일합니다 (API 변수는 헤더에 정의 됨)
- 브레이킹 : 반사는 이제 API에 컨텍스트가 있습니다
- 새로운 : Imgui 로그 창
- 새로운 : 'Rizz_API_FONT'API를 통한 True-Type Font (Fontstash) 지원
- 새로운 : 기본 텍스처 지원
- 새로운 : @aminv 덕분에 Astar Path-Finding Plugin
- 새로운 : 하이브리드 충돌 감지 플러그인
- 신규 : "JSON"자산 유형 (Rizz/JSON.H 참조)
- 새로운 : @aminv 덕분에 유틸리티 플러그인 (스플라인, 소음, 더 많은 물건이 추가됩니다)
- 업데이트 된 리모컨
- 1.79 도킹 지점에서 Imgui
- SX IO API 및 std.fopen 대신 기본으로 백엔드
- Async vfs api tget 개별 파일
- IFF로드/SX/IO.H에서 API를 저장합니다
-
shader_get / texture_get 및 기타 자산 getters 모든 자산 유형에 - 많은 수학 lib 개선 및 리팩터
- TMP_ALLOC 점검
- DDS-KTX 파서의 수정
- MSVC 컴파일러 C11 지원
- C ++를 사용한 더 나은 C-API 호환성 및 C ++ 용 간단한 래퍼 (배열, 해시 테이블, 수학 연산자, ..)
- 반사 시스템 개선, 맞춤 직렬화 작성을위한 두 가지 새로운 직렬화/사제 기능
- 반사 시스템 내장 JSON 직렬화
- 새로운 imgui 테마 (@aminv 덕분에)
사용 된 오픈 소스 라이브러리
주로 Rizz를 위해 개발되었습니다
- SX : 휴대용 기본 라이브러리
- GLSLCC : GLSL 크로스 컴필라 (외부 바이너리 도구)
- DDS-KTX : 단일 헤더 KTX/DDS 리더
- CJ5 : JSMN에서 파생 된 C99의 매우 최소 단일 헤더 JSON5 파서
- Atlasc : 많은 입력 이미지에서 Atlas 텍스처를 구축하는 명령 줄 도구. (외부 바이너리 도구)
- DMON : 디렉토리 변경 모니터링을위한 단일 헤더 C99 휴대용 라이브러리.
- Stackwalkerc : Windows 싱글 헤더 스택 워커.
3 자
- 소콜 : 최소 크로스 플랫폼 독립형 C 헤더
- CR : 간단한 C HOT Reload 헤더 전용 라이브러리
- cimgui : imgui 용 C-API (imgui 플러그인에서 사용)
- imgui : dear imgui : 최소한의 종속성을 가진 C ++에 대한 팽창없는 즉각적인 모드 그래픽 사용자 인터페이스 (imgui 플러그인에 사용)
- 원격 : 원격 웹 뷰어가있는 단일 C 파일, 실시간 CPU/GPU 프로파일 러
- LZ4 : 매우 빠른 압축 알고리즘
- HTTP : 소켓을 통한 기본 HTTP 프로토콜 구현
- STB : C/C ++ 용 STB 단일 파일 공개 도메인 라이브러리
- 정렬 : "템플릿"에서 일상적인 구현 정렬 c
- Imguizmo : Imgui 용 3D Gizmo (Imgui 플러그인에 사용)
- gainput : 게임용 라이브러리 (입력 플러그인에서 사용)
- 기초 _universal : 기본 범용 GPU 텍스처 코덱
- Fontstash : 가벼운 온라인 글꼴 텍스처 Atlas Builder (2dtools 플러그인에 사용)
- CGLTF : C99로 작성된 단일 파일 GLTF 2.0 로더 및 작가 (3dtools 플러그인에 사용)
- Cute_headers : Randy Gaul의 헤더 Libs (Collision Plugin에서 사용되는 Cute_c2.h)
라이센스 (BSD 2- 클라스)
Copyright 2021 Sepehr Taghdisian. All rights reserved.
https://github.com/septag/rizz
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
EVENT SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.