Tabelog Tech Blog

食べログの開発者による技術ブログです

趣味のゲーム制作で気づいたこと

この記事は 食べログアドベントカレンダー2024 の15日目の記事です🎄

はじめに(なぜゲーム制作を?)

こんにちは。食べログWEBエンジニアの@yabon_exeです。

本記事の大まかな主張を最初にざっくり言うと、「AIはもっと気軽に使っていいんじゃないか?」になります。

食べログで働くようになって、「カカクコムには、多種多様な趣味をお持ちのエンジニアの方が多いな」と感じることが多いです。定期的に開催される勉強会での新入社員の自己紹介では「こんな面白いことを、いつもしているのか!」と驚かされることもあります。

私自身も子供の頃からゲームが好きで、それが高じて大学から自作ゲームの開発を趣味としてきました。
本記事では、私の趣味の話にはなるのですが、趣味を進める上で行ったAI活用などの工夫が仕事の開発でも生きることが多かったので、その内容や感じたことをシェアさせていただきます。

どんなゲームを作っているの?

いわゆる「カジュアルゲーム」というジャンルを作っています。
PCやゲーム機で遊ぶような派手で大規模なゲームではなく、スマートフォンのブラウザで手軽に動く、いつでも誰でも遊べるゲームを作っています。

「いつか3Dグラフィックの豪快なアクションゲームを作りたい!」と思っていますが、まずはいくつか成果物を作る経験を得るため、誰でも遊んでもらえて、かつ比較的作りやすいゲーム制作から日々挑戦しています。

どうやって作っているの?

昨今のゲーム作りにはUnityなどのゲーム制作ツールを用いて作られますが、基本的には下記3つでゲーム制作は構成されています。

  • プログラミング
  • 画像/モデル作成(キャラクター、アイコン、背景)
  • 音声作成(ゲーム内楽曲、効果音)

プログラミングは自分でできるのですが、画像制作や音声作成についてはノウハウが無いので、フリー素材などをダウンロードして使っています。

昨今AIの進歩により、画像生成も高度なものができてきたので、AI画像生成でできた画像をゲームに使えないかと試行錯誤しています。
今の所、広大な草原や大空、雪景色の風景などの背景画像作成にはかなりAIを活用できていますが、ドット絵調のキャラクター作成については、いまいち思ったように活用できていません。

この間、「体が小さくて可愛い猫のキャラクターのドット絵」というプロンプトを入力してAI画像生成したら、前足が3本ある猫ができたり、額に「可愛い」と書かれた猫が誕生したりと、おかしな画像になって結局手直しが必要になってしまいました。細かい調整が要求される画像生成には向かないのかもしれません。
足3本の猫キャラクター

作っていて何を感じた?

ここ2年くらいのゲーム制作について、「確実にゲーム制作に対するハードルが下がっている!」と個人的に思います。

「日々の技術革新で便利なゲーム開発ツールが出ている」という理由もあるのですが、それ以上にAIがそれらの情報について割と正確に理解して説明できていると感じるからです。

さきほど画像生成にAIを使っている話をしましたが、新ツールにおける使い方やプログラミングについても、その使い方を以下のようにAIに頻繁に質問しています。

  • 「キャラクターを任意の方向に向かせるには?」
  • 「タッチパネル入力を検知するには?」
  • 「ボタンUIのスタイルの変更パネルはどうやって開く?」

マニュアルを参照するような内容でも、以下のようにサクッと聞きたい時にとてもAIが役立っています。

  • 「マニュアルにわかりやすい記載が無い」
  • 「マニュアルで探す前に概要を手っ取り早く知りたい」
  • 「マニュアルに無いテクニックを知りたい」

たまに古いツールバージョンの情報でAIが回答することもありますが、半年以上使い続けてきてそこまで的外れな回答はしていなかった印象があります。

仕事でも同じようにやっているかも?

