![見出し画像](https://assets.st-note.com/production/uploads/images/105967991/rectangle_large_type_2_3b5afd3b80670e59f80ad54c5e8affc5.png?width=1200)
(24/12/30更新) 麻雀の有効牌当てミニゲームを作った話 with ChatGPT
2024/12/30:サーバー閉鎖に伴いゲームの公開を終了しました。
遊んでいただきありがとうございました。
初めまして。なす(nus)です。
趣味で色々と作ったり絵を描いたりしています。
「麻雀でうまく手牌の有効牌を探せるようになりたい」という声を聞き、ちょっとした時間で遊べるミニゲームを作ってみたので紹介します。
Webアプリを作って公開するのは初めてですがChatGPTの力を借りて2週間くらいで作ることができたのでその辺りの話も後半に書こうと思います。
ゲーム紹介
向きに作りましたがデスクトップでも遊べると思います。
ルールはシンプルで表示された手牌を見て有効牌(手牌に加えるとシャンテン数が小さくなる牌)を選ぶだけです。
ただし七対子と国士無双のシャンテン数は考えないものとします。
また、「受け入れは広くなるがシャンテン数の変わらない牌」は対象外になっています。
時間経過のバー表示はありますが時間切れになっても特にペナルティはないのでゆっくり考えて大丈夫です。
![](https://assets.st-note.com/production/uploads/images/105676052/picture_pc_465ed50bea640950c4ae6d5088f9f200.gif)
私自身は麻雀はそこまで強くないのですが、作って遊んでみて結構待ちを見る練習になる気がしています。
興味を持たれた方は遊んでみて練習に使えそうかコメントやTwitterで感想をいただけると嬉しいです。
この記事で応援していただける方が多い場合は改善・機能追加を頑張る予定です。
更新履歴
正解表示の時に「選択漏れ」と「間違った選択」を区別するようにしました。
5シャンテン以上の手牌が出にくくなるよう調整しました。
ゲームの起動時間を短縮しました。
ヒント機能を追加しました。
メッセージを改善しました。
スマホ横向き画面に対応しました。
動作を高速化しました。
ChatGPTの力を借りて作った話
以降はミニゲーム開発のお話になります。
Webアプリを作るのが初めてだったのでChatGPTに所々助けてもらいながら作っていきました。
基本的なプログラミングは分かるけどJavaScriptはほぼ触ったことがないぐらいのレベルの人間が作っているものとして見ていただければ幸いです。
ChatGPTを使ってうまくいったところと失敗したところ。
上手くいった:基本的な構文やデータ変換、正規表現のようなだいたい同じ書き方になる部分は、ChatGPTにやりたいことを例をつけて質問するときちんとした答えが返ってくるので作るのがめちゃくちゃ早くなった。
上手くいった:コードをレビューしてもらって考慮漏れを指摘してもらえた。
失敗した:聞きたかったのは主に2Dライブラリ(PixiJS)のUI関連の事だったが、視覚的な話を相談するのが難しく結局自分で試行錯誤する事になった。
失敗した:ChatGPTは2021年までのデータで作られていて最新情報を持たず、その上ライブラリに関する知識はバージョン指定してもバージョンの差異がごちゃ混ぜになって出てくる事があったため、結局自分で公式ドキュメントを見た方が良かった。
有効牌探索について
このゲームの主旨である有効牌探索は向聴数を計算する部分が肝になります。専門的なロジックなので誰かが公開しているソースを知らずにコピーしてしまうリスクを考え、この部分はChatGPTに聞かずにこちらのページのアルゴリズムとデータを利用させていただいた上で1から作りました。大変感謝しています。
まとめ
ChatGPTをプログラミングのお供に使ってみた感想として、現状ChatGPTを使うと定石の知識に関してはかなり良い答えを返してくれるので、作っているもの固有のロジックの試行錯誤に取れる時間が多く取れるようになると感じました。
ただ、結局やりたいことを実現するには専門知識を公開してくれている先人を頼る事になり、知識を残してくれている事に感謝するしかないという気持ちです。
(ちなみにゲームで使用している麻雀牌の画像は麻雀王国が公開されている素材です。こちらもありがとうございます。)
AIは日々進化しているようなので今後も上手く付き合っていきたいと思います。