1
0
hugo/content/blog/2023-12-25-game.md
2024-04-23 22:21:26 +09:00

6.0 KiB

+++ date = "2023-12-25" tags = ["ue5"] title = "β版を作ったけど公開を見送った話" slug = "game" +++

今回は、ゲームのβ版を完成させたんだけど公開を見送った話をします。

理由としては「クオリティに問題があるから」という一点につきます。

今回はそんなゲーム制作で考えたことを書いていきたいと思います。

1ヶ月でゲームを完成させる

11/30くらいからはじめたゲーム制作ですが、最初はどんなゲームにしたいのかとか、そういうのはあまりありませんでした。ただキャラクターを動かしてゲームの世界を飛び回っていました。

これがゲームと呼べるのかと言うと、呼べないでしょう。ゲームとは条件があるものだから。例えば、クリア条件や報酬条件、勝利条件などなど。

さて、そんなことをしているうちに、アドベントカレンダーの日が近づいてきました。私は12/24に担当していて、ゲーム作りを始めたよって話をしようと思ってたんだけど、急に思い立って、ゲームを完成させて公開しちゃおうと思いました。

これを思いついたのが12/20あたりだったと思います。そこから本格的にゲームの実装を書きはじめたのでした。

ゲームはシンプルに「アイがカードを落としたのでそれを探す」というものです。簡単なように見えて相当面倒なゲームの作り方をここではじめて学習しはじめることになります。

それまでは本当にのんびりしたもので、ゲームのタイトル画面すら作っていませんでした。

12/24にゲームを完成させようと思わなければ、おそらく、ずっとタイトル画面すら作らなかったでしょうね。その意味で「とりあえずゲームを完成させる」という目標を短期に設定できたのは本当に良かった。

さて、今回のβ版の内容に触れていきたいのですが、私が行ったのは主に3つでした。

1. タイトル画面の設定

ここでは、ユーザー名の入力欄を作ってカードアカウントのidを取ってくる実装を行いました。あと、ワールドを移行する処理などを初めて実装しました。また、ゲームをスタートできる期間を設定し、その期日を過ぎると「公開は終了しました」みたいな表示を出るようにしました。また、クリアしている人も「ゲームはクリア済み」と出るようにしました。これらはapiに新たな項目を追加することで実現しています。

idは後にアイテムをゲットした時、つまり、クリア時ですね。クリアしたときにカードアカウントに特定のカードを送信する実装に使います。

2. 星に入れるようにする

ゲームでは最初に大きな星が目の前に登場します。実はアイテムはこの星の中にあります。飛んでいって星に入れるようにしなければなりません。ですが、これもなかなかにテクニックが必要でして、私が使っているアセットでは、星にぶつかると消えてしまう実装になっていました。そのため星の中にちょうどいい大きさの円アクターを入れて、それにぶつかるとワールドを移行するようにしました。

3. アイテムを拾う

これがゲームのクリア条件であり、アイテムを拾う処理と、アイテムを消す処理を作りました。ここでは本当に複雑な処理を行います。アイテムを拾うとグローバル変数にとってあるidを元にカードアカウントへの配送処理を行います。同時にゲームをクリア済みとapiに伝達します。

他にもメッセージを表示したり、bgmを設定したりといったことをやりました。

これでβ版は完成です。β版をプレイして動作が確認できたのは12/23でした。

色々と考えた末に公開を見送る

私は基本的にmacで開発し、srcをwindowsに送ってbuildするという方式で開発しています。windowsで作ってもいいのですが、なんとなくメインがmacでないと落ち着かないというか、そんな理由からmacで開発しています。

で、windowsでbuildするわけですが、なぜかapiへのpost-requestがwindowsでは動いていませんでした。これではゲーム内でアイテムを獲得してもアカウントに反映されません。ちなみに、get-reqは動いています。

この問題を把握したのは12/24でした。

これは色々やれば修正や回避することはできると思いました。ですが、ここでもう一度考える機会がありました。

「本当にこれを公開していいのだろうか」

一応、クリア条件も設定されゲームとしては普通にプレイできると思います。ですが、クオリティに納得していない自分がいました。

これはwindowsではpost-requestが不明なerrによって動いていないという些細なことが問題ではありません。全体的に納得していないのです。

とりあえずゲームを完成させてみようと思い、完成させることはできました。

「とりあえず完成させる」これはすごく重要なことだと思います。そう思うことで、私は色々と実装を進めることができました。そう思わなければ進んでいない。

ですが、ゲームのクオリティというか、全体的な完成度の高さというものは、ゲームにおいて、特に、ビデオゲームにおいて、とても大切なことです。

最初の印象がすべてを決める。

後々も引きずってしまう。

そういうものではないでしょうか。

もう少しだけゲーム制作やってみる。