【ティラノスクリプト】Config.tjs、KeyConfig.jsを見直そう
タイトルが長い!
【ティラノスクリプト】って入れている時点で長くなるんだけど、多分これを入れないと見てくれない人も居るんじゃないかなというジレンマを抱えながら毎回記事を書いています。
というわけで、今回はシステム面に大きく影響を及ぼす「Config.tjs」及び「KeyConfig.js」に関してです。
「システム面に影響」とか書くと、いかにも初心者お断りに見えますが、そうでもないのでとりあえずお時間があるなら見て行ってください。
とは言え、やはりシステム面に影響がでる設定を弄ることになりますので、弄ったら必ずテストプレイしてくださいね!
Config.tjsとは?
簡単に言うと、プロジェクトのシステム設定ファイルです。
[プロジェクトフォルダ]\data\system\Config.tjs
主にゲームタイトルやID、解像度などの重要情報が設定されているものです。
.tjsという見慣れない拡張子が付いていますが、中身はテキストファイルですのでノートパッドなどで編集可能です。
特にティラノビルダーを使用している方には意識せずとも設定されている部分だったり、ティラノスクリプトを使用している人でも最初にちょこちょこ弄るだけで終わってしまいがちなファイルです。
こちらのファイルの設定を見直し、最適化することでパフォーマンスの改善が期待できます。
Config.tjsの最適化項目
前提としてティラノスクリプトv504aのConfig.tjsを使用します。
ティラノビルダーや4系では項目が若干違う可能性がありますので注意してください。
また、ティラノビルダーの場合、Config.tjsは最初から注釈文が削除されている為、見た目も異なる点を留意してください。
それでは上から見ていきましょう。(最適化に関係ない項目は飛ばします)
■patch_apply_auto
//パッチファイルが配置されている場合、起動時に自動的に反映するか否か。
//trueを指定すると実行ファイルと同一フォルダにtpatchファイルが存在する場合反映してから起動します。
//(MacOS Sierra 以降の場合は home/ユーザー名/_TyranoGameData/ 以下)
//falseを指定した場合 起動後に[apply_local_patch]タグを使って反映することもできます。
;patch_apply_auto = true;
パッチ機能を使わない場合はfalseにしましょう。ノベルゲームコレクションのみに登録して自前で修正パッチなどを配布する予定がない人が多数だと思います。正直こちらはtrueのままでもそんなにパフォーマンスに影響はありませんが、使わない機能はオフにしておきたい人用となります。
■useCamera
// カメラ機能を使えるようにするかを設定
// trueで有効 false で無効です。
;useCamera = true;
cameraタグを使用していない場合はfalseにしましょう。
■use3D
// 3D機能を利用できるようにする
// trueで有効 false で無効です。
// 有効にすると起動時間が長くなりますので、必要ない場合はfalseが推奨です。
;use3D = false;
3d_タグを使用しない限りはfalseのままで良いです。
■skipSpeed
// ◆ スキップスピード (ミリ秒/文字)
//スキップ時にどれくらいの早さで進むかを設定できる
;skipSpeed = 30;
この30という数字を1~10に変更することでスキップモードの速度が高速化します。30と10では体感で結構違います。
私はここを変更したことで不具合を出したとはないのですが、念のため数字を変更したらスキップモードで不具合がでないか確認しましょう。
■defaultSoundSlotNum
// ◆ サウンドで使用するスロット数をあらかじめ定義します。
// こちらは、スマートフォンブラウザで適切に音を再生したい場合は必須です
;defaultSoundSlotNum = 3;
SEを同時に2つ以上鳴らさない場合は"1"に設定できます。playseタグなどでbufを指定していない場合などが該当します。ここも無理に弄らなくていいです。
■numCharacterLayers
// ◆ 初期状態の前景レイヤの数
// 必要なければ 0 を指定してかまいません。
// 数が多いと速度が低下したりメモリを消費しますので、必要以上に大きな数を指
// 定しない方が良いでしょう。
// laycount タグでシナリオ内でも変更できます。
;numCharacterLayers = 3;
imageタグなどを一切使わない(bgタグやcharaタグのみで構成してあるゲーム)では"1"に設定できます。よくわからない場合は弄らない方が良いのですが、1~2に設定してみてゲームが最初から最後まで動くなら大抵の場合問題ないです。
■numMessageLayers
// ◆ 初期状態のメッセージレイヤの数
// 前景レイヤと違って、0 を指定することはできません。これも必要な数だけ確保
// するようにすべきです。laycount タグでシナリオ内でも変更できます。
;numMessageLayers = 2;
メッセージウインドウのレイヤ数です。大抵のゲームでは"1"で動くと思いますが、テーマプラグインを使用している場合は、コンフィグ画面で使用しているメッセージウインドウがレイヤ2に設定されている場合があるので注意しましょう。(その場合は2のままで良いです)
※11/05追記
デフォルトのコンフィグ画面でもレイヤ2が設定されていたので、コンフィグを自作しない限りは1に変更するとフリーズするようです…。
■debugMenu.visible
// ◆ 「デバッグ」
// ここをtrueにしておくことでブラウザのコンソールログに各種値が出力されるようになります
// ゲームリリース時は必ずfalseにしておきましょう
;debugMenu.visible = true;
リリース時には必ずfalseにしましょう。開発中も特に必要性を感じないならfalseに変更して良いと思います。
こちらに関してはティラノスタジオでエクスポート時にtrueだった場合はfalseにしてくれるようです。試していませんが、恐らくノベルゲームコレクションに登録時も同じかと思いますので、あまり意識しなくて良いかもしれません。
Config.tjsその他の設定項目
よく話題に出る項目にもついでに触れておきます。
■projectID
// ◆ プロジェクト一意の識別名称 ティラノスクリプト独自設定
// プロジェクト固有の文字列を指定してください。特に同一ドメイン上にプロジェクトを配置する場合は必ず指定してください
;projectID = tyranoproject;
こちらはティラノビルダー使用者よりもティラノスクリプトのみで使用している方がデフォルトのまま変更していない場合が多いです。
注意書きに書いてあるような「同一ドメイン~」に関してはノベルゲームコレクションで登録する際には影響しませんが、ティラノスタジオの場合同じプロジェクトIDを使用しているとセーブデータも共有されるので、ゲーム毎に一意のIDを指定しておきましょう。
ノベルゲームコレクションに登録する際の影響としては、このIDからブラウザ版URLやダウンロード時のZIP、ゲーム実行ファイルのEXEの名前が決定します。
例えば、projectID = nekoneko にしていた場合、
■作品のブラウザ版URL
https://xxxx.sv02.novelgame.jp/game/xxxx/nekoneko/
■ダウンロードの際のZIP名
nekoneko_win.zip
■実行EXE名
nekoneko.exe
といった感じとなります。
※稀に例外があって、"Game"として登録されることがあるようです。気になる方は運営さんに、ZIPのファイル名などがプロジェクトIDと異なる旨を伝えることで対応して貰えるかもしれません。
■configVisible
// ◆ コンフィグ(メニュー)機能表示
// セーブ・ロードやタイトルに戻るといった一連の機能を表示するかを指定します
;configVisible = true; //コンフィグアイコンを表示
デフォルトで右下に表示されるメニューボタン。
最初から非表示にしたい場合はfalseを指定しましょう。
特にティラノビルダーを使用している場合、最初にチラッと表示されてしまう!ってケースを解消できます。
KeyConfig.jsとは?
主にキーボード入力やタッチパッド操作によるショートカットキーを設定できます。
[プロジェクトフォルダ]\data\system\KeyConfig.js
例えば、キーボードのSキーをセーブに、Lキーをロードに設定出来たりします。
こちらも同じく中身はテキストファイルですのでノートパッドなどで編集可能です。
注意すべき点は、デフォルトでタッチパッド操作が有効になっていることです。詳しくは後述にて……。
KeyConfig.jsを設定しよう
<設定できるアクション>
save:セーブ画面を開きます
load:ロード画面を開きます
next:次の文章に移ります。左クリックの操作
menu:メニュー画面を表示します。
title:タイトルへ戻ります
skip:スキップを開始します
backlog:バックログを表示します
fullscreen:フルスクリーン切り替え
qsave:クイックセーブ実行
qload:クイックロード実行
auto:オートモード開始
hidemessage:メッセージ消去
関数を指定することもできます。
例えば、コンフィグ画面の表示などは、関数の中にsleepgameでコンフィグ画面のシナリオファイルを指定してください
function(){
//config呼び出し
TYRANO.kag.ftag.startTag("sleepgame", {storage:"config.ks"});
}
<キーボード指定方法>
キーコードと、そのキーが押されたときのアクションを配置します。
キーコードの調べ方は
http://shanabrian.com/web/javascript/keycode.php
上記サイトで実際にキーを押すことで対応する数字を取得できます。
ノベルゲームでよく利用すると思わえるキーコードを書いておきます。
32:space 13:Enter 17:Ctrl
<マウス操作>
right:右クリック
center:センターボタンをクリック
wheel_up:マウスホイールを上に上げたときの動作
wheel_down:マウスホイールを下に下げたときの動作
<ジェスチャー>
スマホやタブレット限定です。フリック操作などに対応して、システムを呼び出すことができます。
swipe_up_1 は例えば、画面の上方向にフリックした時の動作を指定できます。
この _1 の数字は指の数をしていできます。
なので、1本でのスワイプと2本でのスワイプの動作を分けたい場合にはそれぞれ
swipe_up_1 とswipe_up_2 を分けて定義すれば良いということです。
holdは 画面を一定時間タッチし続けたときに発動します。
色々設定できる!(雑)
キーボード操作ではデフォルトで下記が設定されています。
//キーボード操作
"key" : {
"32" : "hidemessage", //Space
"13" : "next", // Enter
"91" : "skip", //Command(Mac)
"17" : "skip", //Ctrl (Windows)
"67":function(){ // c ボタン
//config呼び出し例 コメント化
/*
if (TYRANO.kag.tmp.sleep_game != null) {
return false;
}
TYRANO.kag.ftag.startTag("sleepgame", {storage:"config.ks"});
*/
}
},
・Spaceにメッセージウインドウ消去
・Enterに次の文章へ進む(左クリックの動作)
・Command(Mac)とCtrl (Windows)にスキップモードへの切り替え
が設定されています。
※Cキーには例としてコードが記述されていますが、コメントアウトしている為、実際には動かないようになっています。
キーボード操作の追加
それでは、SキーとLキーでセーブとロードを追加してみましょう。
//キーボード操作
"key" : {
"83" : "save", //Sキー
"76" : "load", // Lキー
"32" : "hidemessage", //Space
"13" : "next", // Enter
"91" : "skip", //Command(Mac)
"17" : "skip", //Ctrl (Windows)
"67":function(){ // c ボタン
//config呼び出し例 コメント化
/*
if (TYRANO.kag.tmp.sleep_game != null) {
return false;
}
TYRANO.kag.ftag.startTag("sleepgame", {storage:"config.ks"});
*/
}
},
こんな感じになります。
"83"とか"76"というのがそれぞれSキーとLキーのキーコードと呼ばれるものとなります。
キーコードは下記のページに一覧が載っているのでそれを参考にしています。
簡単ですね。
ここでカスタマイズした内容はreadmeなどに記述してユーザーに分かるようにしておきましょう。
えっ?readmeってなにかって?そんな場合はこの記事がおすすめです!
他にもCキーにサンプルとしてsleepgameを使用した場合のカスタマイズ方法が記載されているので、もっと色々と弄りたい方は色々できます。(雑)
タッチパッド操作
//ジェスチャー
"gesture" : {
"swipe_up_1" : {
"action" : "backlog"
},
"swipe_left_1" : {
"action" : "auto"
},
"swipe_right_1" : {
"action" : "menu"
},
"swipe_down_1" : {
"action" : "load"
},
"hold" : {
"action" : "skip",
}
}
・上スワイプでバックログ
・左スワイプでオートモード
・右スワイプでメニュー画面
・下スワイプでロード画面
・ホールド(長押し)でスキップモード
がデフォルトで設定されています。
さて、前述にて注意すべき点と書きましたが、勘のいい方ならもうピンと来ているかもしれません。
例えばゲームデザイン上、セーブやロードをさせたくない場合があります。
その場合はstop_keyconfigタグを使用すればここで設定しているものは動作しませんが、ゲームそのものに最初からメニュー画面呼び出しを考慮していない場合に、KeyConfig.jsの設定のみ生きていてユーザーが意図としないタッチパッド操作でメニュー画面を開いてしまった!なんて事が起こりえます。
勿論、各種メニューボタンなど視覚上からは削除しているけど、スワイプしてみたらセーブさせたくない箇所でもメニュー画面が開けてしまったって場合もあるでしょう。
必要に応じてstop_keyconfigタグを使用するか、KeyConfig.jsからタッチパッド操作でメニューやロード画面を呼び出せないようにしましょう。
//ジェスチャー
"gesture" : {
"swipe_up_1" : {
"action" : "backlog"
},
"swipe_left_1" : {
"action" : "auto"
},
"hold" : {
"action" : "skip",
}
}
上記はスワイプ操作でメニュー画面とロード画面を消したものです。
マウス操作
//マウス操作
"mouse" : {
"right" : "hidemessage", //右クリックの動作
"center": "menu", //センターボタンをクリック
"wheel_up" : "backlog", // ホイールをアップした時の動作
"wheel_down" : "next" //ホイールをダウンした時の動作
},
記述としてはタッチパッド操作よりも前にあるのですが、メニューボタンの呼び出し関係の説明を先にしたかったのでこの順番になっています。
ここにもメニュー画面を呼び出すボタンがセンターボタン(マウス中央のスクロールボタン)に設定されています。
ゲームデザイン上、メニュー画面を無効にしたい場合は"center"から始まる行を削除しておきましょう。
今よりユーザーが快適にプレイできる環境へ
Config.tjsやKeyConfig.jsを見直すことによって、今よりユーザーが快適にプレイできる環境を作れるかもしれません。
Config.tjsの最適化に関しては塵も積もれば山となる的な所もあるのですが、私がプレイしている中でも稀に物凄く重たい作品があるので、もしかしたらこの辺りの数値が適切ではないのかもしれません。
冒頭にも述べましたが、これらはシステム面を弄ることになります。場合によっては今まで動いていたものが動かなくなることもありますので、設定を変更した際は必ずテストプレイをしてください。
テストプレイに関しては下記の記事も書いているので参考にしてみてくださいね!