지난주까지 RPC 동작을 구현해보았다.
캐릭터 이동에 따른 위치 동기화를 구현해볼 것이다.
필요한 것
Unity의 IsOwner 매커니즘 이해
객체 replication 매커니즘
GameObject별로 objectId를 두고, Network 통신을 한다면 NetworkObjectId도 한다.
그런데 멀티플레이 게임인데 ObjectId만 있고 NetworkId는 없는 경우가 있는가? 이 두 개가 같은 말인 건 아닌지? 다르게 할 필요는 없는 듯하다. NetworkId도 ObjectId를 쓰면 되는 것 같다. 어쨌든 create를 서버로 통일만 하면 된다. 근데 일단은 그냥 각각 사용해서 둘 다 쓰자!
CRTP (Curious Recurring Template Pattern)
위와 같이 분석해보니 CRTP는 좀더 성능을 얻기 위한 거대한 흑마법이라는 걸 알았다. 컨테이너에 넣기 위해 요상한 방법을 써야 함. 좋지 않은 것으로 파악!!
있는 걸 재활용하면서 Client → Server 방향으로 Init을 요청하는 게 좋겠다.
Create~ Update~
프로세스 동기를 어떻게 맞추지? Server가 World와 Player를 만들어서 다 전파하고 시작! 한다고 하면 깔끔해보인다. Client는 ProduceWorld 상태인 것으로.