※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。




YU-RIS使用のTIPS 初級編

 YU-RIS関係のスクリプトのテクニック・補足説明・注意点・設定などの情報。なんかTIPSと言えない内容になってしまったかもしれません。
 ここだけ知っていれば、とりあえず作れるであろう……と思われる情報集です。




YU-RISライセンスについて



YU-RISライセンスの内容

  フリーの場合、原則サポート無しという扱いになっております。どうしても依頼したい場合、有料になる場合もあるのでご了承下さい。

  YU-RISのダウンロードした圧縮ファイルの中に、最新のYU-RIS/ERIS ライセンスファイルがあるので、必ず一読しておいて下さい。
  もし添付されていなければ、下記のリンクにライセン内容があるので、必ず一読しておいて下さい。
YU-RIS/ERIS ライセンス


YU-RIS製作者様に依頼したら機能を入れてもらえるか?

 これはYU-RIS製作者様に問い合わせるしかないでしょう。
 恐らくですが、YU-RISスクリプトの機能はほとんど出揃っている状態ではないかと思います。フリーでの機能追加はもう無いかもしれません。
 ただし、世間に対して有用と思われる機能の提案なら、やってみる価値はあるかもしれません。ただ、どう有用なのかは必ず説明して下さい。
 それにより、YU-RIS製作者様が有用と判断すれば組み込んでもらえる可能性はありますし、だめな場合も当然ありますので、その辺りはご了承下さい。
 EXEファイル内はバグを発生させやすいため、「できれば触りたくない」という場所とも言えます。その辺りは認識しておいて下さい。
 逆に、「この機能は有用と思えるので、提案したいと思います」ならば、やって損は無いと思います。




YU-RISエンジンとYU-RISスクリプト・ERIS



YU-RISスクリプトの命令数について。

 マニュアルを見てもらえれば分かりますが、YU-RISスクリプト命令は「コマンド」と「キーワード」の組み合わせで実行する様にできています。
 よって見かけ上命令数が少ない様に見えますが、他言語命令に換算した場合、実際は予想を上回る命令数になります。


YU-RISには低水準処理(YU-RISスクリプト)と高水準処理(ERIS)という概念が当てはまります。

 OSやドライバーの中によく見られますが、基本処理しか行わない小さな機能命令(=低水準処理)をたくさん作り、それを内部で組み合わせて高度な処理(=高水準処理)をする命令を作るという手法があります。
 この場合、前者は数が多く扱いが高度で難しいけど、組み合わせ方によっては一般的ではない特殊な処理が可能になります。また、後者は高度処理のため数が少なく、扱いがとても楽な代償として小回りもできず、ほぼ決まった機能しか使えない、という傾向にあります。
 つまり、YU-RISスクリプトは低水準処理命令にあたり、ERISは高水準処理命令にあたると言えるでしょう。


対応エディターについて(添付テキストファイルより)

■YU-RIS / ERISのスクリプトジャンプ機能で指定行番号へジャンプできるエディタ一覧
 ※名前順(アルファベット&50音順)
 ・apsaly (作者:Masahiko Watanabe 様)
 ・EmEditor (作者:株式会社エムソフト 様)
 ・Ginnie (作者:KNT 様)
 ・GinnieFE (作者:KNT 様)
 ・Jcref (作者:KNT 様)
 ・JmEditor (作者:三浦 淳 様)
 ・K2 Editor (作者:K2Software 様)
 ・MIFES (作者:メガソフト株式会社 様)
 ・oseditor2 (作者:おぬま ゆういち 様)
 ・otbedit (作者:小川 淳 様)
 ・QX Editor (作者:Kenji Arai 様)
 ・TepaEditor (作者:Hajime Kobayashi 様)
 ・TeraPad (作者:寺尾 進 様)
 ・WHiNNY (作者:KNT 様)
 ・WZ Editor (作者:株式会社ビレッジセンター 様)
 ・サクラエディタ (作者:※オープンソース共同開発)
 ・秀丸 (作者:有限会社サイトー企画 様)

