traP Member's Blog

ゲームを作る上で興味深いスプラトゥーンの仕様

paruma
このエントリーをはてなブックマークに追加

1. はじめに

これはtraP Advent Calendar 2015の21日目の記事です。

はじめまして、こんにちは。ぱるまと申します。

「ゲームを作る」には、単にプログラムを組むだけではなく、ゲームデザインをしたり、グラフィック、サウンドを作るなど様々な作業が必要になります。この記事は、「ゲームを作る」っていう観点で(無理やり)カテゴリー付けると、ゲームデザイン、特にゲームの仕様についての話になります。

ところで、ゲームの仕様を一から考えるのは大変ですよね。なので、ゲームの仕様を考えるときに既存のゲームの仕様を参考にすることがあると思います。(今、僕のチームで作ってるゲームでも「この敵はマイクラの○○のイメージで」のような話が出てましたね。)

そう考えるためには、既存のゲームの仕様を知っている方がいいですね。ということで今回は、僕が最近はまっているスプラトゥーンというゲームの個人的に興味深いと思った仕様について紹介していきます。今後、多分何かしらゲーム作りに役立つかなとは思います。

スプラトゥーンに詳しい人が読むと「あれ?」って思うところがあると思いますが、その点はご了承ください。

2. スプラトゥーンとは

そもそもスプラトゥーンがどんなゲームなのかわからないと、この記事を読んでもつまらないと思うので簡単に紹介します。

スプラトゥーンとは任天堂が出しているWii Uのイカを操作するアクションシューティングゲームです。8人を2チームに分けて4対4で対戦します。内容としては、インクの出るブキを使ってひたすら塗りまくって、チームの色で塗られた面積が最終的に広いチームが勝ちです。また、インクの出るブキを使ってインクを敵に当てて、敵を倒すこともできます。また、インクに潜って素早く移動できるのがこのゲームの特徴です。

文章だけではうまく伝わらないと思うので、動画を紹介します。下の動画は任天堂が投稿したスプラトゥーンのプレイ動画です。試合自体は1:02から始まるのでそこからご覧ください。ちなみに、この動画で使われているブキはシューターというカテゴリーに属するものです。シューターの他にはローラータイプのブキなどがあります。この記事では、この動画で使われているようなシュータータイプのブキのみ扱います。

 

3. 今回紹介する仕様

次の2つの仕様について紹介します。

  1. ギアパワーの数と効果が2次関数の関係になってる話
  2. シューターのダメージ上限、確定数の話

4. ギアパワーの数と効果が2次関数の関係になってる話

まずはギアパワーとは何か。スプラトゥーンにはギアと呼ばれる装備があります。画像のように帽子、服、靴の3種類のギアを同時につけることができます。(画像では左から順番に帽子、服、靴となっている。)

ギア

そして、ギアにはギアパワーと呼ばれる能力がついています。ギアパワーには例えば、移動速度が上がるものや、攻撃力が上がるものなどいろいろなものがあります。イカ速度このマークはインクに潜っている時(イカ状態の時)の移動速度が上がるギアパワーです。(以下、このギアパワーをイカ速度と呼びます。)

