見出し画像

ダンスゲーを作りたい#16 ダンスにおけるスコア処理の方法を考える

ダンスを定量的に測るのは簡単ではありません。

最近エイベックスさんがAIによる骨格診断でダンスのスキルを数値化する技術を開発したそうですが、ダンスを推し量る難易度で言えばそのレベルで難しいわけです。

しかしながら、ダンス”ゲーム”なので評価しないといけません

評価基準になりうる要素はなんでしょうか。

ダンススポーツとしてのブレイクダンスでは、

・ボディ
・ソウル
・マインド

の三点を相対評価するトリビュームシステムが導入されてるそうですが、
基準がふんわりしてるので、もっと厳密に

【素点】
・技術…6項目
・表現…5項目
・構成/完成度…5項目
・バトル… 2項目

【加点】
・サプライズ(びっくりさせて沸かせた)...+1~3点

【減点】
・リピート(同じ技を繰り返す)...-1点
・クラッシュ(コケたりバランスを失ったり)...-1~3点
・ミスビヘイビヤー(罵倒、不適切表現)...-1点
・ロスト(悪いことした)...失格

という評価基準があるそうです。 

参考:https://breaking.jdsf.jp/judgement-system/

これを参考にゲームに落とし込んでいきましょう。

技術の評価基準

育成要素にするか、技固有の難易度に乱数指定などによる指定で技それぞれが持つ固有値として登録するのがよいのではないでしょうか。

具体的には

・育成で形、バランス、精度素点が上昇、累積値で評価
・技固有値に迫力、俊敏さ、難しさを設定、累積値で評価
・迫力、俊敏さはキャラによっても増減

といった方針でいきます。

表現の評価基準

ここが最も難しい気がしますが、各要素について考えると、技を使うキャラとの相性や、プレイヤースキルが入り混じる形になりそうです。

具体的には

・キャラ固有値と技固有値の相性で、自信、自然さ、個性を算定、累積値で評価。
・入力の正確さによる判定と、技固有値と曲調固有値の妥当性による判定で音楽性を評価
・フレイバーは無観客状態では判定不能なため、現時点では保留。

とします。

構成/完成度の評価基準

一見簡単に評価できそうですが項目を見ると難しいです。
また固有値頼みになってしまう部分が多くなりそうですが、

具体的には

・技固有値により独創性を算定、累積値で評価
・技種別の分散度の高さで複雑さ、多様性を評価
・技種別の一貫性を算定し完成度を評価
・クリーンさはモーションの問題なので評価対象外

とします。

バトルの評価基準

初期段階では対戦システムは実装しない予定です。

しかしながら、バトルシステムはどう考えても必須なので、
観客システムを含め、バトルシステム採用時には、ここで必要な戦略、反応の観点と、空間支配、フレーバーの観点を取り込んで考える予定です。

よって、現時点では考えないこととします。

加点要素の評価基準

要素としてはサプライズのみですが、これが非常に難しい。

びっくりすることはあっても、いいびっくりか悪いびっくりか判別しずらいからです。

基本方針としては、

・技と曲調に種別、または固有値を設けて、ギャップが大きい場合にサプライズ要素として加点する

とするしかないです。

減点要素の評価基準

・リピート

特徴的な技を繰り返し使うこと とあるため、技固有の奇抜値に応じてリピート減点を大きくすればよいでしょう。

・クラッシュ

基本的に、つながる技以外の入力はできない仕様で考えています。
よって、つながる技がない状態になった際自動的にクラッシュとして固定点の減点としましょう。

・ミスビヘイビヤー

悪いことは基本できない仕様にします。できたとしても判別できません。
バトルシステムを作った後などで煽りが横行したら検知、減点する仕様を追加するというのはありでしょう。

・ロスト

悪いことはできないのでこちらもいったん検討しません。
上記同様、バトルシステム実装後には一定数のミスビヘイビヤーで自動垢BANってのもありですね。

まとめ

バカ長い。

書くのも疲れたし読む人もいないでしょうね。

まとめとして、

【技が持つステータス】
・形、バランス、精度の育成ステータス
・迫力、俊敏さ、難しさ、奇抜さの固有ステータス
・技の種別 (ex かっこいい かわいいとかそういう 複数設定可
・曲調マッチ種別 (ex しずか うるさい とかそういう 複数設定可

【キャラが持つステータス】
・キャラ種別 (技種別マッチ度をキャラ種別ごとに設定 
・ 俊敏さ、迫力の固有ステータス

【曲が持つステータス】
・曲調 (拍ごとに固有種別を設定 曲調マッチ種別と算定

をそれぞれが持ち、前述の算定法でscoreを計算するって事で、次回からは実際にスクリプト書いてみましょうか。

では。

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