※MIFES6.0で、エディタがすでに起動してある状態で「編集」ボタンを押しても
 ファイルが正常に開かない現象を確認しています。これは、
 MIFES6.0の最新の修正パッチを当てることで正常に動作するようになります。

※この他にも対応して欲しいエディタがありましたら、一応YU-RIS製作者様に連絡してみて下さい。




YU-RISエンジンの環境設定で気をつけること



YU-RISの基本フォルダー構成について。(骨組みのみ)

 下記フォルダー構成は最低限必要なフォルダー構成です。

フォルダー構成は YU-RISのチュートリアル を見て下さい。


configフォルダー、及びここにあるprojectconfig.txtについて。

 ここは、YU-RISエンジンの構成(configuration)の設定を行う所です。
 そして、projectconfig.txtはスクリプトを記述して実行させるファイルではなく、専用命令であるSYSTEMMODEでYU-RISエンジンの起動時の状態を設定します。
 よって、ここにスクリプト命令を書いてもエラーになるだけです。スクリプトが実行される領域なら必ず「#=????????」という飛び先ラベルがありますが、このファイルには無いことからも分かります。


SYSTEMMODEはスクリプト命令として使用できません。

 SYSTEMMODE命令はスクリプト命令と全く同じ書式をしていますが、この命令はスクリプト命令という扱いではありません。
 これはYU-RISエンジンに対する環境設定を行う専用命令で、スクリプト命令として使うことはできません。


起動直後のメインウィンドウのサイズを設定する方法について。

 projectconfig.txtにあり、この中のSYSTEMMODE[SX=横サイズ SY=縦サイズ]で行います。


起動直後のメインウィンドウのウィンドウ名を設定する方法について。

 projectconfig.txtにあり、この中のSYSTEMMODE[CAPTION="(ウィンドウタイトル名)"]で行います。


SYSTEMMODE[DEBUGMODE=?]デバッグモードについて。

  • SYSTEMMODE[DEBUGMODE=1] デバッグモード
    1. エラー時のダイアログボックスに編集ボタンが付きます。
    2. 実行時、YU-RISエンジン実行用バイナリースクリプトファイルは作成されますが、YU-RIS終了と同時に削除されます。
  • SYSTEMMODE[DEBUGMODE=0] 客先配布モード
    1. エラー時のダイアログボックスに編集ボタンが付きません。
    2. ysbinフォルダーが作成され、その中に、YU-RISエンジン実行用バイナリースクリプトファイルが生成されます。


SYSTEMMODEの、SX、SY、CAPTION、DEBUGMODE以外の設定は?

 ゲームか、アプリか、スクリーンセーバーか、どういう物を作るかによって設定が変わりますが、基本は下記です。

  • SYSTEMMODE[WINDOWFRAME=1]
  • SYSTEMMODE[SCRIPTFILEEXT="txt"]

 とりあえず、下記に固定しておいて下さい。

  • SYSTEMMODE[SOUND=1]
  • SYSTEMMODE[THREAD=0]


systemフォルダー、及びここにあるysconfig.txtについて。

 ここは、YU-RISエンジンのシステムの設定ysconfig.txt・コンパイラ・客先配布用ツールなどを置く所です。
 そして、ysconfig.txtはスクリプトを記述して実行させるファイルではなく、専用命令であるPROJECTFOLDERでシナリオデータ(CG,BGM,スクリプト,セーブデータ,他)の置いてあるフォルダーの相対パスを設定します。
 つまりYU-RISエンジンに対して、起動直後にアクセスを行わせるフォルダーのパスを指定する場所です。
 よって、ここにスクリプト命令を書いてもエラーになるだけです。スクリプトが実行される領域なら必ず「#=????????」という飛び先ラベルがありますが、このファイルには無いことからも分かります。


