フワフワソが「ソラとピヨちゃん」や「宮本県」を作るブログ(フワフワソ・ラウンジnew!)

ラノベとテクノを愛するふわふわがノベルゲームを作っています。あと日常のことやイベントの告知なども。スクリプト関連の記事は自分用の備忘録です

Nscripterとairnovelの違いとは?AIRNOVEL技術を高速習得ーその6

記事 第1回~5回

NscripterからAIRNOVELに移植する技術を高速で習得する - フワフワソ・ラウンジ(NEW!)

NscripterからAIRNOVELに移植する技術を高速で習得するーその2 - フワフワソ・ラウンジ(NEW!)

*勉強会の資料も紹介*NscripterからAIRNOVELに移植を高速習得ーその3 - フワフワソ・ラウンジ(NEW!)

クラウドファンディング御礼と、AIRNOVEL技術を高速習得ーその4 - フワフワソ・ラウンジ(NEW!)

 AIRNOVEL技術を高速習得ーその5 - フワフワソ・ラウンジ(NEW!)

 

●自分用宿題

さてこれからアイテム用のボタンを作るぞーっと意気込んで、常駐ボタンを作るために読んでおきたい自分用の宿題をまとめました。

 

ボタンは選択に関わるので選択の基本

AIRNovelをさわろう! 選択肢を扱う

ボタンについて

AIRNovelをさわろう! ボタンを使用する

AIRNovelをさわろう! コントロールボタンを作る

AIRNovelをさわろう! ボタンいろいろ

AIRNovelをさわろう! 複数の文字レイヤを扱う

選択には変数が必須なので、変数関連

AIRNovelをさわろう! 変数操作

AIRNovelをさわろう! 変数に代入、変数参照

AIRNovelをさわろう! 変数の値を確認する

AIRNovelをさわろう! &計算

 

だいたいこのへんを勉強すればボタンが作れるようになる気がしています。(まだ勉強してない)

さてその前に。

 

●オリジナルの素材を使ってみる

前回の記事でフォルダの構造とかが分かったので、

試しに自分の素材をAIRNOVELに放り込んで、サンプルゲームのスクリプトで動かしてみることにしました。

とりあえず何も考えずにタイトル画面の画像を入れ替えてみました。

位置が全然合ってないですが、ちゃんと表示されました。

f:id:fuwafuwaso:20151115141322p:plain

その流れで、anbookesの表記も直しました。

サンプルゲームの「空を飛べたら」の右上の「編集」のところクリックして、タイトルとか著作者とか書き換えました。

まるで完成したみたいですね!でもこの時点では中身はまだ「空を飛べたら」です。

f:id:fuwafuwaso:20151115141412p:plain

↓ちなみにアイコンの画像は、このicon.jpgを入れ替えてピヨちゃんにしました。

 画像のサイズは適当でしたが、anbooksが勝手に縮小してくれました。

f:id:fuwafuwaso:20151115141424p:plain

さて、BGMもオリジナルのファイルに入れ替えてみたのですが、問題発生。

音が鳴らないのです!

Nスクoggファイルだったので、そのoggファイルをairnovelのフォルダに入れて、main.anの     ; *** タイトル開始共通処理 *** という箇所のBGMのファイル名を書き換えてみたのですが・・。

鳴りません! 動作ログでエラーも出てます。

おかしい・・airnovelはoggに対応したはずなのに・・。

などと思いつつ公式サイトを見てると、こんなのを発見

電子演劇部 ANOggo:ogg/oggo再生とoggo生成ツール

ウインドウに放り込むだけのお手軽ツールなので、やってみました。

これでできたoggoファイルを使ってみると、ちゃんと音が出ました。

 

公式サイトにogg対応と書いてるのになぜなのか?

質問してみました。

 

フワフワソ

夕街さんたびたびすみません・・oggファイルが鳴らないのですが、type error:error #1034 というのが出ます。年初のブログを見ると、ひょっとしてoggo に変換しないとダメなんでしょうか? ANoggoで変換したら鳴りました。oggのままはまだ非対応だったのでしょうか?

夕街さん
oggそのものは再生できるのですが、一部エラーになる物があるようです……。数分の長さのoggだと再生開始までに時間が掛かるようなので、内部的にoggoという中間形式を採用しています。(だからビルドで自動生成しているわけです)
oggをフォルダに置き、ANBooksでビルド環境を整えてビルドすると、oggo に自動変換するようになってます。それまでは手動変換か、後々暗号化不要ならm4aというファイル形式もオススメです。

