見出し画像

ダンスゲーを作りたい#49 【内部処理】プレイ関連データのやり取り

今回はマジで山です。きっといつになく長くなるのでさっさと本題に入るのが一般的でしょうが、逆にどうせ長いなら考えたこと全部書いちゃおう方式でいきますので余計長いことでしょう。

ローカル保存するデータ管理が滅茶苦茶だった件

まず、今までなんとなく一時選択データはDataManagerにキャッシュ的に保存させて運用できちゃってたんですが、選択済みのキャラデータを表示する際は選択処理なしで表示処理がやって来うるので、初期値判定付きでローカル保存する必要があり、

となれば、既存のマネージャ経由でローカル保存するタイプも以前定義したんだからそれ使えばいいんですが、実は使ってないだけあって書き込みが構造上動作不能でした。

そこで読み出しは
Data hoge = await Manager.GetData<Data>(new Data());
みたいな感じで使い捨て呼び出しに統一してるのでこれに則り、書き込みはマネージャに窓口関数を置いてkeyと値を指定して文字列書き込みする形にしました。

普通のデータはそのまま読み出せるイメージですが、この構造の真価は定義済みのサーバにアクセスしないといけないデータをkeyを保存するだけでサーバ型データの形で取得できることです。

画像1

こんな感じ。この辺は勝手に満足してる領域なのでそんなに説明しませんが、適用可能か判定する部分で処理ができるというのが個人的に大きいわけで、そのためだけにこんな複雑になっちゃいました。おわり。

技ガチャが欲しい

技の入手方法なんも考えてなかったんですが、普通に考えて技ガチャほしいですよね。

技キャラ混同ガチャも技専用ガチャも作れるように同じガチャの基盤上で排出リストに技を追加すれば技も引けるという仕様に若干変更しました。

排出リストテーブルに技IDカラムを追加し、ピックアップはごっちゃでやって、排出リストのID欄の値で技なのかキャラなのかを判定し、一覧表示は技なら技アイコン、キャラならキャラアイコンを適用する形式にしました。

これでDBの排出リストに技だけ登録すれば技専ガチャにできて逆もまた然りという算段です。

画像6

キャラの太刀魚とかと一緒に技のピクトグラムたちも排出されてるのが分かります。キャラ同様、技もダブったら覚醒してます。

プレイ開始までに欲しい情報

さて、やっとこさプレイに入ります。

クエストを選択し、プレイ開始ボタンを押すまでで欲しい情報としては、

まずホーム画面では
@クエストマスタ
・クエストID
・クエストを表示する際のイメージ画像 

これをタップして出てくる詳細ポップアップに
@クエストマスタ
・クエスト種別
・難易度
・消費スタミナ
・詳細イメージ

が必要です。ここまではクエストマスタに登録すればいい情報ですね。

簡易詳細からプレイ情報セットアップ画面に移り、
@キャラマスタ
・アイコンイメージ
・キャラ名
・キャラID
@技マスタ
・アイコンイメージ
・技名
・技ID
@クエストマスタ
・CPUキャラID
@CPUキャラ育成情報マスタ
・CPUキャラID
・キャラID

あたりが必要そうです。

プレイ情報セットアップ画面ではキャラ選択と技選択ができるのでその辺の情報を連携し、CPUキャラも表示したいのでそれもデータとして必要です。

敵情報としてCPUキャラの育成情報マスタが必要になり、これのキーもクエストマスタに保存する必要が出てきます。

このCPUがまた厄介で、現状まだちゃんと作ってないですが、詳細表示をさせる場合どこから引っ張ってくるかを指定しないといけない都合上、テンプレートに改修が必要でバカ程めんどくさいわけです。今はやりませんがね。

ここまででこんな感じになります。

画像2

詳細情報は表示してませんが、そこはガチでめんどいしプレイフローのテスト上はデータが存在さえしてればいいので一旦放置。

プレイ時に欲しい情報

プレイ開始ボタンを押すと、必要情報を集めてくれるフェーズに入りますので、このタイミングで必要になる情報です。

この辺は表に現れないデータですが、
@クエストマスタ
・曲ID
・DJキャラ
・フロア
・CPUキャラID
@CPUキャラマスタ
・AI情報
・技セット

あたりが必要そうな気がします。

まだちゃんと作ってないですが、モデル等のゲームオブジェクトそのものはIDがあれば引っ張ってこれる構成になる想定です。

データが受け渡せてるか確認します。

画像5

画像5

画像5

オブジェクトの受け渡しは未だにやってないので外見は変わりませんが、設定したパーティ通り技が出ており、選択したクエストに紐づくフロアとかその辺の情報もIDが取れてるので情報は取れてました。

コンテンツ連携系はここからの課題ということで。

リザルト時欲しい情報

この辺が一番データ的には色々欲しいところの予定ですが、スコアの算出法を確定してないんでとにかくDBには情報が必要とだけ書いておきます。ちなみサーバ側で使ってスコアだけ返ってくるので、クライアント側には一切やってこないデータです。

@クエストマスタ
・…各種キー
@CPUキャラマスタ
・…スコアに係る育成情報全般
@技マスタ
・...スコア情報
@曲マスタ
・…曲の時間特性情報

この辺のデータはスコア算出方式が確定したらスコアがまともな形になるってだけで、今はサーバ側でインプット情報を確認すればOKですね。

ついでにスコア算出処理と合わせてユーザのランクアップ処理も行います。

となるとリザルト情報として受け取った経験値とかを適用させないといけないため、プレイしたクエスト情報とかもまとめて送ってレベルアップ演出用に使用したキャラのレベルアップ前の育成情報と、ユーザのレベルアップ前ランク経験値情報も返させます。

計算方法はまだ未定ですが一旦テストで入力回数につきスコアが増えるスコア算出処理を作って返して表示させたらこんな感じです。

画像7

ちなみに入力しないと負けるので今んとこ色だけで分けてる勝敗表示が青になります。引き分けは負けです。合わせてランクが上がった場合の挙動もいい感じに撮れたので載せときます。

画像8

ゲームの体をなしてきました。

ここまでで、

・新規アカウントを作成しゲームを始める
・ギフトを受け取って石を増やす
・ガチャを引いてキャラ、技を増やす
・クエストを選んでプレイする

という一通りの流れができるようになりました。

コンテンツ要素はまだ手つけてないので味気ないですけどね。

これでプレイ関連のデータ基盤がある程度整ってきたのであとは追加しながら随時コピペでほぼほぼ対応できたらいいなーなんて思ってます。

今回は詰め込みましたね。いやー疲れた。

もう少しちゃんとしてきたら改めてスマートにまとめ直して、それとは別に動画にしてYoutubeあたりにあげてみたいな~なんてプランもあったり?

この記事が気に入ったらサポートをしてみませんか?