채널톡 아이콘

인프런 커뮤니티 질문&답변

강남영님의 프로필 이미지

작성한 질문수 14

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

이동 동기화 #2

3d 프로젝트 이동 동기화 관련

작성

·

158

·

수정됨

0

안녕하세요 루키스님.. 강의 잘 보고 있습니다.. ㅠ

m2 프로젝트 강의 거의 다 듣고 저만의 rpg를 만들기 위해 m2 프로젝트의 프레임워크만을 사용하고 3d isometric view로 리니지 같은 게임을 만드는 도중에 도저히 답이 안나와서 c#과 유니티로 만드는 mmorpg 강의 들을 때 만들어둔 프로젝트에 저만의 프레임워크를 수정 및 추가하는 방법으로 강의를 듣고 있습니다.

현재 저의 프로젝트는 강의처럼 2d가 아닌 3d로 구성되어 있고 movepacket에 vector3 형식의 posinfo를 넘겨주고 있습니다.

근데 동기화 테스트를 하면 나 자신의 캐릭터는 잘 움직이는데 반대편 클라이언트에서는 제 캐릭터가 움직이는게 보이지 않아서 디버깅만 5시간째 하고 있는데 도저히 감이 안와서 도움 요청드리려고 합니다.. 프로젝트좀 봐주시면 안될까요?

서버 코드는 혹시나 싶어서 루키스님의 코드 전체를 붙여넣기 해서 다시 빌드까지 해봤지만 똑같네요..

 

참고로 명령프롬프트에 c_move 좌표는 정상적으로 잘 찍힙니다.

답변 4

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

온라인 게임에서 이동 동기화까지가 절반을 차지합니다.
당연히 제일 난이도가 어려운 것이 정상이구요.
프로그래머 및 게임 개발자는 문제 해결을 하는 직군이라,
누군가가 도와주거나 코드를 대신 봐주는 경우는 없다고 생각하셔야 합니다.

고통스럽더라도 어떻게든 스스로 찾아내셔야 합니다.
저는 한 문제에만 2주 내내 헤딩해서 답을 찾은 적도 있는데
그런 경험들이 이겨내기만 하면 다 성장 발판이 됩니다.

강남영님의 프로필 이미지
강남영
질문자

네 혼자서 이겨내보겠습니다 ㅎㅎ

0

literate_t님의 프로필 이미지

반대편 클라이언트에서 다른 플레이어를 렌더링하는 부분을 보셔야 하지 않을까요?

강남영님의 프로필 이미지
강남영
질문자

찾았습니다. 클라쪽 packetHandler에서 s_moveHandler 함수 안에가 잘못되어있었네요..

 

강의에서는 state를 간단히 구현해놓았는데 저 같은 경우 타 강의에서 가져온 보다 복잡한 statemachine을 이용해 플레이어의 이동을 따로 관리하도록 수정하려 하다 보니 코드가 복잡해지고 찾는데 시간이 좀 오래걸렸네요.. 이미 찾고 나서 댓글을 달아주셨지만 도움 주셔서 감사합니다. 안목이 엄청나시네요 ㅎㅎ

literate_t님의 프로필 이미지

상황 공유해주셔서 감사합니다!

0

강남영님의 프로필 이미지
강남영
질문자

매크로 답변말고 직접 봐주실수 없나요...미치겟습니다 ㅠ

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 강남영님.

3D 게임에서 이동 동기화가 잘 되지 않는 현상에 대해 몇 가지 확인해보실 점을 안내드리겠습니다.

문제 확인사항

  1. 패킷 전송 여부: 서버에서 제대로 패킷을 전송하고 있는지 확인해보셔야 합니다. 특히, MovePacketVector3 posInfo가 올바르게 모든 클라이언트에게 전송되고 있는지 확인하세요.

  2. 포지션 업데이트: 클라이언트 쪽에서 수신된 패킷의 포지션을 반영하는 코드가 제대로 동작하는지 살펴보세요. 다른 클라이언트가 수신한 포지션 정보가 게임 오브젝트에 제대로 업데이트되고 있는지 점검해 보시기 바랍니다.

  3. 네트워크 타이밍: 네트워크의 지연이나 패킷 누락 또한 문제의 원인이 될 수 있습니다. 다른 클라이언트에서 일관되게 포지션이 갱신되지 않는 경우가 이에 해당할 수 있습니다.

관련된 질문 및 답변

이와 관련된 유사한 상황이 많이 논의된 바 있으며, 다음 링크들을 참고하시면 문제 해결에 도움이 될 수 있습니다:

  • “3D 게임 이동 동기화” - 이 질문에서는 서버와 클라이언트 사이의 데이터 처리와 이동 동기화에 대한 원칙적인 내용이 다뤄집니다.

  • “이동 동기화 관련” - 이 게시물에서는 이동 동기화시 Collider와 RigidBody가 영향을 줄 수 있는 부분에 대한 논의가 있습니다.

  • “3D서버 만들 때 질문입니다” - FPS 게임 서버 개발 시 이동 동기화에 대한 또 다른 방안을 제시하고 있으며, 서버-클라이언트 간 신뢰성 있는 동기화 방법을 논의합니다.

추가 조언

특히 3D 프로젝트의 경우, Unity에서 물리 엔진을 사용하면서 네트워크 동기화를 맞추는 것이 까다롭기 때문에 주의가 필요합니다. 물리 엔진이 개입된 경우 예기치 않은 문제들이 발생할 수 있습니다. 필요시, 물리를 임시로 비활성화하고 동기화 로직을 점검하는 것이 도움이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.