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

작성자 없음

작성자 정보가 삭제된 글입니다.

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

IOCP 멀티 게임에서 Collsion 충돌 처리는 어떻게 구현하나요?

작성

·

158

·

수정됨

0

본 강의에서는 제가 못찾고 있는지는 모르겠지만 멀티 게임 구현시 타일맵을 이용한 충돌 구현만 있는 것 같습니다. (혹시 만약 있다면 어디에서 언급되는지 모르겠네요..)

 

얼핏 기억하기로는 충돌 처리는 서버에서 해야 한다고 했던 기억이 있습니다.

 

그러면 클라이언트에 있는 CollisionManager, Collison클래스와 같이 충돌과 관련된 클래스를 서버 쪽에도 복붙하여 충돌 처리를 하는 방향이 맞을까요?

 

만약 그렇다면 현재까지는 클라이언트에서 Collision 범위를 네모 박스와 같은 형태로 그려서 눈으로 직관적으로 확인 가능하니까 쉽게 디버깅할 수 있었는데, 서버에서 충돌을 구현하면 눈에 보이지 않는거 아닌가요? (그렇다면 디버깅이 굉장히 어렵겠네요...)

 

서버에서 충돌을 구현하면 클라이언트에서는 충돌 처리를 안하니까 클라이언트의 Bullet과 벽은 Collision은 제거하면 될까요?

 

멀티 게임에서 충돌을 어떻게 처리해야 할지 방향을 잘 모르겠습니다.

 

그리고 강의 너무 잘 보고 있습니다!

답변 1

1

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

그러면 클라이언트에 있는 CollisionManager, Collison클래스와 같이 충돌과 관련된 클래스를 서버 쪽에도 복붙하여 충돌 처리를 하는 방향이 맞을까요?

네 그렇습니다.

만약 그렇다면 현재까지는 클라이언트에서 Collision 범위를 네모 박스와 같은 형태로 그려서 눈으로 직관적으로 확인 가능하니까 쉽게 디버깅할 수 있었는데, 서버에서 충돌을 구현하면 눈에 보이지 않는거 아닌가요? (그렇다면 디버깅이 굉장히 어렵겠네요...)

 네 그렇습니다. 온라인 게임 개발에 오신 것을 환영합니..

서버에서 충돌을 구현하면 클라이언트에서는 충돌 처리를 안하니까 클라이언트의 Bullet과 벽은 Collision은 제거하면 될까요?

그건 선택사항입니다. 양쪽에 동시에 충돌 판정을 하는 경우도 있고요
(예를 들어 RPG 게임에서 벽 충돌은, 클라에서 먼저 처리합니다)

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

그럴 때는 공용 라이브러리를 파서 만드시고
lib이나 dll로 서버/클라에서 끌어다 쓰시면 됩니다.
너무 어려우면 그냥 당분간 복붙을 해보세요.
그리고 양쪽에 다 동일한 충돌 코드가 있다 한들,
이동 동기화가 정확히 되지 않으면 그 또한 많은 문제를 야기할 수 있습니다.

마지막으로 질문은 어지간하면 하지 않고
혼자 해결하는 습관을 들여보세요.
제가 10년 넘게 하면서 느낀 부분이기도 한데
성장을 하는 프로그래머/학생들은 처음부터 질문을 거의 안 합니다.
잘못된 방법일 수도 있겠지만 본인이 생각한 하나의 방법을 고안하고
그것을 구현해보고, 또 안 되면 다른 방법으로 해보고
이런 식으로 계속 반복해서 하면 정말 얻는 것이 많습니다.
그럼 힘내세요!

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

수학 문제를 풀 때 오랫동안 고민한 문제는 평생도록 기억에 남지만,
순간적으로 답을 본 문제는 금방 잊는 것과 유사합니다.
프로그래밍 또한 초급 레벨만 벗어나도, 혹은 회사를 가면
더 이상 나의 질문에 대답해줄 사람이 없습니다.
따라서 스스로 답을 찾는 것이 성장의 지름길이고,
이 부분은 일일히 선을 제가 제시하는 것이 아닙니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기