TIL)2024-02-05 중간점검 발표
2024. 2. 5. 23:30ㆍ내외 교육들/TIL
중간 점검을 위한 발표에서의 피드백
- 트러블 슈팅을 위한 기존 코드 구조의 문제점 분석
NPC 스폰 과정에서 리스트의 요소를 넣다 빼는 것이 메모리의 쓸때없는 사용이라 생각하여, 해결 방법을 리스트 대신에 딕셔너리의 bool 형을 통한 true/false를 바꾸는 것을 생각 중으로 해서 트러블 슈팅 제출
// 현재 빈자리를 타겟으로 두기 위해서 자리를 담당하는 게임오브젝트들을
// 리스트를 만들어 오브젝트들을 넣어두었습니다.
[SerializeField] private List<GameObject> TargetPrefabList;
// 빈자리가 아니게 된 자리 오브젝트들을 구분하기 위해
// 위의 리스트의 인덱스 번호들을 담아두는 자리차짐 리스트를 만들었습니다.
private List<int> usedTargetIndex = new List<int>();
public List<int> UsedTargetIndex
{ get { return usedTargetIndex; }
set { usedTargetIndex = value; } }
// 빈자리 인덱스가 들어가 있는 인덱스의 여부를 확인하고
// 해당 자리의 인덱스가 없다면 인덱스를 반환해주는 메서드입니다.
private int GetRandomTargetIndex()
{
int randomIdx;
do
{
// 타겟 프리팹의 리스트의 수만큼의 랜덤을 구한다.
randomIdx = Random.Range(0, TargetPrefabList.Count);
}
while (usedTargetIndex.Contains(randomIdx));
// 사용된 자리의 인덱스가 있다면 while 문을 돌고 없으면 반복문 종료
return randomIdx; // 빈자리라 판단하여 해당 인덱스를 반환
}
// 자리를 배당받았다면 해당 자리는 빈자리가 아니므로
// 자리차짐 리스트에 더하고, 빈자리가 아니게 된다면
// 해당 자리의 인덱스를 리스트에서 빼는 것으로 동작
usedTargetIndex.Add(randomIndex);
// npc 컨트롤러 스크립트가 스스로 파괴할 때 이 코드를 사용
SpawnManager.UsedTargetIndex.Remove(index);
낮 시간대의 플레이 때 게임적 요소를 더 추가한다.(NPC 종류, 기획에서 아직 구현하지 못한 것)
이것은 인정해야 할 것이, NPC 스폰, 상호작용, 이동에 구현 시간을 너무 많이 들었던 것이 문제였고, 이젠 상황을 인지해서 좀 더 빠르게 개발을 진행해야 한다.npc 행동 사이클을 구현하는 데에는 특별한 패턴 유무에 대한 설명이 부족했다.
딱히 특별한 패턴을 사용하기에는 아직 디자인 패턴을 실용적으로 사용하기에는 내공이 부족할 뿐더라, 딱히 특별한 패턴을 사용해야 겠다는 생각은 하지 않았다. 단지 NPC의 상호작용에 따른 단순한 타겟팅 및 이동이지만, 보다 나은 개발자를 위해서 디자인 패턴을 실용적으로 능숙하게 사용하고, 그것을 잘 알면서 설명해야 하는 것이 필요하다고 생각한다.
'내외 교육들 > TIL' 카테고리의 다른 글
TIL)2024-02-07 CCTV 초기 구현 (1) | 2024.02.07 |
---|---|
TIL)2024-02-06 3번째 기술 면접 연습 (1) | 2024.02.06 |
TIL)2024-02-02 스폰 기능 초기 완성 (1) | 2024.02.02 |
TIL)2024-02-01 게임 타이머 및 스폰 심화 과정 (0) | 2024.02.01 |
TIL)2024-01-31 상호작용, 퇴장, 오브젝트 자가삭제 완료 (0) | 2024.01.31 |