PROJECTFOLDERはスクリプト命令として使用できません。

 PROJECTFOLDER命令はスクリプト命令と全く同じ書式をしていますが、この命令はスクリプト命令という扱いではありません。
 これはYU-RISエンジンに対して、起動直後にアクセスを行わせるフォルダー(相対パスで記述のこと)を指定するための専用命令なので、スクリプト命令として使うことはできません。




YU-RISスクリプト命令の文法で気をつけること



YU-RISスクリプトのマクロ・変数・ラベルで使用できる文字について。

 使用可能な文字は下記となっております。なお変数は、先頭にアンダーバーを付けることはできません。

  • マクロ名…アルファベット「A~Z、a~z」、アンダーバー「 _ 」、ピリオド「 . 」
  • 変数名…アルファベット「A~Z、a~z」、アンダーバー「 _ 」、ピリオド「 . 」
  • ラベル名…アルファベット「A~Z、a~z」、アンダーバー「 _ 」、ピリオド「 . 」

 自動テキスト表示で、テキスト表示文字として扱われる文字は、「全角」と「半角カタカナ」です。ただし、ダブルクォーテーション「""」で挟まれた文字列は対象外となります。予約語でない記号文字も表示されはしますが、これは仕様外なので使用しないで下さい。


YU-RISスクリプトのコマンドとキーワードと、大文字小文字の扱いについて。

 YU-RISスクリプトのコマンドとキーワードは、大文字と小文字の区別はありません。どちらでもOKですが、マニュアル通り大文字にすることをお勧めします。


変数(@や$で始まる物)の大文字小文字の扱いについて。

 大文字小文字の区別がありますので、注意して記述して下さい。
 大文字小文字を変えれば同名の物が二つできることになりますが、混乱やバグの要因になるので、大文字小文字に関係なく同名の物を二つ作るのは避けて下さい。


