リバーシとガイスターのwebゲーム化②
こんにちは。
「戦略系ボードゲーム研究会 recreo」の kohei と申します。
今回は前回の続きになります。
前回資材をレンタルサーバ上に配置し、とりあえずwebゲームとして遊べる程度まで構築できたかと思います。
しかし、1点問題が残っています。
次の手をランダムで選択しているという点です。
そのため今回は、AIで次の手を選択する方法を考えていこう、また実装していこうと思います。
現在の仕様
現在の仕様は、AI機能と各アプリ機能間はベース機能DBを介してやり取りを行っています。
イメージ的には以下のような感じです。
簡単にやり取りの仕組みをリバーシを例に説明させていただくと、
クライアントにて手が指される
websocketにてリバーシ機能に局面データが送られる
リバーシ機能によってベース機能用DBに局面データを書き込む
リバーシAI機能がベース機能用DBから局面データを読み込む
受け取った局面データから次の手を選択する
選択した次の手をベース機能用DBに書き込む
リバーシ機能が次の手を読み込む
websocketにてクライアントに次の手を送信する
みたいな感じになっています。
考えた新仕様
考えた新仕様についてなのですが、
単純にレンタルサーバ上にのせられないのであれば
自宅サーバで動かしてしまおうということにしました。
イメージとしては以下のような感じです。
イメージ図にある通り自宅サーバ上で起動した各AI機能が、
直接レンタルサーバ上のベース機能用DBにアクセスする形にしてみます。
(これで動けばいいのですが…)
いざ実証実験
早速試してみました。
自宅サーバ上でガイスターAI機能を起動し、ガイスターを遊んでみました。
無事動きました。
分かりにくいですが、右は自宅サーバ上で起動しているガイスターAI機能を表示したコンソール画面になります。
ただ、webサイトを公開した際は、
24時間自宅サーバを動かすと電気代が気になりますので、
たまに1、2時間程度動かすようにしようかと思います。
(その際は事前にtwitterなどで告知しようと思っています。)
当分はこの仕様でいきたいと思います。
今回はここまでとします。
今回はとりあえずAIも動かすことができました。
ただ未学習なので次からは実際に対戦し、その棋譜を使用して学習させてみようと思います。
またもし要望があれば現時点のものを公開しようかと思っています。
(javascriptのコードが汚いのは、お許しください…)
読んでいただきありがとうございました。
もしよろしければ、noteとtwitterのフォローをしていただけると嬉しいです。