ANOggoで「【Only Play】oggo ファイルを生成せず、ogg / oggo ファイルを再生するだけ」というのがあります。つまり技術的にoggを再生できているわけです。

フワフワソ

なるほど・・うちのがその一部エラーになるやつに引っかかってたんですね。

 

というわけで、oggには普通に対応してます。(内部的には、ビルドのときに自動でoggoに変換される)

しかし、ビルド前のテストプレイのときoggでエラー出る人は、ANOggoでoggoに変換したファイルを使えばいい。

というのが分かりました。

(ちなみにANOggoで変換すると、変換元の「~.ogg」と同一フォルダに「~.oggo」ファイルができます。AIRNOVELは拡張子でファイル名を区別しておらず、しかも同じファイル名のファイルが2個あるとエラーが出るので、「~.ogg」と「~.oggo」を同一ファイルとみなしてエラーが出ます。変換前の「~.ogg」は消すか、ゲームフォルダの外に移動させましょう)

 

余談ですが、なぜoggか?というと、mp3は権利関係のめんどくささがあるらしく、Nスクではほとんどoggしかサポートしていない状態でした。なので、Nスクからの移植をしようとすると、手持ちの素材がoggになってるのです。

新規でゲーム作ろうという人は、評判とかを調べて、お好みの形式の音楽ファイルを使えばいいと思います。

 

●レイヤーの重なり順を調べる

さて次は、立ち絵を表示したり、いよいよ常駐ボタンを作る作業に入ろうかと思いました。

過去記事で触れたように、絵やボタンはlayerに表示されます。

layerの重なり順が絵の重なり順になるので、どのlayerにどの絵を表示させるか把握しないといけません。

layerの重なり順は、add_layでlayerを定義した順番になります。

 

そこで、サンプルゲームのスクリプトを調べて、どんな名前のlayerをどんな順番で定義してるのか調べようとしました。

まずはmain.anを調べます。main.anは一番最初に参照されるスクリプトファイルだからです。なぜ一番最初なのかというと、

↓ここで設定されてるからだと思います。ウインドウ右上の「編集」を押したときに出てくる画面

f:id:fuwafuwaso:20151116120243p:plain

 (ウインドウの大きさなんかもここでいじれるみたいですね・・)

 

というわけで、main.anを見てみました。

layerを定義する命令の「add_lay」を探します。

f:id:fuwafuwaso:20151116120343p:plain

 まず1番目の丸つけたところ。ここで背景(base)、立ち絵3枚(0,1,2)、文字表示用(mes)、の5枚を定義してます。ここは分かりやすい。

そして2番目の丸の所。ここは後から分かったのですが、プラグイン(swf)の中で定義してます。swfファイルは中をのぞく技術力がないので、ノータッチです。

3番目の丸の所。ここはマクロを定義してるsub.anに飛んでます。sub.anの中でいくつかのlayerを定義して、sub.anを読み終えると、最後にreturnで戻ってきます。

続いて_yesno.anに飛んで、ここでもまたlayerを定義してます。

もうわけが分からなくなりつつありますが、結論から言うと、

 

①システムをカスタマイズするつもりがない人は、最初の丸の所だけいじればOK! です。→OKじゃなかった!追記あり

layerを増やしたければ、↓こんなふうにすればOKです。

 [add_lay layer=base class=grp]
    [add_lay layer=0 class=grp]
    [add_lay layer=1 class=grp]
    [add_lay layer=2 class=grp]

    [add_lay layer=3 class=grp]
    [add_lay layer=4 class=grp]
    [add_lay layer=mes class=txt]

(layer3,4を追加した)

 add_layの定義順でlayerの重なり順が決まるわけですから、システムのlayerはこの後に定義してるので、システム関連の画像(コンフィグ画面とかテキストウインドウとかセーブとか栞のボタンとか)は、立ち絵の上に来るようになっています。

(その理屈から言うと、シナリオのスクリプトsss_000.anは順番的に一番最後に読み込むので、シナリオの中でadd_layをやっちゃうと、システムのさらに上にlayerができちゃっておかしなことになりそう、とか思ったりしますが、検証してないのでよく分かりません。add_layはmain.anのこの場所でやるのが安全っぽいです)

追記

sub.anのところにこんな記述が!
; 表示されるレイヤ(セーブ・スナップショットなどの対象)
[let name="dsp_lays_grp" text="base,0,1,2"]    ; 画像

ここに増やしたレイヤー足さないといけないようですね!

