3Dオセロを作りました!!
執筆者:だいち
3Dオセロ
注意点
- スマホでも遊べますがパソコン推奨です
- ゲームの左下にある全画面表示ボタンはスマホだとFirefox以外使えないです
- バグや改善点があればTwitterで連絡もらえるとうれしいです
- 作者も自作ゲームを公開したのは初めてなのでどうか優しい目で見てもらえれば…
苦労話など
作り始めたのは9月ごろで、土台が出来上がったのはその2週間後くらいです。ではなぜこんなに遅れたのかというとAIの作成です。僕自身プログラミングも初心者ですし、なによりAIの中身なんて今まで考えたこともなかったので自作できるって知ったときは驚きました。何度AIなしで公開しようと思ったか…。とりあえず妥協せず公開までこぎつけたのは本当に良かった!本当に良かった…
この記事をきっかけに僕らのサークルに興味をもってくれたら幹事長としてこれ以上うれしいことはありません!早大オセロサークルはいつでもあなたの入部を待っています!!
小難しい話
どうせみんな上のゲームばっかりやって下まで読んでないと思うので小難しい話をします。今回使ったのはUnityというゲームエンジンです。Webゲームからスマホゲームまで幅広く作れるのがUnityの強みです(これ以外使ったことないのであんまり強みとか感じたことないですが)そしてAIに使っているのはミニマックス法というものです。何手か先の盤面を評価して点数を出し、自分はできるだけ高い点数を取るように、相手はできるだけそれを小さくするようにするっていうので計算していきます。ちょろっと一文で説明してもほとんどの人は分からないと思うので興味のある方は下の記事を見てみてください。この記事にはほんとにお世話になりました…
盤面評価は打てる場所の個数と確定石の数で計算しています。確定石っていうのはオセロ用語で、もうひっくり返らない石のことです。例えば角なんかはもう返らないので確定石ですよね。これらを数えて、重要度にあたる重みをかけて和を求めることで最終的な評価値にしています。この重みは恣意的なものなのでなんか理論にのっとって求めたりするものではありません。
ただ結局オセロって最後にいっぱい取った方が勝ちなので最後の方でも評価値なんて計算していたらバカみたいですよね。ということで試合が終盤になると全通りのパターンで最終的な石の数を計算しています。今回なら残り10マスでこの計算に切り替わるようにしています。だからやってて「あれ、急にAIが考え込んだな。もしかしてコンピューターの予想を超える手をうっちゃったかな~」とか思った人、勘違いです。
ただ僕のプログラムの効率が悪すぎて計算が遅くなってしまうので、実はそんなに先の方まで計算できていないのが現状です。もっと精進しなくては。
一応全部フリー素材で作ったのですが、お世話になったのでリンクを載せときます。本当にありがとうございました。
SE:https://soundeffect-lab.info/
BGM:https://dova-s.jp/bgm/play2736.html
フォント:http://azukifont.com/font/uzura.html
イラスト:https://www.irasutoya.com/2019/03/blog-post_84.html
ここまでつらつらと書いてきましたが、これでこの記事は以上です。いないとは思いますが、もし最後まで読んでくれた方がいましたら本当にありがとうございます。このサークルはみんないい人たちだし、めちゃめちゃ強い人達もいるし、本当にいいサークルなんですけど、まじで人数がいないのがネックです。少しでもオセロに興味があったらTwitterのDMとかで気軽に連絡をくれればと思います。それでは