上の帽子、服、靴のギアの画像を見てください。まずは帽子を見ます。帽子には、イカ速度のギアパワーが上段に1つ、下段に2つついています。上段についたギアパワーをメイン、下段についたギアパワーをサブと呼びます。すなわち、帽子にはイカ速度のギアパワーがメイン1個サブ2個付いているといえます。同様に、服にはメイン0個、サブ2個ついています。また、靴にはメイン1個、サブ0個ついています。帽子、服、靴を合わせるとイカ速度のギアパワーは、(1, 2)+(0, 2)+(1, 0) = (2, 4)より、メインに2個、サブに4個ついています。(以下、「メインに2個、サブに4個」を「メイン2サブ4」と略します。

さて、メイン1個はサブ0.3個分に相当します。すなわち、メイン1個はサブ3個より効果が高くて、サブ4個より効果が低いです。効果と言うのは、イカ速度で言えば、速さのことだと思ってください。また、メイン1個はサブ0.3個分ということから、メイン1個を10,サブ1個を3と考えて、メインm個、サブs個を次のように表します。

x = 10m + 3s

このxの値が大きければ大きいほど、ギアの効果が大きいです。例えば、メイン2サブ4の場合はx=32、メイン1サブ8の場合、x=34です。よって、メイン2サブ4よりメイン1サブ8の方が効果が大きいです。また、メインには最大3つ、サブには最大9個つけられるので、xの最大値は57です。

ギアパワーの効果はxの関数としてf(x)と表すことができます。しかし、f(x)は1次関数ではありません。スプラトゥーンでのギアパワーの性質として次のようなものがあります。「同じギアパワーをつければつけるほど、効果は大きくなるが、付け加えた時に大きくなりにくくなる」例えば、メイン1の状態にサブ1を加えた(x=10のときに3を加えた)ときの効果の変化量と比べて、メイン2の状態にサブ1を加えた(x=20のときに3を加えた)ときの方が効果の変化量が低いです。fを使って次のように書き直せます。f(20+3) – f(20) < f(10 + 3) – f(10) 。よって、f(x)は上に凸な増加関数です。また、xの最大値が57なので、xの範囲は0~57です。グラフで書くと次のような感じになります。

ギアパワー

では、その、上に凸な増加関数は一体何なのでしょうか?

そう、2次関数です。こんな単純な関数が使われているのです。三角関数や対数関数みたいな変な関数ではないのです。(変とか言ったら怒られそう)。

2次関数といえば、いくら単純でも、ある点で増加から減少に入れ替わるので若干扱いづらい関数です。うまいこと定義域を指定しないと常に増加といった表現ができません。それでも2次関数が使われるのですから何かしら理由はあるのでしょう。(自分は、2次関数が単純で、差分が1次関数になるからって考えています。実際どうなのかは知りません。)

実際にどんな2次関数の式になっているのか見てみます。イカ速度のギアパワーの効果の関数は次のようになります。

\displaystyle f(x) = 1.92(1+\frac{0.99x-(0.09x)^2}{120})

また、人状態での移動速度アップ(人速度)のギアパワーの効果の関数は次のようになります。

\displaystyle f(x) = 0.96(1+\frac{0.99x-(0.09x)^2}{60})

どちらの式にも共通して0.99x-(0.09x)^2があります。これは他のギアパワーの式にも共通して出てきます。この式を平方完成すると、

\displaystyle 0.99x-(0.09x)^2 = -(0.09)^2(x - \frac{550}{9})^2 + \frac{121}{4}

\displaystyle(\frac{550}{9} = 61+\frac{1}{9})

なので、xの最大値57はf(x)の頂点(約61)の近くにあることが分かります。おそらく、57という数字を念頭に置いて、57より大きくて57に近い値が頂点となるようにf(x)を決めたのでしょう。もし、頂点が57より低い値だったら、f(x)が途中で減少関数になって、ギアパワーを多くつけたら効果が減少してしまう事になります。

50付近でギアパワーをつけてもあまり効果が増えないので、頂点の値をもう少し大きくしても良かったのでは?とか考えると結構面白いです。

ごちゃごちゃ書いてしまいましたが、ここで言いたかったのはこのゲームでは上に凸な増加関数を表現するにあたって2次関数が使われているってことです。ゲームの何かを表現するのにどんな関数を使おうかなって考えている時に、ぜひ、2次関数を候補に入れてみてください。

5. シューターのダメージ上限、確定数の話

例えば、あるシューターAの火力は1発で42ダメージであるとします。スプラトゥーンのプレイヤーのHPは100なので、3発打てば相手を倒すことができます。この時シューターAは確定3発である、といった表現をして、3のことを確定数といいます。(攻撃する側にとっては確定数が低いほうがいいです。低いって言葉に騙されやすいので注意です。さっきも騙された…)

ところで、スプラトゥーンにはギアパワーとして攻撃力アップという、攻撃力が上がるギアパワーがあります。前項目で説明したイカ移動速度と大体同じで、攻撃力アップによるダメージ倍率f(x)は次のようになります。

\displaystyle f(x) = 1+\frac{0.99x-(0.09x)^2}{100}

ならば、次のようになるのでないかと考えます。「攻撃力アップのギアパワーをつけまくれば、シューターAが確定2発になるのではないか?」と。xが24のとき(メイン0サブ8のとき)、f(24) = 1.190944となります。つまり、1発の火力が1.190944倍になるので、1発のダメージは42×1.190944 = 50.019648となり、確定2発になりそうです。しかし現実にはそうなりません。どんなに攻撃力アップのギアパワーをつけても49.9ダメージが上限、つまり確定3発のままなのです。他のシューターもそうで、攻撃力アップを使って確定数を下げることができません。

このように割と強引に(不自然に)処理をしています。不自然じゃないって思う人もいるかもしれませんが、少なくても自分はこのことを知るまで、ダメージが操作されているなんて考えもしませんでした。まあ、ゲームバランスのことを考えれば、このようにダメージ操作をするのは当たり前のことなのかもしれないですが。

しかし、スプラトゥーンのNPC(ノンプレイヤーキャラクター)はこのようなことを教えてくれないので(たぶん)、確定数を下げられると勘違いして攻撃力アップをつけてるシューター使いの人がよくいます。この件については、NPCが教えてくれてもいいと思うんですけどね…って思いましたが、やっぱり、不自然なことは教えないほうがいいのでしょうか。(うーん、難しい)

ここで言いたかったのは、不自然さを解消することよりもゲームバランスを優先することがあるってことですね。割と不自然さに気になってしまうことがあるかもしれませんが、このことを知って、不自然さを解消することよりもゲームバランスを優先していいのかぁと考えました。

ちなみに、防御力アップというギアパワーがあるのですが、防御力アップは相手の確定数を上げることができます。また、防御力アップで上げられた確定数を攻撃力アップで下げることならできます。(ややこしい…)

6. さいごに

スプラトゥーンではギアパワーの数に対してギアパワーの効果は上に凸で増加する2次関数であることと、ダメージ上限を設けることによって確定数が下がらないようにされていることについて書きました。

今回2つしか書けなかったのであれですが、このことを知って、ゲーム作りに何らかの形で生きればなぁと思います。

また、よくプレイするゲームの詳しい仕様を考えるきっかけにでもなったらと思います。

ここまで読んでくださりありがとうございました。

7. 参考にしたもの

スプラトゥーン(Splatoon) for 2ch Wiki* http://wikiwiki.jp/splatoon2ch/?FrontPage

4. 5. で書いた数式などはこのWikiを参考にしました。ここのWikiにはいろんなデータがのっています。皆さんのプレイしているゲームでもWikiなどのサイトを見て分析すると面白いでしょう。(スプラトゥーン以外のゲームはよくわからないので分かりませんが…)

ちなみに、この記事では特に参考にはしていませんが、スプラトゥーンWikiの以下のページには海外のハッカーさんが解析したスプラトゥーンのブキの数値データがあります。見てて楽しいです。

内部データまとめ – スプラトゥーン(Splatoon) for 2ch Wiki* http://wikiwiki.jp/splatoon2ch/?%C6%E2%C9%F4%A5%C7%A1%BC%A5%BF%A4%DE%A4%C8%A4%E1

8. おまけ

この記事のトップの画像。

アイキャッチ

これはこの後

trap

こうなって、

trap2

こうなりました

悲しいトゥーンやね…

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

コメントを残す

メールアドレスが公開されることはありません。