【計算】ガチャの計算と企画職

いきなりですが、ガチャの計算の問題です。
条件①②の時、どれくらいUURがゲーム内に増えますか?

①次のような確率のガチャとします。
UURが0.2%
UR が0.8%
SR が 10%
R が30%
Nが59%

②次のようなプレイヤー分布とします。
1000人が10回ガチャをする。
500人が100回ガチャをする。
10人が1000回ガチャをする。

では、低課金者から計算してみましょう。
ちなみにR言語でやりました。



ppopulation <-10000 ←低課金者の人数
ccard <- 10 ←低課金者のガチャの回数
aa <-c()
cc <-c()
for (jj in 1:ppopulation){ ←低課金者の人数だけ、ガチャのシミュレーションする。

zz<-c()
for (ii in 1:ccard){

xx<-runif(1,0,1)

if (xx < 0.002){ ←このif文の連続でガチャを再現
yy<-"UUR"
}else if ((0.002<=xx)&&(xx<0.01)){
yy<-"UR"
}else if ((0.01<=xx)&&(xx<0.11)){
yy<-"SR"
}else if ((0.11<=xx)&&(xx<0.41)){
yy<-"R"
}else
yy<-"N"

zz<-c(zz,yy) ←yyが一回のガチャの結果
}

aa <- rbind(aa,zz) ←全員のガチャの結果をまとめる。

bb <-c() ←ここで全員の各種のカードの枚数を数える。
bb <- c(bb,length(aa[jj,][aa[jj,]=="UUR"]))
bb <- c(bb,length(aa[jj,][aa[jj,]=="UR"]))
bb <- c(bb,length(aa[jj,][aa[jj,]=="SR"]))
bb <- c(bb,length(aa[jj,][aa[jj,]=="R"]))
bb <- c(bb,length(aa[jj,][aa[jj,]=="N"]))

cc <- rbind(cc,bb) ←各種カードの枚数のまとめ。
}

colnames(cc) <- c("UUR","UR","SR","R","N")
summary(cc)
boxplot(cc)

かなり詳しく注釈を入れました。
以下結果です。




































低課金者でUURの獲得枚数は
9809人が0枚
190人が1枚
1人が2枚でした。

10回しか引かないのにUURが2枚も手に入る超幸運な人がいますね。
でも、殆どの人が0枚です。
10枚ともNの人もいれば、Nが0枚の幸運な人もいます。

問題の解答としては、以下の2つの変数を変えて同じシミュレーションですね。
ppopulation←500, 10
ccard←100, 1000

計算してみると、中課金者でUURの獲得枚数は
422人が0枚
73人が1枚
4人が2枚
1人が3枚

計算してみると、高課金者でUURの獲得枚数は
0人が0枚
1人が1枚
5人が2枚
4人が3枚


概算ですが、こんな感じでゲーム内資産が計算出来るはずです。
皆さんはこういうシミュレーションできますか?
ソシャゲ業界ではこのような計算が出来る企画の人があまりいません。

ですので、大まかな計算でガチャの設計をしたりします。
これは個人的に問題だと思っています。
ソーシャルゲームは、一種の仮想経済圏なので、
ゲーム内の資産にはもっと敏感になるべきだと感じています。

初心者にとって強いカードがすぐに手に入りすぎて、
初級ステージで面白みを感じない状況になっていないか
上級者にとってはカードは手に入るけど、
レベルアップが出来ない状況になっていないか。
このような問題を防止したり、いち早く気づくべきです。

最近はやりのパズドラ型のように、ミニゲーム単体で面白いゲームもありですが、
カード型のように、ゲーム内資産のやりくりに面白みを覚えるゲームもあります。
ちゃんと資産の流れを把握して、ユーザー全員にとってバランスが良いと思われる
ゲームを作りたいものです。

以上、AKIRAでした。