TIL)2024-03-04 잊고 있었던 트러블 슈팅
2024. 3. 4. 23:00ㆍ내외 교육들/TIL
오늘은 최종 프로젝트 작업 마무리 중에 생각났던 트러블 슈팅 하나를 정리하는 시간을 가져볼 것이다.
NPC의 행동 개선
[원인]
술을 원하는 손님 NPC의 행동 패턴이 기존 게임 기획과는 매끄럽지 않게 지적되었다. 지적한 것은 경찰의 단속이나 플레이어가 가게를 위장 상태로 바뀌었는데, 손님들은 계속 술을 주문한다는 것이다. 그래서 이 점을 개선할 것이다.
[개선방안]
- 손님 NPC들의 상호작용들은 Update() 문 안에서 시간 경과에 따른 주변 환경의 변화에 따라서 행동을 결정하도록 각기 다른 행동 패턴들을 메서드로 구현하였다.
- 문제는 시간은 delta.Time 값을 끊임없이 더해서 시간의 지남을 구현하지만, 특별한 상황(경찰의 단속, 플레이어의 위장 상태 전환)은 한 두번의 변화가 일어나며, 다시 전환하기에는 NPC 스크립트 내부에서 이러한 변화를 감지하기 힘들다
- 기존의 이벤트 함수 내에서 특별한 조건에 따라서 변화 시키기에는 조건을 만드는 것에 많은 복잡성과 불규칙적인 상황을 캐치하기가 함들다.
- 더 쉬운 방법은 코루틴 메서드 내에 yield 반환문에서 특수한 조건을 만족하는 람다식을 조건으로 걸어버리는 것이다.
// 경찰의 검문 상태를 실시간으로 감지하는 코루틴 함수
private IEnumerator PoliceSearchStartStatus()
{
yield return new WaitUntil(() => isSearching == true && interactionStarted);
isChanged = true;
}
private void Start()
{
StartCoroutine(PoliceSearchStartStatus())
}
// Update 문 내에서 경찰이 심문 상태에 들어가면 bool 값이 바뀌는 컴포넌트 내의 bool을 찾아
// isSearching 내에 적용시기면 실시간으로 bool의 변화를 감지할 수 있다.
[해결]
이 코루틴을 Start()에 선언을 해도 해당 bool의 변화를 실시간으로 감지해서 종료시킬 수 있기 때문에 훨씬 더 간결하게 사용할 수 있다.
'내외 교육들 > TIL' 카테고리의 다른 글
TIL)2024-03-06 FSM과 상태 패턴 (0) | 2024.03.06 |
---|---|
TIL)2024-03-05 게임 구조 설명 (0) | 2024.03.05 |
TIL)2024-02-29 기능 개선 중... (2) | 2024.02.29 |
TIL)2024-02-28 피드백 수집 및 패치 시작 (0) | 2024.02.28 |
TIL)2024-02-27 최종 프로젝트 빌드 배포 시작 (0) | 2024.02.27 |