레이블이 플레이인 게시물을 표시합니다. 모든 게시물 표시
레이블이 플레이인 게시물을 표시합니다. 모든 게시물 표시

2023년 8월 28일 월요일

Network Physics - Client-Side Prediction With Physics In Unity

출처

Client-Side Prediction With Physics In Unity

메모

물리 오브젝트에 대해서 prediction을 처리하는 방법에 대해서 설명한다.

  1. Auto-Simulation을 끄고 직접 호출한다
  2. 클라이언트에서 fixedTimeDelta마다 InputState를 처리하고, 서버로 보낸다. 그리고, simulation을 호출한다.
  3. 서버에서 받은 InputState가 있으면, 처리하고, simulation을 호출하고 SimulateState를 클라이언트로 보낸다.
  4. 클라이언트에서 받은 SimulateState가 있고, 기록해둔 위치와 차이가 크면, 보정을 한다
  5. 클라이언트에서 입력을 중복으로 보내기. 패킷 최적화를 할 수도 있다. (delta-compression of the inputs)
  6. 서버에서 스냅샷 빈도를 조절
  7. 클라이언트에서 위치 보정을 부드럽게 처리하기
관련성

물리 오브젝트를 네트워크 동기화 처리할 때 참고한다

날짜

2023.8.28

Network Physics - Lag Compensation - Fair Play for all Pings

출처


메모

Client-Prediction 기법을 사용하면, 렉이 심한 유저는 상대를 맞힐 수 없는 상황이 발생한다. 이에 대한 처리를 설명한다.

알고리즘은 다음과 같다.

  1. 매 틱마다 모든 타겟(플레이어, 오브젝트 등등)의 위치를 저장한다. (1틱 = 50ms, 20틱 동안의 기록을 관리한다. 1000ms이 넘어가는 상황에 대해서는 보장하지 않는다.)
  2. 발사체 발사 이벤트를 받으면, 현재 시간과 클라이언트의 랙을 합해서 틱을 계산한다.
  3. 해당 틱의 기록에서 발사체와 충돌이 되는 타겟을 찾는다.
  4. 충돌되는 타겟을 못 찾으면 틱을 현재 틱까지 하나 씩 증가 시키면서 타겟을 찾을 때까지 계속한다
관련성

Fast-Paced 멀티플레이어를 만들 때, 적용하자

날짜

2023.8.28

2023년 8월 15일 화요일

Network Physics - Fast-Paced Multiplayer

출처


메모

클라이언트-서버 게임 아키텍처는 다음과 같이 요약할 수 있습니다:

1. 서버는 모든 클라이언트로부터 입력을 받아 타임스탬프와 함께 처리합니다.
2. 서버는 입력을 처리하고 세계 상태를 업데이트합니다.
3. 서버는 모든 클라이언트에게 정기적으로 세계의 스냅샷을 전송합니다. (SimulatonState)
4. 클라이언트는 입력을 전송하고 그 효과를 로컬에서 시뮬레이션합니다. (ClientInputState) (Prediction)
5. 클라이언트는 세계 업데이트를 받아서
    - 예측된 상태를 권한 있는 상태에 동기화하고, (Reconciliation)
    - 다른 엔터티에 대한 알려진 과거 상태를 보간합니다. (Interpolation)

플레이어의 관점에서 이것은 두 가지 중요한 결과를 가지고 있습니다:

1. 플레이어는 자신을 현재 상태로 볼 수 있습니다.
2. 플레이어는 다른 엔터티를 과거 상태로 볼 수 있습니다.

헤드샷과 같은 처리를 위해서 다음과 같이 처리할 수 있다.

Lag Compensation

관련성

멀티플레이어 게임을 만들때 참고한다

날짜

2023.8.15

Network Physics - Seamless fast paced multiplayer in Unity3D. Implementing client-side prediction.

출처


메모

유니티로 클라이언트 사이드 예측을 구현하는 방법에 대해서 다음 내용을 설명한다.

  1. ClientInputState - 사용자 입력 상태를 다룬다
  2. SimulationState - 플레이어의 위치 상태를 다룬다
  3. CharactorController - ClientInputState와 SimulationState를 보내고 받아서 처리하는 방법을 다룬다
  4. Reconcliclate - 클라이언트에서 서버로부터 받은 상태를 적용하는데, 차이가 크면, 그 동안 캐쉬해뒀던 정보를 기반으로 조정을 한다
  5. ServerSimulater - 클라이언트로 부터 받은 ClientInputState를 CharactorConteroller::ProcessInput을 호출하고 상태를 다시 클라이언트로 보낸다.

관련성

네트워크 물리를 만들때 참고한다

날짜

2023.8.15

2023년 8월 13일 일요일

플레이 - Destiny 2

출처


메모

차량을 타고 이동할 때의 모습


관련성

뒷태가 비슷하다

차량 플레이 - Mad Max

출처


메모

광기를 뒤로하고 위안을 찾는 것 외에는 아무것도 원하지 않는 마지못한 영웅이자 생존자인 매드 맥스로 플레이하세요.


관련성

전체적인 플레이 분위기나 연출 등을 참고한다

날짜

2023.8.13

차량 플레이 - Rage 2

출처


메모

차량 전투 플레이를 참고만 하다.


관련성

전체적인 연출과 분위기 등이 참고가 된다.

날짜

2023.8.13

2023년 3월 25일 토요일

차량 게임 - FUMES

출처

FUMES

메모

이 빠른 속도의 싱글 플레이어 자동차 전투 게임에서 강력한 무기로 차량을 무장하고 황무지를 돌아다니세요! 격렬한 헌신으로 적을 추격하고 파괴의 시련을 통해 그들의 역할을 얻으십시오! 당신 아니면 그들이 당신의 운명에 맞설 준비가 되셨습니까, 승객님?




관련성

차량 서바이벌의 컨셉을 참고할만 하다

날짜

2023.3.25