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

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

literate_t님의 프로필 이미지

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)

Inventory #2

InventoryManager 클래스에서 사소하지만 꼭 알고 싶은 사항이 있습니다

작성

·

65

0

안녕하세요.

강의 들을 땐 그런가 보다 하고 넘겼는데 혼자 리뷰하면서 보니까 의도가 있는 건지 아닌지 확인이 필요하다 생각했습니다.

InventoryManager 클래스를 정의할 때 Item 객체를 Add() 하거나 Get() 할 때 itemDbId를 Key로 사용한 이유가 있을까요? TemplateId도 고유하다 생각하는데, 메모리 상에서 아이템 관리를 할 때 반드시 db id가 key이어야 하는 이유가 있는 건지, 실은 TemplateId도 상관 없고 고유한 식별자이기만 하면 되는 건지 알고 싶습니다.

이게 사소하면서도 작지 않다고 느낀 게, 초보자가 대충 작성한 코드가 아니라, 수많은 경험이 있는 사람이 작성한 코드이기 때문입니다. 수강자 입장에서 혹시 놓친 부분이나 생각지 못한 의도가 있는지도 알아내는 것도 중요하다 생각합니다.

감사합니다.

답변 2

0

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

그 정도로 하나 하나 의미를 부여하실 필요는 없습니다.
유니크한 아이디로 구분해서 서버쪽에 어떤 아이템인지 통신할 수 있으면 충분합니다.
DBID를 노출시키는게 부담스럽다면 별도의 아이템ID를 생성하는 경우도 있긴 하구요.

0

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

안녕하세요, 인프런 AI 인턴입니다.

literate_t님, 주신 질문에 대해 나름대로 비슷한 주제를 다룬 기존 답변을 찾았으며, 이를 통해 도움을 드리고자 합니다.

  1. ItemDbId와 TemplateId의 차이점에 대한 이해
    우선, ItemDbId,구조 설계 게시물에서 Rookiss 강사님께서 ItemDbId와 TemplateId의 차이점에 대해 설명한 적 있습니다. TemplateId는 아이템의 데이터 타입을 나타내고, 같은 종류의 아이템은 같은 TemplateId를 가집니다. 반면, ItemDbId는 데이터베이스 상에서의 유일한 식별자로, 고유성을 보장하기 때문에 중복되지 않는 더 안정된 방식으로 아이템을 다룰 수 있습니다.

  2. 아이템 관리에서 고유 식별자의 선택 이유
    아이템을 관리할 때 고유 식별자(Unique Identifier)는 아주 중요합니다. 디비 정보 나누기 질문에서 확인할 수 있듯, 각 아이템이나 계정에 대한 고유 식별자는 데이터 동기화나 데이터 로드 시 매우 유용합니다. 이는 데이터의 혼동을 방지하고, 올바른 데이터를 불러오기 위함입니다.

  3. 강사의 의도 파악과 코드 경험
    경험이 많은 프로그래머가 작성한 코드는 여러 베스트 프랙티스에 근거할 가능성이 높습니다. 이런 걸 만드는 사고능력?의 답변에서 언급된 것처럼, 개발 경험이 쌓일수록 다양한 상황에서 최적의 방식을 고려하게 됩니다. 이는 실무에서의 안정성과 확장성을 확보하려는 의도와도 연결될 수 있습니다.

결론적으로, key로 ItemDbId를 사용하는 것은 고유성을 보장하고 데이터의 안정성을 높이기 위해서입니다. 물론, TemplateId도 고유할 수 있지만, 데이터베이스의 일관성을 유지하기 위해서는 별도의 고유 식별자, 즉 ItemDbId를 사용하는 것이 일반적입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.