- NScripterのスクリプトいじってみた 2013-06-06(木)19:55
- 新作ソフトそっちのけでONScripter on MEDIAS W N-05Eでチマチマと寝る前とかにプリホリとはにはにをやっていたら、あっさり一周ずつしてしまった件。
流れでやりたくなった明け瑠璃が何とかなりそうだったので、色々拾って来てAndroid向けに最低限の調整だけしてMEDIAS Wでプレイ。
スマホでやる都合的にも、エロとかなくて構わないんでBTDB&MCの方がいいのですが、一から自力で変換する気はしないので無印で我慢。
しかしこれがシステム周りの再現性にはこだわらなかったようで、タイトル画面すらないやっつけ実装だったのが気になったため、はにはにとかを参考に手間のかからない範囲でシステム周りを強化してみることに。
まずは無駄に起動時のOPムービー(Lapis Lazuli)も挿入しつつ、タイトル画面やテキストウインドウのボタンを簡易実装。
基本的にデフォルトのセーブ&ロードメニュー等をsystemcallで呼ぶだけなので、環境設定画面などデフォルトで用意されていないものは未対応ですが、右クリックメニューがほぼ不要になってちょっと幸せ。
それからテキストウインドウのボタン同様に気になった、選択肢自体はテキストウインドウ側に表示されてるのに無駄に枠だけ出ていたのを、テキストウインドウを一時的に選択肢枠として再設定することで、選択肢枠をちゃんと使うように修正。
代わりに選択肢表示中テキストウインドウが消えてしまうので、選択肢でセーブ&ロードは右クリックメニューを使うしかないものの、再現度はアップしたのでとりあえず満足。
本文側の書き換えを最小限にするため、引数の数で自動的に選択肢枠の大きさが変わるようにもしたので、理論上は選択肢4つまで大丈夫になったはず。
あとはタイトル画面拡張しておまけシナリオやトゥルーシナリオに対応してひとまず完成予定。
ギャラリーとか流石に面倒臭過ぎですし、MEDIAS Wの二画面分割で見ても嬉しくないので、やるとしても(クイック)セーブ&ロードとか、バックログモードとかでしょうかね。
この辺はサブルーチン化しておけば、他の作品に使いまわせなくもなさそうですが、どうせならシステムの骨組みを汎用的に一から自作した方がいい予感。
そんなこんなで初めてNScripterのスクリプトをまともにいじったのですが、グローバル変数だらけだったり、変数名を一々aliasで定義しないといけなかったりで、変数(特にスプライト番号)の把握が大変で、他人の書いたソース改編とか面倒すぎな印象。
てかgetparamがgetrapamになってるとか、当時誰も突っ込まなかったんですかね(-。-;
- やるしか……ないのか…… 2013-06-08(土)19:05
- 最終手段的な選択をせざるを得なくなった主人公とかのセリフって感じで、もっと昔のメジャー作品にありそうなんですが、自分が最初に浮かんだのはゼノギアス冒頭のフェイですた。
けよりなforONSの不満点をある程度は解消してMEDIAS Wでやり始めたものの、何か物足りないと思ったらカットインがなかった件。
一部の演出系カットインはそもそもONSでは再現できなさそうだったりするので諦めてますが、SDイラスト出すだけなら適当にスプライト出力追加するだけなんで難しくはないんですよな。
ただ、オリジナルと比較しながら手動挿入だと、作業が終わった頃にはオリジナルで一周しているわけで、改めてスマホでやる気もしなくなるだろうから、少なくともまたやり直したくなるまで出番なしという本末転倒なことになりますし、かといって配布する気も無いのに今更シナリオコンバータを一から自作するのは面倒過ぎるっていう。
でもイタリアンズにもみくちゃにされるリースとか、SD絵くらいはないとやっぱり物足りないんですよなぁ。
- そもそも滅多に使わないというのを考えたら負け 2013-06-12(水)22:20
- ミクさんTカードをTSUTAYAかファミマどっちで作るか悩む件。
○ファミマ
・18歳以上(高校生除く)はクレカ審査必須(クレカ無しの指定不可)
・クレカ無しでも有効期限は5年(ファミマTカードの仕様)
・既にファミマTカードを持っている場合、サービスデスクへの電話連絡によるミクさんカードへの切替手続きのみ(二重発行はできない)
○TSUTAYA
・クレカ付きのは「Tカードプラス」で、18歳以上でも普通のTカード(クレカ無し)を発行可能
・クレカ無しなら有効期限も無し
・既にTカードを持っていた場合、ミクさんカード限定で二重発行できるが、ポイント引き継ぎや統合はできない(Tカード→ミクさんTカードプラスへの切替もできない模様)→FAQのQ05,Q06
デザイン的にはクレカ無しがいいんですが、今後のミクさんコラボのこととか利用頻度も考えると、ファミマの方が何かと都合は良さそうなんですよな。
どちらにしても初音ミクサービス期間(〜2014年8月31日)以降は、再発行(更新)してもミクデザインでない通常カードしか発行されなくなりますが、紛失したわけではないなら元のカードは手元に残るわけで。
無期限のTカードでも、磁気不良で物理的に使えなくなったりすれば再発行することになりますし、まずは自分が単にミクさんデザインのカードが欲しいのか、実用もするつもりなのかをはっきりすべきかと。
コレクター的には、TカードとファミマTカードで両方のデザインを入手して、ファミマTカードの方でコラボ企画に参加し、5年後なりサービス期間終了後に再発行して保管ってのがベストなんでしょうけどな(^^;
(破損や紛失を理由に再発行依頼して、手数料払って再発行なり新規に作り直すってだけの話なんで、期間終了後と言わず発行直後に再発行もできなくはないはず)
結局明け瑠璃のSDカットインはそれほど数もないみたいだし、大体どの辺かは分かるのでフルスキップで進めて入れてから落ち着いてやり直そうかと思いつつ、折角なので一部の演出を可能な範囲で再現してみようとしたら、のっけから多重スクロール&複合エフェクトで難易度が高かった罠。
具体的には「背景斜めスクロール」+「窓枠横スクロール」+「フェードイン(クロスフェード)」な感じ。
NScripterの背景エフェクト自体に斜めスクロールが無いばかりか、そもそも背景画像をエフェクト付きで切り替えるための命令で、画面より大きい画像を端から端まで表示するといった演出に使うことは考慮されていないようなので、スプライトで再現するしかありません。
しかも背景も窓枠も速度が一定でない上停止タイミングも異なり、更にフェードインも同時に行わなければならないのですが、NScripterでは独自のエフェクト処理をサブルーチンで作ってマルチスレッドで動かすみたいな器用なことも出来ないはず。
従って、地道にループしながら2枚のスプライトを移動させつつ、その上に置いたフィルタ画像の透過度を調整するということをするしかなさそう。
しかし開始直後なんでクリックしたらスキップできるようにしないとうっとおしいですし、プロローグ部分にはフィーナと達哉が夜中に遭遇するシーン辺りまでその手のエフェクトがてんこ盛りだったりするので、ある程度は汎用化して使いまわせるようにしないと、一々専用処理書いてたらSDカットイン入れるどころじゃないっていう(-_-;
とはいえ最大公約数的な処理でサブルーチン化すると、引数の数がえらいことになりそう。引数の数に上限あったとしても受け側の変数どうするかの方が大変そうですが。
- 【ONScripter】独自エフェクト関数作ってみた 2013-06-16(日)21:16
- スプライトによる複数エフェクトを同時に制御するサブルーチンが、↓な内容でどうにか完成。
●スプライトエフェクト登録
speset %スプライト番号,$画像,$開始パラメータ,$終了パラメータ,%オプション
開始/終了パラメータ:%X座標,%Y座標[,%不透明度][,%開始/終了時間][,%終了時非表示フラグ]
●拡張スプライトエフェクト登録
speset2 %拡張スプライト番号,$画像,$開始パラメータ,$終了パラメータ,%オプション
開始/終了パラメータ:%X座標,%Y座標,%X拡大率,%Y拡大率,%角度[,%不透明度][,%開始/終了時間][,%終了時非表示フラグ]
●スプライトエフェクト変動量計算
spespan i%変動量,i%現在値,初期値,終了値,経過時間,総時間,オプション
●スプライトエフェクト実行
speexec %終了時間,%描画間隔(numaliasで初期値を定義しているので通常は0指定),%spereset引数(-1だとsperesetを行わない)
●スプライトエフェクトバッファ配列リセット(通常はspeexec内で自動実行)
spereset %制御パラメータ(0:実行リストのみ削除/1:実行に使ったスプライトの描画も削除)
●スプライト削除
spedel %スプライト番号
●拡張スプライト削除
spedel2 %拡張スプライト番号
●スプライト一括削除
spedelall
登録時のパラメータ内容で想像が付くと思いますが、ウェイトをかけてループしながら現在値を計算して、フレーム単位の描画をベタにやってます。
登録したエフェクトデータの管理には配列が大活躍しており、渡したパラメータに加えて処理中の現在値も保持しているので、二次元目の長さが22もあります。
拡張スプライトは、機能的にはスプライトの上位互換ではあるんですが、下手に混ぜるとかえって使いづらくなりそうだったのと、どの道多重スクロールやスクロールとクロスフェードの併用なんかが主な使い道で、拡張スプライトは余り使わなさそうだったので、内部で格納する配列の添え字を揃えて処理がほぼ同じで済む様にだけして、個別に管理しつつ一括実行できるようにしました。
画像の左上基準から中心点基準に自動変換しようとすると、getspsizeで画像サイズを取るには一旦スプライトに格納しないとダメなので、拡張スプライトにするために一度スプライトにするという羽目になったりで無駄も多いです。
開始/終了パラメータは,区切り文字列で、内部でsplitしてバッファ配列に格納していて、splitを数値変数で受けると空文字は自動的に0になるという仕様に加え、不透明度は開始/終了共0だと255扱いにするといった処理も入れて、擬似的に可変長の引数にしてあります。
内容にもよりますが、この方法で引数を渡すと受け渡しに使う変数も少なくて済みますし、split分処理が増える以上に扱い易くなるメリットが大きい気がします。
speexecの引数なんかも第一引数以外滅多に使わないですし、擬似可変長引数にしてもいいかも。
この辺で手を抜くと、実際にこの処理を使って演出を挿入していく作業が面倒になるのは目に見えているので、結局週末を潰して作り込んだのでした。
1つのエフェクトは一方向にしか変動させられませんが、セットするエフェクトそれぞれに開始時間と終了時間を指定できるので、曲線を描いたりするのは流石に大変でしょうけど、同じスプライトで開始・終了値を入れ替えて開始/終了時間を調整したエフェクトを交互にセットすることで、往復や明滅くらいは一まとめにして実行できます。
また、エフェクトを実行した後背景として残したままにしてフィルタ系の処理だけ上書き、といった使い方も出来る必要があったので、セットしたリストだけ削除してスプライト自体は消さないようにしたり、speresetで消さなかったスプライトを個別に削除したり、まとめて消したりする命令も用意しています。
オプションは専用の処理を組み込むことも考慮して用意した拡張用パラメータで、今のところ現在値計算にsin等を使った加速/減速変動が出来る様になっています。
それからアニメーションのウェイト中に入力待ちを行うことで、エフェクトスキップ制御も入れてあります。
ちなみに複数エフェクトの同時制御が主目的なので、例えば「画面全体に赤い半透明フィルタをクロスフェード」みたいなことが、通常の処理だと
lsp sp_filter,"image/redfilter.png",0,0
print 10,1000
な感じで済みますが、speで同じ事を行おうとすると、
speset sp_filter,"image/redfilter.png","","0,0,255",0
speexec 1000,0,0
のように、行数こそ同じなものの、パラメータが微妙に増えて煩雑になるので、従来の命令でできることはそっちを使った方が無難そう。
ただ、単純なエフェクトの場合も、不透過度を0→255でなく0→128とかにすればフィルタ画像は半透明である必要がないとか、speexecの引数でsperesetしないようにしておけば、他のエフェクトが必要にならない限り、speexecで同じエフェクトを再実行できたり、spedelallすればスプライトを非表示のまま捨て忘れる心配が無いなんていうメリットもあるので、基本的にはspeの方が便利になってるんじゃないかと。
更に拡張してやれば各パラメータごとに変動量をカスタマイズしたりといったことも出来るでしょうけど、とりあえずこれで再現可能な範囲の演出を挿入してみるつもり。
菜月のしゃもじくらいは楽に再現できるんじゃないかとw
P.S.ミクさんTカード作ってきた
結局TSUTAYAでクレカ無しのTカード作ってきました。
ファミマの割引サービスとか悪くないんですが、結局自分の場合、近所のコンビニの中では利用頻度低い方なんですよな(´・ω・`)
ともかくこれでブックオフ発行の味気ないTカードともおさらばです(^^;
T-IDも破棄して登録し直しましたが、問題はファミマ.comの連携T-ID。
ファミマ.comのIDに関連付けられるT-IDは一つだけで、一度連携するとT-IDの方を無効にするしか解除方法がないようなのです(前のT-IDを破棄したのはそのため)。
ファミマ.comのユーザー情報は、以前のサクマドロップスのようなミクさんコラボ企画商品の通販で使う機会がありそうなので、メアドを変えて取り直したくはないですし、ファミマTカードを作った時のことを考えると今の段階で迂闊に連携できないっていう……
とりあえず今回のミクさんコラボはミクさんTカードでTポイント溜めろってだけですし、ファミマTカードが必要になるか、ファミマ.comで買い物する時まで様子見しますかね。
- 【ONScripter】目的と手段入れ替わり中 2013-06-19(水)22:25
- 今まで気にしてなかったんですが、特定商品の割引なんかはファミマTカード限定のサービスですけど、TポイントプラスキャンペーンとかTポイントバックの日は普通のTカードも対象のサービスなんで、Tポイント貯めたいだけならファミマTカードにするメリットそんなにない感じなんですな。
先日書いたONScripter用汎用エフェクトは、変数番号の使い方とかかなり適当で気持ちが悪かったので、見直しがてら変数番号をnumaliasで別名付けて管理したり、一時変数で無駄に変数消費しないように整理したら、思った以上に視認性もアップしてスッキリ。
機能ごとの一時変数を配列で管理すると、サブルーチン内で別系統のサブルーチン呼んでも、引数を受ける時(配列ではgetparamできないので)以外は変数が被る心配ないですし、連想配列がないから記号区切り文字列変数とかもマジ便利。
配列とかsplitとかNScripter的には負荷の高いものでしょうけど、今時のマシンなら気にするほどではないでしょうし、コーディングの簡便さの方を優先しないとやってられないです。
ついでに設計上エフェクト途中でスプライトの画像を入れ替えられないことに気が付いたので、ファイル名格納用の変数を用意して対応したり、エフェクトの終了時間を0にした場合、常に指定した実行時間が参照されるようにすることで、開始/終了時間が未指定のエフェクトのみの場合は、同じ内容で実行時間&描画間隔だけ変えて繰り返し実行できるようにしてみました。
別のエフェクトが必要なければ、間にテキストが入る分には問題ないので、「早く!」「もっと早く!」的なシーンで、同じアクションの速度を段々上げて繰り返し実行とかいう時に使えそうです。
更に、バッファ用の配列には数値しか持たせられませんが、基本の制御引数は,区切りの文字列で渡せますし、バッファ配列の使い方は融通が利くので、[0:絶対値,1:割合]みたいな数値形式制御パラメータを足して、50%とかで各数値を指定できるようにもすると更に使い勝手が上がりそうとか、本来の移植作業がそっちのけになっている罠。
引数の形式はもう変えないだろうからサブルーチン内だけの問題ですし、残りは必要になってからでいいんでしょうけど、移植作業先にやると必要なかった場合に開発意欲ガタ落ちですし、モチベある内にやるのが吉だとは思いますが。
- 【ONScripter】くるっぽー 2013-06-22(土)20:45
- 移動量や演出時間を"50%"とかでそれぞれ画面サイズや実行時間の割合指定ができるようにしたりと色々いじっていたら、エラー出ないのに明らかにおかしい状態になったりもしましたが、どうにか修正完了。
どっかでスタックエラー起こしてるのかと思って、ラベル移動を極力控えてifの実行文をまとめたりしたのに、結局変数名1文字間違ってただけだったとか、変数名付け過ぎるのも考え物ですな(^^;
にしても元々gotoの飛び先条件みたいな使い方を前提に設計したのか、if文にelseどころかendifもなくて、gotoするかサブルーチン化して呼んだりするのでなければ、実行文を:区切りにして一行で書き切らなきゃいけないってのは、Perlとかに慣れているとどうにも馴染めません。
notif 条件式1 jumpf
〜実行文〜
~
notif 条件式2 jumpf
〜実行文〜
~
とかやれば、実行文がjumpfを邪魔しない分には、ラベル名付けなくてもif〜elseif〜endif的なことはできますし、
for〜nextが中身を複数行で書けてbreakで制御もできるんで、1周ループ&breakを使って、
; いわゆるif 条件式 〜 endifと同等
for %0=1 to 1
notif 条件式 break
〜実行文〜
next
とか
; if 条件式1 or 条件式2(通常のifでは非対応のand/or複合条件)
for %0=1 to 1
if 条件式1 jumpf
if 条件式2 jumpf
break
~
〜実行文〜
next
とかいう感じにすれば、jumpfも気にせず複数行の実行文を書けるif文が、実行文中にbreakするだけでループ(ブロック)を抜けられるっていう副産物付きで出来ますけどな。
当然forを使う都合上変数番号が被らないようにしないといけませんし、elseif的なことをするにも、ひとまずループ抜けないとスタックが残ったままになるから、実行文から直にgotoできなくて一手間かかったりはするんですが。
そんなわけでバグ取りで力尽きたところで、何故かぽっぽ先輩に会いたくなったので、おもむろにStrawberry Nautsに浮気。
ぶっちゃけベッドで寝転んでスマホやタブレットでプレイするだけなら、NScripter化しなくてもウィンドウズマルチタッチパッドとかでリモートプレイすればいいっていうここ数日の作業全否定っぷりですが何か?
- ふぅ… 2013-06-26(水)22:08
- 2周目だか3周目だか忘れたけどStrawberry Nauts一巡してテラ満足。
個人的には3周したら殿堂入りって感じなんですが、HOOK作品で3周したかもな作品は初めてな気が。
というか3周以上した覚えがある作品は流石に限られていて、最近は時間も無いので、葉鍵、型月、オーガスト辺りのメジャー所を外すと、パッと思い当たるのがこんぶ辺りまで遡ってしまうんですが。
Strawberry Nautsなんかは時間がないとかだけでなく一周でお腹一杯になる内容だからでしょうし、時間に余裕があればまたやりたい作品は沢山あるんですけどなぁ。
- 【新・世界樹】どうなるアトラス 2013-06-28(金)23:11
- ・[3DS]新・世界樹の迷宮 ミレニアムの少女(インデックス/アトラス)
新・世界樹の発売日をすっかり忘れてた上にkonozamaったので体験版DLしてまったり開始。
新システムのグリモアは入手時のスキルに「キャラの修得スキルor敵の使ったスキルから抽選」って仕様が入っている以上、他職のスキルとかガチに集めるならグリモア狩り専用キャラ育てた方が効率良さそう(=クリア後とかに養殖するのが最効率)なのでマンドクセっていう。
他職を抜きにしても、満遍なくレベルを上げるとグリモアに付くスキルがバラける上に微妙になるので、仲間にも持たせたいパッシブ極振り安定っぽくて武器専用スキルに振り辛く、クリア後のやり込みによるキャラメイクの自由度は高くても、単にクリアするだけだとむしろ自由度を阻害してる気がするので、いっそのこと一周目(ストーリーモード)はグリモアのことを忘れる勢いの方が面倒が無い予感。
そんなわけで初代未プレイで固定PT方式ってのにも期待はしてたんですが妙にテンション低め(´・ω・`)
アトリエも買ってはみたけどどうしたものか……
・[PS3]エスカ&ロジーのアトリエ〜黄昏の空の錬金術士〜(ガスト)
・[PC]どらぺこ!(アリスソフト)
・[PC]フレラバ(SMEE)
・[PC]乙女は可憐に恋に舞いっ!(KLEIN)
|