[let name="dsp_lays_grp" text="base,0,1,2,3,4"]    ; 画像

って感じにするのかな?

 

②立ち絵のlayerが3枚あれば十分だという人は、どこもいじらなくてOK! 

(背景にlayer名 base を使い、立ち絵にlayer名 0,1,2 を使うというのを覚えてれば十分です)

③システムをカスタマイズしたいという人は?

 スクリプトを全部調べてlayerの順番を把握するのは大変ですね。
 そこでこれ!

f:id:fuwafuwaso:20151113050050p:plain

「右クリックで詳細モード」です。
前の記事で、右クリすると重いので、左クリック推奨!と何度も書いた部分ですが、ここで右クリです。
そして、開いた画面から、「レイヤ構造3D」っていうところを押します
↓すると・・!

f:id:fuwafuwaso:20151117030708p:plain

うおおお!なんじゃこりゃ!かっこいい。
マウスでぐりぐりっと回転出来ます。レイヤ名と、配置してある画像が3Dになって、重なり順が一目瞭然。
↓「レイヤ構造詳細」ってところを押すと、リストでも表示されます。
 レイヤの名前と種類がすぐに分かります。

f:id:fuwafuwaso:20151116124641p:plain

また、変数をチェック出来る項目もあるので、ゲームの進行状況で、「今この変数の中身どうなってるんだー」と気になったときには、これで調べればバッチリみたいですね。(まだ調べてないのでバッチリ!と断言はできませんが・・勉強しながら書いていくスタイルの記事なので、すべてがそんな視点なのをご了承ください)
 

 ちなみにsub.anのほうですが、add_layでいくつかのlayerを定義しているのですが、 add_layするより先にlay layerしてるlayerがあります。

フワフワソは非常に混乱しました。「layerはadd_layで定義してやらないと使えないはずなのに・・なぜ定義より先に、使う命令(lay layer)が来てるんだ?」「ひょっとしてもっと前のどこかでadd_layしてたのか?」

しかしいくら探しても見つかりません・・。

もうどうしようもないので夕街さんに助けを求めました。

 

フワフワソ

mes_sysmen と_syslay.mesは、add_layよりlay layerが先になってるように見えるんですが、順番は関係ないんでしょうか? ぼくの中ではスクリプトは書いた順番に機能するという思いがありまし て、lay layerの前にadd_layが見当たらなかったので、ひょっとしてもっと前にどこかで定義してるのではと思ったのです

夕街さん

必ず先に定義しているはずです〜

フワフワソ

たとえばmes_sysmenuなんですが、; マクロ システムメニュー表示切り替え でadd_layしてますが、直前にlay layerしてます。また、もっと前の ; マクロ システムメニュー描画処理 で、clear_layしてます。これはどう理解すればいいんでしょうか?

夕街さん
マクロを「定義」しても、まだ誰も「使って」ないからです

フワフワソ

なるほど!よくわかりました><;遅くにありがとうございました~~!

 

心で理解出来ました。

sub.anはマクロの「定義」なので、実行節のほうではまだ未使用、だから順番が逆になる書き方してもOKだったようですね。

なぜ夕街さんがそういう書き方したのかまでは理解が及びませんが・・。

自分でやるときには、add_layを先にやることにしようと思います。

自分で作ったアイテムアイコンの置き場所も目処がついてきました。sub.anのどこかに、マクロとして書いて置いて、必要に応じて使うようにすれば良さそうです。

 

また、他にも気になったことを聞きました。

フワフワソ

拡張子付きのレイヤ名は何らかの意味があるんでしょうか?("_syslay.mes"と"mes"など、拡張子部分と同じ名前のレイヤがあったりもするので)

夕街さん

レイヤ名はルール無用ですー 漢字や日本語でもイイです、算木文字とか妙な記号でなければ

「_syslay.mes」とかもテンプレを作る際に自分ルールで決めただけで、「システム系の」「文字レイヤ」ぐらいの意味です

 

上記のadd_layの順番の話と合わせて、sub.anの内容を分析してみたいという人には、なんらかのヒントになるかなと思います。
まとめですが、sub.anについてはマクロなので
訂正
(sub.anにマクロじゃない部分もありました!
 冒頭の
 ;*********************************************************
 ;    定数
 ;*********************************************************
 というところは見ておく必要がありそうです。
 効果音に使うファイルを定義したりしてます!)
