클라이언트A가 B유저를 공격했다는 패킷을 서버에 보냈다고 합시다. 이때 동기화를 시키기 위해 화면에 바로 보여주지는 않고 서버에서 이 패킷을 받은뒤 유효성을 검사한 후, 패킷을 보낸 클라이언트를 포함해 주변에 있는 여러 사람에게 동시에 이 클라이언트A가 공격했다는 패킷을 보내줍니다. 이때 클라이언트A를 포함해서 공격당한B유저 그리고 주변유저들에게 공격 모션이 보여집니다.
공격을 당한 B유저는 체력이 감소해야 하는데, 서버에서 공격패킷을 보내주자마자 체력도 감소했다는 패킷을 동시에 보내주게 되면 B유저의 화면에 보이길 유저A(클라이언트A)가 칼을 뒤로 젖혀서 때리는 동작을 시작하자마자 피가 닳는 모습이 될 것 같습니다. 칼만 뒤로 젖혔을 뿐인데...
그러므로 실제로 데미지를 입힐때는 어느정도 딜레이 이후에 데미지를 주는게 맞다고 생각이 됩니다. 이때 서버에서 데미지를 입었다는 패킷을 일정한 딜레이 이후에 보내주는것인지 궁금합니다.
가령 우선순위 큐같은것을 이용해서 딜레이를 설정해둔후, 서버의 루프를 돌면서 우선순위 큐의 딜레이를 점점 감소시키고 0이 되었을때 해당 패킷을 전송한다던가 할 것 같은데,
이 경우 상당히 서버에 부하를 줄 것도 같습니다.
아니면 클라이언트에게 패킷은 미리 보내되 클라이언트에서 데미지에 대한 출력을 조금 지연시켜서 하는것일까요? 참 궁금합니다. 보통 어떤 방식으로 처리하는지 궁금하네요.
마법의 경우도 캐스팅이 끝난 직후 공격이 나가는데 (가령 파이어볼이 앞으로 쏘아질때) 이때도 위와 같은 방식중에 하나로 처리 하는지 특별한 처리 방식이 있는건지 궁금합니다.