SKYNovel 開発者向け情報

SKYNovel Information for developers

入門編

AIRNovelからの変更点

AIRNovelからの変更点をざっくり説明します。

  • 組み込み変数名が変わりました。
    旧)save:const.an.scriptFn
    新)save:const.sn.scriptFn
  • 定数が変数になったモノも。
    例)const.an.eventArg → sn.eventArg

中級テクニック

変数・定数の可視化機能

デベロッパーツールから変数や定数を確認できる機能です。

 ブラウザ版では、デベロッパーツール(ChromeやSafariの機能)を開いて【Application】-【Local Storage】から、システム変数(sys:)などの内容が見えます。
※直接値の変更・クリアができます。jsonで記入して下さい。
※暗号化ON/OFFも予定しています。
 またプロジェクトファイル(prj.json)の【debug】-【variable】を true にすると、 全ての変数が可視化されます。(Session Storageのほうに表示される)
※こちらは値の変更をサポートしていません。[s][l]などの停止時に出力するだけです。
※暗号化ON/OFFも予定しています。

組み込み変数・定数(save:)

SKYNovelが値を設定している変数や定数です。起動直後から使えます。

const.sn.〜、sn.〜という名前はSKYNovelが使いますので、皆さんは新規に作成しないで下さい。
以下の表にあるモノを使うのは全然OKです!

constでない変数は、設定するとその値がシステムに反映されます。
例えば「&sn.auto.enabled=true」は自動読みすすみモードを有効にします。

変数名初期値値域・型コメント
save:const.sn.mesLayer""Stringデフォルト文字レイヤ。レイヤ指定を省略した時はこの値が使われる。[current]で変更できる
save:sn.doRecLogfalseBooleanテキストを履歴に記録するか
save:const.sn.sLog""String履歴テキスト
save:const.sn.loopPlaying"{}"jsonループ中のサウンドバッファ
save:const.sn.scriptFn""スクリプト名最後に[record_place]したスクリプト名
save:const.sn.scriptIdx0Integer最後に[record_place]したスクリプトインデックス(行番号ではなく内部トークン単位)
save:const.sn.layer.(文字レイヤ名).enabledtrueBoolean文字レイヤのenabled値

組み込み変数・定数(sys:)

SKYNovelが値を設定している変数や定数です。起動直後から使えます。

const.sn.〜、sn.〜という名前はSKYNovelが使いますので、皆さんは新規に作成しないで下さい。
以下の表にあるモノを使うのは全然OKです!

constでない変数は、設定するとその値がシステムに反映されます。
例えば「&sn.auto.enabled=true」は自動読みすすみモードを有効にします。

変数名初期値値域・型コメント
sys:TextLayer.Back.Alpha10.0〜1.0バック不透明度。テキストウインドウの背景の濃度。0.0で透明、1.0で不透明。
sys:const.sn.nativeWindow.x0画面左上を(0, 0)とする座標アプリウインドウの座標。[window]で変更できる
sys:const.sn.nativeWindow.y0
sys:const.sn.sound.BGM.volume10.0〜1.0BGMの基準音量(buf="BGM"の効果音)
[volume]で変更できる
sys:const.sn.sound.SE.volume効果音の基準音量(buf="SE"の効果音)
[volume]で変更できる
sys:const.sn.sound.SYS.volumeシステムの基準音量(buf="SYS"の効果音)
[volume]で変更できる
sys:const.sn.sound.【buf】.volumeシステムの基準音量(buf="【buf】"の効果音)
[volume]で変更できる
任意のbuf属性を指定した[playse buf=【buf】] 実行で自動で生まれる変数
sys:sn.auto.msecLineWait500Integer未読テキストの改行待ち時間(ミリ秒)
※ここでの改行とは[l]の事
sys:sn.auto.msecLineWait_Kidoku500Integer既読テキストの改行待ち時間(ミリ秒)
※ここでの改行とは[l]の事
sys:sn.auto.msecPageWait3500Integer未読テキストの改ページ待ち時間(ミリ秒)
※ここでの改ページとは[p]の事
sys:sn.auto.msecPageWait_Kidoku3500Integer既読テキストの改ページ待ち時間(ミリ秒)
※ここでの改ページとは[p]の事
sys:sn.skip.mode"s"Stringスキップモード。
sn.skip.enabled = trueの際、改行待ちや改ページ待ちをスキップするかどうかの動作を指定する。
"l" …… 改行待ち=する、改ページ待ち=する
"p" …… 改行待ち=しない、改ページ待ち=する
"s" …… 改行待ち=しない、改ページ待ち=しない
(初期値="s")
sys:sn.tagCh.canskiptrueBooleanテキストをクリックなどでスキップ可能か
sys:sn.tagCh.doWaittrueBoolean未読テキストにウェイトを掛けるか
sys:sn.tagCh.doWait_KidokutrueBoolean既読テキストにウェイトを掛けるか
sys:sn.tagCh.msecWait10Integer未読テキスト待ち時間(ミリ秒)
sys:sn.tagCh.msecWait_Kidoku10Integer既読テキスト待ち時間(ミリ秒)

