showmenuが働かない件とティラノのフルスクリーン化について
・[showmenu]タグはバグっていて働かない模様です。
数年前にティラノの公式掲示板で指摘されているのですが、まだそのままのようです。
つまり、デフォルトのメニュー画面を出すには
[showmenubutton]で右下に歯車アイコンを出す。このアイコンをクリック。
もしくは、
[button role=menu]でメニュー用の常駐ボタンを設定し、このボタンをクリック。
もしくは、
マウスのホイールボタンをクリック
この3通りしかありません。
[button role=menu]で直接menuを表示するのではなく、roleを使わない[button]を設定し、menuを表示していいタイミングかどうかの判定を挟んだ上で、それが正なら[showmenu]とやりたかったのですが、無理でした。
menuを表示したくないときには、[hidemenubutton]で、歯車アイコンを消すしかない、ということになりました。
これ何の話かというと、メニュー画面にはセーブ・ロードがあるので、ゲームの進行上セーブ・ロードをさせたくない(=メニュー画面に行かせたくない)ときにはどうするかということです。
結論。セーブ/ロードさせたくないときには[hidemenubutton]しかない!
あと、KeyConfig.jsの
"center": "menu", //センターボタンをクリック
を消しておくとマウスのホイールボタンが働かなくなります。これも忘れずに。
・フルスクリーンを簡単に実装する方法
[screen_full]を使えば、PCの場合はフルスクリーンになります。
フルスクリーンのオンオフにボタンを作るのが面倒だ、という場合、キー操作でそれができるショートカットが用意されています。
KeyConfig.js の
//キーボード操作
"key" : {
のところに
"122" : "fullscreen",
を入れておきます。
これでF11キーでフルスクリーンのオンオフができるようになります。
ただこれだけだとゲームスタート後にしか働かないので、
title.ks のなるべく上の方に
[start_keyconfig]
を入れておきます。これでタイトル画面からフルスクリーンのオンオフができます。
(ただし、パッケージング前は、画面を一回クリックしてからじゃないと働きません。なぜかは分かりませんが・・。スマホゲーはそういう仕様だという説明を見かけました。WINDOWS専用にパッケージングした後はクリックなしでも働きます)
ティラノでパッケージングするときの注意
・windowsやmacアプリとしてパッケージングするときには、いらないファイルは全部抜きましょう!
ゲームの制作中にいろんな素材を入れて、結局使わないファイルまでパッケージングする、というのはよくあることです。
どの素材を使ってどれを使ってないか確認するの大変だし、下手に抜いたせいでバグが出たらいやなので、とりあえず安全策で、全部のファイル入れたままパッケージしよう!とやる人は多いと思います。
場合によっては、ゲームの容量大きい方がボリュームある感じするから、不要ファイルもあえて入れておこう!とする向きもあるかもしれません。時には使わない動画までも入れたままにしておいたり…。
ところがティラノでこれをやると後悔します。
ティラノは暗号化ファイルの復号化を起動時に全部やるようなのですが、これが重い・・。ファイルを山盛りにしてパッケージングしたゲームは起動にすごく時間がかかってしまいます。
パッチを当ててアップデートする方法も用意されてます。
ところが、パッチはゲーム本体の復号化の後に読み込まれるため、軽くなったパッチを用意しても、最初に作った本体が重いままだと、どうやっても軽くはなりません。
なので、最初に作る本体はなるべく軽くしておいた方がいい、という話でした。
どうせならPNGの軽量化なども。
ちなみにairnovelは復号化が早いです。
airnovelの暗号化は、フォルダを開くと素材ファイルが見えるけど名前も拡張子もめちゃくちゃでなんだか分からない・・という形の暗号化です。ティラノみたいにファイルを全部一つにまとめていないため、復号化が早いです。
どこまで暗号化するか?という問題において、速度の方を取った印象です。
airnovelの後継エンジンであるSKYNOVELは、ティラノと同じHTML5ベースですので、紹介しておきたいと思います。暗号化もairnovelと同じ仕組みを取っているとうかがいました。
ティラノで画像表示するときのチェック項目
・chara_showやchara_hideなどを使う場合には、原則wait=trueにする。
wait=falseにするのは、複数画像を同時に表示したい時ですが、最後の一個の画像は必ずwait=trueにする
例:4キャラ同時に表示するとき
[chara_show name=momoko face=flat layer=1 time=1000 wait=false left=900 top=50]
[chara_show name=ichigo face=flat layer=1 time=1000 wait=false left=630 top=50]
[chara_show name=yuzu face=flat layer=1 time=1000 wait=false left=300 top=50]
[chara_show name=uri face=flat layer=1 time=1000 wait=true left=1300 top=100]
なぜ?
・chara_show の最後の一つはwait=trueしとかないと、ctrlで早送りしたとき描画されない
・chara_hide も最後の一つはwait=trueを入れとかないと、ctrlで早送りしたとき次のshowが描画されない
hideもshowも必ず最後の一つはtrueで!
というかそもそもCTRLで早送りはしないほうがいいのかもしれない
[playse]タグを飛び越えて、SEが演奏されたりされなかったり、不安定になる。
[jump]タグまで飛び越えて、実行されないはずのスクリプトに突入したことがある
[jump]の件はスクリプトの間違いの可能性もあるので検証中ですが、CTRL早送りが不安定なのは確か。
config.tjsで
;skipEffectIgnore = false;
にしておくと、若干は改善するかも…と思ったけどあまり変わらないかも。
・chara_hide でフリーズするとき
表示されていないキャラをchara_hideで消そうとし、なおかつwait=trueになっているとそこでフリーズする。wait=falseにすると、前述のchara_showがおかしくなる問題が発生するので、wait=trueは必要。
つまり、chara_showとchara_hideは、必ず一対一の対応関係にする。どっちかが多いというのはだめ。([chara_hide_all]を使った場合は別ですが)
・chara_modはキャラの座標移動できない。画像の入れ替えのみ
・chara_showにはキャラ表示位置の自動配置があるが、そのデフォルト位置を設定するタグは用意されていない。
なのでキャラ立ち位置を細かく調整したい場合には、[chara_config]でpos_mode=falseにして、left=900 top=50 などと毎回入れる必要がある。
・ティラノはキャラの表情変化がとても便利
最初にこういうのを登録しておくと、シナリオ中でタグを打たずに表情変化できる
;キャラクターの名前が表示される文字領域
[ptext name="chara_name_area" layer="message0" color="0x1a1a1a" size=34 x=374 y=805];上記で定義した領域がキャラクターの名前表示であることを宣言(これがないと#の部分でエラーになります)
[chara_config ptext="chara_name_area"];このゲームで登場するキャラクターを宣言
;瓜太郎
[chara_new name="uri" storage="chara/uri_flat.png" jname="瓜太郎" ]
;キャラクターの表情登録
[chara_face name="uri" face="flat" storage="chara/uri_flat.png"]
[chara_face name="uri" face="bikkuri" storage="chara/uri_bikkuri.png"]
[chara_face name="uri" face="jito" storage="chara/uri_jito.png"]
[chara_face name="uri" face="komari" storage="chara/uri_komari.png"]
[chara_face name="uri" face="oko" storage="chara/uri_oko.png"]
[chara_face name="uri" face="w" storage="chara/uri_w.png"]
タグを打つ表情変化の例
[chara_mod name=uri face=bikkuri wait=false time=0]
#瓜太郎
「タグを打ってびっくり顔の表現」[p]
タグを打たない表情変化。これはとても楽です・・!コピペ作業でせっせと表情変化タグを入れずに済むので!
#瓜太郎:oko
「タグを打たずに怒るぞ」[p]#瓜太郎:w
「次は笑うぞ」[p]#瓜太郎:komari
「困った顔をするぞ」[p]#瓜太郎:jito
「ジト目だ」[p]
・画像を変化させる前には#を空打ちしておく
#瓜太郎、などとすると発言者の名前がウインドウに表示されるのですが、
キャラの退場、登場、背景の切り替え、のときには、直前の発言キャラの名前だけがウインドウに残っている状態になって不自然に。
なので、chara_hide、chara_show、BGの切り替え、の前には、#を空で置いておく。
これによって空白が名前欄に表示されて、ウインドウがきれいになる。
・シーン切り替えでタグを打つ順番
音楽切り替え
#の空表記
キャラ消去
背景切り替え
キャラ登場
これが個人的に一番スムーズにいく順番かも。(複数キャラの同時消去や同時登場をやるときには、最後の1キャラにwait=trueにすることを忘れずに)