AIRNOVEL技術を高速習得ーその5
airnovelについてはものすごく情報の少ない分野の記事書いてる意識ある。ブログのアクセスあんまないけど、いつかどこかのニッチな情報を探してる誰かの役に立つと確信してる
— ふわふわ@3日目東ヨ19b (@fuwafuwa8) 2015, 11月 13
自分がはじめてNスクでゲームを作るときには、検索しまくって多くのサイトを参考にさせていただきました。そのときの経験を元に、こんなことをつぶやいたら、さっそく館山緑さんから「頼りにしてます」とのお言葉をいただいて、モチベが上がりましたフワフワソです。
自分で勉強しながらのメモ的な記事なので、正確さ等は 保証対象外ですが、何らかの参考になれましたら幸いです。
記事 第1回~4回
NscripterからAIRNOVELに移植する技術を高速で習得する - フワフワソ・ラウンジ(NEW!)
NscripterからAIRNOVELに移植する技術を高速で習得するーその2 - フワフワソ・ラウンジ(NEW!)
*勉強会の資料も紹介*NscripterからAIRNOVELに移植を高速習得ーその3 - フワフワソ・ラウンジ(NEW!)
クラウドファンディング御礼と、AIRNOVEL技術を高速習得ーその4 - フワフワソ・ラウンジ(NEW!)
●AIRNOVELを実際にいじくる手順
何をするにも、このanbooksのウインドウから行います。
「最初から読む」を左クリックでゲームのテストプレイができるのは前回記事で書きました。(右クリックだと詳細モードになってすごく重い)
そしてスクリプトや素材などが入った、ゲームの中身のフォルダをいじくるには、「桜の樹の下には」と書いてあるところをクリックします。(実際にはそれぞれのゲームタイトルになるでしょうが)
なんか右にアイコンっぽいのがありますが、それとは関係なく、「桜の樹の下には」の行を押せばフォルダが開きます。
↓開いたフォルダの中身がこれ。最終的には、これらを全部合体させて暗号化してゲームのファイルにするのかと思います。(その作業もanbooksがやってくれるはず?)
制作風景としては、
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フォルダに入ってる)
というわけで、画面サイズのカスタマイズをどうやればいいのかはだいだい理解出来ました。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| というややこしい部分は、「このマクロ内」ではこうなっているということで、なぜなのかはフワフワソの理解を超えているということです。
また、””(クオーテーション)の要不要についても、「このマクロ内」では、あってもなくても同じ扱いでしたが、””(クオーテーション)の有無で意味が変わってくる場合もあるので、そこも解説サイトを参照してください。
↓ ”” や | について
http://famibee.web.fc2.com/tag_dev/dev.htm#f_and_g4pro
↓ ”” について(.anprj の場合)
http://famibee.web.fc2.com/tag_dev/dev.htm#anprjFile
↓%についての解説。フワフワソの頭脳がギブアップした部分><;
%や | については、凝ったことをしなければ、通常は使わずにゲーム作れるのではないかと思います。
フワフワソには理解が無理なので、使わずにゲームを作ろうと思います。^q^