sub.anの「マクロと書いてある部分」については、
システムをカスタマイズするという人以外は中身を理解する必要は全くなく、ノータッチでいいと思います。(全部理解しようと思うと、制作を投げ出すことにつながりそうです)
フワフワソはlayerの順番を知りたくて、必死に見ていました。記事では順番が前後しましたが、「レイヤ構造3D」や「レイヤ構造詳細」には後から気がついたのです。これを使えば、layerについてはあまり悩まなくて済みそうです。
 
 
●おおざっぱな感想。総論的な。
 Nscripterとairnovelの違いとは?
 
Nスクで *defineの定義節にあたるのが、airnovelの main.anと、sub.anのマクロじゃない部分
Nスクで *startの実行節にあたるのが、airnovelの ss_000.an
Nスクで デフォルトのシステムメニューにあたるのが、airnovelの sub.anのマクロ部分
(main.an、ss_000.an、sub.anはサンプルゲームのファイル名)
 
Nスクではデフォルトのシステムメニューは、基本的にユーザーがスクリプトを覗くこともいじることもできないようになってました。もっとかっこよくしたい!と思った場合には、同じ機能を持つサブルーチンをイチから自分で作る必要がありました。
それがいわゆるシステムカスタマイズというやつで、多くのサイトでソースが公開されていました。(たとえば、マウスホイールで文字送りというのもデフォルトでは未実装だし、アルバムの機能もありません。テキストウインドウに常駐してるセーブロードなどのボタンもないし、それらはカスタマイズで作る必要がありました)
 
airnovelの場合は、デフォルトで基本的なシステムメニューが一通り入ってます。アルバムもあるし、テキストウインドウのボタンも、ノベルゲームにおよそ必要と思われるものが全部あります。
しかもそれらはsub.anを覗くことで、自分でさらにカスタマイズすることもできます。
ここらへんはairnovelの親切なところでもあり、わかりにくいところでもあるかと思います。
Nスクはデフォルトのシステムに手を触れられないようにしてあることで、ある意味いじれる部分を切り捨てて少なくしたことで、初心者に優しくなっていたかと思います。
airnovelはサンプルゲームという形で、デフォルトのシステムをいろいろ提供しているので、それをそのまま使えば、初心者にも優しく、わりと見栄えのするゲームはできると思います。
ところが、デフォルトのシステムまで中身をのぞけるようになっているため、初心者が「sub.anも理解しなくちゃいけない」と考えると、魔界に迷い込んでしまい、制作を投げ出す可能性があるかと思います。(フワフワソがいちいち夕街さんに聞いてしまったように、sub.anのマクロ部分は初心者にすぐ分かるようなスクリプトになってないです)
初心者は、sub.anの「マクロ部分」はデフォルトの機能を作ってる部分だからノータッチ!というくらいの割り切りでいいかと思います。
 
中級者くらいで、サイトで公開されているマクロを追加したい、となったときに、sub.anやmain.anの任意のところにコピペで追加したりという感じで、sub.anに手を付ければいいかと思います。また、画面サイズやウインドウの位置を変えたいとなったときに、sub.anの、画面やウインドウ関連のxy座標を意味してると思われるところの数字を変更してみたり・・。
 
というわけで、初心者は main.anとss_000.an、あとsub.anの「定数」部分に専念することで、Nスクと同じようにゲームを作れる、というのを自分なりの結論にしようかと思います。
(自分はややこしいところに手を出し、カスタマイズのボタンを作ろうとしているわけですが・・)
 ↑
sub.anが全部マクロだと思ってたら、マクロじゃない「定数」という部分もあったので、若干記事訂正しました。

AIRNOVEL技術を高速習得ーその5

自分がはじめてNスクでゲームを作るときには、検索しまくって多くのサイトを参考にさせていただきました。そのときの経験を元に、こんなことをつぶやいたら、さっそくさんから「頼りにしてます」とのお言葉をいただいて、モチベが上がりましたフワフワソです。

自分で勉強しながらのメモ的な記事なので、正確さ等は 保証対象外ですが、何らかの参考になれましたら幸いです。

 

 記事 第1回~4回

NscripterからAIRNOVELに移植する技術を高速で習得する - フワフワソ・ラウンジ(NEW!)

NscripterからAIRNOVELに移植する技術を高速で習得するーその2 - フワフワソ・ラウンジ(NEW!)

*勉強会の資料も紹介*NscripterからAIRNOVELに移植を高速習得ーその3 - フワフワソ・ラウンジ(NEW!)

クラウドファンディング御礼と、AIRNOVEL技術を高速習得ーその4 - フワフワソ・ラウンジ(NEW!)

 

