늘 이렇게 챔피언을 했으면 안만들었을지도...?
친구들과 함께 [APEX Legend]를 하면 꼭 한 라운드에 한번씩 하는 말이 있다.
친구 1: "아 또 순간이동하네..."
친구 2: "아니 분명 숨었는데 왜 또 맞아!"
나:"아 서버문제만 아니였으면 이겼다.."
원래 APEX Legend는 20hz로 구동되지만 서버의 각종 처리가 50ms 이상 걸리면 말그대로 슬로우 서버가 되어 우리가 보는 화면이 느리게 보인다.
참고 영상: https://youtu.be/w_YEyxBgy8Y
요즘엔 많이 줄어들긴 했지만 초기에는 정말 문열고 집에 들어갔는데 죽는경우가 꽤 있었다.
반대로 분명 제대로 조준을 해서 맞추었는데도 안 맞는 경우도 꽤 많았다.
크게 보면 이렇게 2가지가 있는데 사실 대부분의 FPS게임에서 가지는 문제점으로 보인다.
평소에도 FPS,TPS 슈터를 즐겨하는 사람으로서 궁금하지 않을 수가 없었다.
"왜? 저런 문제가 생길까?"
친구1: "컴공이라는 녀석이 이런것도 모르냐!"
어처피 게임 하나 새로 만들때가 됬는데 겸사겸사 하나 만들어보며 어떤문제가 있는지 알아보기로 했다.
다행히 서버는 바닥부터 새로 만드는것이 아니라 저번에 들었던 인프런 강의 중
_[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버_
와
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
를
기반으로 조금 수정을 하고 클라이언트는 작년 겨울에 잠깐 본 고박사의 유니티 채널: FPS Prototype
을 기반으로 수정을 하면 금방 만들 수 있을거라 생각했다.
위에서 말했던 "조금 수정"은 생각보다 많은 것을 들어내고 바꿔야하는데... 다행히 서버쪽에서 소켓 연결 및 각종 자료구조들은 그대로 재사용이 가능하지만 서버 내 모든 처리(packet handler, object state control)등등 따로 만들어야 됬다.
클라이언트(유니티)쪽에서는 예전에 에셋번들로 샀던 Character Movement Fundamental
스크립트 일부(이것도 추가적인 액션 때문에 엄청 고치긴했다..)로 기본적인 부드러운 이동제어를 하고 나머지는 직접 짰다.
참고자료:
ROOKIES님의 강의: https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-mmorpg-%EA%B0%9C%EB%B0%9C-part4/dashboard
고박사의 유니티 노트 채널: https://www.youtube.com/c/%EA%B3%A0%EB%B0%95%EC%82%AC%EC%9D%98%EC%9C%A0%EB%8B%88%ED%8B%B0%EB%85%B8%ED%8A%B8/videos
character movement fundamental 에셋: https://assetstore.unity.com/packages/tools/physics/character-movement-fundamentals-144966
안녕하세요! 킬러빈 개발일지를 모두 읽어본 사람입니다!
저도 작성자님처럼 루키스님의 강의를 봤고, 고박사님의 FPS 강의를 보고 FPS게임서버를 만드려고 했습니다.
그런데 제가 개발한 서버는 이러저러한 문제점과 버그가 발생해서 많이 곤란한 상황입니다.
혹시 괜찮으시다면 이메일로 어떻게 개발하셨는지 질문할 수 있을까요?
제 이메일은 wdg2461@gmail.com입니다.