프로젝트 개요
팀원 소개
프로젝트 소개
클래스 설계
플로우 차트
시연 영상
기술스택
GitHub
- Organizations 리포지토리 생성
- GitHub Desktop 사용
- Stash로 작업물을 유지한 채 Pull 받아온 후 Push하여 Main에서 안전하게 받아오기
- 그외 Discard, Revert 사용해봄
- 깃 플로우 브랜치 전략 : Main -> Dev -> Feature
- 깃 컨벤션 규칙 준수
C#
- 코드 컨벤션 규칙 적용
- Character.cs, QuestManager, SceneManager 싱글톤 패턴을 활용하여 데이터 접근성 확보
- 멤버 변수 프로퍼티 사용 -> get 용이, set 제한
- Json : 경량화된 데이터 포멧을 사용하여 게임 데이터 저장
- List형 데이터를 클래스로 한 번 더 감싸주는 코드를 작성하여 Json 저장 용이
- Virtual, Override 키워드 활용(다형성 구현)
- Enum 열거형 타입 지정
- 아이템 베이스 클래스는 Interface로 구현하여 유연성 상승
- 클래스별 분리 및 파일링 작업 -> 구조의 가시성 확보
- 딕셔너리 활용으로 Scene마다 제목과 설명을 불러오기 용이
- 클래스는 데이터를 가지는 클래스와 기능을 수행하는 클래스로 분리하여 체계적인 구조로 코드 작성
커뮤니케이션 협업툴
Notion
- 팀원 정보 정리
- 시간, 깃허브 규칙 및 약속
- 목표 설정
- 하루 계획 작성
Slack
- 소통 메신저
클래스 설계툴 - Figma
- 클래스 설계로 전반적인 구조 틀 잡고 구현 시작
트러블 슈팅
[Problem 1]
Scene들을 어디서든 불러오고 싶었는데 추상 클래스여서 static으로 붙일 수 없는 문제
[Resolve]
SceneManager.cs를 두어서 싱글톤으로 관리
추상클래스는 구현부도 있으니 선언부만 있는 인터페이스로 변경
[Result]
팀원들과 충분히 고민해본 후 튜터님께 찾아가서 방법을 알게되었는데, 추상클래스와 인터페이스의 차이를 명확히 알 수 있었다.
[Problem 2]
퀘스트 완료 후 몬스터수를 초기화해야했는데 적용되지 않는 오류
[Resolve]
모두 함께 머리를 싸매고 코드를 바라봤는데 등잔 밑이 어둡다고 코드만 바꿀 줄 알았지 알맞은 퀘스트 위치가 아니였다.
1번 퀘스트인데 3번 퀘스트에 적용을 했던 것이다. 디버깅을 통해 알게 되었다.
[Result]
코드 수정에만 집중을 했는데 알맞은 곳인지 다시 한 번 확인해야겠다.
[Problem 3]
전체 코드 구조를 구상하는 것이 어려웠다.
처음엔 규모가 작다고 생각했는데 점점 파일이 늘어날 수록 이걸 어떻게 연관시켜야할지 고민이 많았다.
[Resolve]
끊임없는 토의와 새로운 아이디어, 때로는 튜터님의 도움을 받아 해결했다.
[Result]
초반에 아무리 구조를 잘 짜도 수정되기 마련이다.
그래서 객체화를 잘 시켜야한다는 것을 몸소 느꼈다.
라스트 멘션
깃허브 링크
반응형
'스파르타 게임개발종합반(Unity) > TIL - 본캠프 매일 공부 기록' 카테고리의 다른 글
2024.05.09 TIL - 부채꼴 모양으로 화살 날리는 로직 (0) | 2024.05.09 |
---|---|
2024.05.08 TIL - GravityScale, InputManger 설계 (0) | 2024.05.08 |
2024.05.03 TIL - 클래스 명시적 형변환, 포인터 (0) | 2024.05.03 |
2024.05.02 TIL - 추상화 클래스(abstract), 인터페이스(interface), 상속, static, 싱글톤 (0) | 2024.05.02 |
2024.05.01 TIL - 클래스 분리의 중요성 (0) | 2024.05.01 |
댓글