【第55回】UnityでSteamデモ版を制作!無料体験版のプレイ制限と製品版の分離に挑戦【AIゲーム開発】

機械設計×ゲーム
0

前回、第54回では、PUZFLOを日本語・英語を含む6言語に対応させました。

これによって、日本だけでなく海外のプレイヤーにも
遊んでもらうための準備が、少しずつ整ってきました。

ただ、ここで一つ気になることがあります。

「Steamのストアページは公開したけど、まだ実際にゲームを遊んでもらえない。」

現在、PUZFLOはSteamで「近日登場」として公開しています。

しかし、製品版はまだ開発途中です。

せっかくゲームに興味を持ってもらっても、
実際に触ってもらうことができません。

そこで今回は、Steam向けの無料デモ版(体験版)を制作することにしました。

とはいえ、単純に製品版をコピーすればよいわけではありません。
体験版では、遊べるステージや設備を制限する必要があります。

しかも、その制限が製品版にまで影響してしまっては困ります。
今回もChatGPTとCodexを使って、製品版を壊さずにデモ版を作る方法を考えていきます。


なぜ今、Steamデモ版を作るのか?

PUZFLOは、コンベアや加工機などを配置して生産ラインを作る工場パズルゲームです。

  • 設備を配置する
  • 生産を開始する
  • 問題を見つける
  • 配置や能力を見直す

この繰り返しが、PUZFLOの面白さだと考えています。

ただ、この面白さはスクリーンショットや
動画だけでは伝えきれない部分もあります。

例えば、ワークが詰まった原因を自分で発見したとき。
設備を変更して、ラインが正常に流れるようになったとき。

こうした瞬間は、実際に操作してもらった方が伝わりやすいと思います。

そこで考えたのが、

「発売前に、まずは無料でPUZFLOを体験してもらおう」

ということでした。

デモ版を公開することで、ゲームの内容を
知ってもらう機会を増やしたいと考えています。

また、実際に遊んだ人が面白いと感じてくれれば、
ウィッシュリストへの追加にもつながるかもしれません。

もちろん、デモ版を公開すれば必ずウィッシュリストが増えるわけではありません。
それでも、ゲームを体験してもらう入口を作ることには価値があると思いました。


デモ版はどこまで遊べるようにする?

最初にChatGPTと相談したのが、デモ版で遊べる範囲です。
体験版なので、最初からすべての設備を使用できるようにするつもりはありません。

ただし、制限しすぎてPUZFLOの面白さが伝わらないのも困ります。

そこで今回は、出荷場1〜10まで遊べるデモ版にすることにしました。

現在のPUZFLOは、出荷場をクリアしながら設備を解放し、
少しずつ大きな工場を作っていくゲームです。

そのため、序盤から10ステージ程度を体験できれば、
基本的な操作や生産ラインを改善する楽しさは伝えられそうです。

自分でプレイした場合は約25分程度。

ゲームに慣れていない人なら、45分程度かかる可能性もあります。

もちろんプレイ時間には個人差がありますが、
無料体験版としては、ある程度まとまった内容になりそうです。


デモ版の主な制限を決める

今回決めたデモ版の仕様は、次のようになります。

項目デモ版の仕様
プレイ可能な出荷場出荷場1〜10
工場の土地最大12×11マス
使用可能な設備進行状況に応じて一部解放
出荷場11以降プレイ不可
パズル土地の購入不可
土地の撤去不可
セーブデータ製品版と分離
デモ版クリア出荷場10まで達成すると専用画面を表示

特に重要なのが、出荷場と土地の制限です。
製品版では、ゲームが進むにつれて工場を大きく拡張できます。

しかしデモ版では、最大12×11マス、合計132マスまでに制限します。
この範囲でも、序盤の生産ラインを作るには十分なスペースがあります。

一方で、大規模な工場や複雑なライン設計については、
製品版で楽しんでもらう形にします。

「ゲームの基本をしっかり体験できるけど、続きも遊びたくなる」

そんなデモ版を目指しました。


