AIに頼って1か月で自作ゲームをリリースした話

未分類

こんにちは!今回は自作ゲームの痕跡兼紹介になります!
私は個人での開発でこれといったスキルもないため、ほとんどAIに頼って制作を行いました。
今年に入ってから着想、製作を開始したので、ゲームの完成までおおよそ一か月の期間でした。
これだけ早いスパンで作れるのもAIの力がほとんどでした。

随所に至らない点が多々あると思います。この記事は、これくらい浅い人間でもゲーム作って出せたんだなあくらいに見ていただけたら幸いです。また、各パートにおける詳細な説明は省略させていただきます。おそらくほかに良いサイトがありますし自分の知識は足りないと思うからです。

あくまで概要の記録ととらえていただけたらと思います。これを読んで同じ様に作ってみようと思う人が一人でもいたらうれしいですね。

どんなゲームを作ったのか

概要

 早速ですが最初に少しだけ紹介をさせてください。

「Arcane Array Arena」という、ローグライクな非同期対戦型オートバトラーシューティングゲームを作ってみました!ジャンルが長くてピンと来なかったらすみません。複雑なルールではないので動画を見てもらえれば雰囲気が伝わるかなと思います。

 ラウンドごとに得られるマナを使ってアイテムを購入・配置し、それらを使ってほかのプレイヤーとオートマチックなシューティング対戦を行うゲームです。最大のポイントはアイテムすべてが攻防一体の役割を担っていることになります。

いかがでしょうか?こちらDemoではありますが様々なサイトで無料で配信しております。
まだWindows限定ですが、よろしければ遊んでみていただけたら幸いです。

Unity製

・Steam
https://store.steampowered.com/app/2806840/Arcane_Array_Arena/?beta=0
・Itch.io
https://steikum.itch.io/arcanearrayarena
・Unityroom
https://unityroom.com/games/arcanearrayarena

AIにまかせたところ

 先ほど見ていただいたゲーム動画からもわかるように、ボリュームとしてはそれなりのものを用意できたかなと思います。この量を一人ですべて扱うのはかなりの時間が必要になるでしょう。素材が用意されていたとしてもUnityのエディタ、スクリプトでそれらを制御するのも素人目には難易度の高いものでした。そこで今回は以下の点においてOpenAI様のChatGPT4に頼って制作を進めました。

  • テーマの案
  • Unity及びサーバサイドのスクリプト
  • ゲームに登場する大半の画像

それに加えて今回は着想後のゲームデザインにおいてアイデアを出してもらいましたのでそこも含めて。

開発過程

コンセプトとテーマの導出

前提

さて、今回のコンセプトですが、自分の中で決めていたこと、挑戦しようと思っていたことがいくつかあります。まず、

  • 短期間で製作可能なこと
    これは個人的な都合ですがまとまった時間をとれる期間が限られていたこと、モチベーションが長続きする自信がなかったことなどから短期間で制作することをあらかじめ決めていました。
  • オンラインで対戦可能なこと
    対戦でなくてもいいのですが、オンライン、つまりサーバサイドの実装をチャレンジとして挙げました。しかし無名のゲームで複数人必須にしたりマッチングシステムは機能しないと考え、サーバとやり取りをして非同期で他のプレイヤーのデータを参照するシステムにしようと決めました。
  • プレイ難度の高くないもの
    個人的な好みも入りますが、直感的で操作しやすいものをイメージしました。昨今はこういった需要があるようになんとなく思います。あとプレイ時間も短かったり自分で調整できるものが流行っている気がします。

こんなことを考えながらいくつかキーワードを絞りました。こういった要件を満たすものを考えた時に、自分ではオートバトラー系(オートチェス系)が一番しっくり来たので、それをベースにします。

AIに聞いてみる

 ここからはAIの力を借りていきます。先ほどの案に、オートチェス系ならユニットは弾だけ撃つようにすれば動かすものが少なくて楽だなと思ったのでそれも追加して。次のような質問を投げてみました。