●AIRNOVELを実際にいじくる手順

f:id:fuwafuwaso:20151114191438p:plain

何をするにも、このanbooksのウインドウから行います。

「最初から読む」を左クリックでゲームのテストプレイができるのは前回記事で書きました。(右クリックだと詳細モードになってすごく重い)

そしてスクリプトや素材などが入った、ゲームの中身のフォルダをいじくるには、「桜の樹の下には」と書いてあるところをクリックします。(実際にはそれぞれのゲームタイトルになるでしょうが)

なんか右にアイコンっぽいのがありますが、それとは関係なく、「桜の樹の下には」の行を押せばフォルダが開きます。

↓開いたフォルダの中身がこれ。最終的には、これらを全部合体させて暗号化してゲームのファイルにするのかと思います。(その作業もanbooksがやってくれるはず?)

f:id:fuwafuwaso:20151114192152p:plain
制作風景としては、

1)anbooksを起動して

2)「桜の樹の下には」のところをクリックしてゲームの中身のフォルダを開いて

3)フォルダの中にあるスクリプト拡張子.anのファイル)をテキストエディタで開いていじくって

4)画像とか音楽の素材フォルダに、オリジナルの素材を追加して

5)「最初から読む」でテストプレイ

この繰り返しになるかと思います。

要するにanbooksのクリックすべき場所は、上記の2カ所。

押せるところいっぱいありますが、当分は2カ所を覚えてればいいのかなと思います。

 

*フォルダの中身を見て気付いた点

workフォルダに夕街さんがサンプルゲームの画像を制作したときのpsdファイルが入ってる。コンフィグ画面のカスタマイズはフォトショップでこれをいじればOK! →configフォルダの_config.jpgを自作のものに差し替える

scenarioフォルダにスクリプトのファイルが3つ入ってる

  ss_000.an シナリオ。ここをもっぱらいじくる。(シナリオが増えたら  ss_001.an、ss_002.anみたいにファイルを増やしていく) 

  sub.an マクロとかの定義(文字ウインドウの設定なども)

  main.an 一番最初に参照するスタート地点。

