XR플밍 - 12. UnityEngine3D 네트워크 프로그래밍 - 네트워크 프로젝트 Round5 14일차 - 제출일 (8/8)

이형원·2025년 8월 8일
0

XR플밍

목록 보기
159/215

오늘은 드디어 프로젝트의 제출날이다. 마지막까지 버그를 잡고 빌드본을 만들어보자.

1. 금일 한 업무 정리

2. 문제의 발생과 해결 과정

2.1 금일 작업한 방식

오늘의 TIL에 대해서는 개발 내용에 관한 것보다는 작업 방식에 대한 걸 다뤄보고자 한다.

먼저 전날에 병합 작업을 진행하면서 발생한 문제를 전부 정리하고, 해당 리스트를 노션에다가 정리했다. (해당 내용을 캡쳐하고 싶었지만 벌써 다 지워놨더라...)
해당 노션에서 팀원들이 해결해야 할 버그 목록들을 확인하고서 각자 이걸 누가 맡겠다면서 누가 작업하고 있다고 적어놓고, 작업이 완료되면 누가 작업을 완료했다고 적으면서 버그 수정 작업을 진행했다.

개인적으로 이와 같은 방식이 너무 괜찮다고 생각했고, 체크리스트로 되어 있는 작업들이 하나씩 해결되어 가는 과정을 보는 것이 뿌듯하기도 했다.

이와 같은 방식으로 버그 및 구현 내용을 해결해나가면서 금일 빌드까지 완료했고, 빌드본 제출로 프로젝트 자체는 끝났지만 남은 주말동안 추가 버그 수정을 위한 리스트도 정리했다.

2.2 맵 위치 오차 문제

맵 위치에서 오차가 발생한다는 문제가 발생했다. 이 문제가 발생하는 원인은 크게 두 가지였다.

  • 맵이 움직이면서 자리잡고 있는 과정에서, Lerp로 이동하는 방식을 취하고 있기 때문에 최종 좌표로 고정되지 않는 문제
  • DOShakePosition을 이용한 충격 효과를 줬을 때, 마지막에 좌표를 초기화해주는 과정이 없으면 기존 좌표에서 벗어나는 문제

이런 부분은 생각지도 못했기 때문에 유의해서 사용하고, Lerp에 대한 최종 좌표 확정에 대한 부분과 Shake DOTween 애니메이션에서의 좌표 초기화 등의 과정이 필요하다는 것을 알게 되었다.

  • Lerp에 대해 좌표 확정하기
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;
}

3. 개선점 및 과제

결과적으로 빌드본이 나왔고, 사실 인스펙터 상으로 잘 돌아가던 게임이 빌드본에서는 매우 많은 문제를 가지고 나왔다. 이에 따라 나온 TODO 목록만 이만큼이다.

그래도 그나마 다행인 건 불안정하긴 해도 원 사이클까지는 게임이 돌아간다는 점이었다. 또한 로컬 튜토리얼 모드도 있었는데 이거는 다른 분이 만들어 놓은 것으로, 실제 맵을 플레이해보는 건 처음이었기에 정말 고전하면서 깼다.

그리고 무엇보다도 제일 어이가 없었던 건 저 TODO 에 있는 것 중에서 3D 메테리얼에 대한 것인데, 모두가 똑같은 빌드본을 다운받았는데 이상하게 나만 캐릭터와 오브젝트가 3D로 나오는 현상이 발견되었다.

분명 인스펙터로 게임을 할 때는 이렇게 나오는데, 빌드본을 플레이하면 이렇게 나온다.

왜지... 진짜 왜 이런지는 모르겠다...
현재로서는 플레이어 중 나만 발생하는 문제지만, 이렇게 발생하는 사례가 있다면 누군가는 이런 버그를 겪게 될 수도 있을 것이다. 따라서 해당 버그의 원인이 뭔지 확인해보고자 한다.

profile
게임 만들러 코딩 공부중

0개의 댓글