ゲームのテーマを考えています。プレイヤーはあらかじめ砲台やユニットの場所を選択しておき、相手のユニットと戦います。どちらかのコアが破壊されると決着です。オートバトル、攻守一体となる駒、決着の要因となるコア、敵に放出する弾の要素があります。統一したテーマとしていくつか案を考えてください。

その返答がこちらです。

ゲームのテーマ案を考えてみましょう。ゲームの核となる要素はオートバトル、攻守一体のユニット、コアの破壊、そして敵に向けて発射される弾です。これらを踏まえて、以下のようなテーマを提案します:

  1. 未来都市の防衛戦: プレイヤーは未来的な都市の防衛司令官となり、進化したテクノロジーを駆使して敵の侵攻を防ぐ。砲台やユニットは高度なテクノロジーで構成され、都市のコアを守るために戦う。
  2. 神話の戦場: 古代神話の世界を舞台に、神々や伝説の生物がユニットとして登場。神秘的な力を持つ砲台やユニットを配置し、神話上の地で敵と戦う。コアは神聖なオブジェクトとして描かれる。
  3. 宇宙艦隊の戦い: 宇宙を舞台にした戦略ゲーム。プレイヤーは宇宙艦隊の司令官となり、星間戦争で敵の艦隊と対峙する。ユニットは宇宙船や戦闘機、砲台は宇宙ステーションや惑星基地として設計。
  4. 幻想的な魔法世界: 魔法が支配する世界を背景に、プレイヤーは魔法使いや魔法生物を操りながら戦う。砲台やユニットは魔法の力を用いて造られ、コアは強大な魔力の源とされる。
  5. ポストアポカリプスの生存戦: 文明崩壊後の荒廃した世界を舞台に、資源や領土をめぐる争いが繰り広げられる。生き残りをかけて他の勢力と戦い、廃墟となった都市や施設を背景にする。

これらのテーマは、ゲームの基本的な要素に合わせて多様な背景とストーリーを提供し、プレイヤーに魅力的な体験を提供できるでしょう。

なるほど、4番が面白そうだと思いました。さらにタイトルの候補も聞いてみます。

  1. “Arcane Wiz Strategy”
    • 「Arcane」は神秘的、秘密のという意味を持ち、魔法の深い知識や秘術を連想させます。これは魔法陣を使っての召喚の要素を強調します。
  2. “Summon Wiz Strategy”
    • 「Summon」は召喚するという直接的な意味を持ち、ゲームの主要な機能である様々なユニットや魔法の召喚を示しています。
  3. “Enchant Wiz Strategy”
    • 「Enchant」は魔法にかける、魔法を使うという意味を持ち、魔法陣を介しての魔法的な行為や魔法使いの役割を強調します。
  4. “Circle Wiz Strategy”
    • 「Circle」は円、特にこのコンテキストでは魔法陣を指し、ゲームの中核をなす魔法陣を使った戦略を表現します。
  5. “Rune Wiz Strategy”
    • 「Rune」はルーン、古代の記号や魔法の文字を意味し、魔法陣や召喚に使われる神秘的なシンボルを連想させます。
  6. “Glyph Wiz Strategy”
    • 「Glyph」は象形文字や神秘的な記号を意味し、魔法陣の一部として使用される魔法の文字や記号を強調します。

 4番の魔法陣でピンときました。魔法陣にアイテムを召喚する形にして、アイテムが魔法を発射するゲームにしたら、先ほどの要件を違和感なく満たせそうだなと。

 となると面白さはどこに生まれてくるだろう

 この順序で考えるのは間違いかもしれませんが、面白さを付けるのは大事です。多分。魔法を打ち合うのであれば、当然アイテムにも魔法がヒットするのが自然です。それを考慮して配置しなければならない。プレイヤーは限られた資産の中で、「僕の考えた最強の配置」を作る必要があります。と考えていると、なんだかオートチェス系っぽい動機付けができてきたのでこれで行こうと決めました。本当はここの部分が一番大事だしこれこそAIにやってもらったらいいんでしょうけど、今回はあくまで着想の部分を手伝ってもらった形ですね。

