フワフワソ・ラウンジ(NEW!)

ラノベとテクノを愛するふわふわがノベルゲームを作っています。あと日常のことなども

nscripterのトラブルについて

「宮本県」制作にあたって久々にNscripterを触りました。

 

いくつかトラブルに出くわしたので個人的備忘録です

(あくまで個人的体験談なので、間違いがあるかもしれません)

 

・文字スプライトはセーブされない

strspまたはstrsphで読み込んでおいた文字スプライトは、セーブ→ロードで消えてしまう。

キャラ紹介用の説明画面や、ライフゲージを文字スプライトでやっていたので、ロード後に消えてしまいました。

解決策は、

1)文字部分を画像スプライトで作っておき、lspやlsphで表示する。(画像スプライトはセーブされる)

もしくは、

2)loadgosub を定義節に入れて、ロード後に文字スプライト読み込みルーチンに飛ばす

 

oggのファイル名を間違えると、「アラートなしで2~3回目に」Nスクが落ちる。

アラートがないので、なぜ落ちたのか?がすぐには分かりません

しかもoggの再生2~3回目なので、問題がoggにあることがすぐには分かりません

さらに、アーカイブ化する前の状態(制作中のむきだしのoggファイルを使ってる状態)だと、このトラブルが発生しないと思われます(うちの場合はそうでした)

なのでNスクが落ちる原因がなかなか特定できず・・やっかいでした。

セーブ/ロードを使って、同一シーンを2回以上繰り返し=oggが2回以上再生、になった時もこれが発生します。

sorejyadamedarou.sakura.ne.jp

 

・800x600よりも大きい画面サイズに対応できるようになったものの、hdサイズなどにすると、ウインドウモードの時に画面からはみ出す。

しかもはみ出し方が変で上部のメニューバーが隠れちゃってるので、移動もできない・・

うちの環境依存かもしれませんが、どうしようもないのでhdサイズはあきらめました。

 

 

 

 

 

airnovel久しぶりに触る日記5

個人的覚え書きです。

 

・時間制限の作り方

[event key=enter_frame label=*timebar frame=500 call=true global=true]

5秒ごとに*timebarというラベルに飛ぶ。

このとき、frame=(airnovelのフレームレート基準の数字。初期値100/秒なので500にすると5秒)

また、global=true (グローバルイベント。フラグがセーブされるイベント)にしておくのが重要

global=false で、フラグがセーブされないイベントにしておくと、時間制限イベントを発生させた後に、button定義をすると、時間制限イベントがクリアされてしまう。

原因は、button定義でcall=false(ジャンプの定義)をしているため。

call=false だと、「global=falseのイベント予約は全て削除」しますよ

つまり、global=falseでの時間制限イベントを定義すると、その後に call=false(ジャンプする)イベントを定義すると、時間制限イベントがクリアされてしまう。

これを回避するために、時間制限イベントはglobal=trueで定義しておく

 

・時間制限のイベント解除

[event key=enter_frame frame=500 global=true del=true]

時間制限イベントを開始したら、どこかで解除も必要なわけで、そのための命令。

 [clear_event]というタグもあるが、それを使うと、すべてのイベント予約が消されるので、ボタンの定義なども死んでしまう。なので特定のイベント予約のみを消すために、上記のタグを使う。event key=の後は、定義したときと正確に同じ物を書くこと。grobal=trueも含めて!ちゃんと書かないと別イベント扱いになる!

 

・ビルドについて

ビルドには何種類かあります

ゲームを配布するにはこれをやらないといけません

「OS個別・簡易アプリ生成(exe,app)」から

 winだとexeファイルのインストーラーが出来る。

 adobeAIRがPCにインストールされていない場合、ネット経由で自動でadobeAIRをインストールした後、ゲームがインストールされる。

「実行形式パッケージ(air,ipa,apkなど)生成」のサブカテゴリから

「【ant airadobe AIRパッケージ」

  .airファイルのインストーラが出来る。ユーザーによるadobeAIRの事前インストール後に、.airをクリックすることでインストールできる。win、maclinuxなど、共用のインストーラーなので、adobeAIRの事前インストールのめんどくささに目をつぶれば、取り回しが良いインストーラー。逆に言うとadobeAIRの事前インストールにユーザーを誘導するのが面倒

「【ant air_r】OS個別インストーラ(exe,dmg)」

  うちの環境では動かなかった。夕街さん曰く、 ここは最近メンテしていないとのこと

「【ant air_b】OS個別RTバンドルパッケージ(exe,dmg)」

 個人的には一番使いやすい。adobeAIRが丸ごと含まれるパッケージを作れる。

 adobeAIRの事前インストールなど面倒な作業がないので、ユーザーにとっても、一番楽と思われる。

ただしインストーラーではなく、展開されたゲームフォルダを丸ごと作るので、

素材のフォルダやらが多数むき出しになり、見た目があまり良くない。

Nscripterのパッケージに似てるかもですが、airnovelは素材のフォルダが多い仕様なので、こういう状況になる。

f:id:fuwafuwaso:20170816195825p:plain

インストーラーを使う形式だとこのフォルダがCドライブのprogramfilesの中にできて、デスクトップにはexeのショートカット一個だけができるので、見かけ上はすっきりしてる)

いずれにしても、素材のフォルダの中身はすぐ見れる仕様なので「素材暗号化」が必須です。(暗号化のオンオフはanbooksにデフォルトでついてる機能なので、簡単)

 

*注意点

「【ant air_b】OS個別RTバンドルパッケージ(exe,dmg)」については、

「プロジェクトを作ったタイミング」が2016-10-14以前だと、「ant air_b」未対応なんです(電子演劇部 【追記】AIRNovel更新:Steamでエラーになる対策、AIRNovel作品をSteamで公開

電子演劇部 【追記】AIRNovel更新:Steamでエラーになる対策、AIRNovel作品をSteamで公開

なので、昔のANBOOKsで製作開始をしたゲームは、「【ant air_b】OS個別RTバンドルパッケージ(exe,dmg)」形式でのビルドが働きません。

プロジェクトの作り直しをする必要があります。

要は新しいANBooksで新規プロジェクトを作って、シナリオとか画像などのファイルを丸ごとコピペすればいいわけです。

 

 

 

airnovel久しぶりに触る日記4

昔書いてupしてなかった記事を発掘しました。

変数についてです。

 

 条件分岐をする上では変数を使わないといけません

変数の勉強

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

 

●条件分岐の書き方。Nスクとの大きな違い

これは・・やられました。Nスクとだいぶ違うところがあります。似たような命令だから使い方も似てるだろと思ってたら、思うように動かず、原因の究明に時間を取られてしまいました。

「とある変数が1なら~」というのを書く場合

Nスクのif文

  if 変数=1

・airnovelのif文

  [if exp="変数==1"]

「exp=」というのが入るのが違うところですが、もっとも大きな違いは、比較演算子が=ではなく==であるということ。

  [if exp="変数=1"]とやってしまうとうまく動きません。

   =と==は同じではないのです。

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

 

  では、「exp=のところもexp==じゃないのか?」と思うかもしれませんが、そっちはexp=です。

  変数の中身を比較するときには==なのです。

  condのときも==です。

  例 [jump fn="ss_000" label=*ラベル cond="変数==1"]

   (変数の中身が1ならss_000.anの*ラベルにジャンプしろ)

 タグ内で属性について何かを書くときには=ですが、変数の比較をやるときは==なのです。

 Nスクから入った人は混乱するところかと思います。 

 動かない!なぜだー!となったときには、サンプルゲームのスクリプトを見るのが吉です。それと同じように書けばだいたい何とかなるかと思います。