scenarioフォルダにテキストウインドウの背景画像が入ってる。

  wafuu1.pngとwafuu1w.png(「空を飛べたら」の場合、hakkou1.png

  これを自作の画像と差し替えればよい。

menuフォルダにタイトル画面のjpgとボタンのjpgが入ってる

 (タイトル画面など、このjpgを自作に差し替えればOK)

  その他入ってるもの

  _submenu.an(右クリックのサブメニューのスクリプト

  _submenu.png(右クリックのサブメニューの背景)

systemフォルダにシステム関係のいろいろな.anファイルが入ってる

  改造のためのコメントがついてるが、とりあえず触らない方がよさげ?

ruleフォルダにいわゆるrule画像が入ってる。

  画面切り替えの時の効果を変えられるアレ。素材配布サイトなどからお借りして、効果を増やすと吉。

縦サンプル「桜の樹の下には」と横サンプル「空を飛べたら」の違い

 夕街さんのサンプル「桜の樹の下には」をベースに、黒柴亭さんが横バージョンにしたサンプルが「空を飛べたら」。

 スクリプトの違いを見ることで、他者がサンプルを改造するときの手の付け所が分かるのでは? と思って双方を見比べる。

 後で聞いたところ、「桜の樹の下には」も「空を飛べたら」も、スクリプトは夕街さんが書いたとのこと。(黒柴亭さんが担当したのは、シナリオのみ)

 ↓見比べた結果

*双方とも基本的な機能に絞ってるので、スクリプトにあまり違いはなかった。
 フォルダの構造も一緒。

 単純に、「桜の樹の下には」を横書きに直した基本フォーマットが「空を飛べたら」と考えていいかも。

*システムの見た目の違いである「コンフィグ画面やテキストウインドウの画像など」は、フォルダの中にある画像の差し替えで行ってる

*テキストの縦表示or横表示は、sub.anでマクロを定義し、ss_000.anで呼び出して実行.。

ss_000.anで

; *** テキストレイヤ縦書き中設定 ***

  [txt_lay_v_center b_alpha=0 fcol=0x000000]

などとなってるところを

; *** テキストレイヤ横書きWide下設定 ***
[txt_lay_h_bottom_wide]

 に差し替えで横にしてる。

[txt_lay_h_bottom_wide]については、「桜の樹の下には」のsub.anで最初から横書き用のマクロ定義がされてるので、「空を飛べたら」ではそれを使ってる。sub.anをいじれば自分で表示位置を調整できる。(のちほど詳しく触れます)

*テキストウインドウにくっついてる「設定」や「栞」などのボタン位置も、sub.anで設定する。

; マクロ システムメニュー描画処理

以降に書いてある部分で、ボタンの位置や向きを調整。

桜の樹の下には」では、 rotation=-90という命令でボタンを90度回転させて表示させてる。 left=&sysmenu_left2というのも続けて書いてあるが、よくわからない。「空を飛べたら」には書いてない。

ボタン画像のファイル名共通の接頭語「Mnu」で検索するとボタン画像に関係する命令の箇所が分かる。

 

 ↓

【フワフワソの目標】

画面サイズをHD比率にしたかったり、テキストウインドウの大きさを変えたかったりするので、上記を理解する必要がある。

オリジナルゲームを作るとき、画面サイズもテキストウインドウの大きさも「空を飛べたら」と同じでいいよーっていう人はウインドウやボタンの画像差し替えくらいでよいかも?

「システムの見た目はオリジナルじゃなくていい!中身で勝負だ!」という人は、最低限、コンフィグの画像を差し替えればOK。「空を飛べたら」のままだと、天狗の画像になってしまう。(「桜の樹の下には」では水芭蕉の画像)

↓この画像を差し替える。色々重なってるように見えて、これが一枚のjpg。
 (この画像を作るためのpsdファイルもworkフォルダに入ってる)

f:id:fuwafuwaso:20151113152116j:plain

 

というわけで、画面サイズのカスタマイズをどうやればいいのかはだいだい理解出来ました。sub.anのマクロの、ボタンや文字表示に関連するところの、x座標y座標の数字を変更すればいいのです。

ここは問題なくできそうな予感がするので、実際の作業は後回しにすることにします。

 

↓うちの場合、一番重要なのがこれです

 【フワフワソの目標2】

取り調べ用システム用に、アイテムアイコンを画面上に多数配置したい。

「画面上のアイテムアイコンを押す→アイテムの内容の拡大画像表示」をやりたい。

イメージとしては、アルバム画面の挙動が似てるかと思われるが、アルバム画面とは違い、同時にテキストの読み進めもできるようにしたい。

なので、アルバム画面よりは、テキストウインドウにくっついてる「栞や設定、セーブロードなどの常駐ボタン」に仕組みが似てる。

というわけで、そのあたりのスクリプトを参照して改造することにする。

具体的にはsub.anの

; マクロ システムメニュー描画処理

というところが常駐ボタンの設定なので、公式サイトのタグ辞典を見ながら、どのタグがどんなことやってるのか、読み解いていくことにする。

ここが喫緊の課題。


; マクロ システムメニュー描画処理の読み解きを始めた結果

 いきなりつまずきました。意味が分からない!

 [let name=l text=%l|0]

 let name=l text=  ここまでは分かります。変数lにtext=以降に書いてあることを代入しろという意味です。

 しかしその後の %l|0 は? 本家サイトや瀬戸様のサイトを必死で見てたらなんとなくは分かりましたが、なぜそうなるのかがわかりません。ひどくぼんやりしてます。
 他のマクロを見ていると、似ているのを見つけました。

 [let name=l text=%l|40]
 これは変数lに40を入れろという命令です。
 そしてその変数lの40が、テキスト表示のY座標として使用されています。

 ここでフワフワソは理解を諦め、「そういうものなんだ」と把握することにしました。これはつまり、電気釜の仕組みは分からないが、どう操作すればご飯が炊けるかは分かる、という方向です。[let name=l text=%l|0]の細部の意味は分からないけど、lに0を代入してるタグである。[let name=l text=%l|40]と書けば、lに40を代入するタグになる。そういうことです。

 その理解でホントにいいのか確認したかったのと、他にも疑問点があったので、夕街さんに質問してみました。

 

フワフワソ

桜の樹と空を飛べたらのsub.anを見比べています。

「空を飛べたら」の
; マクロ システムメニュー描画処理
[let name=l text=%l|0]
がよく分かりません。
これは単純に変数lに0を入れる書式と考えていいでしょうか?

夕街さん

答1)[let name=l text=%l|0] は「変数lに0を入れる書式」で正解です

フワフワソ

また、

; マクロ テキストレイヤ縦書き左設定
を見ると、

[let name="l" text=%l|40]という表記があります。
変数lが””で囲まれていますが、[let name=l text=%l|0]で””がないのは単なる省略でしょうか? それとも意味が違ってくるのでしょうか?

夕街さん

答2)【変数lが””で囲まれて】いることには意味がなく、ここでは同じですね。ややこしいのでない方がいい気がします。

