개발자공부일기

중복 랜더링 본문

트러블슈팅

중복 랜더링

JavaCPP 2025. 1. 17. 10:55

지금 게임을 실행해 보면

이렇게 내 캐릭터의 분신(?) 이 날 자꾸 밀치고 있다.

하지만 다른플레이어의 시점에선 내 분신이 보이지 않는다. 왜 그럴까?

 

지금 내 코드에선 캐릭터를 랜더링할때 클라이언트에서 본인의 위치로 랜더링하고 세션에 존재하는 "모든" 유저들의 위치정보를 가져와서 한 번 더 랜더링 하기때문에 클라이언트 본인의 캐릭터는 2개가 랜더링 되는것이다!

 

그래서 단순하게 모든 유저들의 위치정보를 반환할때 클라 본인의것만 제외하고 반환하면 안될까..? 했고

 

 // 모든 유저 위치 정보 가져오기
  getAllLocation(userId) {
    const maxLatency = this.getMaxLatency(); // 최대 레이턴시 가져오기

    const locationData = this.users
      .filter((user) => user.id !== userId) // {{ edit_1 }}: userId와 일치하는 유저 제외
      .map((user) => {
        const { x, y } = user.calculatePosition(maxLatency); // 유저 위치 계산
        return { id: user.id, playerId: user.playerId, x, y }; // 위치 정보 반환
      });
    return createLocationPacket(locationData); // 위치 패킷 생성 및 반환
  }

그래서 getAllLocation 함수에 userId를 넘기고 locationData에 모든 유저의 위치정보를 매핑할때 userId와 같은 유저는

filter로 제외시켜버렸다.

 

오 그랬더니 된다!

 

다른 사람의 위치도 잘 보이고 성공이다.

 

'트러블슈팅' 카테고리의 다른 글

Next.js 프로덕션모드 ESLint에러  (0) 2025.07.17
Next.js 15에서 params 경고 해결하기  (0) 2025.06.20
DuckTopia  (0) 2025.02.11
패킷 길이문제  (0) 2025.01.16
웹소캣게임 트러블슈팅  (0) 2024.12.18