タイピングゲームの制作記の8回目です。
色々機能を追加しました。
おまけゲームの作成
本来のステージ(タイピングオブザデッドのように進む形のもの)は作るのに時間がかかるので、先におまけゲームを作成しました。
おまけなのに先に作るという意味が分からない状態ですが・・・。
おまけゲームは主人公は動かず、敵は決められた位置から大量に生成され単純に主人公に向けて歩いてくるというもので敵を一定の数倒したらゲーム終了というような単純な作りにしました。
おまけゲームの舞台の作成
おまけゲームの舞台を無料のアセットを使って作成しました。
アセット作成者に感謝です。(^^)/
難易度選択
おまけゲームでは難易度選択画面を作成し、「とてもやさしい」、「やさしい」、「普通」、「難しい」の4つの難易度を選べるようにしました。
難易度事に出る文字列が変わったり、敵の移動速度や攻撃力等が変わるようにしました。
スタート前の待機機能
難易度選択後のゲーム開始前にゲームクリアの目標を表示し、ゲーム開始前の待機時間を作りました。
現在出現している敵の数に応じて新たに敵を出現させる
おまけゲームでは100体の敵を倒すとクリアとしましたが、100体同時に存在すると数が多すぎてタイピングが出来ないので、ゲームに登場する敵の最大値を決定し、それ以上は敵が倒されるまでは出現しないようにしました。
同時に出現する敵の数以外にも同時に主人公を攻撃出来る敵の数にも制限を加えました。
それ以外の敵は後ろで大人しく待っててくれます。|ω・)
オプションの作成
ゲーム全体のオプション設定機能を作成しました。
BGMとSEのオン・オフの切り替えとタイピング時の敵の選択をするモードの切り替えを出来るようにしました。
切り替えボタンに表示されているのが現在の設定になるので「ON」とボタンに表示されていればその機能がONになります。
他にもオプションが増えれば追加する予定です。
各ボタンを押すと切り替えが出来るようになっています。
BGMとSEはスライド式にして音量を変更する方式に変更するかもしれません。
ターゲットの自動選択モードの追加
先ほどのオプション設定で「タイピング対象選択」という設定がありますが、これは「Type」と「Auto」に切り替えが出来ます。
「Type」は複数の敵の文字を自分でキーボードで打ち、その敵を今のターゲットにします。
「Auto」は自動で現在タイピング可能な敵のリストの中から一番近い敵をターゲットにします。
自分で打つべき敵をタイピングする方が楽でいいと思ったんですが、今打つべき文字が同じ敵が複数いた場合に「Type」だと打とうと思っていた敵とは違う敵をターゲットとしてしまうことがあるので、そういうのが嫌だと思う人様に自動でターゲットを選択するモードを追加しました。
自動でターゲットを選択するのは楽だ!と思うかもしれませんが、難易度の高い文字や記号が出たり、問題文が長い場合はタイピングに時間がかかり、他の敵が近づいてきていてターゲットを変えたい!と思っても、本当に打ちたい敵をターゲットに出来るとは限りません。
Typeモードの場合はEnterキーでターゲットのキャンセル、Autoモードの場合はEnterキーで主人公に近い今とは違うターゲットに変更します。
BGMとSEを付けた
オプション設定にもあるとおりゲームのBGMとSEを付けました。
おまけゲーム時のBGM、ゲームクリア時のBGM、ゲームオーバー時のBGM、タイピング成功時のSE、タイピング失敗時のSE、ボタン選択時のSE、ボタンを押した時のSE、敵の攻撃時のSE、主人公がダメージを受けた時のSEです。
ゲーム時のデータを付けた
ゲーム中に必要なHPや連続で敵を倒した数のデータを表示する機能を付けました。
今の所二つのデータ表示だけです。
時間計測機能を付けた
ゲームクリア時間やタイピング速度の計測に必要な時間計測機能を取り付けました。
また30分経過してもゲームクリアしていない場合はタイムオーバーということで終了するようにしました。
結果画面の作成
ゲームが終了したらその結果を表示する画面を作りました。
どのゲームでどの難易度の結果なのか、正解数、間違い数、正解率、間違いやすい文字、タイプの速さ、クリア時間、これらの結果を踏まえた得点を結果として表示します。
正解数と間違い数は正解率があるので要らないと言えばいらないですね・・・・(^_^;)
間違いやすい文字は間違えた文字上位5文字を表示します。
その文字を間違えた回数も表示しようと思ったんですが、結果画面を越えるような桁の数が入ってくると困るのでやめました。
得点によるランク付けのような機能もほしいところですが、これは元になるユーザーデータがないので付けられません。(^_^;)
問題文の作成
おまけゲームの「とてもやさしい」~「難しい」までの問題文を作成しました。
語彙力がないので似たような問題文ばかり出るかもしれません。(^_^;)
問題文は日々追加してどんどん増やしていこうと思っています。
この問題文の作成って結構しんどいです・・・・((+_+))
今後の開発
現時点ではすべての素材をビルドに含めていますが、今後はAddressablesを使ってサーバーからデータを読み込むようにして、更新のたびに本体を毎回ダウンロードして実行する必要がないようにしたいところです。
問題文もサーバーからダウンロードするようにすれば季節に応じた問題文に切り替えたい!といった時も変更するのが楽になりそう。(‘ω’)
ゲームステージの追加の場合もシーンごとアセットバンドルにすればいいのかも?
ただAddressablesの使い方がよくわかっていないので、それは追々やることにします。
使い方がわからなければ更新のたびに全データダウンロードして頂く形になります・・・・。(´Д`)
ただ更新のたびに5分ぐらいかかるんですよね・・・・(^_^;)
現時点でセーブ機能は取り付けていませんが、ゲームステージが一つでも追加出来たらその時に一緒に付けようかと思います。
問題点
問題文が長い(短くても)敵が何体か集まるとテキストが重なって打ちにくかったり、敵が撃たれるとその場で止まるので、後ろから来た敵が主人公の方に進んで、撃たれている敵よりも主人公に近づき、その敵のテキストが前面にきてしまうことがあります。
重ね順を変更するとある程度ターゲットの敵のテキストが前面になりますが、一部変な表示になってしまうのでそれはやめました。
その都度ターゲットの敵を変えて打ってもらうということにします。
一度に登場する敵が多いと敵同士がからまって主人公の方にいけないこともあります。
敵が近寄ってこないのでダメージは受けないけど時間は経つので得点結果は低くなります。
敵を打って減らす必要が出てくるので特に問題はないかなぁ・・・、見た目はあれですけど。
まぁこれはしょうがないということで・・・・(´Д`)
その他の問題点として、Unityエディター上やスタンドアロン形式のゲームでは鳴っていた効果音がWebGL形式にすると鳴らなくなるという状況になって困りました。(^_^;)
その音声の問題なのか、読み込み方式が悪いのか、色々やっても鳴らないので効果音を別の物に変えたら鳴るようになりました。(´Д`)
後はWebGLにするとなぜかキー入力で不具合が出たりしたので、処理を少し変えたりしました。
その他、WebGLの圧縮を有効にした時にサーバー側にContent-Encoding応答ヘッダーを追加した.htaccessファイルをビルドフォルダに追加する必要があって、追加しましたがなぜか認識されないのでunityweb形式にしました。
終わりに
おまけゲームがとりあえず出来たので、来年の初め辺りにおまけゲームを公開出来たらと思います。
ゲーム公開後に出てきた不具合は徐々に直していくという事で・・・・(´Д`)