Coding Convention & format
- 포프의 c++ 코딩 표준을 따른다
- .clang-format을 사용하여 동일 포멧을 유지 한다
- 규칙 예시
- 들여쓰기 2 space
- .clang-format 적용하는 방법
- 규칙 예시
폴더 구조 및 규칙
- 명명 규칙
- 폴더명은 소문자를 사용
- 파일명은 파스칼케이스 사용
- 역할
- binary
- 프로젝트 타겟 파일 저장
- ex) 동적라이브러리, 실행파일
- 프로젝트 타겟 파일 저장
- build
- build_util
- 빌드에 필요한 유틸 파일
- intermediate
- cmake 빌드를 통해 만들어지는 파일들
- build_util
- external
- 외부 라이브러리 저장소
- glfw, glab, stb, assimp, glm 등
- 외부 라이브러리 저장소
- internal
- 내부 라이브러리 저장소
- 자체 개발 라이브러리
- 내부 라이브러리 저장소
- source
- 소스 코드 저장
- resourse
- 동적으로 로드되는 파일들
- image 파일, obj 파일 등
- 동적으로 로드되는 파일들
- binary
git branch 전략
- main
- 최종 release branch
- dev
- 명명 규칙
- dev_*
- 역할
- 개발 중인 기능을 대표하는 브랜치
- 명명 규칙
- feat
- 명명 규칙
- feat_*
- 역할
- dev 하위 브랜치로 하위 기능 개발을 위한 브랜치
- 명명 규칙
- brach 보호 전략
- main, dev 브랜치로 머지를 하기 위해서는 PR을 날리고 최소 1명의 코드 리뷰를 받아야합니다.
- main ←(PR)— dev ←(PR)— feat
- main, dev 브랜치로 머지를 하기 위해서는 PR을 날리고 최소 1명의 코드 리뷰를 받아야합니다.
- PR & ISSUE 작성 규칙
- 하나의 브랜치는 최소 1개의 ISSUE와 연결되어야 합니다
- 먼저 ISSUE 작성을 하고 해당 ISSUE를 해결하기 위한 브랜치를 생성하는 것
- ISSUE 템플릿 설정 추가로 진행 예정
- 먼저 ISSUE 작성을 하고 해당 ISSUE를 해결하기 위한 브랜치를 생성하는 것
- PR은 하나 이상의 ISSUE와 연결될 수 있음
- 하나의 브랜치는 최소 1개의 ISSUE와 연결되어야 합니다
프로그램 구조
- 엔진 코드는 동적 라이브러리로 빌드
- 동적 라이브러리를 사용하여 프로젝트를 개발하는 방식을 사용
- 엔진 라이브러리를 사용하여 scop 프로젝트(model viewer)를 개발
- 해당 구조의 장점
- 모듈성과 재사용성: 동적 라이브러리로 엔진을 분리함으로써, 엔진 코드를 다양한 프로젝트에서 재사용할 수 있음
- 업데이트와 배포의 용이성: 동적 라이브러리를 사용하면, 엔진의 업데이트를 애플리케이션 전체를 재배포하지 않고도 할 수 있음. 즉, 엔진에 변경사항이 생겨도, 해당 라이브러리만 교체하면 됨.
- 메모리 관리 및 최적화: 동적 라이브러리는 메모리 사용을 최적화하는 데 도움이 될 수 있습니다. 애플리케이션이 필요한 경우에만 특정 부분의 코드를 메모리에 로드할 수 있음.
- 플랫폼 간 호환성: 다양한 플랫폼에서 동일한 게임 엔진을 사용할 수 있도록, 플랫폼에 특화된 코드를 동적 라이브러리에 넣어 관리할 수 있음.
- 보안 및 라이선스 관리: 게임 엔진 코드를 동적 라이브러리에 숨김으로써, 소스 코드의 노출을 최소화할 수 있음.
'Project > GameEngine' 카테고리의 다른 글
나만의 게임 엔진 개발 하기 - 시작 (0) | 2023.12.31 |
---|---|
상용 엔진 구조 분석 - Godot Engine (0) | 2023.12.31 |