カカクコムで働き始めてから半年ちょっと経ちましたが、初めの方は全く触ったことのなかった技術ばかりでした。
その時の学習方法として、いきなり該当技術のマニュアルを見るのではなく、疑問に思うことをざっくりAIに質問した後、その内容をマニュアルで確認するといった流れでやっていました。
日々新しい技術・知るべき技術が絶えず増え続ける今、このやり方は非常にやりやすいと感じています。

例えば、以下のような質問です。

  • 「Javaでいうところの〇〇ってどう書くの?」
  • 「サーバープログラムのパス一覧ってどうやって見るの?」
  • 「CSVダウンロードの簡単なプログラム例を出して」

ゲーム制作の時と同じく、これらもマニュアルに回答がある質問ですね。
AI相手なら大丈夫ですが、職場の先輩にこのような質問ばかりしていると、「ちょっとは自分で調べてくれ」と注意されそうです。

この間、RailsのActive Recordで「(A1 and B1) or (A2 and B2) or ...」のSQL呼び出しの実装をする機会がありました。その時は、「Active Record関数をつかった『(A1 and B1) or (A2 and B2) or ...』のSQL呼び出しを、リスト変数を用いて例を示して」とAIに質問しました。その結果、その日まで知らなかったRubyのreduce関数とActive Recordモデルのnone関数を用いた実装例をAIは回答し、その内容がすぐに理解できたため、早期タスク完了に繋げられました。
「何を実装したいのか?」が少しでも言語化できたため、知らない技術であっても、その要望を叶えるための手段に、ダイレクトに辿り着くことができました。

もちろん、実際にリリースされ食べログとして動いてしまうので、AIの結果を利用する場合には最終的な裏付けは必須です。
ただし、「知らない技術に対してマニュアルを一から見ていく」と「AIで使用例や大まかな内容を把握して、詳細をマニュアル確認でつめていく」のどちらかなら、後者の方が具体例に触れる機会が多くてイメージしやすく、多くのマニュアルを一から見るわけじゃ無いので調査コストが少ないのではと感じます。
※使用技術の根幹を押さえるために一度マニュアルを一から見る機会は必要です。

終わりに(AIはもっと気軽に使っていい)

  • 「ITにあまり詳しく無いから、仕事でも実生活でもAIは使わない」
  • 「AI技術者じゃないから、あまり上手につかえないかも」

技術交流会で参加者の話を聞いてみると、上記のように言う方が多いなと感じることがよくあります。
その一方で、AI関連の勉強会の発表や動画系SNSの発信を見ると、以下のような小難しい内容が多いように思います。

  • 「AIに質問する際は役割を与えるのが必須!」
  • 「社員に渡す指令書のように質問せよ!」
  • 「新規ビジネスを提案させるために、〇〇のデータを入力せよ!」

個人的には、「AI使う前からそんな難しいこと考えてたら、使い始めるのに時間かかる、、、」と感じてしまいます。
確かにこれらのノウハウ前提でAIを使えば自分だけでは考え出せない新しいアイデアを発掘できるかもしれませんが、単純にインターネットのキーワード検索のように使っても、「ジョハリの窓」の「盲点の窓」にあたるような情報を知ることができます。

実際に本記事に示したような質問文でも、「よくわからん回答だけど、回答文にある◯◯って関数やクラスって、なんだろう?」と思ってそのキーワードを調べてみたら、「まさにこれがやりたかった!」「こんなことができたら、あんなこともできるんじゃないか?」という感じで実装アイデアが広がって今の仕事タスクの早期解決に至ったり、新しい自作ゲームの実装アイデアを思いついたりと、自分の技能拡大に繋げることができたかと思います。

改めてですが、AIはもっと気軽に使いましょう。
どんな使い方でも、的確かつ、なにか思わぬ発見になる情報を高確率で提示してくれるはずです。
何聞いても文句言わずに答えてくれる都合のいい先輩だと思って、仕事のことでも趣味のことでも気軽に気になったことをなんでも聞いてしまいましょう!
※ただし、社外秘に関することは慎重に!

明日は @4palace さんの「プログラムを約3200倍高速化して、社内業務のボトルネックを解消したお話」です。お楽しみに!