2024年の集大成として、1本のゲームを作成しました。開発期間は約1ヶ月。
ゲームの紹介と開発秘話などを話していきたいと思います。
ゲームは無料で公開しますので、プレイして気になるところをコメントください。
コメントいただいた内容を元に、どのように作っているか、記事か動画で解説したいと思います。
ゲーム紹介
タイトル:Human Shuffle(Twitterにユーザがいますが、関係ありません)
プレイ人数:1人~無限(ネット回線が許す限り)
ジャンル:脱出ゲーム、立体迷路、伝言ゲーム(マルチプレイ時)
ゲーム内容
箱を回転して、箱から脱出せよ!
その他情報
価格:無料
確認済動作環境:Ryzen9/RTX2080Super、i9/RTX4090、RTX2060 SUPER
確認済動作OS:Windows10/11
必要容量:3.35GB
開発元/著作権者:ジャンボ(Janbo Games)
二次配布:禁止(当ページを共有してください)
配信規約:制限なし(Twitter[@janbocloud]まで連絡してくれましたら、可能な限り[18時~2時]見に行きます)
ダウンロード
以下の質問に回答して「送信」すると、ダウンロードページに飛びます。
ゲームの起動方法
- ダウンロードページからダウンロードしたzipファイルを解凍してください。
- 解答したフォルダの中にある「HumanShuffle.exe」というファイルを実行してください。
※初回起動時は、Microsoft Defender SmartScreenにより起動がブロックされます。以下の手順に沿って実行してください。
- 「詳細情報」を選択する
- 「実行」を選択する
遊び方
ゲームの開始方法
- タイトル画面で「Select Stage」から遊びたいステージを選択してください。
- シングルプレイまたはマルチプレイでホストをする場合、「Host」ボタンを押します。
- マルチプレイで参加する場合は、ホストから教えてもらった「IPアドレス:ポート番号」を入力し、「Client」ボタンで参加します。
マルチプレイについて
ホストはポート開放する必要があります。(Port:7777)
知識がないとポート開放は面倒なので、無料のリレーサービスを使用しても良いかもしれません。(例:Playit.gg)
マルチプレイ時、特殊ルールの提案
マルチプレイ時の特殊ルールとして、遊び方を提案します。
まず、ステージに全員が入ったあと、1人ステージを「回す人」を決める
- 「回す人」は中に戻れない
- 「回さない人」は、どっちに回してほしいか伝える
というルールでプレイするのはどうでしょうか。
※ゲーム側から指定する進め方はありませんので、他に遊び方を見つけたらぜひ教えて下さい。
FAQ
Q. マルチプレイ時、他のプレイヤーは次のステージに進んだのに、自分だけ置いていかれた
A. ホストと一緒にいるプレイヤーはそのまま待機し、置いていかれた人は[Escキー]でタイトル画面に戻ります。そしてもう一度参加して下さい。
Q. リスポーンしたが、ステージ内に戻れない
A. [Rキー]を押して、ステージの回転をリセットしてください。
Q. リスポーンしたが、動けない
A. キー操作がステージ回転モードになっているかもしれません。[Tabキー]を押して動けるか確認してください。
Q. リスポーンしたが、カメラがおかしい
A. 壁の中にリスポーンしている可能性があるため、[Escキー]でステージから出て入場し直してください。
Q. ゲームを強制的に終了させたい
A. [Alt + F4]を押すか、タスクマネージャーから終了させてください。
開発秘話
なぜこのゲームを開発したのか、設計~開発~完成~公開までの経験を雑話をしていきたいと思います。
きっかけ
毎週水曜日に定期配信している「水曜ゲーム部(略称:水曜部)」というのがあるのですが、配信後に話していたときのこと、X(Twitter)で投稿した内容を見て、
これぐらいのステージサイズなら水曜部でサクッとやれるゲームできそう。パズルゲームとか?
ただこの時の心境としては、
(パズルゲーム。普段やらないジャンルだなぁ。。。)
これを話してたのが深夜1時。普段寝るのが深夜2時なので、ぼーっと「パズルゲームねぇ。。。」と考えてたら、急にアイディアが溢れたんです。
次の日も仕事でしたが、どんどんアイディアが出てくるので寝れませんでした。
完成予想図も頭の中に映像が出てひたすらメモをしました。
次の日の仕事中も考えて、どんなゲームを作るか設計したのは実質1日ですね。
設計
この時点で設計したメモがありますので、公開したいと思います。
※流石にそのままは読みづらいので整理はしますね。
何をやるゲーム?
ステージをクルクル回してゴール(外)を目指す
値段
500円(Epic Store)
当初は販売するつもりでしたので、500円ぐらいの規模感で作ろうと考えていました。Steamで販売する場合は1万円の登録料がいるので、インセンティブが100%支払われる「Epic Storeの独占」で思っていました。
しかし、現在は販売する予定がありません。
ちゃんとした製品版にする気がなくなったからです。
私もSteamで700本以上ゲームを持ってるぐらいゲーマーなので、中途半端な状態でゲームを販売したくないので製品版として出すからにはちゃんとしたいんです。
そのためには、バグとり/ボリュームアップ(ステージの追加)/ビジュアルの変更(キャラはアセットでOKとして、UIの作成)/設定とか色々、、、
っとまぁ、やらないといけないことがたくさんあり、そのためにもうしばらく時間を割けられないというのが本音です。
私が本当に作りたいゲームはこれじゃないのです。
余談
私が本当にやりたいことは、数年前に投稿した『10周年記念動画』で語っています。やっぱりシミュレーションゲームが好きなんですよねー
マルチでプレイするとより楽しくなる
ステージを回す人、中で回される人は別々
※現在未実装(ボツ)の内容は打ち消し線
中で回される人
- 言葉でどうして欲しいか回す人に伝える
- 自分で回すのは禁止
移動だけ可能(ジャンプ不可)
ステージを回す人
- 中の様子は分からない
- 無尽蔵に回せると良いか。90度ずつじゃなくて。
- ゴールの位置が分かる
スキル:一時的に輪切りにできる
ステージを回す人にスキルを持たせようとしてたのは、「中の様子がわからず、ただ回る箱を見ていてヒマじゃないだろうか」「難しすぎないか」と考えたからですね。
もう少しステージは難しくなる予定でしたが、立体的な迷路を3Dソフトで作るというのに私の頭が追いつきませんでしたorz
開発
この開発ではChatGPTをよく使いました。
無料枠では足りず、Plusに課金するぐらいには使っていて、今では欠かせない左手となっています。ただし、間違えたことも平気で言いうので、AI相手にキレながらも、トライアンドエラーを繰り返して、ときにはネットで検索しつつも制作を進めました。
プロトタイプの完成
このゲームの基礎的なシステム『カメラを切り替えて、ステージを回転する』というのができて、チュートリアルステージができたのは1週間でした。
この1週間は、ゲームを1分もせずひたすらゲームを作り続けていました。
そのタイミングで水曜部のみんなには遊んでもらいました。
ブラッシュアップ
このあとやったことは
- ステージの追加
- UIの作成(タイトル画面、キー設定、クロスヘア)
- 青い箱を持ち上げて、スイッチで起動するギミック
マルチプレイ対応
マルチプレイに対応するに当たり、めちゃくちゃ躓きました。そして今も躓いたままのところもあります。特に物理演算部分。サーバーとクライントで同期ズレが起こるんですよね。
ChatGPTに聞くと、物理演算はサーバーで処理してクライアントに配信する形にすればいいとは言うんですが、どうも分からない。
ということもありつつ、プレイした方は気付いたかもしれませんが、「持ち上げられる青い箱」、物理演算が働かないようにしているんですよ。他の色の箱は最悪同期ズレが起きてどこか行ってしまっても問題ないんですが、青い箱はスイッチ押すのに必要なので、どこかにいかないようにしています。
でもその副作用により、箱はワールドに残ろうとするので、ステージを回すと壁を抜けてしまい、見失うこともあり得るんです。
ということもあるので、あの青い箱を使ったギミックのステージは他になかったりします。
(とりあえず)完成
このゲームは完成することはないので、(とりあえず)を付けておきますね。
ブラッシュアップなどをして、まだバグが残りつつ完成したのがだいたい1ヶ月でしょうか。まぁ流石に大好きなゲームを1ヶ月もしないのはあり得ないので、少しずつダレつつ及第点を見つけて完成としました。
公開
公開するにあたり、このページを作成したり、YouTubeやニコ動に動画を投稿するのは決めていましたので、それを作るのにだいぶ時間がかかってしまいました。
多分このページも2週間ぐらいかけて作ってるんじゃないでしょうかね。。。
やっと動画を作って、投稿予約をしたのでスイッチが入りました。
最後に
もしここまで読んでくれた方がいましたら、ありがとうございました。
ゲームをプレイして気になる処理などありましたら、解説しますので是非コメントください。
今回1本のゲームを作ってみて色々と学びがありました。
ゲームを消費するプレイヤーでいたときは、「マルチプレイに対応していれば良いのに!」って思うことがよくあったのですが、マルチプレイに対応しようとすると、考えないといけないことが倍増するんだなぁと体感できました。