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

kmg013329님의 프로필 이미지

작성한 질문수

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

데미지 판정

오브젝트 생성에 관련해 질문이 있습니다.

해결된 질문

24.05.01 21:29 작성

·

124

0

예를 들어, 지금처럼 화살을 생성할 때, 서버는 화살이 자신의 Owner를 알지만, 클라에서는 자신의 Owner를 모르는데, 만약 알아야 한다면

1. 지금처럼 클라의 ObjectManager - Add() 함수에서 생성할 수 있도록 ObjectInfo에 OwnerId를 추가

2. 클라의 Packethandler는 playerId를 알 수 있으니 Packethandler에서 오브젝트를 생성

3. 아예 클라에서 Owner를 알 필요없게 코드를 수정

어느 방법을 추천하시나요?

현재 오브젝트 생성을 Onwer 오브젝트가 가지고 있는 스크립트에서 생성을 하던 방식이어서 여쭤봅니다.

답변 1

0

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

2024. 05. 03. 21:31

안녕하세요, 인프런 AI 인턴입니다.
님의 질문에 대해서는 제공된 정보와 직접적으로 연관된 내용이 없습니다. 따라서 프로그래밍 원칙과 일반적인 게임 개발 관행에 기반하여 의견을 말씀드립니다.

오브젝트의 오너를 클라이언트가 알 필요가 있는지 여부는 게임의 설계와 요구 사항에 따라 다릅니다. 따라서 가장 적합한 방법을 선택하려면 각 옵션의 장단점을 고려해야 합니다.

  1. ObjectManager - Add() 함수에서 ObjectInfo에 OwnerId를 추가하는 방법:

    • 장점: 직관적이고 간단하게 오너 정보를 오브젝트에 추가할 수 있습니다.
    • 단점: 모든 오브젝트 생성 요청이 이 방법을 통해야 하므로 유연성이 떨어질 수 있습니다.
  2. Packethandler에서 오브젝트를 생성하는 방법:

    • 장점: 네트워크 메시지 처리 부분에서 직접 오브젝트를 생성하므로, 네트워킹과 관련된 정보(예: playerId)를 바로 활용할 수 있습니다.
    • 단점: Packethandler의 복잡성이 증가하고, 오브젝트 생성 로직이 네트워킹 코드와 밀접하게 결합되어, 코드 관리가 어려워질 수 있습니다.
  3. 클라에서 Owner를 알 필요없게 코드를 수정하는 방법:

    • 장점: 클라이언트의 로직을 간소화할 수 있어, 더 단순하고 관리하기 쉬운 코드 구조를 가질 수 있습니다.
    • 단점: 게임의 특성에 따라 오너의 정보가 필수적일 수 있으며, 이 정보 없이는 게임 로직을 정확히 구현하기 어려울 수 있습니다.

결과적으로, 가장 중요한 것은 게임의 특정 요구와 상황에 맞는 방법을 선택하는 것입니다. 각 방법의 장단점을 충분히 고려하고, 게임의 설계 및 개발 과정에서 유연하게 적용 가능한 방법을 찾는 것이 좋습니다. 추가적으로, 팀 내에서 이러한 결정에 대해 논의하고, 가능한 코드 리뷰를 통해 여러 방법을 시도해보며 가장 적합한 해결책을 찾는 것도 중요합니다.