設備は少しずつ解放される仕組みを残す

デモ版でも、製品版と同じように、ステージをクリアすると
新しい設備が使えるようになります。

例えば、序盤では、

  • 低速コンベア
  • ストッパ
  • 投入機S
  • 加工機S

などの基本設備からスタートします。

そして、出荷場2では中速コンベア、出荷場3では
バッファといったように、少しずつ設備が増えていきます。

高速コンベアについても、出荷場7をクリアすると解放される仕組みを残しました。
ここで考えたのが、まだ使えない設備をどう表示するかです。

完全に非表示にする方法もありますが、
それでは製品版にどんな設備があるのか分かりません。

そこで今回は、デモ版でも設備一覧に
全27種類の設備を表示することにしました。

ただし、使用できない設備には
鍵マークや「LOCK」を表示します。

さらに、カーソルを合わせると解放条件が分かるようにしています。

例えば、切断機などの製品版でしか使えない設備も、存在自体は確認できます。

「こんな設備もあるんだ」

と感じてもらえれば、製品版に興味を持つきっかけにもなりそうです。


一番心配だったのは「製品版への影響」

デモ版の仕様が決まったところで、次は実装方法を考えます。

ここで自分が一番心配だったのが、

「デモ版の制限が、製品版にも反映されてしまわないか?」

ということでした。

例えば、デモ版では出荷場10までしか遊べないようにします。

しかし、その変更によって製品版も出荷場10までしか遊べなくなったら大問題です。

土地拡張も同じです。

デモ版では12×11マスまでですが、
製品版ではそれ以上に拡張できなければなりません。

つまり、デモ版では制限する。
製品版では今までどおり遊べる。

という状態を作る必要があります。

そこでChatGPTへ相談したところ、UnityのBuild Profiles(ビルドプロファイル)を
使い分ける方法を提案してもらいました。


UnityのBuild Profilesで製品版とデモ版を分ける

Build Profilesとは、簡単にいうと、
ゲームを書き出すときの設定をまとめておく仕組みです。

例えば、同じUnityプロジェクトから、

  • 製品版(Full)
  • デモ版(Demo)

という2種類のゲームを作れるようにします。
今回のPUZFLOでは、製品版用とデモ版用の設定を分けることにしました。

項目製品版デモ版
Build ProfilesFullDemo
出荷場の上限製品版の仕様10まで
土地拡張通常仕様12×11まで
設備解放通常仕様一部制限
セーブデータ製品版専用デモ版専用

これなら、基本的なゲームの仕組みは共通にしながら、
デモ版だけに必要な制限を加えられます。

今回、Codexでは PUZFLO_DEMO という設定を使い、
デモ版かどうかを判定する仕組みを実装しました。

プログラムの詳しい仕組みは自分には分かりませんが、

「デモ版として作るときだけ、専用の制限が有効になる」

という理解で進めています。

これなら、デモ版のためにゲームを一から作り直す必要もありません。


セーブデータも製品版と分離する

もう一つ、ChatGPTと相談して重要だと分かったのが、セーブデータの分離です。

例えば、すでに製品版で出荷場20まで進めているとします。

その状態でデモ版を起動したとき、同じセーブデータを読み込んでしまったらどうなるでしょうか。

デモ版では出荷場10までしか遊べないはずなのに、出荷場20まで進んだデータが存在することになります。

逆に、デモ版の保存データが製品版を上書きしてしまっても困ります。

そこで今回は、保存先も分けることにしました。

  • 製品版:SaveSlots
  • デモ版:DemoSaveSlots

という形です。

さらに、言語設定などの保存情報についても、デモ版専用の区別を設けました。

こうすることで、デモ版と製品版のデータが混ざらないようにしています。

ここは、ゲームを実際に配布する段階になって初めて意識した部分でした。

「ゲームが動けばOK」ではなく、「プレイヤーのデータを安全に扱えること」も重要なのだと思います。


画面でLOCKにするだけでは不十分だった

デモ版の制限を実装する中で、
もう一つ重要なことが分かりました。