フワフワソ

「桜の樹」の
; マクロ システムメニュー描画処理
では
[let name=l text=%l|40]

[let name=w text=%w|292]

という定義があります。
ここで定義した変数lとwを実際に使用しているのは、
; マクロ テキストレイヤ縦書き左設定

の箇所かと思いますが、そちらでももう一度
[let name="l" text=%l|40]
[let name="w" text=%w|292]

の定義がされています。(今度は””付き)
これは、念のためにもう一回定義した、あるいは本当は2回も必要なくて、
; マクロ システムメニュー描画処理
での
[let name=l text=%l|40]

[let name=w text=%w|292]

は不要だったと考えてもいいでしょうか?

夕街さん

答3)【[let name=l text=%l|40]】が二回出てくるのも重複だし、ムダと云えばムダですね。「あるマクロがあるマクロを呼ぶ、逆方向はない、そして呼ばれる方が単独で他から呼ばれない」というルールを徹底していれば問題ないです。【不要だったと考えてもいい】です

こういう感じでチョイチョイ美しくないコードがあり、お恥ずかしいです(_ _)

フワフワソ

「空を飛べたら」では
; マクロ テキストレイヤ縦書き左設定

のマクロは使っていないので、変数lとwの定義は不要ではないかとも思います。
すると、[let name=l text=%l|0]
は書く必要がなかったタグのようにも思えてきます。
「空を飛べたら」の[let name=l text=%l|0]も、なくてもよかったという理解でいいでしょうか?

夕街さん

