サイコロをシミュレートしたい – 物理エンジンを導入

2019年3月30日

MTG界で定期的に話題に上がる議論の一つに「先攻と後攻だとどちらが有利か?」みたいな話がある。

リミテッドやレガシー以下の環境だと「後攻を選ぶ方が良い場合もある」とかたまに聞くのですが、私はスタンかモダンしかやらないので基本的に先攻が有利だと思っています。

コレは人によっては過激な発言の可能性があるので「デッキによるけど!」と付け足して話を進める事にしましょう。

 

でね、私は思う訳ですよ。

MTGはカードゲーだけどダイスゲーなのでは?

と。

試合前のダイスロール、無作為に選ぶ時のダイスロール、+1/+1カウンターを乗せる時にも使うし、プレインズウォーカーの忠誠度も勿論ダイス。

ほら、これもう実質ダイスゲーでしょ(曲解)

何が言いたいのかと言うと議論は割とどうでもよくて、

ダイスもシミュレートしてみたくなったて事ですよ!

 

引っ張りましたが実はこれ、例えばJavascriptで「結果だけ」をシミュレートするなら凄い簡単な話で。

alert(Math.floor( Math.random() * 5) + 1);

6面ダイスならこんだけ。

うん。

つまんない

もっとこう大げさにやった方が面白いだろうって事で、物理エンジンに手を出してみました。

 


初めての3D

正直3Dプログラミングは習っていないし、仕事はずっと平面処理ばっかりやってきました。

エディタでCSS3を使った疑似3Dみたいな演出はしてみたけど、計算がとにかくややこしかったです。

そんな奴がイキナリ物理演算出来んのかよ?って話なんだけど、

めちゃくちゃ苦労した

そもそも当サイトの8割強のユーザーさんがスマホなので、3Dモデルをスマホで表示するって時点で既に良く分からなかった。

ただ、注文したカードが中々届かないと言う空き時間が出来たので色々とお勉強してたって訳です。

 

なんやかんや試してみて「PCで見ると画像がボケボケでなんだか分んねぇ」みたいな問題は残ってるけど、スマホで見ればまぁ許せると言うレベルで3Dモデルの描画は出来るようになりました。

次の段階である「物理エンジンを組み込む」って所で、同然の如く一苦労。

Skyrimをプレイした事があるドヴァキン諸君らなら分かると思いますが、Havok神が荒ぶり部屋の中の食器やスイートロールが飛び交う光景。

アレの縮小版みたいな事が起こりまくって、一向に実装が進まない。

地面に当たったダイスが遥か天空まで「どこ行くねーん!」したり、ジャストで角が地面に突き刺さると恐ろしい反発力で画面外に吹き飛んだり…。

残念で仕方ないけど、スクリーンショットでは面白さが全く伝わらないので省略しますが、とにかくパラメータが多すぎて「完全手探り」でやっております。

 

そんなこんなで完成した試作品の「6面ダイスを1度だけ振れるサンプル」がコチラになります。


<↑タッチでダイスを振る>

なんか既に地面に半分埋まってるとこからスタートだけど初心だからね、仕方ないね。

あとPCで見たらぼわんぼわんなので、スマホで見てね(妥協を強要する)

それよりも、どうやってもフワフワしちゃう方が問題あるよなーって。

理想はこう、もっとシャープに

カッ!!コロロ…ピタァッ

みたいにしたいので、今後調整して納得出来たらシミュレータに組み込めたら面白いなって思ってます。

取りあえず手ごたえはあったので、パラメータの意味さえ理解出来れば割とどうにかなりますねコレ!

 


おまけ

そ、そう言えば…。

次元ダイスもシミュレート出来るじゃん!

って事を記事を書いている途中で思いついたので、急遽追加。

<↑タッチで次元ダイスを振る>

お?おおぉ??

これは中々…

ええやんか!

 

誰か次元ダイス売ってください(3回目)

 


関連記事

マルチカウンターに物理演算ダイスを実装

雑談

Posted by theuri