1
0
hugo/content/blog/2023-12-25-game.md

80 lines
6.0 KiB
Markdown
Raw Permalink Normal View History

2024-04-23 13:21:26 +00:00
+++
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によって動いていないという些細なことが問題ではありません。全体的に納得していないのです。
とりあえずゲームを完成させてみようと思い、完成させることはできました。
「とりあえず完成させる」これはすごく重要なことだと思います。そう思うことで、私は色々と実装を進めることができました。そう思わなければ進んでいない。
ですが、ゲームのクオリティというか、全体的な完成度の高さというものは、ゲームにおいて、特に、ビデオゲームにおいて、とても大切なことです。
最初の印象がすべてを決める。
後々も引きずってしまう。
そういうものではないでしょうか。
もう少しだけゲーム制作やってみる。