1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ガチャのデータ設計-基本的構造2-

Last updated at Posted at 2020-05-12

#内容
前回のデータ構造を拡張して、複雑なガチャ設定ができるようにしてみます

  1. ガチャの引き方の設定追加
  2. 複数の確率を保持する仕組みの追加

ガチャのデータ設計-基本的構造1-
Pythonで書くガチャ-データ設計-

##1. ガチャの引き方の設定追加
gacha_lotteryを拡張して、設定可能なガチャ条件を増やしてみます

  • 属性の絞り込み(item_type)
  • 通常抽選のレアリティ以上絞り込み(rarity)
  • おまけの抽選回数指定(omake_times)

gacha_lottery

id item_type times rarity omake_times omake_rarity cost
1 0 1 0 0 0 10
2 0 10 0 1 3 100
3 2 2 0 0 0 30
4 0 10 2 2 3 200
5 2 10 0 1 3 100

各項目の設定条件を以下のように追加、変更します。
(これらの設定に対応するためにプログラムの改修が必要になります)

  • item_type:0の場合は全て対象
  • rariy:0の場合は全て対象
  • omake_times:0の場合は、おまけなし
  • omake_rarity:0の場合は全て対象(おまけの有無は、omake_times)

##2. 複数の確率を保持する仕組みの追加
ガチャアイテム確率情報は、ID毎の確率(重み)を管理しています。
あるIDについて確率(重み)は一つしか設定できません。

「このガチャの場合は、確率(重み)を変更したい」
ということに対応できるように、ガチャアイテム確率情報にグルーピングを行うための**グループ(gacha_group)**を持たせます。

gacha_items

id gacha_group weight item_id
1 A 1 5101
2 A 9 4201
3 A 9 4301
4 A 9 4301
5 A 20 3201
6 A 20 3301
7 A 20 3401
8 A 40 2201
9 A 40 2301
10 A 40 2401
11 B 15 4201
12 B 30 3201
13 B 55 2201

####gacha_lotteryの修正
gacha_itemsと紐付けるためのgacha_groupを追加します
gacha_lottery

id gacha_group item_type times rarity omake_times omake_rarity cost
1 A 0 1 0 0 0 10
2 A 0 10 0 1 3 100
3 B 0 2 0 0 0 30
4 A 0 10 2 2 3 200
5 A 2 10 0 1 3 100

##考察
###・データ構造と出来ること

id gacha_group weight item_id
11 B 15 4201
12 B 30 3201
13 B 55 2201
id gacha_group item_type times rarity omake_times omake_rarity cost
3 B 0 2 0 0 0 30

グループがBのガチャを抜き出してみました。
このガチャは、「属性がFighterのみ引けるガチャ」になります。

属性が**Fighter(item_type=2)**のみということであれば、**属性(item_type)**の絞り込みで可能ですが、確率の設定も変更したいので、敢えて別グループを作成しました。

拡張により、このガチャの仕組みにて出来ることをまとめると以下のようになります

  • ガチャ対象アイテムをグループ(母集団)として複数設定
  • ガチャ実行時に属性の絞り込み(item_type)
  • ガチャ実行時に通常抽選のレアリティ以上絞り込み(rarity)
  • ガチャ実行時に通常抽選の回数指定(times)
  • ガチャ実行時におまけのレアリティ以上絞り込み(omake_rarity)
  • ガチャ実行時におまけの抽選回数指定(omake_times)

###・開発の現場において
通常はガチャの企画と、運用の設定されるのはプランナーさん(非エンジニア)です。企画に応じて、データ設計とプログラム開発をエンジニアが行うことになります。
そのため、エンジニアとして開発をする際に抑えておきたいことは、以下の2点になります

  • ガチャとしての基本的データ構成
  • 機能の拡張性

また、運用データの設定のしやすさも求められることです。
複雑すぎてエンジニアでなければデータの設定ができないというのは、自分の首を絞めることになりかねないので気をつけておきたいことです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?