• DoRubyとは
  • お問い合わせ
  • Ruby/Rails
  • Web開発
  • Webマーケティング
  • アピリッツ
  • ライフハック
  • ゲーム制作/開発
  • Railsの小技
  • Rubyの小技
  • Gemの紹介
  • ActiveRecord
  • 初心者向け
  • Java/Scalaテク
  • Unixのあれこれ
  • データベース
  • スマホ開発
  • HTML/CSS/JavaScript
  • デザイン製作
  • インフラ
  • クラウド
  • セキュリティ
  • エディタ
  • バージョン管理
  • その他
  • python
  • アクセス解析
  • Googleアナリティクス
  • Googleデータスタジオ
  • Web広告
  • SEO
  • UI/UX
  • ソーシャルメディア
  • EC開発
  • Webシステム開発
  • コンサルティング
  • Webデザイン
  • ブロックチェーン
  • ゲーム紹介
  • アプリ紹介
  • ASP
  • 風景
  • パソコン
  • ツール
  • ガジェット
  • 仕事術
  • 健康
  • 生活
  • 書評
  • Excel(エクセル)
  • PowerPoint(パワーポイント)
  • ゲームプランニング
  • SpriteStudio
  • マスターデータ入力/作成
  • Unity
  • キャラクターデザイン
  • ゲームシナリオ
  • レベルデザイン
  • ゲーム分析
  • 3DCG
  • イラスト制作
  • CG/アニメーション
  1. ホーム
  2. Web開発
  3. その他
  4. ボックスガチャの実装をしよう(ソーシャルゲームにおけるサーバーサイド) 5
  • 2019-06-03
    • カテゴリ:
    • その他
    • タグ:
    • ゲーム開発
    • ガチャ

ボックスガチャの実装をしよう(ソーシャルゲームにおけるサーバーサイド) 5

この記事は公開から1年以上が経過しています。情報が古い可能性がありますのでご注意ください。

このキャラクターにこれだけの価値があったのだろうか......? いや、ある、無ければ困る! だって、だって、だって、これだけのお金を掛けたんだもん! 高級なYAKINIKU以上の価値があるんだもん! もん! もん......。タン塩......。焼けて少し丸まった歯ごたえ豊かなタン塩にレモンをキュッと絞って......。

前回までのあらすじ

前回

 ボックスガチャのサーバーサイドのコードの実装が完了しました。
 残るは、テストコードの作成、マスタのインポート処理、クライアントとの繋ぎこみくらいです。

テストコードの実装をしよう

さーばーえんじにあ「仕様書からだと

・ボックスガチャは通常ガチャと同様、1連と10連で引ける
・ボックスガチャで引けるものは通常ガチャと同等
・10連を選択した時にボックスの中身が9個以下だった場合、消費される対象はその中身分のみとなり、全てを自動で排出する
・リセットする度に上限までボックスの中身は変わる
・リセットは自由に可能。そのステージのボックスガチャを1回も引かなくともリセットが出来る

 こんな感じのことが書かれていて、これに対応したテストコードと、
 まあ、後は普通のガチャと同じように、消費する物がそもそも足りなかった場合とかにエラーが起こることを書いておけばいいか。
 後、今回はGachaBoxContentManagerっていうボックスガチャの状態を一括管理するクラス作ったからそこの点でもテストコード作っておくか」

さーばーえんじにあ「必要なテストは

・ボックスガチャを1回引いた時、そして10回引いた時に
 ・ボックスの中身が正常に引かれている事
 ・ユーザーのキャラクターが増えている事
 ・ユーザーの消費対象物が減っている事
 ・ログが記録される事
・ボックスの中身が9個以下だった場合に10回引くを選択した場合に
 ・中身が空になり、ユーザーの消費対象もその分だけ減っている事
・リセットに対して
 ・正常にリセットが出来て
 ・次のステージのボックスがフルの状態である事
 ・リセットは指定回数より多くやろうとしたらエラー
......

 よし! 必要なテスト項目は20個オーバー!
 そしてそのテストをする為には

・ダミーキャラクターマスタ複数作って
 ・それに付随するキャラクターのパラメータマスタとか作って
・ダミーガチャマスタ作って
 ・ダミーボックスガチャ中身マスタ作って
・ダミーユーザー作る為に
 ・ユーザーランクマスタとかそういうのも必要で
・それ作ってからダミーユーザー作って
 ・ダミーユーザーに消費対象のブツを十分に渡した上で
・プロセスのコンストラクタを呼び出してプロセスを実行! 
 ・実行された事に対して想定される結果を書く!

 ............つ、疲れる。
 でも、書いとかないと、リファクタリングとか気軽に出来ない......。
 頑張ろう......」

マスタインポートの処理を書こう

ぷらんな「仮マスタ出来たよ」
さーばーえんじにあ「了解ですー。こっちもテストコード作成がキリ良いところなので、そっち先に対応しますー。
で、不正なマスタデータが入らないようにする為には、どういう事を制限を掛けておけば良いかなってのは......、