ラベル名(# か #= で始まる物)の大文字小文字の扱いについて。

 大文字小文字の区別があります。ジャンプ先として記述する場合は注意して記述して下さい。
 大文字小文字を変えれば同名の物が二つできることになりますが、混乱やバグの要因になるので、大文字小文字に関係なく同名の物を二つ作るのは避けて下さい。


マクロ定義名(¥で始まる名前)の大文字小文字の扱いについて。

 大文字小文字の区別があります。定義時と使用時が合致する様、気をつけて下さい。
 大文字小文字を変えれば同名の物が二つできることになりますが、混乱やバグの要因になるので、大文字小文字に関係なく同名の物を二つ作るのは避けて下さい。


YU-RISでの、コメントの書き方について。

 C言語を代表する多くの言語で採用されている、下記が使えます。
 //

 ダブルスラッシュ以降の1行のみ全てがコメント扱いとなります。

 /*  
  ----文章などどの羅列1----
  ----文章などどの羅列2----
  ----文章などどの羅列3----
 */
  上記の時、「羅列1」~「羅列3」の文章がコメントと認識します。
  つまり、/* と */ で挟まれた文全てがコメントとなります。(行の区別はありません)

  ただし、コメントのネスト(=範囲重複)
 /*
  コメント文
  /* コメント文 */
  コメント文
 */
  は認識できないので、記述しないで下さい。


{ と }で見やすくできますが、{ と }には何の機能もありません。

 ただ見易くするためだけに使用される文字で、変数有効範囲(=変数スコープ)指定などのに代表される、特殊な機能はありません。
 コンパイル時は無いものとして無視されます。(ただし、{ と }の対応はチェックしています)
 C言語他に見慣れている人は、使用するといいでしょう。


¥文字はマクロ名指定の予約語のため、フォルダー指定には/を使用して下さい。

 ¥の代りに/をパス指定文字として使うことができます。これはYU-RIS専用の決まりごとというわけでもなく、実はWindows標準の記述でもあります。(一部のWindows機能を除く)


URLの記述についての注意事項。

 「//」の記述に注意してください。そのまま書くと注釈としてみなされてしまうため、"/"+"/" などに分解して記述する必要があります。

例 "http:/"+"/yu-ris.net/"


画像ファイルは拡張子を省略することができます。

 仕様的には分かりませんが、ERIS内部の画像ファイル指定は拡張子の記述を省略している様です。画像形式が変更になると拡張子が変わりますから、それを考えると省略した方がいいのかもしれません。ただし省略した場合、フォルダー名と勘違いしない様にして下さい。


GOSUB命令のパラメータキーワードについて。

 パラメータについて、マニュアルでは下記の通りになっております。
PINT~PINT10 = 整数値 PFLT~PFLT10 = 実数値 PSTR~PSTR10 = 文字列

具体的には、
上はGOSUB命令のキーワードを示します。
下はサブルーチン内部専用のシステム変数を示します。
No1 No2 No3 No4 No5
整数 PINT
@_PINT(1)
PINT2
@_PINT(2)
PINT3
@_PINT(3)
PINT4
@_PINT(4)
PINT5
@_PINT(5)
実数 PFLT
@_PFLT(1)
PFLT2
@_PFLT(2)
PFLT3
@_PFLT(3)
PFLT4
@_PFLT(4)
PFLT5
@_PFLT(5)
文字 RSTR
$_RSTR(1)
RSTR2
$_RSTR(2)
RSTR3
$_RSTR(3)
RSTR4
$_RSTR(4)
RSTR5
$_RSTR(5)

No6 No7 No8 No9 No10
整数 PINT6
@_PINT(6)
PINT7
@_PINT(7)
PINT8
@_PINT(8)
PINT9
@_PINT(9)
PINT10
@_PINT(10)
実数 PFLT6
@_PFLT(6)
PFLT7
@_PFLT(7)
PFLT8
@_PFLT(8)
PFLT9
@_PFLT(9)
PFLT10
@_PFLT(10)
文字 RSTR6
$_RSTR(6)
RSTR7
$_RSTR(7)
RSTR8
$_RSTR(8)
RSTR9
$_RSTR(9)
RSTR10
$_RSTR(10)

 となっており、整数型・実数型・文字型のうち、どれか一つを選んで下さい。たとえ型が違っていても、同じ番号のパラメータキーワード使用は重複扱いとなるので、使用しないで下さい。
 なお、@_PINT(?)・@_PFLT(?)・$_PSTR(?)はサブルーチン内部専用のシステム変数で、上下それぞれが連絡口として対応しています。
  また、同じ番号でも別型どうしは内部的に別物なので、扱いには注意して下さい。※サブルーチルーチンコール時の設定値がサブルーチン内部に伝わらない場合、大概「パラメータキーワード」と「システム変数」どうしの型指定不一致が原因です。


RETURN命令の戻り値キーワードについて。

 パラメータについて、マニュアルでは下記の通りになっております。
RINT~RINT10 = 整数値 RFLT~RFLT10 = 実数値 RSTR~RSTR10 = 文字列

具体的には、
上はRETURN命令のキーワードを示します。
下はサブルーチンの外で使用するシステム変数を示します。
No1 No2 No3 No4 No5
整数 RINT
@_RINT(1)
RINT2
@_RINT(2)
RINT3
@_RINT(3)
RINT4
@_RINT(4)
RINT5
@_RINT(5)
実数 RFLT
@_RFLT(1)
RFLT2
@_RFLT(2)
RFLT3
@_RFLT(3)
RFLT4
@_RFLT(4)
RFLT5
@_RFLT(5)
文字 RSTR
$_RSTR(1)
RSTR2
$_RSTR(2)
RSTR3
$_RSTR(3)
RSTR4
$_RSTR(4)
RSTR5
$_RSTR(5)

No6 No7 No8 No9 No10
整数 RINT6
@_RINT(6)
RINT7
@_RINT(7)
RINT8
@_RINT(8)
RINT9
@_RINT(9)
RINT10
@_RINT(10)
実数 RFLT6
@_RFLT(6)
RFLT7
@_RFLT(7)
RFLT8
@_RFLT(8)
RFLT9
@_RFLT(9)
RFLT10
@_RFLT(10)
文字 RSTR6
$_RSTR(6)
RSTR7
$_RSTR(7)
RSTR8
$_RSTR(8)
RSTR9
$_RSTR(9)
RSTR10
$_RSTR(10)
 となっており、整数型・実数型・文字型のうち、どれか一つを選んで下さい。たとえ型が違っていても、同じ番号のパラメータキーワード使用は重複扱いとなるので、使用しないで下さい。
 なお、@_RINT(?)・@_RFLT(?)・$_RSTR(?)はサブルーチンの結果(つまり、RINT?・RFLT?・RSTR?にセットされた値)を返すシステム変数で、上下それぞれが連絡口として対応しています。
  また、同じ番号でも別型どうしは内部的に別物なので、扱いには注意して下さい。※サブルーチルーチンの結果値を返しているにも関わらず、サブルーチン外部で結果が受け取れない場合、大概「パラメータキーワード」と「システム変数」どうしの型指定不一致が原因です。
また、「 RETURN命令の、システム変数による戻り値について要注意 」の項目も見ておいて下さい。




YU-RISスクリプト命令の使用で気をつけること



一コマンド内、各キーワードの組み合わせには注意して下さい。

 前記の通り、YU-RISスクリプト命令は「コマンド」と「キーワード」の組み合わせで実行される様にできています。そのため命令によっては、ありえない組み合わせも指定できてしまいます。
 しかし所詮ありえない組み合わせは実行不可能なわけで、エラーが出ればバグ発見もできますが、場合によってはエラーとならずに予定していない動作をしてしまう可能性もあります。(もしハングすれば、YU-RIS製作者様に報告した方がよいと思われます)
 その場合、現象によってはバグ発見しにくい可能性があります。よって、キーワードの組み合わせには注意して下さい。


見た目は動作しそうなキーワードの組み合わせでも、必ず動作するとは限りません。

 前記した通りコマンドとキーワードの組み合わせ数を、他言語の命令数に換算すれば人知を超えた数量になります。(ただしありえない組み合わせも含めたらですが)
 当然ながら、動かない(=機能が入っていない)ということもあるのでご了承下さい。


キーワードの中には、レイヤー生成時に必ず設定しなければならない場合があります。

 Z(レイヤー配置優先度)やIDのキーワードが代表例でしょうか。
 もし指定し忘れると、大概コンパイル時かデバッグ実行時にエラーが出ます。


キーワードの中には、レイヤー生成時に省略するとデフォルト値が入る物があります。

 A(α値)などデフォルト値で問題ないものは、デフォルト値を設定するキーワードもあります。
 まれに、これが原因でバグを誘発することもあるので、意識しておいて下さい。


キーワードは原則として、IDの値ごとに個別の「命令実行時に設定された前回の値」を保持しています。(一部を除く)

 原則として省略されたキーワードは、IDの値ごとに個別の前回設定値を持っています。よって、省略時はそれを使用します。
 ただし、中には指定しないとエラーになるものがあります。指定してもらわないと、内部の処理方法や対象物が特定できないキーワードが該当します。
  どういうものがあるか、現時点では確認必要。


システム変数は通常の変数とは違います

 マニュアルを見たら伝わると思いますが、システム変数は通常の変数とは違います。これはスクリプトの実行とは別の要因(マウスとか、キー操作とか、時間とか)により、勝手に変わる変数です。ある意味、スクリプトプログラマーの蚊帳の外で変化する変数と言えます。
 よって当然ですが、スクリプトプログラマーが変えない限りその値を保持し続ける変数とは別種の変数なので、扱いには十分注意して下さい。下手をすると、バグの要因となります。
 この様な変数を専門用語(C言語の派生言語限定かも?)では、volatile(ヴォラタイル)変数と呼びます。


RETURN使用時の要注意(マニュアルより抜粋)

 YU-RIS(β4現在)の少し特殊な仕様なのですが、RETURN 命令がスクリプト上の記述されているとそこを通る通らないに関わらず、その時点でローカル変数は解放され宣言されていない状態と同じになります。
たとえば、以下の場合、コンパイルエラーとなります。
 #TEST
   INT[@A=1]
   IF[@A==5]
     RETURN[] //←ここで、ローカル変数@Aは非宣言状態となる
    IFEND[]
    @A+=1 //←結果的にここでコンパイルエラーとなる
 RETURN[]

これを回避する場合、下のように、RETURN 命令1個だけで済むように
記述してください。
 #TEST
   INT[@A=1]
   IF[@A==5]
     GO[#=TEST2]
   IFEND[]
   @A+=1
 #TEST2
 RETURN[]

上のようにラベルを作りたくない場合、こういう書き方もあります。
 #TEST
   IF[1]
     INT[@A=1]
     IF[@A==5]
       IFBREAK[LV=2]
     IFEND[]
     @A+=1
   IFEND[]
 RETURN[]

1つのルーチンに対し、RETURN 1個で済むのならば
他のどんな書き方でも問題ないと思います。


RETURN命令の、システム変数による戻り値について要注意

 戻り値のシステム変数は新しくRETURNが実行される(=GOSUBUが実行される)と、戻り値がセットされている・されていないに関係なく、全てのシステム変数が一旦初期化されます。
 つまり、あくまでもこれは連絡口であり本当の意味での変数ではないので、値の長期保存はされません。戻り値システム変数は変数扱いとなってはいますが、その値を長期使用したい場合、必ず別の変数に入れてそれを使用して下さい。


直接テキスト記述による表示の時は、表示後自動的に操作入力待ちになるので、その時WAITが入ります。

 直接テキスト記述による表示に対しては、画面更新によるWAITは不要です。画面更新は自動的にされます。
  ただしこれは、テキスト出力モードが自動の場合に限ります。


おまじないとして、LOOP処理の中に必ずWAIT命令を入れて下さい。

 YU-RISの画面更新はWAIT命令やクリック待ちの、「待ち状態」の時に行われています。

 LOOP[SET=60]
   ・
   ・
   ・
 WAIT[FRAME=1] //1フレーム分ウェイト。タスクを1回休憩させる(画面を描画させる)
 LOOPEND[]

 よってLOOP処理は上記例の様に、WAIT命令をおまじないとして必ず入れて下さい。さもないと、タスクルーチンと呼ばれるプログラムが動かないどころか、画面更新さえも行われなくなります。




YU-RISにあるレイヤー機能、及びその扱いについて



YU-RISの画像レイヤーの正体について。

 マニュアルにある画像レイヤーとは、メモリー上に領域確保してそこに読み込まれた画像データのまとまり(=パケット)を示します。IDキーワードにより名前を付けて、レイヤーID名として管理しています。
 さらに、CG命令系で作成された画像レイヤー(画像データやYU-RIS専用動画データ)には、一部のツールを除くペイントツール(フォトショップ・SAI・ペイントショッププロ・他)に見られる、レイヤー機能と同様の機能を持ち合わせています。


YU-RISのサウンドレイヤーの正体について。

 マニュアルにあるサウンドレイヤーとは、メモリー上に領域確保してそこに読み込まれた音声データのまとまり(=パケット)を示します。IDキーワードにより名前を付けて、レイヤーID名として管理しています。
 画像レイヤーとは違い、サウンド系はレイヤーというよりも、中身が存在するメモリー領域というイメージの方が近いでしょう。




YU-RIS使用のQ&A



β4 YU-RIS使用のQ&Aについて

 β4 YU-RIS使用のQ&Aのページを見て下さい。









大幅変更・加筆履歴コメント

名前:
コメント: