언리얼 엔진 5/멀티플레이어 게임 폴리싱

[UE5] 멀티플레이어 게임 폴리싱 (1) - 렉 최적화 개요

ciel45 2025. 10. 16. 22:24

올해 9월에 드디어 게임 개발 연합동아리에서 팀원들과 함께 개발한 게임을 스팀에 출시를 하게 되었다.

https://store.steampowered.com/app/3623670/I_See_Me/

 

I See Me on Steam

Overcome the trials by relying on your partner's sights! A 3D co-op game that goes beyond common sense. Enjoy unique gameplay based on sights in I See Me.

store.steampowered.com

 

해당 프로젝트에서 내 역할은 다음과 같다.

  • 스팀 친구 초대 / 도전과제 기능 구현
  • 상대 캐릭터 바라보기 / Q, E로 상대 시점 pitch 조정 등 캐릭터 특수 조작
  • 바람 기믹, 회전 장애물, 점프 패드 구현
  • 챕터, 체크포인트 저장 기능
  • 챕터 클리어 트리거 구현
  • 인게임 메뉴, 챕터 선택, 옵션 등 각종 UI 구현
  • 캐릭터 모델링 적용
  • 툰 쉐이더 작성 일부 (노이즈 아웃라인 효과)
  • 영어 번역 추가 (사용자 환경에 따라 초기 세팅 한국어/영어 中 1)
  • 튜토리얼 일부 (대사 시스템)
  • 기타 각종 디버깅

 

현재 출시 후 약 3주째인데, 유저 반응이 꽤 좋아서 만족스럽다.
다만, 한 가지 고치고싶은 부분이 있다.

https://youtu.be/l5L-P1AQEgk

 

 

 

Editor Preference에서 Network Emulation을 나쁨으로 설정해놓고 테스트한 결과이다.
캐릭터의 움직임이 뚝뚝 끊기는 것을 볼 수 있다.

본 게임 특성 상 내 캐릭터가 아닌 상대방의 캐릭터를 항상 더 가까이에서 보기에, 유저 입장에서 이러한 문제가 더 크게 느껴질 수 있을 것 같다.

 

CharacterMovementComponent에서 Smoothing Mode를 Exponential으로 설정해두기는 했지만,

나쁜 네트워크 환경에서 부드럽게 움직이도록 하려면 그것만으로는 부족하고 

추가적으로 작업을 해줘야 하는 것 같다.

 

사실 지금까지 이 게임을 개발함에 있어서 RPC / 리플리케이션을 활용한 동기화는 신경을 많이 썼지만, 이러한 렉 문제의 해결은 소홀히 했었다.

 

이에 따라 게임의 다른 모든 요소가 개발이 완료된 지금, 이 렉 문제를 제대로 해결해보고자 한다.

 

예상 개발 흐름은 다음과 같다.

  • CharacterMovementComponent 클래스 분석, 수정이 필요한 부분 정리
  • 직접 솔루션을 고안하여, CharacterMovementComponent를 상속받는 클래스를 새로 작성
  • 테스트 / 수정 반복