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

rlagusdn0086님의 프로필 이미지
rlagusdn0086

작성한 질문수

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

OT

안녕하세요 강사님

작성

·

280

0

안녕하세요 강사님 좋은 강의 잘 듣고 있습니다. 다름이 아니라 이번은 2d 던데 만약 3d 같은 게임은 서버로 구현해서 플레이어 움직임을 뿌려주는게 2d 보다 당연히 어렵겠죠? 혹시 이번 2d에 배운 것을 응용해서 3d 게임 서버도 구현 할 수 있을까요? 아니면 그 둘은 좀 많이 다른가요?

답변 7

2

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

2d 게임이나 3d 게임이나 서버 관점에선 큰 차이가 없습니다.
3d 게임에서는 x,y,z 좌표와 회전각 rotY 이렇게 float 4개만 알면 동기화를 해줄 수 있습니다.
다만 리니지2m과 같은 그리드 좌표 단위 게임인지,
와우 같이 미세하게 움직일 수 있는 게임인지에 따라 살짝 기법이 달라집니다.
간단히 요약하면 목적지를 찍어서 해당 목적지 좌표를 broadcasting 한 다음에,
클라에서 해당 Object를 목적지로 향하도록 연산을 해주면서 렌더링 해주면 됩니다.

0

제가 part 7, 섹션 2, 서버 연동의 이동 동기화 #3까지 들었는데요

더 들어보겠습니다!!

0

친절한 답변 감사합니다.

제가 게임을 나갔다가 다시 들어오면 기존의 접속한 플레이어의 위치가 동기화 되지않고 생성되지 않는데요.

강의에서 확인할 수 있나요?

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

어느 강의 부분을 말씀하시는 것일까요?
서버는 계속 켠 상태에서 클라가 나갔다 들어오면
당연히 다른 오브젝트 위치도 동기화 되어 잘 보여야 합니다.
Part7 후반부에서 처리합니다.

0

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

그건 아니구요.
강의에서 그리드 Cell 좌표랑 실제 유니티상의 좌표가 다르기 때문에 조정을 해준 것입니다.
(0, 1) 그리드에 캐릭터가 위치하려면 캐릭터 중앙을 0.5, 1.5에 맞춰야 자연스럽게 그려집니다.

0

그럼 선생님은 updatemoving() 함수에

destPos = CellPos + (0.5f, 0.5f); 해주신 이유가

미리 목적지를 0.5f만큼 더해주신건가요?

 

0

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

그래도 가상의 목적지를 찍어서 보내면 됩니다.
(ex. 현재 속도를 고려해서 0.1초 후의 위치라거나...)

0

모바일에서 케릭터를 조이스틱으로 이동하는 로직이라면 목적지 좌표가 없지 않나요?

rlagusdn0086님의 프로필 이미지
rlagusdn0086

작성한 질문수

질문하기