ノベルゲーム作り

概要

ノベルゲームを作成する。

Phaserがとてもよい。 ブラウザでプレイできるようにする。

Tasks

TODO loadが終わってからスタート

今は終わってないうちに開始してる。 コード的にもloading sceneに描画があったりしてよくない。

TODO tweenをまとめて定義

同じようなアニメーションコードが分散している。 まとめられる可能性がある。

TODO 環境変数を指定

開発時に効果音があるとうざい。 あるいは開発時はロゴ表示しない、とか。 また、開発時は好きにシーンを遷移できるようにする、とか。

TODO 最初に背景を置けない

バグ。テキストのアニメーションでそうなったぽい。 タイムラインの最初にsetBackground()を置くと、next()でstackループになってエラーになる。

TODO 完成の状態へ

作品として成立してるくらいのレベルに。 DEADLINE:<2021-11-30 火>

TODO dialogのコンストラクタのリファクタ

this.text.x などを使うと、長いconstructorを分離できそう。 ああでも、クラス変数が未定義エラーになってしまうので、constructorの中でしか定義できない可能性がある。 未定義を容認すればよいのだが、デメリットもありそう。

TODO 自動テスト

現状は壊れていてもわからない。 確かめるためには逐一クリックしてメッセージを進めないといけない。 一応コンパイルができてるかのチェックはできるが。

定点クリックとJavaScriptエラーがないかのチェックくらいか。

TODO デバッグ用のシーン選択を作る

いちいち全部辿ってチェックするのは面倒だからな。

TODO 操作不能時間を作る

効果音が終わってから遷移させたい。 あるいは全部アニメーションするまではクリックしてメッセージ送りできないとか。

Memo

WEB上で作成まで

今jsonで書いてるところをWEB上でできるようにすれば、WEBビルダーが作れる。

Reference

TypeScriptを使ってノベルゲームを作ろう - Qiita

最低限のノベルゲームが作成できる。非常に参考になる。

Archives

DONE bundleするとパスが変わって読み込めない問題

開発時と本番環境での、ファイルパスのズレが生じる。

カレントディレクトリはsrcディレクトリになってるようなので、そこからの相対指定でできた。

DONE テキスト入れ

まず最小限を完成させる。

DONE 文字をアニメーション表示する

一気にパッと出すのではなく、アニメーションで1文字ずつ出したい。

DONE 空文字のときundefinedまみれになる

今まではtimeline dataに空文字を入れると何も表示してなかった。 アニメーション化の影響で起こるようになった。

returnを入れて解決。

DONE 場面転換アニメーション作成

現状、突然切り替わるだけだから、わかりづらい。 場面暗転したことを伝えるアニメーションが欲しい。

暗転したあと、クリックすると進めるようにしたい。 もう一区切りほしい。 今は勝手にテキストが進む。

fade用sceneを追加して、暗転用の画像表示とクリックで進めるようにした。 scene間のコードのつながりがなんとなくわかる。 MainSceneの作りがよく、続きから再生できるようになっていた。未定義のときだけstartにいく。 なのでScene、Timelineで自由に遷移できる。

DONE プロンプトをアニメーション表示する

<2021-11-07 日> 次がクリックできますよ、ということを示すために。 固定位置だとできるんだが、微妙だな。 一番ベストなのは、文末で▽を表示してゆっくりと点滅させることだ。

DONE 縦軸で回転させるアニメーション

テキスト送りの三角を回したい。

DONE ロゴ表示

かっこいいロゴ表示をするとモチベにもなるだろう。 開発時はオフにする。

Reference