• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

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

24.05.01 21:29 작성 조회수 38

0

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

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

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

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

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

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

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.05.03

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

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

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

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

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

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

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