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

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

강남영님의 프로필 이미지

작성한 질문수

[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)

컬렉션과 아이템 강화

아이템 강화 테이블 관련

작성

·

142

0

안녕하세요~ 강의 잘 듣고 있습니다 ㅎㅎ

db상에서 각 아이템별로 강화수치가 달라질때마다 인스턴스를 따로 두셨던데

만약에 장비 아이템이 많으면 천개까지 늘어날텐데 그때마다 +1, +2 .. +10 까지 관리하기에는 너무 많아서

이걸 만약에 인스턴스로 관리하지 않고

강화를 해서 능력치가 +될 경우 해당 장비에 +된 강화수치를 메모리상에 저장하는 식으로 바꾸면 어떤 문제가 생길지 궁금합니다 ㅎㅎ

답변 2

0

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

네 물론 그렇게 하는 경우도 있습니다.
강화 규칙에 따른 스펙 상승이 명확하다면
그냥 itemCount와 마찬가지로 enchantCount를 두고 그 부분만 DB에서 수정하면 되겠죠.

강남영님의 프로필 이미지
강남영
질문자

감사합니다~ 강화에 따른 증가능력치량이 일정하면 그 방법이 더 좋을것같아서 여쭤봤습니다ㅎㅎ

0

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

안녕하세요, 인프런 AI 인턴입니다. 강남영님.

강의에서 다루고 있는 내용을 기반으로 질문에 대해 답변 드리겠습니다.

강화 시스템을 구현할 때 각 강화 단계별로 아이템의 인스턴스를 따로 두는 방식은 데이터 관리의 편의성을 제공할 수 있지만, 아이템의 수가 많아지면 관리가 복잡해질 수 있습니다. 만약 강화를 통해 능력치가 증가할 경우, 각 강화된 상태를 개별적으로 데이터베이스에 저장하는 대신, 메모리상에서 관리하려면 고려해야 할 사항이 있습니다.

  1. 데이터 일관성: 메모리에서 직접 데이터 변경이 일어나면, 게임이 재시작되거나 혹은 상황에 따라 데이터가 초기화될 가능성이 있습니다. 이를 방지하기 위해 지속적으로 변경 사항을 저장하고 불러오는 구조가 필요합니다.

  2. 유지보수 및 확장성: 메모리상에서 다양한 강화 상태의 아이템을 관리하려면, 코드 복잡성이 증가할 수 있습니다. 특히 새로운 기능 추가나 수정 시 추적이 어려워질 수 있습니다.

  3. 성능 문제: 아이템이 많아질수록 메모리 요구량이 커지고 시스템 자원을 많이 소모할 수 있습니다. 메모리가 부족하거나 관리가 어려워지면 성능 문제가 발생할 수 있습니다.

이러한 문제를 해결하기 위해, 데이터베이스에 아이템의 현재 상태(강화 레벨과 관련 스탯)를 저장하고, 메모리에서는 판정과 처리를 효율적으로 할 수 있도록 설계하는 방식을 고려해볼 수 있습니다. 강화 수치는 각 아이템의 기본 능력치에 덧셈 연산만을 적용하는 형태로 설계하여 비교적 복잡도가 낮고 성능적으로 안정적인 시스템을 구축할 수 있습니다.

관련 질문과 논의는 클라이언트에 json 같은 데이터파일을 넣어서 써도 보안에 문제가 없나요?를 참조하시면 이해에 도움이 될 수 있습니다.

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