組み込み変数・定数(tmp:)

SKYNovelが値を設定している変数や定数です。起動直後から使えます。

const.sn.〜、sn.〜という名前はSKYNovelが使いますので、皆さんは新規に作成しないで下さい。
以下の表にあるモノを使うのは全然OKです!

constでない変数は、設定するとその値がシステムに反映されます。
例えば「&sn.auto.enabled=true」は自動読みすすみモードを有効にします。

変数名初期値値域・型コメント
const.Date.getDateStr取得の瞬間の日時"2019/02/10 15:47"形式変数参照時の日時を返す
const.Date.getTimeミリ秒IntegerJavaScriptの(new Date).getTime()
const.Stage.mouseX0Integerマウス水平座標
const.Stage.mouseY0Integerマウス垂直座標
const.sn.Math.PI3.141592653589793Number円周率
const.sn.bookmark.json"[]"ArraySKYNovel内部によるsave:の管理用
const.sn.config.(略)テンプレートの_config.snの作業用
const.sn.displayStatefalseBooleanウインドウ・フルスクリーン状態。trueならフルスクリーン
const.sn.isAppfalseBooleanランタイム環境のタイプ(仕様策定中)
const.sn.isDebuggertrueBooleanブラウザ実行、それもVSCode・npmによる「npm: webタスク」上での実行か
const.sn.isFirstBootfalseBooleanゲームがインストールされてから、初めての起動か(起動されるまでデータが空だったか)
const.sn.isKidokutrueBooleanこの変数を参照した位置は既読か。参照「後」必ず既読になる点に注意
const.sn.key.alternatefalseBooleanALTキー(MacならOptionキー)が押されているか
const.sn.key.backfalseBooleanback 〃
const.sn.key.commandfalseBooleancommand 〃
const.sn.key.controlfalseBooleancontrol 〃
const.sn.key.endfalseBooleanend 〃
const.sn.key.escapefalseBooleanescape 〃
const.sn.last_page_text""Stringそのページの履歴テキスト(《》文法もそのまま)
const.sn.lay.(レイヤ名)trueBooleanレイヤが[add_lay]され存在するか
const.sn.lay.(レイヤ名).(foreかback).alpha0.0〜1.0Numberレイヤの不透明度
const.sn.lay.(レイヤ名).(foreかback).height1Integerレイヤの縦幅。ただし文字レイヤの場合は1、画像レイヤの場合、画像読込後でないと0
const.sn.lay.(レイヤ名).(foreかback).visibletrueBooleanレイヤが表示されているか。visible属性の値を返す
const.sn.lay.(レイヤ名).(foreかback).width1Integerレイヤの横幅。ただし文字レイヤの場合は1、画像レイヤの場合、画像読込後でないと0
const.sn.needClick2Play環境によるBooleanブラウザ実行で、クリックされるまで音声再生が差し止められている状態か。なにかクリックされれば falseになる
const.sn.platform.os.family"Windows", "OS X", "Ubuntu", "Android", "iOS"などStringプラットフォーム名。詳細はPlatform.js の【platform.os.family】の項を参照
const.sn.sLog"[{"txt":""}]"左記json_log.snが_log.htmに渡す用、1ページずつ{}に分割してjson化して返す
const.sn.sound.codecs.aac環境によるBooleanゲーム実行環境がこのコーデックをサポートしているか
const.sn.sound.codecs.flac
const.sn.sound.codecs.m4a
const.sn.sound.codecs.mp3
const.sn.sound.codecs.ogg
const.sn.sound.codecs.wav
const.sn.sound.codecs.webm
const.sn.vctCallStk.length0Integerコールスタックの深さ([call]するたびに増)
sn.auto.enabledfalseBoolean自動読みすすみモードかどうか
sn.eventArg""場合によるボタン等のイベント発生時、そのボタンタグのarg属性でで指定された値。使い道はスクリプトで自由に決めていい
sn.eventLabel""場合によるボタン等のイベント発生時、そのボタンタグのlabel属性でで指定された値。使い道はスクリプトで自由に決めていい
sn.skip.allfalseBooleanfalse(初期値)なら既読のみをスキップ
sn.skip.enabledfalseBoolean次の選択肢(/未読)まで進む が有効か
sn.tagL.enabledtrueBoolean頁末まで一気に読み進むか(l無視)