スクリプトの記述

 コンセプトが決まったので次はいよいよ実装です。Unityは触ったことはありましたが本職の方とは比べることもできない素人です。ガンガンAIに頼っていきましょう。

ゲーム本体のスクリプト

 こんな感じで指示してみました。Unityを知らない方には申し訳ありませんが、雰囲気でなんとなくわかるでしょうか。また有識者には笑われてしまう理解度かもしれません。

すると、とんでもない速さでコードが出来上がりました。

実際のチャットのスクリーンショット

この調子で進めていけばうまくいきそうです。実際かなりの量を書いてもらいました。さすがに全部を載せることはできないので今回はこのくらいの例にとどめますが、相当精度よくこちらの意図を汲んでくれていたので驚きました。たまにコードの整合性が取れなくなるので、その時は現状のスクリプトファイル(.cs)をそのままファイルとして投げることで、既存のコードに追加する形で編集を進めてくれました。

サーバサイドスクリプト

 ゲームの方はもっとはるかにたくさんのコードからなりますが、今回はさておきサーバサイドに移ります。こちらは全くの無知でしたがレンタルサーバーの方は契約してありました。今回はそちらを使う形でこれまたGPTに聞いてみることにしました。

実際のチャットのスクリーンショット

phpは全く知りませんでしたが、質問すると詳しく答えてくれました。何回かやり取りを繰り返し上の画像のコードは修正して一応安全に通信できると思われるところまで行けたと思います。正直怖さもありましたが実際にゲーム上で通信が行えていましたのでひとまず良しとしました。

画像生成

 ゲーム内で使っている画像に関してはかなり多くがAIから出力したものを加工して作っています。特にアイテムに関してはほとんどがAI製によるものです。

 ちょっとした小技ですが、生成AIを使う場合、シード値を固定することで世界観や絵柄をなるべく近づけるのが違和感を消すために重要です。

例えば最初に次のような画像を生成します。

プロンプトとしては三日月状の葉っぱ、透過用に黒い背景を指定したものだったと思います。
対話を繰り返していい感じなものを見つけたのがこの画像です。

これがいいなと思ったら「この画像のシード値を教えて」と「今後そのシード値を使って生成して」を指示します。それだけで比較的似た絵柄で画像を生成してくれるはずです。

マーケティング

 今回の反省点です。SNSや広報に力を入れることができず、リリース直前で慌てて開始したからか、思った数倍は伸びなかったです。プロジェクトを開始したらどんなに小さなことでもいいので定期的に発信していくことをお勧めします。

 SNSでの発信はもちろんですが、プレスリリースも有効(といろいろなところに書いてありました)です。文面はある程度AIに任せて、とりあえず形にはして10数の運営様に送らせていただきました。

結果は、1つ、IndieGamesJapan様に記事を作っていただくことができました。本当にありがとうございます!
https://indiegamesjapan.com/archives/2024/02/31660/

プレスリリース全文を引用で載せていただいているので、気になる方は是非参考にしてみてください!

今回ゲームを投稿してみて思いましたが、全然伸びません! 新しいゲームは恐ろしいほどたくさん出ていて埋もれてしまいました。この記事を書こうと思ったのも何とか話題になればという悪あがきからです。今後もアップデートやアイテムの追加はしていきたいと思いますが、なかなか厳しい世界だなというものを実感しました。

おわり

 かなり薄い内容で申し訳ありませんが、少しでも今回の開発の全体像が伝わっていたらいいなと思います。もし具体的に気になることがありましたら是非コメントくだされば投稿していきたいなと思っております。

 ここまで長文お読みいただきありがとうございました!

コメント