「ボタンを押せなくするだけでは、本当の制限にはならない」

例えば、デモ版では出荷場11以降へ進めないようにします。

画面上のボタンをLOCK表示にするだけでも、
普通は操作できなくなります。

しかし、セーブデータの読み込みなど、
画面操作以外の経路から進行状態が変更される可能性も考えられます。

そのため今回は、表示上の制限だけでなく、
ゲーム内部でも出荷場11以降を使用できないようにする方針にしました。

土地拡張についても同じです。

購入ボタンをLOCKにするだけでなく、
実際の購入処理や設備配置の判定でも、
12×11マスの制限を守るようにします。

これは、これまでChatGPTやCodexとゲームを
作ってきた中でも、少し考え方が変わった部分です。

「使えないように見せる」だけではなく、
「本当に使えない仕組みを作る」


デモ版をクリアしたらどうする?

デモ版の基本的な制限ができたところで、
次に考えたのが、デモ版を最後まで遊んだあとの画面です。

出荷場10までクリアしたのに、
何も表示されずに終わってしまっては少し寂しいです。

そこで今回は、デモ版専用のクリア画面を追加することにしました。

出荷場1〜10の目標を達成すると、
初回だけ専用画面が表示される仕組みです。

この画面では、デモ版のクリアを伝えるだけでなく、
製品版のSteamストアページへの案内も用意します。

ただし、デモ版をクリアしたあとも、
すぐにゲームを終了させるわけではありません。

「工場の設計を続ける」

というボタンも用意して、
引き続き工場を動かせるようにしました。

デモ版の範囲内で、自分なりのライン設計を続けてもらうこともできます。

一方で、もっと大きな工場や新しい設備を使いたくなった場合は、
製品版のストアページを見てもらう。

そんな自然な流れを考えました。


デモ版のクリア画面も多言語対応する

ここで、前回の第54回で取り組んだ多言語対応が役立ちます。

PUZFLOは日本語・英語・中国語・韓国語・ドイツ語に対応しています。

そのため、デモ版専用のクリア画面も、
各言語で正しく表示できるようにする必要があります。

例えば、クリアしたことを伝える文章や、
製品版への案内、ボタンの名称などです。

新しい画面を追加するたびに、翻訳する文章も増えていきます。

ただ、すでに翻訳データを管理する仕組みができているため、
以前より対応しやすくなりました。

一度作った仕組みが、次の開発でも役立つ。

こういう部分は、ゲームを少しずつ作り続けてきたメリットだと感じました。


Codexで実装したら、今度は徹底的にテスト

デモ版の制限やセーブデータの分離ができたところで、次は動作確認です。

今回のデモ版では、確認することがかなり多くなりました。

例えば、

テスト項目確認内容
出荷場1〜10正常にプレイできるか
出荷場11以降解放・プレイできないか
土地拡張12×11マスを超えないか
設備のLOCK未解放設備を使用できないか
切断機デモ版で使用できないか
セーブ・ロードデモ版専用データが使われるか
製品版デモ版の制限が影響していないか
クリア画面出荷場10まで達成すると表示されるか
Steamへのリンク製品版ページを開けるか
言語切り替え各言語で正しく表示されるか

特に心配だったのは、製品版への影響です。

そのため、デモ版だけでなく、製品版の設定でも
正常に動くことを確認する必要があります。

Codexによる静的確認や自動テストも活用し、
今回の検証では1,777項目のオフラインテストが成功しました。

さらに、製品版・デモ版の構成について、
C#のコンパイルエラーがないことも確認しました。

もちろん、こうしたテストが成功したからといって、
すべての不具合がなくなったと断言できるわけではありません。

最後は、実際のゲームを動かして確認することが重要です。


Windows版としてビルドして別のPCでも確認

Unity上で問題なく動くことを確認したあと、
次はWindows版としてデモ版を作成しました。

ここでも、製品版とデモ版のBuild Profilesを切り替えて、
デモ版用のビルドを作成します。

