스파르타 내배캠 44일차 TIL
C3조_ 이석삼조
숙련주차 프로젝트도 잘 마무리 되었다. 발표 이후 튜터님들의 평가도 나쁘지 않았다. 멀티를 시도한 것만으로도 충분히 고생했고 처음 시도하는 기술인데 짧은 시간 동안 잘 만든 것 같다고 공통적으로 말씀해주셨다. 그리고 생각보다 동기화를 잘 이해해서 필요한 부분에만 rpc를 달았다고 하셨다. 이 외에도 여러 조언이 있어서 이것을 정리 해보려고 한다.
1. UI 동적생성
게임 개발에 있어서 프리팹을 사용하는 경우가 많다. 또한 여러 씬에서 동일하게 사용하는 게임오브젝트와 스크립트가 존재한다. 이런 경우와 성능 향상을 위해 프리팹 동적 생성이 중요하다. 이때 게임 오브젝트 뿐만 아니라 중복되는 UI도 그런 식으로 사용이 가능하다. 공통되는 UI에 해당하는 UI스크립트를 만들어서 프리팹 화 한다. 그리고 필요할 때 UI가 생성되도록 하는데 이때 사용되는게 UIManager가 되어야 한다.
이 사실을 몰랐을 땐, ui의 기능을 모두 uimanager에 써놓고 그것을 singleton화 하여 필요할 때 사용할 수 있게 했는데 그것보다는 UiManager가 다른 uiScript를 사용할 수 있게끔 생성하는 역할이 되어야 한다.
이 부분은 챌리저 특강을 통해 따로 공부하여 정리하면 좋을 것 같다.
2. 데드레커닝
이 방법은 멀티 플레이어의 어떠한 움직임도 자연스럽게 보일 수 있게 해주는 방법이다. 게임에 피드백을 주신 튜터님께서 게임 중에 플레이어 이동과 기믹 이동이 부자연스러운 점을 꼬집어주셨다. 이를 해결하기 위해서 다른 멀티 서버에서는 이 데드레커닝 방법을 사용한다고 하셨다. 데드레커닝이라는 것을 처음 들어서 이것에 대한 기본적인 설명을 먼저 정리해봤다.
데드레커닝
분산 네트워크 기반 실시간 시뮬레이션 환경에서 트래픽 데이터를 감소 시키기 위해 사용하는 기법
- 데드(Dead) : 신호를 받지 못하고 있는 상태
- 레커닝(Reckoning) : 추산한다는 의미로 신호가 없는 동안에는 추측하여 상태 정보를 갱신하는 것
- 항법과 관련된 방법이지만 게임에 적용하면 캐릭터의 이동경로를 예측하는 방법
- 현재 위치 = 이전위치 + (속도\*시간) + (1/2\*가속도\*시간^2)
결론적으로 실시간 통신을 하는 작업에서 서로의 프레임 단위 신호를 주고 받는 것에 대해서 동작이 자연스럽게 하기 위한 방법이라고 생각하면 될 것 같다.
이것은 포톤에서도 사용하는지 찾아본 결과, 사용하지는 않고 photontransformview에서 이 끊기는 것을 방지할 수 있었던 것 같다. 위치 동기화하는 수치를 조금 건드렸다면 이런 문제를 해결할 수 있었을 것 같다.
https://doc.photonengine.com/ko-kr/pun/v1/demos-and-tutorials/package-demos/rpg-movement
Pun 1 RPG 이동 데모 | Photon Engine
이 데모는 Photon을 이용한 캐릭터의 기본 이동을 동기화 할 것 입니다. 새로운 컴포넌트는 지점까지 이동할 때 다양한 옵션이 있고 로컬 캐릭터처럼 원격 캐릭터가 부드럽게 이동 하는 것처럼 보
doc.photonengine.com
3. 커맨드 패턴
'Unity > TIL' 카테고리의 다른 글
Unity 바인딩 (0) | 2024.07.02 |
---|---|
[면접대비] 객체와 한정자 (0) | 2024.07.01 |
Unity photon 멀티플레이 예외처리 (0) | 2024.06.24 |
Unity Photon.Pun2 멀티 동기화 (0) | 2024.06.21 |
Unity Photon.Pun2 멀티 플레이 (1) | 2024.06.20 |