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

이형원·2025년 7월 31일
0

XR플밍

목록 보기
151/215

1. 금일 한 업무 정리

오늘은 비교적 작업량이 많지는 않았고, 문서 작업 및 리팩토링, 새로운 업무 분배 후 작업에 돌입했다

  • 프로토타입 제출을 위한 문서작업
  • 어제자 작업본 리팩토링 진행
  • TextMeshPro에 대한 R&D - 셰이더 개발 시도를 했으나 너무 어려워서 해당 작업 보류
  • 새로운 작업 분배 - 카드 담당자의 업무를 일부 받아 카드 씬의 애니메이션 작업에 투입됨

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

오늘은 작업량 자체가 많지도 않았고, 뭔가 배운점을 요약하기에도 깊게 파고든 게 없어서 가볍게 현재까지의 작업 상황에 대한 회고를 하고자 한다.

* 지금까지 한 작업목록 요약

  1. 맵 5종 구현 및 고정형 플랫폼 구성

<요약>
아래와 같이 5개의 맵을 제작함. 다각형 플랫폼의 경우 Probuilder를 사용하여 기존의 기본 오브젝트를 Merge 하는 방식으로 하나의 오브젝트로 변환하여 제작함.

  1. 무너질 수 있는 플랫폼 & 로프 시스템

<요약>
무너질 수 있는 플랫폼은 물리 영향을 받아야 하나, 처음 로딩될 때에는 Kinematic으로 설정되어 있음. 총알 혹은 해머에 부딪쳤을 때 FixedJoint가 끊어지는 방식으로, 해당 충격을 받은 오브젝트의 위에 있는 오브젝트들이 전부 Bodytype가 Dynamic로 변경되어 오브젝트가 무너지는 듯한 효과를 연출함.
오브젝트 네트워크 동기화를 위해 Master Client가 물리 연산을 전담하는 방식으로 설정하였음. 마스터가 아닌 플레이어 시점에서는 모든 오브젝트가 Kinematic으로 고정되고고, Master Client 시점에서만 오브젝트의 물리 Bodytype가 변경되는 방식으로 구성하여, 오브젝트의 위치, 회전, 속도, 회전속도를 참여한 플레이어에게 전달하는 방식으로 동기화에서의 오차를 줄이고자 함.

로프 시스템의 경우 Hinge Joint를 사용하여 구성하였으며, 등록된 Link 프리팹의 개수를 설정하여 로프의 길이를 결정하고, 오브젝트를 연결하여 물리 작용을 가능하게 구성함

  1. 셰이더 그래프 및 포스트 프로세싱을 이용한 맵의 디자인 구성

<요약> 플랫폼 디자인 및 캐릭터에 사용될 셰이더 그래프를 구성함. 포스트 프로세싱으로 맵 플랫폼만 블룸 효과를 주어 디자인적 요소를 강화함함

  1. 게임 씬의 구성과 연출

<요약> 게임 씬 구성을 위해 필요한 것은 세 가지로, 1) 중복 없이 맵을 랜덤 로딩, 2) 맵의 이동에 대한 애니메이션적 연출, 3) 한 게임 종료에 따른 UI 애니메이션 연출 이 필요하다. 이에 따라 DOTween을 사용한 애니메이션 연출로 해당 방식을 구현함

3. 개선점 및 과제

3.1 새로운 업무에 대한 작업 시작

이번에 새로 분배받은 업무의 내용은 카드 씬에서의 캐릭터 움직임을 구현하는 것이다. 자세한 동작 방식은 다음과 같다.

캐릭터가 둠칫둠칫 움직이는 것은 간단하게 구현 가능할 것 같은데 문제는 저 팔이다. 저 팔이 구현하기가 참 어려울 것 같은데, 방법에 대해 고민해보자.

3.2 동기화 작업 및 연결 작업

이와 같이 구현 문제도 문제지만, 오늘 빌드본에서 나온 문제점을 생각해보면 동기화 작업도 급한 내용이다.
동기화가 되지 않는 부분은 다음과 같다.

  • 두 플레이어가 같은 맵에 진입했는데도, 각 플레이어에게 생성되는 랜덤 맵이 동일하지 않음
  • UI가 동기화가 되지 않음
  • 카드 씬 미구현으로 씬 연결 작업 필요

해당 부분은 게임 매니저 및 파이어베이스 등의 세팅이 들어간 뒤에야 작업할 수 있는 내용이라서 조금 후순위의 내용이지만, 그래도 중요해서 넣어놨다.

3.3 디테일 수정

UI 및 여러 디테일에 대한 수정이 필요하다.

profile
게임 만들러 코딩 공부중

0개의 댓글