まぁ、安全策で置いといてもイイかなと(´ω⊂

 

とてもよく分かりました、夕街さんお忙しいところありがとうございます!

 

*念のために補足ですが、変数に数値を代入する書式は、必ずしもこの [let name=l text=%l|0]という書式ではなく、通常はもっと分かりやすいので、解説サイトを参照してください。

 %l| というややこしい部分は、「このマクロ内」ではこうなっているということで、なぜなのかはフワフワソの理解を超えているということです。

また、””(クオーテーション)の要不要についても、「このマクロ内」では、あってもなくても同じ扱いでしたが、””(クオーテーション)の有無で意味が変わってくる場合もあるので、そこも解説サイトを参照してください。

AIRNovelをさわろう! 変数に代入、変数参照

AIRNovelをさわろう! 変数操作

↓ ”” や | について

http://famibee.web.fc2.com/tag_dev/dev.htm#f_and_g4pro

↓ ”” について(.anprj の場合)

http://famibee.web.fc2.com/tag_dev/dev.htm#anprjFile

↓%についての解説。フワフワソの頭脳がギブアップした部分><;

AIRNovelをさわろう! マクロに値を持って行く2


%や | については、凝ったことをしなければ、通常は使わずにゲーム作れるのではないかと思います。
フワフワソには理解が無理なので、使わずにゲームを作ろうと思います。^q^

クラウドファンディング御礼と、AIRNOVEL技術を高速習得ーその4

f:id:fuwafuwaso:20151113034502p:plain

「エクストリーム取り調べ!ソラとピヨちゃん」冬コミで完成を目指して制作をがんばっています。

3日目東ヨ19b フワフワソ

でお待ちしております。

フワフワソではc87,コミティア,c88と3回のイベントで、クラウドファンディング募金箱を設置しました。10円からの受け付けで、スタッフロールに載っていただく募金をしていただこうというものです。

フワフワソはいままで推理大会などの開催を通して、「プレイヤーの皆様と一緒に盛り上がりたい!その方が楽しい!」というのを実感しました。ところが、今回の新作のエクストリームソラとピヨちゃんは、「推理」の部分をシステムに内包してるため、推理大会をやるのはちょっと難しそう・・でも、せっかくだから何かやりたい・・という葛藤がありました。そこで思いついたのが、この参加型の募金です。

当初は「クラウドファンディング」という言葉さえおぼつかず、張り紙に「クラウドファンディング」や「クラウドファンディング」などと書いている始末でしたが、どうにかやってくることができました。

おかげさまで、3回のイベントを通して、のべ79名の皆様から、およそ2万円ほどの募金を頂戴しました。

使途につきましては、無料配布する体験版CDの予算や、絵を描いてくださってる蜜樹きゅっきゅさんと、曲を作ってくださってるAIR田さんにお送りするお菓子の予算にさせていただきまして、モチベーションアップの栄養源とさせていただきました。

ありがとうございます!

順調にいけば冬コミで完成目標です、よろしくお願いします。

 

●AIRNOVEL引き続き勉強中です。

 記事 第1回~3回

NscripterからAIRNOVELに移植する技術を高速で習得する - フワフワソ・ラウンジ(NEW!)

NscripterからAIRNOVELに移植する技術を高速で習得するーその2 - フワフワソ・ラウンジ(NEW!)

*勉強会の資料も紹介*NscripterからAIRNOVELに移植を高速習得ーその3 - フワフワソ・ラウンジ(NEW!)

 

「俺のAIRNOVELがそんなに難しいわけがない」を読みながら、気付いた点などを。

 *気付いたメモ

・レイヤ全体を移動でき、レイヤに載せた画像や文字をまとめて移動できる
・クリック出来るボタンは文字レイヤを使う

・通常のボタンは、[button]と[s]でクリック待ち状態。文章をストップさせた選択肢などで使う。(文字送り[l]との衝突を避けるためにevent_at_downが必要)

・文章を読み進めながらも機能する常駐ボタンを作るには、グローバルイベントを使う。Nスクと違って常駐ボタンの作り方が簡単っぽい!

・エクストリームソラとピヨちゃんのアイテムボタンを作るにはアルバム画面の改造がよさそう

・自動アップデートについてがんばって覚える

 パッチじゃ無くてゲームファイルを丸ごとアップデートする方式?

・たまに出てくるanbooksって何かというと、airnovelの開発環境のことらしい。ビルドのめんどくさいところをやってくれるとか

“AIRNovel”の開発環境「ANBooks」v2.2が公開、ビルド環境の構築がほぼ自動に - 窓の杜

・ANEditという統合環境もあるけど、まだ開発中らしい

ノベルゲーム開発環境「AIRNovel」、スクリプトのビジュアル開発が可能に - 窓の杜

 

●AIRNOVEL実際にいじり始めて気付いた点

Nスクは同一フォルダの中に「Nスクのexeとスクリプトのtxtと画像などの素材」を置いて、exeをクリックすればすぐテストプレイもできたのですが、airnovelは若干ややこしい。フォルダの構造はだいたい一緒なものの、フォルダの中身を直接いじるのでは無く、開発環境である「anbooks」を通してGUI的にフォルダを参照するようになっています。

↓それがこれ。spfdextremeというのはぼくがつけたプロジェクト名で、開発者によってそれぞれ違う名前になります。デフォルトで入っている「桜の樹の下には」というサンプルゲームを改造してオリジナルゲームを作っていこうという流れです。

f:id:fuwafuwaso:20151113050046p:plain

この画面からいろんな所をクリックすれば、フォルダが開いたり、スクリプトを手直し出来たり、素材を追加出来たりします。

そして、「最初から読む」をクリックするとゲームのテストプレイができるのですが・・!

ここがつまずきポイント!!赤丸のところ!

ここは右クリックをしてはいけません!

左クリックをしてください!

右クリックをすると「詳細モード」という、実行中の動作ログが出るモードになり、それがとても重いのです。環境にもよるとは思いますが、少なくともうちのwindows8(corei5)機ではゲームのプレイに支障を来すほどの重さで、これがairnovelなんだと思ってしまうと、「airnovelはうちの環境に合わないかも!これじゃ他のエンジンにせざるをえない!」と誤解してしまうので要注意です。

実際フワフワソは諦めかけました。

しかし、開発環境では無い「ビルド済みのairnovelのゲーム」をプレイしたことがあり、そちらはサクサク動いていたので、何かがおかしいと思い、調べているうちに気がつきました。

↓ anbooksのウインドウを横にサイズを大きくすると、「右クリックで詳細モード」と出てくるではありませんか。なぜか分かりませんが、デフォルトのウインドウサイズだと「右クリック…」までしか表示されていなかったので、盛大に勘違いをしたのです。

f:id:fuwafuwaso:20151113050050p:plain

ここで左クリックをすれば、はい!サクサク動くテストプレイモードです!

いやー危ないところでした。本気で諦めかけました。

ちなみにこのウインドウサイズの件、どこの環境でもそうなるのかは分かりません。少なくともうちの環境ではそうでした。

ものすごい初歩ですが・・同じつまずきでairnovelを諦める人がいないよう、書いておく次第です。