[Unity]멀티플레이 FPS게임 개발기 1 - 동기와 준비

RisingJade의 개발기록·2022년 5월 6일
2

KILLER BEAN 제작기

목록 보기
1/5
post-thumbnail


늘 이렇게 챔피언을 했으면 안만들었을지도...?

동기

친구들과 함께 [APEX Legend]를 하면 꼭 한 라운드에 한번씩 하는 말이 있다.

친구 1: "아 또 순간이동하네..."
친구 2: "아니 분명 숨었는데 왜 또 맞아!"
나: "아 서버문제만 아니였으면 이겼다.."

APEX Legend에서 발생하는 문제?

1. 서버가 슬로우 모션으로 돌아감

원래 APEX Legend는 20hz로 구동되지만 서버의 각종 처리가 50ms 이상 걸리면 말그대로 슬로우 서버가 되어 우리가 보는 화면이 느리게 보인다.

참고 영상: https://youtu.be/w_YEyxBgy8Y

2. 지연 보정 문제

요즘엔 많이 줄어들긴 했지만 초기에는 정말 문열고 집에 들어갔는데 죽는경우가 꽤 있었다.
반대로 분명 제대로 조준을 해서 맞추었는데도 안 맞는 경우도 꽤 많았다.

참고 영상: https://www.youtube.com/watch?v=N_nsgTRZZZA


크게 보면 이렇게 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


profile
언제나 감사하며 살자!

2개의 댓글

comment-user-thumbnail
2022년 8월 16일

안녕하세요! 킬러빈 개발일지를 모두 읽어본 사람입니다!
저도 작성자님처럼 루키스님의 강의를 봤고, 고박사님의 FPS 강의를 보고 FPS게임서버를 만드려고 했습니다.
그런데 제가 개발한 서버는 이러저러한 문제점과 버그가 발생해서 많이 곤란한 상황입니다.
혹시 괜찮으시다면 이메일로 어떻게 개발하셨는지 질문할 수 있을까요?
제 이메일은 wdg2461@gmail.com입니다.

1개의 답글