티스토리 뷰

게임 서버 개발자라면 주로 자료 구조와 서비스 로직에 많은 고민을 하게 되는 것 같습니다.

그 중 게임 내에서 판매 되는 상품은 서비스 별로 로직이나 제한 사항들이 많이 달라지게 되는데요.

오늘 포스팅은 그것들에 대해 정리해보고자 합니다.


'상품' 이란?

 구매를 하게 되면 게임 내에서 사용되는 재화. 즉, 캐쉬(일반적으로 보석)나 골드(기본 무료 재화 같은것), 캐릭터 장착 아이템, 강화 아이템 등등을 지급하는 것 - 으로 정의 하도록 하겠습니다.


먼저 상품에 대한 카테고리를 나눠 볼까요?


상시 판매 상품. 

기간, 구매 횟수에 상관 없이 항시 판매하고 돈만 있다면 무제한으로 구매가 가능한 상품 입니다.


기간 한정 상품. 

특정 기간에만 판매하는 상품 입니다. 예를 들자면 x월 x일 부터 시작해서 다음달 y일까지 판매, 특정 요일에만 판매, 앞의 두 조건을 동시에 만족하여 판매하는 상품들이 있습니다.


회수 한정 상품.

특정 횟수만 구매 가능한 상품들입니다. 주로 기간 한정 조건이랑 맞물려서 동작하게 되며 일반 상품 보다는 더 많은 보상을 주기 때문에 무제한으로 팔수 없는 상품들을 이런식으로 만듭니다. 예를 들어 만원을 구매시 2만원 정도의 혜택을 주는 상품 같은 경우 무제한으로 풀수 없기 때문에 이런식으로 제약을 걸어 둡니다.


이런 경우 <구매자, 상품 아이디, 구매 횟수> 형태의 데이터를 유지하여 특정 유저가 해당 상품을 몇회나 구매하였는가에 대한 기록을 추적할수 있어야 합니다. 일정 기간이 지난후 구매 횟수가 리셋되는 경우에는 <구매자, 상품 아이디, 구매 횟수, 구매 일시> 와 같이 저장 데이터를 확장하여 기간이 지났다면 구매 횟수를 리셋 해줄 수도 있어야 합니다.


유/무료 상품.

상품 구매에 소모 되는 재화에 따라서 구분이 될수 있어야 합니다.


그래서 나온 상품의 속성

eg) sale_product_info {

 id - 상품을 구분짓는 유일한 이름입니다. 문자열로 타입으로 관리자가 직접 지정할수 있도록 하는 것을 권고합니다.

 name - 유저에게 디스플레이 되는 이름.

 description - 유저에게 디스플레이 되는 상품 설명.

 purchase_currency_type - 구매 시 소모되는 재화 타입.  eg : cash, gold ...

 purchase_currency_value - 구매 시 소모되는 재화 량

 product_id - 구매 시 지급 되는 상품에 대한 구분자

 start_date - 상품 판매 시작 일시

 end_date - 상품 판매 종료 일시

 week_day - 상품 판매 요일

 max_sale_count - 유저별 상품을 판매 할수 있는 최대 횟수.

};

 

댓글
댓글쓰기 폼