포톤 첨써보는데
만약 2인 게임이고 한명이 마스터, 한명이 클라이언트라고 가정할게요
오브젝트 풀링을 써서 마스터 한명만 풀링에서 시작할때 오브젝트들을 다 포톤네트워크.Instantiate로 생성하고
이걸 이제 다시 비활성화해야하는데, 그것도 마스터가 비활성화해서 다른 클라에게 알려줘야한다더라구요
그리고 풀에서 꺼내서 쓰는 활성화도 마스터가 활성화를 한 다음에 그걸 알린다는데
그러면 만약에 다른 클라이언트가 자신의 무기에서 풀에 있는 오브젝트를 꺼내서 활성화해야한다면 어떻게하는거에요?
보면 마스터가 오브젝트 풀의 생성/활성화/비활성화 모두 담당한다는데 활성화는 다른 플레이어도 해야할때가 있잖아요
무기는 유저마다 가지고 있는 오브젝트라 마스터가 관리하는 풀링 대상이 아닌거 같은뎅... 마스터가 단독으로 관리해야하는건... 필드에 몬스터나 떨구는 아이템 같은 거 같고, 무기도 풀링으로 하되 마스터는 마스터 자기의 무기만, 클라는 클라 자기의 무기만 해야할 거 같음...
ㄴㄴ 그뜻이 아니라 무기에서 발사되는 탄같은거 말한거임. 투사체같은건 풀에서 활성화하는거니깐
처음 시작할땐 관점을 잘 잡아야함. 씬에서 이건 내 오브젝트 저건 저 사람 오브젝트로 구분해서 생각하면 엄청 헷갈릴꺼임. 특정 클라이언트 입장에서 해당씬에 있는 모든 오브젝트는 사실상 내꺼임. 모든게 내 컴퓨터가 컨트롤 해줘야 하는 요소인거임. 모든 오브젝트가 내가 컨트롤 해줘야 한다는걸 인지하면 정말 간단해짐 내가 행동해서 생성하는 정보는 다른 클라이언트에게 넘겨주고 그 외의 것들은 정보를 받아와야 하는거임.
그러면 정보를 어떻게 주고받을건지를 결정해야함. 모든 클라이언트가 마스터에게 정보를 보내고 마스터가 다시 클라이언트에게 정보를 보내는 구조로 해도 되고 아니면 자신을 제외한 모두에게 다이렉트로 정보를 뿌려도 되고 또 일방적으로 정보를 받아서 처리하는게 싫으면 정보를 요청하면 해당 정보를 보내주는 구조로 작성할수도 있고 결론적으로 오브젝트 풀의 경우 나같으면 고정된 크기로 다른 클라이언트것도 미리 만들어 두던가 아니면 다른 클라이언트에서 위치 속력 등등 값을 보내오면 내 오브젝트 풀에서 활성화시키고 값을 집어넣어주는 형식으로 구현할것 같음
RPC로 처리할 수도 있을 거 같다는 생각... 1. 클라 > 마스터 한테 RPC로 총알 발사에 대한 '정보'를 넘김 2. 마스터는 RPC로 받은 정보로 총알 오브젝트 생성 및 발사