오늘은 드디어 프로젝트의 제출날이다. 마지막까지 버그를 잡고 빌드본을 만들어보자.
오늘의 TIL에 대해서는 개발 내용에 관한 것보다는 작업 방식에 대한 걸 다뤄보고자 한다.
먼저 전날에 병합 작업을 진행하면서 발생한 문제를 전부 정리하고, 해당 리스트를 노션에다가 정리했다. (해당 내용을 캡쳐하고 싶었지만 벌써 다 지워놨더라...)
해당 노션에서 팀원들이 해결해야 할 버그 목록들을 확인하고서 각자 이걸 누가 맡겠다면서 누가 작업하고 있다고 적어놓고, 작업이 완료되면 누가 작업을 완료했다고 적으면서 버그 수정 작업을 진행했다.
개인적으로 이와 같은 방식이 너무 괜찮다고 생각했고, 체크리스트로 되어 있는 작업들이 하나씩 해결되어 가는 과정을 보는 것이 뿌듯하기도 했다.
이와 같은 방식으로 버그 및 구현 내용을 해결해나가면서 금일 빌드까지 완료했고, 빌드본 제출로 프로젝트 자체는 끝났지만 남은 주말동안 추가 버그 수정을 위한 리스트도 정리했다.
맵 위치에서 오차가 발생한다는 문제가 발생했다. 이 문제가 발생하는 원인은 크게 두 가지였다.
이런 부분은 생각지도 못했기 때문에 유의해서 사용하고, Lerp에 대한 최종 좌표 확정에 대한 부분과 Shake DOTween 애니메이션에서의 좌표 초기화 등의 과정이 필요하다는 것을 알게 되었다.
private void Update()
{
if (!PhotonNetwork.IsMasterClient)
{
float distance = Vector3.Distance(transform.position, networkPos);
if (distance > 0.01f)
{
transform.position = Vector3.Lerp(transform.position, networkPos, Time.deltaTime * 10f);
}
else
{
transform.position = networkPos;
}
}
}
private void MapShake()
{
gameObject.transform.DOShakePosition(0.5f, 1, 10, 90).OnComplete(ReturnToOriginalPosition);
}
private void ReturnToOriginalPosition()
{
gameObject.transform.position = Vector3.zero;
}
결과적으로 빌드본이 나왔고, 사실 인스펙터 상으로 잘 돌아가던 게임이 빌드본에서는 매우 많은 문제를 가지고 나왔다. 이에 따라 나온 TODO 목록만 이만큼이다.
그래도 그나마 다행인 건 불안정하긴 해도 원 사이클까지는 게임이 돌아간다는 점이었다. 또한 로컬 튜토리얼 모드도 있었는데 이거는 다른 분이 만들어 놓은 것으로, 실제 맵을 플레이해보는 건 처음이었기에 정말 고전하면서 깼다.
그리고 무엇보다도 제일 어이가 없었던 건 저 TODO 에 있는 것 중에서 3D 메테리얼에 대한 것인데, 모두가 똑같은 빌드본을 다운받았는데 이상하게 나만 캐릭터와 오브젝트가 3D로 나오는 현상이 발견되었다.
분명 인스펙터로 게임을 할 때는 이렇게 나오는데, 빌드본을 플레이하면 이렇게 나온다.
왜지... 진짜 왜 이런지는 모르겠다...
현재로서는 플레이어 중 나만 발생하는 문제지만, 이렇게 발생하는 사례가 있다면 누군가는 이런 버그를 겪게 될 수도 있을 것이다. 따라서 해당 버그의 원인이 뭔지 확인해보고자 한다.