C# 서버

플레이어 입장, 퇴장

영춘권의달인 2024. 5. 5. 20:33

실시간 멀티플레이 게임은 서로의 모습이 보이는것이 기본이다.

하지만 이 기본부터가 쉽지가 않다.

서버와 클라의 오브젝트 정보들을 동기화하기 위해서 서로 오브젝트들의 정보를 관리하는 클래스가 필요하고, 클라에서는 씬마다 존재하는 오브젝트들이 다르기 때문에 서버에서는 이것을 GameRoom이라는 클래스로 클라의 씬에 대응되도록 관리하였다.

또 자신의 컨트롤러와 다른 플레이어의 컨트롤러를 분리하는 등 필요한 작업이 많았다.

 

저번에 이어서 클라에서 씬 전환 완료 패킷을 서버로 보내면 서버에서는 해당 씬에 대응하는 Room에 플레이어를 입장시키고, 입장시키면 Room에서는 클라에 본인에게 자신의 정보(Enter 패킷)를 보낸다.

그리고 이미 해당 Room에 있는 플레이어들의 정보를 보내준다(Spawn패킷). 

그리고 이미 Room에 있는 플레이어들에게 새로운 플레이어가 입장했다는 정보를 보내준다.(Spawn패킷)

 

씬을 옮기거나 게임에서 나가게 되면 Room에서도 해당 플레이어 정보를 삭제하고, 해당 Room의 플레이어들에게 씬에서 플레이어가 나갔다는 정보를 보내준다.(Despawn패킷)

본인이 나갔다면 Leave패킷을 보내주는데, 씬을 옮겨서 나가게 되었다면 오브젝트를 관리하던 메모리를 날려주고 새로운 씬에서 새출발? 을 하게 해준다.

 

'C# 서버' 카테고리의 다른 글

몬스터 AI, 스탯  (0) 2024.05.08
이동 동기화  (0) 2024.05.06
게임 입장  (0) 2024.05.04
서버 - Unity클라 통신 테스트  (0) 2024.05.03
Lock  (0) 2024.04.29