인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

ji980207님의 프로필 이미지
ji980207

작성한 질문수

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

소멸 이펙트

몬스터 데미지 처리 방식 질문입니다.

작성

·

459

0

이번 프로젝트에서는 화살에 대한 충돌 정보를 콜라이더를 통해서 하는게 아닌 매니저에서 List에 담긴 적 오브젝트에 위치 정보와 화살에 대한 위치 정보를 비교해서 해당 위치에 적 오브젝트가 존재할 경우 데미지를 처리하는 방식으로 로직을 구현하신 이유가 궁금해서 질문 남깁니다.

  1. 현재 프로젝트에서 충돌 판정을 위해 List에 등록된 모든 object들의 위치 정보를 대조하는 방식으로 구현이 되어있는데, 대부분에 2D 온라인 게임들은 이런 방식으로 로직을 구성하는 건가요? 진행중인 프로젝트와 유사한 게임으로 예시를 들어주신 바람의나라, 리니지와 같은 게임 한정으로 이렇게 로직을 구성하는 건가요?

  2. 개인적인 생각인데, List로 적 오브젝트를 관리하게 될 경우 적 오브젝트 수가 늘어나 생성,파괴,충돌, 이동이 수시로 일어날 경우 각 정보를 클라이언트들에게 뿌려주기 위해서 서버에 과부화가 있을 거 같은데, 이를 보완하는 방식이 있는지 혹은 List 말고 다른 방식이 존재하는지 궁금합니다

     

    항상 좋은 강의 감사합니다.

답변 1

0

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

이번 프로젝트에서는 화살에 대한 충돌 정보를 콜라이더를 통해서 하는게 아닌 매니저에서 List에 담긴 적 오브젝트에 위치 정보와 화살에 대한 위치 정보를 비교해서 해당 위치에 적 오브젝트가 존재할 경우 데미지를 처리하는 방식으로 로직을 구현하신 이유가 궁금해서 질문 남깁니다.

-> 이 부분을 최적화해서 그리드 위에 오브젝트가 있는지만 확인하면 O(1)에 가능합니다.
당연히 리스트 모든 유닛을 검사하는 방식은 롤 같이 10인 유저 게임이 아니라면 바람직하지 않고
이런 부분은 스스로 생각하셔야 고치시면 됩니다. (늘 강조하지만, 코딩은 암기가 아니라 응용입니다!:D)

ji980207님의 프로필 이미지
ji980207

작성한 질문수

질문하기