[NDC 리뷰] 실시간 MMORPG의 플레이 감각을 날카롭게 벼려보자!
PART#1
차지게 때리기
PART#2
정확하게 때리기
PART#3
온라인 게임의 방향성
출처: https://www.youtube.com/watch?v=HSRo7TAV4T4
네트워크 레이턴시로 인한 게임 플레이의 불쾌감을 줄이기 위해서 예측과 보정을 수행한다.
PART#1
네트워크 지연이 길어질 때(LTE) 캐릭터 애니메이션과 피격 이펙트에 시간 차이가 생기면서 조작감이 나빠짐.
기존 스킬 시스템은 4개의 단계로 나뉘도록 설계했고, 각 단계에서 패킷을 송신함.
ex) 애니메이션 -> 피격 효과 처리/자원소모 -> 데미지/힐 적용 -> 피격 후처리(스턴 등) / 타격자 위치 이동

- 문제
네트워크를 타는 순간 딜레이가 생긴다.
한 스테이지가 밀리면 앞, 뒤 스테이지와 부드럽게 이어지지 않는다.
- 해결
예측을 수행.
원래 4번 전송되던 걸 2번으로 줄였음(스테이지1, 스테이지4)
@영상에선 자연스럽게 느껴지지만.. 피격자 선정 시 예측이 어긋나 버리면? 동기화 문제가 있을 것 같음.
여전히 남아있는 도중 취소때의 잘못된 피격 연출.
-> 추가 추후 데미지 플로터를 흩어버리는 식으로 연출 구현으로 해결 예정.
#PART2
정확도 개선 사례.
테스트 중.. 가만히 서있는 대상에게 스킬이 맞지 않는 문제.
서버/클라1,2가 서로 생각하는 대상의 위치가 다 다름.
- 이동 시스템 구현
대규모 필드를 대비하기 위해 적당한 길이의 이동 구간을 만들어서 동기화하는 방식으로 구현. (navmesh)
개발 초기에는 스킬처럼 서버의 허가 하에 이동. -> 조작감 향상을 위해서 클라가 먼저 이동하도록 수정

단순한 이동에서는 문제가 발생하지 않았으나, 이동이 완료되기 전에 멈추는 상황에 동기화가 어긋나는 문제가 발생.
멈추는 건 보정이 없었고.. 멈추는 위치 동기화를 간단히 구현해보았으나 캐릭터 튐 현상으로 쓸 수 없다 판단.
- 해결
본인 캐릭터는 기존 방식으로 이동하고, 다른 클라이언트의 이동엔 딜레이를 추가해서 보정.
@다크앤다커가 생각나는데.. 공격 모션이 상당히 느린 편이면서 판정이 되게 중요함. 본인의 캐릭터의 모션은 추가적인 식간을 부여해서 크게 동작하는 연출을 보여주고, 다른 캐릭터의 모션은 기획 의도와 일치하도록 설계한게 아닐까

위 사진을 설명하자면, 200ms를 기준으로 두고, 지연 시간이 40ms ~ 200ms인 플레이어 모두 동일하게 200ms라는 지연 시간을 부여함.

반응 속도를 희생하고 정확도를 향상시킨 셈.
이동 중 위치 오차는 더 커졌지만, 플레이에 큰 불편함으로 느껴지진 않았다고 한다.(실제 데이터와 인간적 오류의 차이)