Programming For Game Develop

HAL東京ゲーム制作学科の学生がプログラミング、数学、学校生活について発信します。

面白いと感じるゲームの共通点

発見した共通点

  • 新規性を感じさせる要素が含まれている

  • ゲームをプレイするほど気持ちよさ(爽快感)が倍増する仕組みが入っている

  • リスクリターン、駆け引きのあるゲームシステムが用意されている

  • 空気のようで、シンプルで矛盾のないゲームルールとなっている

面白いと感じたゲームには上記4点が必ず含まれていました。 

例を上げながら説明致します。

新規性を感じさせる要素について

既存のゲームの一部のルールを大幅に変更することで新規性を生み出した例

PUBG

f:id:vector10:20180520172336p:plain     

スプラトゥーン

f:id:vector10:20180520172416j:plain

多くのTPSシューティングゲーム銃火器で敵を倒すことが目的のゲームがほとんどだったが、スプラトゥーンはTPSシューティングでありながら敵を倒すことを主目的とせず、色を塗り、面積を占有することを主目的とすることで新規性を生み出した。

ゲームをプレイするほど気持ちよさが倍増する仕組みについて

程よい間隔でプレイヤーを強化し、できることを増やすことで爽快感を生み出す例

塊魂

f:id:vector10:20180520173145j:plain

塊が大きくなると大きなものを巻き込めるようになる

f:id:vector10:20180520173213j:plain

たいていのゲームは、開始時においてプレイヤーは弱く、できることが少ない。

この最低状態から徐々にプレイヤーを強化することで以前できなかったことができるようになり(簡単にできるようになったり)し、ユーザーは爽快感を感じ、さらなる快感(成長)を求めるようになる。

リスクとリターンがあるゲームシステムについて

リスクに見合ったリターンを与えることで緊張感のある駆け引きを演出した例

モンスターハンター(火事場スキル)

f:id:vector10:20180520173821j:plain

テトリス(4段消し)

f:id:vector10:20180520173918p:plain

モンスターハンターにおけるリスクとリターンの仕組みの例は火事場スキルである。

※プレイヤーのHPが少ない程(リスク)、プレイヤーの攻撃威力が大幅に増加する(リターン)

テトリスは4段消しである。

※一度に大量に消せるように積み上げ(リスク)、一気に消して高得点を得る(リターン)

リスクとリターンを組み込むことで、初心者でも上級者でも手に汗握るようなゲームを作ることができる。

空気のようであり、シンプルで矛盾のないルールについて

シンプルルール イズ ベスト

将棋

f:id:vector10:20180520174407j:plain

クラッシュロワイヤル

f:id:vector10:20180520174439j:plain

面白いゲームはプレイヤーにルールをあまり意識させることなく、シンプルで直観的である。日常、法律など意識して生活しないように、面白いゲームもルールをプレイヤーに深く意識させないようになっている。

シンプルで互いに依存しないルールを組み合わせることでゲームプレイのバリエーションが広がり、戦略的面白いゲームになっている。

まとめ

面白いゲームを作るために
  • 新規性を必ず入れること、同じゲームは2つ必要ない
  • 爽快感を得られ、気持ちよくなれるシステムを作り、ユーザを飽きさせないように工夫すること
  • リスクとリターンの仕組みを入れて、初心者でも上級者でも楽しめるゲームプレイをさせること
  • シンプルで矛盾のないゲームルールを設計し、必勝法やワンパターン作業ゲームにならないようにすること

 

アフィン変換による回転式を導く

 f:id:vector10:20180401090358g:plain

行列による回転式を導く方法を説明したいと思います。

話を進める上での前提条件

・右手座標系

・行列×列ベクトルで計算

f:id:vector10:20180401100045p:plain

前提条件下での回転式は下記となります。

f:id:vector10:20180401083643p:plain

なぜこの式がどうのようにして立てられるのか分かりやすく解説したいと思います。

式を導く鍵は「正弦・余弦の加法定理」

まず、あるオブジェクトがY軸回りに反時計回りに回転しているところをイメージして下さい。

それはちょうどこの記事の一番上にある緑の長方形オブジェクトのような回転をします。

このときオブジェクト自体の角度は回転に合わせて変化します。

 ( 0°<初期状態>  → 10° → 20° → 30° … 360°<一回転> ... 370° → 380° ... 720°<2回転>)

これに合わせてオブジェクト自体の座標(正確にはピクセル毎の座標)が変化し、画面上で回転しているように見えるというわけです。

オブジェクトはたくさんのピクセル(小さな色付きの点)で構成されています。

ということは、全てのピクセル座標を回転に合わせて変化させればオブジェクト自体が回転したように見えることになります。

ここで、数学に置き換えるため、ピクセルを点と考えることにします。

ある点がある角度だけ回った場合の点の座標を求めることができれば、ピクセルの回転が行えることになります。さらにそれを全ピクセルに適用することでオブジェクト自体の回転が達成されるのです!

 ここで登場するのが「正弦・余弦の加法定理」です。( 数学が苦手な方はうわっと思うかも知れませんが、簡単なので安心して下さい)

正弦の加法定理 : sin( θ+α ) = sin θ con α + cos θ sin α 

正弦(sin)の加法定理とは、あるY座標の点が、ある2つの任意の角度を足し合わせた角度分だけ回転した場合のY座標を計算する式です。(※単位円で考えると分かり易いのですが、sinはY座標を表します。)

余弦(cos)の加法定理はその逆でX座標についての計算式となります。

余弦の加法定理 : cos( θ + α ) = cos θ cos α - sin θ sin α

つまり、この式のθを回転角度とし、αを回転前の角度とすることで、回転後の角度の座標( x, y )を求めることができるのです。

この定理の式になるように行列を作成するだけで回転行列が完成します。