Project. DayLight
기획 - 플밍 합반 프로젝트가 시작됐다. 아직 기획이 확정되지 않았기에, 우선 플밍 팀원 분들과 이전 프로젝트 피드백 및 컨벤션을 정했다.
Code Convention
1. 변수명
- private : _stringName (카멜 표기법)
- public : StringName (파스칼 표기법)
- param : stringName (카멜 표기법)
2. 접근 한정자 명시적으로 작성할 것
3. Property는 get; set; 으로 통일 및 Property<T> 활용
public class Property<T>
{
private T _value;
public T Value
{
get { return _value; }
set
{
if(!EqualityComparer<T>.Default.Equals(_value, value))
{
_value = value;
OnChanged?.Invoke(_value);
}
}
}
public event Action<T> OnChanged;
public Property(T value)
{
_value = value;
}
}
4. 주석(annotation)
- public 메서드에는 summary까지는 아니어도 어디에서 어떻게 사용되는지에 대한 설명 필요
- 매개변수가 많을 경우 summary를 활용하여 매개변수에 대한 설명도 언급
- public 필드나
Property<T>의 경우 필요하면 설명
Comit Message Convention
1. Comit Type
- [Feat] : 기능 구현 및 추가
- [Chore] : 단순 작업 (폴더 정리)
- [Docs] : 문서 작업
- [Fix] : 이슈 해결
- [Issue] : 이슈 발생
2. Subject
- 한글, 영어 혼용 가능
- 50글자 내외, 영어 사용시 첫글자 대문자 사용
- 마침표, 특수기호, 과거시제 사용x
Git Convention
1. projects
- Issue 발생시 projects에 추가할 것
- 버그는 [Bug] 기능 구현은 [Feat]으로 작성
- 예시 : [Bug] Camera shake issue / [Feat] Add Backpack script
2. Branch
- Main : 정상적으로 작동되는 기능들을 Main Branch에 병합
- Develop : 기능을 개발하는 Branch. 매일 6시 전 머지, 충돌 확인. 개인 Branch는 Develop에서 생성
- Initial Branch : 개인이 전체적으로 작업하는 Branch
- Initial_Feature : 개인이 구현하는 기능을 담당하는 브랜치
3. Pull Request
풀리퀘스트는 팀장 승인만 있어도 가능하도록 설정
Foldering Convention
1. Shared folder
- Imports : 에셋, 외부 파일 관리. private으로 repository 생성
- Scenes : 씬 파일 관리
- Scripts : 모든 스크립트 파일 관리, S.O도 함께 관리
- Prefabs : 프리팹 파일 관리
2. Personal folder
- 이름 이니셜로 폴더 생성, 하위에 작업 내역 정리
- 작업이 완성되는 경우 위의 공용 폴더에 이름에 이니셜을 적은 후 파일 이동
- 예시 : LSW_PlayerController
Feedback
- 코딩이 잘 풀리지 않는 경우 팀원들과 문제 상황 공유하기
- 서로 참조하는 클래스 관계에서 특정 메서드의 알고리즘을 구현할 때 의견 교환 활발하게 진행
- 미리 구현이 필요한 기능에 대한 R&D를 미리 진행
예상 구현 기능
- 인벤토리, 아이템 제작(조합)
- 몬스터 AI, NPC AI
- 플레이어 스탯, 인게임 HUD / MVP 패턴
- 시간 관리(낮 / 밤) => 시간에 따른 이벤트 호출, 행동 패턴 변화
- 상인 NPC (아이템 교환 기능)
- 맵 생성? 맵을 정해놓을지?
- 대화창, PopUp창
- 데이터 저장/불러오기
- 무기(총, 총알)
내일(6/20) Todo List
- 기획 진행 상황 확인 이후 기능 R&D, 분배
- 예상 기능 코드 공유
Property<T>
Singleton<T>
- CSV File Reader(TextLoader)
- Time class 활용
- Data Save/Load class
- ObjectPool Pattern
- Scriptable Object
- UI Scene (SceneManager.LoadScene(Additive))
- 절차적 맵 생성