팀프로젝트를 진행하기 앞서 개발 컨벤션을 정하고자 한다.
언리얼 엔진의 컨벤션을 바탕으로 진행했다.
개발 환경
- 엔진 : Unreal Engine 5.4.4
- 툴 : Visual Studio 2022
- 협력 :
- 버전 관리 : P4V/Swarm
- CI/CD : Jenkins
회의 주기
회의 주기 및 방식
- 스크럼 회의 + 회의 (오프라인)
- 회의하고 싶은 내용, 물어보고 싶은 내용 적어뒀다가 말하는 시간 (14:00 ~ 15:00)
- 코드 리뷰 : 일주일에 최소 한 시간은 다른 사람 코드 읽어 보고 리뷰
- 전체 회의 : <목요일 저녁 8시 - 9시 30분>
- 스프린트 2주 간격 ( 기획자 포함 )
- 게임적인 요소 결정하기
- 2주간 목표 정하기
- 지금까지 동작하는 프로토 타입 시연
개발자 컨벤션
Visual Studio 명명 규칙
- 프로젝트 접두사 DS
- RPC 명명 규칙
- ClientRPC_
- ServerRPC_
- MulticastRPC_
- 예시)
MulticastRPC_Attack
- 델리게이트 명명 규칙
- 전체적으로 사용할 델리게이트
- UI - UIEvent
- Game - GameEvent
- 디폴트 인자 자제하고 nullptr 같은 또는 0으로 넘기는 등 구현하기
- nullptr C++ 언어에만 사용, UObject에서는 IsValid로 통일
- 분명히 있는 것들 subsystem/gameInstance/world → check 로 검사
- ctrl + k + f → visual studio 정렬
- 최하단 파생 클래스 final 키워드
- 애셋(Image/캐릭터 메시.. → 데이터에셋 Path) 불러올 때 TSoftObjectPtr → 동기/비동기 로딩
- 반복문 i,a 등 의미없는 변수명 자제
- 조건문
if(false == bChecked)
{
Func();
}
- 필요 없는 주석 모두 삭제 (아래 기본 주석 포함)
- .h/.cpp include 주석
- .h/.cpp include 주석
- 헤더 파일 include 없이 .h 파일에서 class/struct 전방 선언
- 기능 별 폴더 만들어서 .h/.cpp 파일 배치하기
- AI
- Animation
- Character
- Components
- Game
- GameData
- Gimmick
- HUD
- Input
- Interface
- Item
- Player
- Skill
- System
- UI
- Weapon
- 함수나 클래스에 대한 주석은 헤더파일에 작성하기
- Log 카테고리
- DSLog : 일반 테스트 로그
- DSNetLog : 일반 네트워크 테스트 로그
- DSSkillLog : 스킬 테스트 로그
- DSItemLog : 아이템 테스트 로그
- DSStatLog : 스탯 테스트 로그
- DSDataLog : 데이터 로딩시 로그
- DSUILog : UI용 로그
- DSInputLog : Input 컴포넌트 로그
언리얼 엔진 폴더 규칙
- 기획/아트분들은 아래 폴더 규칙 준수해주시길 바랍니다.
GitHub - Allar/ue5-style-guide: An attempt to make Unreal Engine 4 projects more consistent
데이터 에셋
게임 시작 시 로드해서 Map에 등록되어야 하는 에셋이라면,
Map의 Key로 사용할 enum이 필요하고 (예 : DSEnums::ECharacterType), 이것을 데이터 에셋에 포함시켜야 한다.