テキストベースのゲームを1本公開しました。 とりあえず思い出した順でこの記事に追記して、長くなりそうなものはあとから別記事に分けます。
ティラノスクリプト v597b 時点の内容です。
目次
ptextのこと
<br>
で改行できる- HTMLエンティティ( )が使える
- メッセージレイヤ、前景レイヤーより上に表示したいときは
layer="fix"
にする - nameを付けておくと画面から消すときに
[free layer="fix" name="A, B, C"]
カンマ区切りで複数まとめて消せる
エラー全般
エラーが起きている場所が分からないときは、素直にConfig.tjsでdebug=trueにする。コンソール部分、エラー右端の「VMxxx:xxx」をクリックすると、エラー箇所を表示してくれたりする。
- Cannot read property 'find' of undefined
- Unexpected token '?'
- Invalid or unexpected token
- Cannot read property 'caller' of undefined
- Cannot find module 'jquery'
- Cannot find module 'nw.gui'
Cannot read property 'find' of undefined
ゲームを起動してわりとすぐ出てきた場合。 使用するメッセージウィンドウや前景レイヤーの数が、Config.tjsで指定した数より多いのが原因かも。
システム画面も画像も使わないからと、前景レイヤーを0にしていたときに出た。
Unexpected token '?'
[iscript]
内でNull合体演算子を使った部分で出た。
const name = obj.name ?? "John";
ティラノスタジオ内部のGoogle Chromeはバージョン78。Null合体演算子はバージョン80から使える。調べて出てきたJavaScriptがスタジオでも使えるかどうか確認してから使う。
参考リンク:Null 合体 (??) - JavaScript | MDN
Invalid or unexpected token
Cannot read property 'pm' of undefinedと一緒に出てくることもある。
[iscript]
の中のJavaScriptに入力ミス(イコールが抜けたりかっこを閉じ忘れたり)があるとよく出る。雑にコメントアウトしたときも出る。複数行コメントはちゃんと改行する。
[iscript]
// OK
/*
if(test) {
const a = "A";
}
*/
// NG 改行しないとエラーになる
/* if(test) {
const a = "A";
}
*/
[endscript]
Cannot read property 'caller' of undefined
ロード後、fixボタンを押して開いた画面を閉じたあとに出たエラー。
fixボタンなど常時画面に表示するものは、make.ksで[clearfix]
などで一度消して、再度表示しなおす。しないとエラーになるから。
Cannot find module 'jquery'
layer_obj_click.swipe is not a function と一緒に出てくる。
ティラノスタジオの左メニュー->プレビュー->ゲーム再生で「デバッグを表示する」にチェックを入れる。ゲームを再生する。
Toggle device toolbar(Ctrl+Shift+M)を「オン」にすると、スマホやタブレットではどう見えるか確認できる(バックログの上下矢印が出てきたり)
この状態でリロードボタンを押すと出てくるエラー。リロードするときはオフにする。表示確認したいときだけオンにする。
Cannot find module 'nw.gui'
ノベコレバッジが取得できるか初めてテストして、取得用タグ[give_emblem id="xxxx" pid="xxxx]
を通過するときに出た。
ティラノスタジオのコンソール部分で、Toggle device toolbar(Ctrl+Shift+M)を「オフ」にすると消える。
その他
ノベコレ掲載用のスクショサイズ
ティラノスタジオで新規作成時に選べるサイズに合わせて2回撮りなおしたけど、どちらも画像の端が切れた。
「973x615px」1.582:1? でいい感じに収まった。
参考リンク:【ノベコレ】作品を登録しよう|ねこの|note
ティラノスタジオでのスクショの撮り方
Toggle device toolbar(Ctrl+Shift+M)を「オン」にして「More options」から「Capture Screenshot」をクリックする。保存場所を指定して保存。
Toggle device toolbarが「オフ」の時は「リロード」ボタンをドラッグして画面外へ放り投げられる(=きれいなスクショが撮れる)
なんてことをしなくてもコマンド(Ctrl+Shift+P)で撮れることをこちらのツイートで知った。
ティラノスタジオを使い始めたみんな!
— ねこの/milkcat (@nekomilkcat) 2020年4月6日
スクリーンショットを取りたいとき、デベロッパーツールでCtrl+Shift+Pを押した後にfullって入力して実行するとPNGが撮れることを覚えておこうな! pic.twitter.com/UbjCAwRytj
[if]の中で[jump]しない
[if]
の中では行き先を変数に代入するだけ。[endif]
のあとに[jump]
する。
[if exp="条件…"]
[eval exp="f.target = 'choice_a'"]
[else]
[eval exp="f.target = 'choice_b'"]
[endif]
[jump target="&f.target"]
[s]
stackか何かの関係でときどき思った通りに進まなくなる。とても静かにおかしくなった。
アンチエイリアス設定がWin無効の理由
Mac OS X/macOSだけがサポートしているCSSプロパティを使っているから。
Config.tjsの;defaultAntialiased = 1 or 2;
は、CSSのfont-smoothing/webkit-font-smoothing
でアンチエイリアスを適応している。
参考リンク:font-smooth - CSS: Cascading Style Sheets | MDN
Twitterカードに古いスクショが表示される
ノベコレでスクショを差し替えても古いものが表示される場合。たぶんTwitter側に古い画像のキャッシュが残っている。
Card Validator | Twitter Developersで、作品ページのURL(novelgame.jp/games/show/xxxx)を入力して、新しい画像でTwitterカードが表示されるか確認する。何度か繰り返すと反映される。
おわりに
エラーが出てその原因がどこか分からないと気が遠くなります。
制作時の思い出は、モンスターの攻撃方法とドロップアイテムを考えているとき「ムカデ」を画像検索してSAN値がごっそり減ったことです。