(수정중) 게임개발 이야기: 시장 만들기 how to make a market for your game

in #indiegame8 years ago (edited)

정리 하자면 시장을 시뮬레이션하는 것은 큰 줄기로 아이디어가 두 개 밖에 없어요.
[TL;DR - two ideas for simulating a market, logit and MNL]

  1. 개인의 구매 확률은 로지스틱 분포를 따른다, 이때 효용 함수에서 쓸 계수들은 참고할 데이터가 있는 경우엔 최대 우도법을 이용해서 구하고, 아니면 본인이 생각하기에 적절하다고 생각되는 계수들을 찾아야함.
    [1. the probability that a customer buy a product has logistic distribution. finding proper coefficients is needed.]

  2. 경쟁 관계인 회사의 시장 점유율은 MNL 모형으로 계산한다. 고객들이 경쟁 회사들 중에 단 하나의 제품만 선택하는 경우에 한해서(mutually exclusive choices)
    [2. for duopoly, the market share is calculated via MNL model. only for the mutually exclusive choices]

게임에 고객을 구현해보고 싶어서 찾아봤던 것들을 가볍게 이야기하는 식으로 적어봤음.
[I googled some articles related to customer's choices for my games. I wanted to make markets working realistic. I've never taken economy class, so ... it's just rough idea]

일단 경제 모델은 내가 생각하기엔 플레이어가 만든 제품에 대한 시장의 수요량을 모델링 하는게 중요하다고 생각했음. 그래야 게임이 될테니까.
[firstly I wanted to model demand curve for player's goods because players make their products and sell it to compete other players in my game]

예를 들어서 플레이어가 스마트폰을 판다고 하면, 100원에 판다고 결정했을 때 시장에서 100원이면 구매할 사람의 숫자를 어떻게 그럴싸하게 정할 수 있을까? 난 그게 가격에 대한 수요 곡선으로 표현된다고 봤음(내 경제 지식의 끝 수요-공급 곡선 ㅋㅋㅋ)
[let a player made smart phone for $100. How can I determine the number of customers who want to buy it for that price? I thought demand curve is needed to simulate it(and supply and demand was my biggest knowledge of Economy haha)]

근데 또 가만히 생각해보면 제품을 구매할 때 고려하는 요건이 가격만 있는것이 아니지. 사람들은 아이폰이 비싸도 갬성 때문에 그걸 사잖음. 가격에 품질, 브랜드 이런게 스까져있는 어떤 인덱스가 필요하다는건 자명하지.
[then I realized that people didn't buy something just because it was cheap. my friends bought iPhone other than Samsung Galaxy for it's unique feeling. it was obvious that I need some index which is blended with price, quality and brand value.]

구글링해보니 그걸 효용(utility)라고 하더라고.
[It was called as 'UTILITY'. I googled.]

utility = a * brand + b * quality - c * price

효용은 대강 위와 같은 느낌의 함수로 표현됨. 그래서 더 검색해보니 흔히들 말하는 수요 곡선은 시장 수요 곡선이고, 시장 수요 곡선은 개인 수요 곡선의 합이라고 하더라.
[the above is utility equation. with utility I can represent the value of a product as a single number. I keep googling. the "Demand curve" I know is the market demand curve which is the sum of all customers.]

즉 개개인마다 어떤 놈은 브랜드를 중요하게보고 어떤 놈은 품질만, 어떤 놈은 가격만 따진다던가 하는 식으로 특성이 다른거임. 이런 개개인의 특성에 따라서 살지 말지 의사결정을 하는 과정을 수학적으로 표현하는 방법이 있음. 그게 바로 이산 선택 모형(discrete choice model)임.
[Each individual has different taste. some guy may want luxury goods and other guys may check only price. Customers have their unique characteristics. Lucky for me. I found a math for customer's choice. it was called "discrete choice model".

한글보단 영어로 검색하는 편이 자료가 많음.
[finding something in English is always useful.]

효용 함수의 값이 0보다 크면 구매한다고 했을 때, 어떤 사람이 제품을 구매할 확률을 로지스틱 분포를 따른다고 하면
Let a customer buy a product when the utility of the product is larger than 0. the probability of buying it has logistic distribution.]

그 조건부 기대값이 1/{1+exp(-u)} 가 됨.
[the conditional expectation is 1/{1+exp(-u)} where u is the utility]

그 사람이 일개 개인이 아니라 어떤 계층을 대표한다면, 해당 계층의 숫자가 n일 때, n/{1+exp(-u)} 이 그 제품의 그 가격에 대한 수요량이 되겠지.
[I assumed that the probability isn't for a customer. it's for a class. and the number of the class is n, so the market demand of the product will be n/{1+exp(-u)}

위 식을 가격에 대해서 쭉 긁어서 그래프로 그리면 흔히들 볼 수 있는 우하향의 수요 곡선이 표현됨. 나는 이런 식으로 시장을 소득에 따른 계층으로 구분했음. (빈곤층, 중산층, 부유층 이런 느낌? 왜냐면 그래야 경기 변동에 따라 소비심리가 얼어붙는다던가 하는 식의 표현이 가능하지 않을까? 라는 생각을 함)
[you can see the typical demand curve if you plot the conditional expectation for the utility. I divided the total market into three different classes, like poor, middle class, rich because I want to simulate the effect of the market condition.]

1495107692 (1).png

기본적으로 저런 로지스틱 분포를 이용해서 선택하는 모형을 logit model 이라고 하는데, 이 로지스틱 회귀가 보통 yes/no 선택 문제 같은거나 환자가 살았는지 죽은건지 판단하는 뭐 그런 문제들에 쓰임.
[that choice model using logistic distribution is called as logit model. this model is employed for the yes/no problems.]

딥러닝에서 말하는 시그모이드 함수 같은게 이런 로지스틱 회귀에 대한 이야기더라고.
[the sigmoid function in Deep learning looks like logistic regression.]

지금까지는 단일 제품에 대한 시장의 수요를 계산했는데, 두 회사가 경쟁한다면? 이땐 multinomial logit(MNL) model을 사용함. 이건 찾아보니 최종적으로 계산하는 수요량의 함수가 딥러닝 할 때 얘기하는 소프트맥스 함수랑 똑같이 생겼더라고. 뭐 로지스틱 회귀를 쓰니까 당연한건가??
[the above was a monopoly. what if two different companies are competing? in that case multinomial logit model is used. I found it looks so similar with softmax function. is it trivial because those are kinds of logistic regression?]

두 회사의 경쟁 상황에서 시장의 수요는 각 회사의 점유율로 계산함.
[for duopoly market demand of each company is its market share.]

market share = exp(u1) / {exp(u1) + exp(u2)}

시장 점유율은 위와 같은 식으로 표현됨. 걍 봐도 소프트맥스 함수랑 똑같이 생겼져?
[right? market share equation looks so similar to the softmax function?]

이상이 대략적인 이야기이고, 효용 함수에서 계수들 a, b, c라고 적은 친구들을 적절하게 선택하는 것이 중요하고.. 보통 경제논문들 보면 구매여부는 위에서 말했듯 이산 선택 모형으로 많이 시뮬레이션 하는것 같은데 상황에 따라 사용하기 힘든 경우도 있는것 같음.
[this is what I googled for economic simulation. the important part is finding proper coefficients(a,b, and c). normally logit models are employed to simulate the customer choices. it has limitations.]

무슨 소리냐면 위에 경쟁 구도에선 구매자들이 A회사의 제품을 사면 B회사의 제품을 사지 않는 상황에서 쓸 수 있는 것임. 통계 병신이라 자세한 내용은 잘 모르겠음 ㅋㅋㅋ 관심 있으신 분들은 검색해보시고 깨달음이 있으면 공유합시당.
[one of the limitation is that the model is valid for the mutually exclusive choices. and .. the detailed explanation is beyond my expertise. lol actually my statistics are suck.]

% 효용 함수가 그래도 좀 쓸모가 있다고 생각되는 점은, 이걸 꼭 제품의 수요량 계산을 하는 것에만 국한되기 보다도 투표 게임을 만든다면 진보 성향/ 보수 성향을 표현하는데 사용할 수도 있다고 봄.

신기한 세상 ㅋㅋㅋ

키워드: discrete choice model, customer behaviour theory, logit model, logistic regression, demand curve

참고한 게임: offworld trading company, capitalism 2, mad games tycoon

근데 어짜피 이런거 거르고 수요 곡선을 그럴싸하게 만들 수 있다면 굳이 이럴 필요가 있을까? 라는 생각이 들기도 함.

Sort:  

Congratulations @emalron! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You published your First Post
You made your First Vote
You made your First Comment
You got a First Vote

Click on any badge to view your own Board of Honnor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!