팀 프로젝트 준비 작업

이쩜오·2025년 4월 7일

프로젝트 25L

목록 보기
7/7

팀프로젝트를 진행하기 앞서 개발 컨벤션을 정하고자 한다.
언리얼 엔진의 컨벤션을 바탕으로 진행했다.

개발 환경

회의 주기

회의 주기 및 방식

  • 스크럼 회의 + 회의 (오프라인)
    • 회의하고 싶은 내용, 물어보고 싶은 내용 적어뒀다가 말하는 시간 (14:00 ~ 15:00)
  • 코드 리뷰 : 일주일에 최소 한 시간은 다른 사람 코드 읽어 보고 리뷰
  • 전체 회의 : <목요일 저녁 8시 - 9시 30분>
    • 스프린트 2주 간격 ( 기획자 포함 )
      • 게임적인 요소 결정하기
      • 2주간 목표 정하기
      • 지금까지 동작하는 프로토 타입 시연

개발자 컨벤션

Visual Studio 명명 규칙

  • 프로젝트 접두사 DS
  • RPC 명명 규칙
    • ClientRPC_
    • ServerRPC_
    • MulticastRPC_
    • 예시) MulticastRPC_Attack
  • 델리게이트 명명 규칙
    • ‘F’ 시작
    • 이벤트의 경우 FOn~~~
  • 전체적으로 사용할 델리게이트
    • 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 주석
    • 알파벳 순으로 정렬

      .h 파일
      //Default
      
      //UE
      
      //Game
      
      //UHT
      
      .cpp 파일
      //Default
      
      //UE
      
      //Game
  • 헤더 파일 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), 이것을 데이터 에셋에 포함시켜야 한다.

profile
이쩜오 기록

0개의 댓글