flow-vector
article thumbnail

Coding Convention & format

폴더 구조 및 규칙

  • 명명 규칙
    • 폴더명은 소문자를 사용
    • 파일명은 파스칼케이스 사용
  • 역할
    • binary
      • 프로젝트 타겟 파일 저장
        • ex) 동적라이브러리, 실행파일
    • build
      • build_util
        • 빌드에 필요한 유틸 파일
      • intermediate
        • cmake 빌드를 통해 만들어지는 파일들
    • external
      • 외부 라이브러리 저장소
        • glfw, glab, stb, assimp, glm 등
    • internal
      • 내부 라이브러리 저장소
        • 자체 개발 라이브러리
    • source
      • 소스 코드 저장
    • resourse
      • 동적으로 로드되는 파일들
        • image 파일, obj 파일 등

git branch 전략

  • main
    • 최종 release branch
  • dev
    • 명명 규칙
      • dev_*
    • 역할
      • 개발 중인 기능을 대표하는 브랜치
  • feat
    • 명명 규칙
      • feat_*
    • 역할
      • dev 하위 브랜치로 하위 기능 개발을 위한 브랜치
  • brach 보호 전략
    • main, dev 브랜치로 머지를 하기 위해서는 PR을 날리고 최소 1명의 코드 리뷰를 받아야합니다.
      • main ←(PR)— dev ←(PR)— feat
  • PR & ISSUE 작성 규칙
    • 하나의 브랜치는 최소 1개의 ISSUE와 연결되어야 합니다
      • 먼저 ISSUE 작성을 하고 해당 ISSUE를 해결하기 위한 브랜치를 생성하는 것
        • ISSUE 템플릿 설정 추가로 진행 예정
    • PR은 하나 이상의 ISSUE와 연결될 수 있음

프로그램 구조

  • 엔진 코드는 동적 라이브러리로 빌드
  • 동적 라이브러리를 사용하여 프로젝트를 개발하는 방식을 사용
    • 엔진 라이브러리를 사용하여 scop 프로젝트(model viewer)를 개발
  • 해당 구조의 장점
    1. 모듈성과 재사용성: 동적 라이브러리로 엔진을 분리함으로써, 엔진 코드를 다양한 프로젝트에서 재사용할 수 있음
    2. 업데이트와 배포의 용이성: 동적 라이브러리를 사용하면, 엔진의 업데이트를 애플리케이션 전체를 재배포하지 않고도 할 수 있음. 즉, 엔진에 변경사항이 생겨도, 해당 라이브러리만 교체하면 됨.
    3. 메모리 관리 및 최적화: 동적 라이브러리는 메모리 사용을 최적화하는 데 도움이 될 수 있습니다. 애플리케이션이 필요한 경우에만 특정 부분의 코드를 메모리에 로드할 수 있음.
    4. 플랫폼 간 호환성: 다양한 플랫폼에서 동일한 게임 엔진을 사용할 수 있도록, 플랫폼에 특화된 코드를 동적 라이브러리에 넣어 관리할 수 있음.
    5. 보안 및 라이선스 관리: 게임 엔진 코드를 동적 라이브러리에 숨김으로써, 소스 코드의 노출을 최소화할 수 있음.

'Project > GameEngine' 카테고리의 다른 글

나만의 게임 엔진 개발 하기 - 시작  (0) 2023.12.31
상용 엔진 구조 분석 - Godot Engine  (0) 2023.12.31
profile

flow-vector

@flow-vector

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!