・通常ガチャ指定のガチャマスタは、ボックスガチャ内容マスタに子データを持っていてはならない
・ボックスガチャ指定のガチャマスタは、ガチャ内容マスタに子データを持っていてはならない
・ボックスガチャ指定のガチャマスタは、リセット制限回数が1以上を指定していなくてはいけない
・ボックスガチャ内容マスタにガチャコード単位で排出キャラクターに重複があってはならない
・ボックスガチャ内容マスタの排出キャラクター量は1以上でなければいけない
・ボックスガチャ内容マスタの内容のステージ数は、ボックスガチャ指定のガチャマスタのリセット制限回数と一致していなければならない

 ......えーっと、ざっと洗いだすとこの位かな......。他にプランナー目線とかからで抜けている事無いかな」
ぷらんな「あ、単純な事抜けてるね」
さーばーえんじにあ「えっ」
ぷらんな「ボックスガチャの排出キャラクターがマスタに実存するかの確認してないじゃん」
さーばーえんじにあ「あっ」

1時間後

さーばーえんじにあ「条件満たした上で仮マスタ入りましたー」
ぷらんな「やったぜ」


小ネタ:

・通常ガチャ指定のガチャマスタは、ボックスガチャ内容マスタに子データを持っていてはならない
・ボックスガチャ指定のガチャマスタは、ガチャ内容マスタに子データを持っていてはならない

こういう二つの条件は整理してみたりすると一つの条件に纏められます。

ガチャマスタ |内容が存在しているマスタ|正常か異常
通常ガチャ  |通常ガチャ       |正常
通常ガチャ  |ボックスガチャ     |異常
ボックスガチャ|通常ガチャ       |異常
ボックスガチャ|ボックスガチャ     |正常

即ち、

・ガチャマスタと対応する、内容が存在しているマスタが通常とボックスにどちらか片方のみにあり、そして一致している

と同等になります。
後、排他的論理和とかを使ったりしても簡潔に纏められる場合があります。
上記で使うならば、

・(ガチャマスタが通常である xor 内容が存在しているマスタが通常である)ならば異常である

となります。
まあ、簡潔に纏められても分かりづらい場合は、分かりやすさを優先して多少冗長になってもそちらの方が良いです(そもそも排他的論理和自体が分かりづらいかもしれない)。

次


  • 215 views
    • Tweet
    • このエントリーをはてなブックマークに追加

この記事を書いた人
HelloWorld?
25632 256 41943041613107216 13107216384818192 256 419430418192524288168 52428816384 216 131072132768168 641282568163841310721128

「いいね!」するとDoRubyの最新記事を受け取ることができます。

Facebook

Twitterから最新記事を受け取るならこちら

Follow @doruby

Feedlyから最新記事を受け取るならこちら

follow us in feedly

おすすめの記事
  • 2,260 views
  • 2016-07-27
リニューアルをしたDoRubyの3つの目的
  • 2,118 views
  • 2016-08-15
ビット演算でフラグを管理する
  • 1,741 views
  • 2017-04-24
アピリッツの新卒合宿2017

カテゴリ

Ruby/RailsRailsの小技Rubyの小技Gemの紹介ActiveRecord初心者向けWeb開発Java/ScalaテクUnixのあれこれデータベーススマホ開発HTML/CSS/JavaScriptデザイン製作インフラクラウドセキュリティエディタバージョン管理その他pythonWebマーケティングアクセス解析GoogleアナリティクスGoogleデータスタジオWeb広告SEOUI/UXソーシャルメディアアピリッツEC開発Webシステム開発コンサルティングWebデザインブロックチェーンゲーム紹介アプリ紹介ASP風景ライフハックパソコンツールガジェット仕事術健康生活書評Excel(エクセル)PowerPoint(パワーポイント)ゲーム制作/開発ゲームプランニングSpriteStudioマスターデータ入力/作成Unityキャラクターデザインゲームシナリオレベルデザインゲーム分析3DCGイラスト制作CG/アニメーション

    人気の記事
    最近の記事
    • 3,501 views
    • 2020-04-02
    Kali Linux 2020.2 導入と日本語化
    • 802 views
    • 2020-03-06
    rack-lineprofを改造して管理画面からファイル指定&ログ追跡出来るように
    • 778 views
    • 2020-03-05
    FactoryBot と Gimei を使って架空のユーザを作る
    • 579 views
    • 2020-02-04
    ActionCable実装しようwith webpack
    • 510 views
    • 2020-01-27
    この頃のプルリクに対するレビュー
    Facebook

      サイト情報
      • DoRubyとは
      • 株式会社アピリッツ

      ソーシャルアカウント
      • Facebook
      • Twitter

      企業情報
      • 会社概要
      • 採用情報
      • お問い合わせ
      サービス製品
      • レコメンドASP
      • サイト内検索ASP「Advantage Search」
      • オープンソースECサイト構築パッケージ「エレコマ」
      • 受注・在庫・商品情報一元管理「モールコネクター」
      • セキュリティ診断サービス
      • Googleアナリティクスセミナー

      Copyright © Appirits All Rights Reserved.