
ドラクエの名前付けは、無難に自分のファーストネームだった、弓削田です。
ゲーム開発はもう終盤なのに、肝心な機能をつけ忘れていることに気が付きました。
ゲームで自分が操作するキャラクターの名前をつける機能です。
この機能により、キャラクターに感情移入がしやすくなるということはもちろん、
発言するセリフに名前でタグをつけることができ、少し複雑な会話をする時の目印にもなるはずです。
あとは、こうしたRPGのお決まりという事もあるかもですね。
あ、でもFFは違うか!
名前機能をつける点で苦労した点
まず、この名前機能をつけるという事で、悩ましかったのは、どのタイミングで名前をセットするかということですが、
基本的にゲーム中に1回だけしか使わない機能なので、初回のゲーム立ち上げタイミングで入力してもらうのがいいと考えました。
実は、このゲームというのは、webブラウザにこだわって作っているという点は、表示するデバイスの問題だけでなく、
それを処理するサーバー側も柔軟に複数箇所にモテるように考えていたり、
いろいろなサイトにガジェットのように表示させることを、裏の目的で持っていました。
ということで、このゲームに関わる処理は、全てゲーム画面(エレメント内)にて行うようにしなければいけないという縛りがあるんですね。
まあ、勝手に作り手がこだわっているだけの事ですが、こうした機能が後々生きてくるはずと信じて、その仕様で進めてみたいと思います。
ということで、ページロードしてスタートをクリックした段階で、入力ダイアログを表示してみました。

名前の入力と同時に、規約のチェックもこのタイミングでしてもらうことにしました。
とりあえず、サービス公開には、プライバシーポリシーなどは必要ですからね。
ゲーム初回に1回だけということで、多くのゲームがこのフローになっていることもうなずけます。
ゲームに搭載された複数の仕様
実はこの処理を作っていて、ハマった点がありまして・・・
このゲームには、ゲーム立ち上げの際に2つのモードを用意していて、タイトル画面を表示するスタートと、タイトル画面を表示しないスタートという2つのモードです。
100日後に完成するゲームシステム 8日目「タイトル画面の追加」
過去に書いたブログの、この時に作った機能ですね。
ここの記事では、タイトル画面が表示されているだけなんですが、フラグを付与すると、タイトル画面をすっ飛ばして、ゲーム画面がそのまま表示されます。
でも、audio-APIの関係で、必ず画面クリックをしてもらわないといけないので、クリックを促す表示はされますけどね。
この2つの機能は大きく処理が異なっているため、同じように画面をクリックするという処理でも、全然違ったフローをたどるため、
この整合性を保ちながら、「同一処理で入力ダイアログを表示して、データを保存しつつ、もとのフローに戻す」という流れで、
しばらくの間は、どちらかの処理を完成すれば、もう片方が不具合を起こすというジレンマに陥っていました。
大きなプログラムコードでは、よくありがちな落とし穴ですが、きちんと設計をしていない場合、このトラブルになりがちだと改めて思いました。
でも、無事に元プログラムのリファクタリングも兼ねて、機能搭載に成功したので、ご安心ください。
会話にも表示できるようになりました
そして、想定通り、会話に名前を表示させるようになりましたとさ。
下記のサンプル画像は「ほげみ」という名前で登録してみました。

よく考えたら、ゲームの最初しか名前が決められないので、一度付けた名前でゲームを進めていくことになります。
「あああ」とかやりがちですが、自分のペットに名前をつける感覚で入力してもらいたいですね。
とりあえず、また一歩前進・・・と、
0 件のコメント:
コメントを投稿