製品名も「PUZFLO Demo」として区別しました。
そして今回は、作成したデモ版を別のPCでも起動してみました。

結果は、無事に起動してプレイすることができました!

これで、少なくとも開発に使っているPCだけでなく、
別のWindows環境でも動くことを確認できました。

ただし、さまざまなスペックのPCで問題なく動くかどうかは、まだ別の話です。
それでも、Steamへアップロードする前の大きな確認を一つ終えることができました。


デモ版の制作で感じたAIゲーム開発の難しさ

今回のデモ版制作は、これまでの設備追加とは少し違いました。

例えば、加工機やコンベアを追加するときは、
新しい機能を作ることが中心です。

しかし、デモ版では逆に、
すでにある機能を安全に制限する必要があります。

  • 出荷場11以降は使えないようにする。
  • 土地を一定以上広げられないようにする。
  • 一部の設備を使用できないようにする。

でも、製品版ではすべて正常に使えるようにする。

さらにセーブデータも分離する。

こうして考えると、単純にゲームを小さくしただけではありません。
1つのゲームから、仕様の異なる2種類のゲームを作るような感覚です。

自分だけでは、どう実装すればよいのか分からなかったと思います。

しかし、今回も、

自分がデモ版の仕様を考える
↓
ChatGPTと問題点や実装方針を整理する
↓
Codexで実装・確認する
↓
実際にUnityとWindows版でテストする

という流れで進められました。

AIを使うことで、プログラミングが分からなくても、
かなり複雑なゲームの仕組みに挑戦できています。

ただし、どこまで遊べるデモ版にするか、
何を制限するかを決めるのは自分自身です。

今回も、AIにすべて任せるのではなく、
作りたいゲームの方向性を決めることが重要だと感じました。


まとめ|PUZFLOのSteamデモ版が完成!

今回、第55回では、Steamで無料公開するための
PUZFLOデモ版の制作に取り組みました。

デモ版で遊べるのは、出荷場1〜10まで。

工場の土地は最大12×11マスに制限し、
設備についても進行状況に応じて一部だけ使用できるようにしました。

また、今回特に重要だったのは、製品版への影響を防ぐことです。

そのため、

  • 製品版とデモ版のBuild Profilesを分ける
  • 出荷場や土地の制限を内部処理でも確認する
  • セーブデータを分離する
  • 未解放設備をLOCK表示する
  • デモ版専用のクリア画面を追加する
  • 製品版のSteamページへの案内を用意する

といった仕組みを実装しました。

さらに、Codexによる1,777項目のオフラインテストや
Windowsビルドの確認を行い、別のPCでもプレイできることを確認しました。

これによって、Steamへ提出するためのデモ版を用意することができました。

第47回ではSteamの「近日登場」ページを公開。

第48〜53回では設備追加や動作改善を進め、第54回では6言語へ対応。

そして今回、ついにプレイヤーに無料で
体験してもらうためのゲームを作るところまで進みました。

最初は、自分が遊ぶために作っていたPUZFLO。
それが今では、実際に他の人へ遊んでもらうことを考えて開発しています。

「自分で作って楽しむゲーム」から「プレイヤーに体験してもらうゲーム」へ。

Steamでの販売に向けて、また一つ大きな準備ができたと思います。


次回はSteamへデモ版を登録して審査に提出する

Unityでのデモ版制作は完了しましたが、
まだSteamで公開されたわけではありません。

次に必要なのは、Steamworksへのデモ版登録と、
ストアページ・ビルドの準備です。

製品版のストアページはすでに公開していますが、
デモ版では別途確認しなければならない項目もあります。

さらに、Steam側での審査や、実際にSteamから
インストールして正常に起動できるかも確認する必要があります。

次回、第56回では、完成したPUZFLO DemoをSteamへアップロードし、
公開に向けた準備を進めていきます。

「デモ版を作る」から「デモ版をSteamで遊べるようにする」へ。

いよいよ、PUZFLOを実際のプレイヤーへ届ける段階に進みます。

コメント

タイトルとURLをコピーしました