◆日記 メモ
日記作成前の雑記はここに隔離◆
制作 2021/09/29 |
お節介。 要らぬ世話かなと思っていたけどPython最新版が積んでいたので倣った。 ずっと前に積んでいたstring.closest()関数が役に立った。 |
制作 2021/08/15 |
|
制作 2020/10/10 |
制作 2020/10/10 |
今は昔…… 「NScripterでいう通常変数は一般的なプログラミング言語でいうと全てグローバル(広域)変数である」 というような話を今はなき先人の誰かが書いていた。 NScripterがLuaと連携したのはバージョンアップ終盤であり、長い間ローカル変数の概念が無かった。 「グローバル変数/通常変数」という名称は、Luaや他言語の事を考えない限り大した問題ではない。
|
制作 2020/04/09 |
NSMirage.dllの「ボーダーレス化」というのは こんな感じでデスクトップいっぱいにダミー窓を拡大する機能。 (擬似フルスクリーン化) Nスクデフォの「フルスクリーン化」はデスクトップ解像度の一時変更であるため、 現代の環境ではフォルダやアイコンの位置が崩れたりしてちょっと不便だった。 左右の余白は黒で塗り潰すべきかもしれない(視野の端にデスクトップが映って没入感を殺ぎそうなので) |
制作 2019/04/19 |
deffontd.dllのルビは、本文に対して極端に少量だった場合の割り振りが妙な見た目になる。 そこでルビ文字の左右に適切な量のスペースを足し、それからあらためて渡してあげる。 いい感じの見た目になる。 ルビサイズは一定であるべきか? それとも本文サイズに応じて可変であるべきか? 可変にした場合、大きくなり過ぎたルビは他の行の本文と見分けが付きにくい、紛らわしい。 一定にしておいた方が良さげ? |
制作 2017/02/18 |
*define game *start lsp 801,">180,120,#ffff00",0,0 print 1 click end このコードは正常に動かない。 「NScripterのスプライトは本来なら必ず透過方式の指定を付けねばならない」 「にもかかわらず普段はそんなことをぜーんぜんしない」 「それは【transmode alpha】等と指定しているがゆえ」 完全に忘れていた。 わけあって最小環境で動かしていたら塗り潰せない、表示されない、なんでやねんと数時間悩んでいた。 lsp 801,":c;>180,12,#aaffaa",300,140 したがって正しくはこう。公式マニュアルにもそう書いてある。また忘れそう。 |
制作 2016/10/11 |
Lua5.1のメタテーブルとは何ぞやという話 結論から書くと、NSLuaとして使う限りではテーブルを複雑にいじらない限り関係してこない。 つまり「NScripterで使うためのLua習得」においては当面の間存在を無視しても一切問題ない。 hoge="〜" hoge:find("〜") がどういう理屈で通るのか? という疑問を無視出来なくなった段階(つまり今朝の僕だ)で調べれば十分だし、 そんなもんかと納得しても劇的にサウンドノベル用途におけるテクニックが広がるわけではない。 NScripter視点では理解を試みる優先順位を相当下げて構わないと思う。 |
制作 2016/09/04 |
@速度をステージ内の要所で変えつつ背景を多重スクロールさせる仕様 A低負荷モード時は背景の多重スクロールエフェクトを切る仕様 →何かの拍子に変数自体操作しないコードに(意図しない省略) B常に低負荷モードでテストプレイ C多重スクロール背景のスクロール状態を参照する敵(バグ) D本来出現するザコ敵が非・低負荷モード時に出現しない(バグ発現) →しかし気付かない E当然リプレイがずれる →内部の数字をああでもないこうでもないと探索、 敵が出ていないという最大のヒントに一晩気付かない ---------------------------- バグの原因一晩探して結局誤字由来だった7年くらい前を思い出した。 |
制作 2016/04/08 |
たぶん「NSExecで呼んだluasub命令内NSExec(0行戻りが発生する仕様違反)の多用」が 発生するための最低条件ではないかと思っているけれど、 NSExec("bexec $0,%0") で異常な動作(%0に値が入らない、引数が変エラーで落ちるなど)を起こし、 NSExec("bexec $0 , %0") と書いたら正常動作するケースがある。 どうもbexec固有の現象らしい。 原因も対処できる理由もさっぱり分からない。 とりあえずNSLaはその環境下にある。 (拡張スクリプトに直接記述した場合は勝手に空白を足している、 NSExecから呼ぶ場合は自前で空白を足す必要がある)。 謎。 |
制作 2016/04/07 |
うっかり NSExec("bexec %0,$0") と書いてしまい、なんか一回目のクリック反応しねえなあ?と悩んでいた。 NSExec("bexec $0,%0") これが正しい記述。 エラーは出ないためうっかりするとハマる。 手打ちせずにコピペすれば防げたものを…… |
雑記 2016/03/16 |
--Lua --原始的なエラトステネスのふるい local sosu={3,5,7,11,13,17,19} --2は判定しない(最後に足す) for now=23,100000,2 do --奇数のみ判定、とりあえず100000まで local issosu=true local limit=now^0.5 for i,v in ipairs(sosu) do if(now % v==0)then issosu=false break elseif(v>limit)then break end end if(issosu)then sosu[#sosu+1]=now end end table.insert(sosu,1,2) --sosuに素数が入っている --10進数を16進数に変換するにはstring.formatを使う(知らなんだ) local hex=string.format("%x",[10進数]) |
雑記 2015/12/16 |
なんか半年に一回日記ページを更新するみたいな謎風習が付きかけている気がする 書きたいことが割といっぱいある。 「englishを使ったとしても偶数バイト目に全角文字の先頭を書けるわけではないのでこいつは実質ルビとの二択を産む命令である」みたいな話とか 「“テキスト”やボタン待ちは命令実行中に(アニメーションコールバックから)他の命令で割り込めるきわめて特殊な命令である」みたいな話とか 「そもそもアニメーションコールバックから何が出来るのか(NScripterはスクリプトの並列実行に対応している!!コルーチンと組み合わせればリアルタイムに思考するAIとかも理論上作れる!)」とか 「クローンゲームのようなごちゃっとした(あやしげな)ゲームがネット普及期のフリーゲーム畑で一定の役割を担ってきたことについて」とか ひぐらし(このサイトでひぐらしについて何か書いたことが無かった気がする)とか NSLaのマニュアルも最新版準拠に書き直す必要がある(出来ないと書いたことの多くが出来るようになっている)。 というかNSLisichkaの更新もしたい。 しかし「最終版」が出ていたNScripterが2.96→3.03と更新された話、 つまり「NScripterに脆弱性」という話について思うことを書く。 |
カテゴリとは何だったのか 2015/04/09 |
NScripter2が正式公開されましたね! |
制作 2014/11/03 |
というわけで割と実用的なレベルに弾幕STG動いちゃいました。 「NScripterを限界まで使った」と謳ったゲームは知る限り過去に数本存在していますが、 こいつをもって「NSD命令を限界まで使った」と宣言してもよいのではないだろうか STG用ライブラリ(名前これから考える)としては 「普通の弾幕STGに用いる軌跡は全てコンパクトな記述で再現できるように」 および 「記述の省略(略記)を柔軟に認める」 がコンセプトです。 制作期間半年の内訳は ・土台作りの実作業が合計20日くらい ・二分間のステージ調整に40日くらい ・仕様(ゲームとしての)調整に四か月くらい〜継続中 ・仕様(スマートな記述の)も平行してそのくらい でした。「動かすだけなら簡単」を思い知る内訳。 STGにおいて「作れる」はほっとんど意味ねえと実感した次第。 -------------------------------------------- 2014年から眺めます:弾幕STGにおいて、「2002年前後」はきわめて重大な時期でした。 2002年はらじおぞんでがリリースされ、 東方紅魔郷がリリースされ、 怒首領蜂大往生がリリースされた年でもあります。 1996年を弾幕STGの誕生とするならば、2002年は弾幕STGにおける重要な分化が概ね完了した年です。 で、それから12年経ちました。 商業STGはいよいよもって極限まで追い詰められたように見えます。 とうとうケイブが倒れ(たっぽい、たぶん)、k.h.d.n.が解散し、 グレフやガルチやモスは何やってるのかいまいち分からず、コナミは死んでいます。 これからどうなるでしょうか、分かりません。 しかしSTG文化は死なない。 まだ頑張っているメーカーもあります、同時に同人・インディー畑も激しくもがいています、 S.T.G CREATORや東方弾幕風のような制作環境だってインターネットに散らばっています。 もがこうと思いました。 もっと言えば:その12年前、BulletMLにおいて宣言された>シューティングゲームが消えてなくなってしまう前に、 >この芸術的な弾幕の数々を保存しなくては、と。に対する「ふざけんな終わってたまるか」の気持ちも込みで。 ------ BulletMLが取ったアプローチも恐らくは、02年を取り巻く巨大なうねりの中にあったものでしょう。 ワールドカップやっていた裏でこんなに熱いうねりがあったとは驚きです。 私ももがきます。脳みそフルに使ってシンプルかつ高機能な記述体系を目指しました。 NScripterとメモ帳ガチ勢に向けた手打ち特化な弾幕STGライブラリです。 描画がNSLua、処理はほとんどピュアLuaです。 どうよ。 |
制作 2014/09/19 |
NSLuaメモ NSDSpAddは加算合成とされているが、最後の値(α値)に負の値を用いることができる。 明るくするだけでなく、暗くも出来ることを意味する。 一方、素のNScripterには「lspaddの減算ブレンディング版です。」と説明される「lsp2sub」が存在する。 NSLuaに「NSDSpSub」が存在しない理由は |
制作 2014/08/19 |
君影草工房さんのgetkey.dllに関して、ゲームパッドにおけるスティック入力周りを実験した 入力取得 ・手持ちのPSもどきパッド(十字キーのみ)はなぜかニュートラル状態が32511だった。頭おかしい。 "32511" "ゲームパッド"でググると同じ事例が出てくる。さすがの永字八法。 頭おかしい手持ちのパッドも(何年も前の)ELECOM製だった。 →遊びを取っていればまず回避できるが、設定をユーザー側に委ねる場合が問題。 「32511だけは決め打ちでニュートラル扱い」でもバレない気はする。 ・有線360コンは標準ドライバだとスティック入力をまともに取得できなかった。頭おかしい。 ひとたび入力すると値がニュートラルに戻りきらない。 →非公式ドライバ放り込めばちゃんと動く。放り込もう。 ・Windows8.1で正常動作。まだ戦える。 入力取得後 ・「どこから斜め入力扱いか」はプレイアビリティに直結してくる。 8方向だからといって45度ずつ区切ればよいというものではない(と思う)。 スクリプト側で斜め入力とみなす角度を増やせば360シューに近い操作感覚になって快適。 アナログ入力そのままを用いて全方位STGでも作るならもちろん気にする必要はない。 「アナログ入力前提のPCゲー」自体、キーボードを切り捨てることにはなる。 NScriipter製ゲームに手を出す人の何割がゲームパッド常用勢かと考えると怪しいものもある。 ・この辺りの設定もユーザーによっては自前でやっていそう。 身も蓋もない話 ・同人ゲーやっており普段からゲームパッド使っている人間は(少なくとも今はまだ) 動作しない事態に備えてJoyToKeyなどのキー入力変換ソフトを常用していそう。 最悪そっちに丸投げする手もないではない。 「ゲームパッド使ってるくらいだからお前自分で設定できるな、うん?」といった態度。 結局中身次第か。 ・手間は増えるので繋いですぐ動くにこしたことはない。 |
制作 2013/12/30 |
幸いUDP一本化版の動作確認をしてもらえたため、Sasanqua.zipとchecker.zipの中身を差し替えました。 機能増えてない割に互換性が無いので、Sasanqua.zipの旧版もしばらく置いておきます。 |
制作 2013/12/24 |
リリースするなり三ヶ月沈黙する変な人になった |
【あらためて】 ヤギサザンカはNScripter用のネット通信ソフトです。DXライブラリを使用しています。 んでインターネットチェッカーはサンプルデモです。チェッカー面白いよ。 ・通信は二人まで ・通信相手にIPアドレス伝え合う前提 なので、ある程度身内向きです。 ローカル対戦付き(オンあったらいいのに系)ゲームのオン対応拡張には活用できると思います。 協力ゲー作るのもいいと思います(不正対策を考えずに済む分気楽です)。 オンラインマニュアルを改訂中。 サンプルもそのうち単純なやつを増やします。 |
制作 2013/05/19 |
ロード時間の配分を考えている。 文字スプライトを数百枚出したままセーブすると、読み込みに数秒かかってしまう。 何から何まで読み込むようにしたらプレイ中はそりゃもう快適なのですが、ロードが重い。 「セーブのたびに半分ほど消す」はプレイ中の無駄が多く、頻繁なオートセーブの問題も絡んでくる。 オートセーブと手動セーブで挙動を二種類用意してみたら、今度はロード時間のばらつきが気になる。 (ただし、絶対的なデータ量からしてばらつき不可避ではある。) 可能な限りロード画面なく読み込めた方がよいと思うけど、さてどうすべきか。 |
私事 2013/04/05 |
死んでません。 |
制作 2012/11/21 |
死んでません。 btntimeを使うと擬似的に並列処理に見えるものを作れる。 のだけど。 btnwait2からbtnwait2までの間、何をどう工夫しようと特に描画の瞬間だけはどうにもならない。 クリック抜けが起きる。描画の前後にisclickとか挟んで補うという手はあるかもしれない。 →それでも描画中にクリック押し込み・クリック離しをやられると入力抜けが起きる。 描画にかかる時間を人間がクリックするのにかかる時間以内にまとめなきゃいけない。 →うっかり複数行文字列スプライト(毎回忘れるけど(相対的に)死ぬほど重い)など使うと死ぬ。 死んだ。 ちくしょう処理重い!⇒strsp外したら問題なかった のコンボを何回やったら気が済むのか。 たっぷり余裕のある時のstrsphくらいしか使わない方がいいレベルに毎度毎度…… |
本体の太字+NSfont.dllの太字を組み合わせ(てしまっ)た潰れ文字はそれなりに味があって好きだ。 でもセル持ち(=複数色持ち)文字スプライトと組み合わせると濃い色の表示が醜い。 上がセルなしのスプライト、下が醜くなったもの。これ薄い色の表示が残っちゃってるのか? (というかこれcellの仕様なのか?) ↓ #000000#aaffaa#000000#8adf8a#000000#6abf6a#000000#4a9f4a#000000#2a7f2a と、奇数番目(セル番号は0始まりの偶数だけど)に黒を挟んだもの。 セルなしのビューティフォーな表示と比べてまだ不自然さが残るけど、さっきよりはとても若干マシか。 |
制作 2012/02/23 |
・使うのはマウス+矢印キー周辺のみ ・右クリックでメニュー表示 を外したくないので、全体マップ表示のショートカットをどうするか。 ・ミニマップをクリックでも全体マップ表示 という案を思いついたけど、メニュー画面のMap項目可哀想なことになるか。 PC変わったらPageUp/Downが僻地に追いやられていて「矢印キー周辺」がなんだか分からなくなってる。 カテゴリによってこっちの色を変えるってのはどうだろう。 |
制作 2011/12/16 |
lsph 608,":s/18,18,1;#ffffff"+$SP1+" ",280,88 みたいなものを400個ほど読み込ませる処理をやっていた。 で、これが信じられないくらい重い。 >+" " ここを削ったら1/5くらいになった。信じられない。 この紫+水色ってちょっと気持ち悪い。改善したいもんですね(たぶんやらない)。 |
私事 2011/08/23 |
どっちでも大して変わらないという結論に達した。 ・全滅時の負担は重くしない ・けどリセットは認めない、 ・セーブは特に制限付けない あたりに落ち着けたい。脳内でシミュレートした結果。 |
2011/04/25 私事 |
表記これでいいんじゃないかと思う。日付先の方がわかりやすいよね。 あといい加減スタイルシート使う。 |
私事 2010/03/30 |
NScripterというカテゴリ分けをすべきだったねと今さら。 たとえば lsp 10,hoge,0,0 みたいな感じで10番のスプライトに画像を読み込むとき、 lsph 10,hoge,0,0 とかが事前にある=読み込むべきスプライトが既に同じ番号(同じ座標?)に存在している場合、 やたら体感速度が上がる気がする(検証してない)。 特に文字スプライトにおいて顕著な印象があるけど、内部処理としてどうなってるんだろう。 単に描画量が減るから(=番号は関係ない、座標の問題)か? 原理はどうであれ、早くなってくれる分には構わないけど。 barとかprnum(非推奨命令だし非推奨だけど、変えるのが面倒でここまで引きずってる)が 速度に影響してるのかもしれないけど。 (追記) なんと2010年延長戦をやっていた! 気付かなかった! |
私事 2010/03/15 |
lenとmidをNSluaで作ったらどうなるのと思って試してみた。 midの方はちゃんと動いてるか試してない。 なんかstring.subは開始が0でなく1という記述を見た気もするので直さないと無意味かも。 2018/12/16追記:Luaは1オリジンなのでその通りです。 いや直したら意味があるかっていうとないんだけど。 --ちょっとだけ遅い。 2018/12/16追記:関数呼び出しのコストが影響していたのでしょうか? NSExec("luasub len2") function NSCOM_len2() local num=NSPopIntRef() NSPopComma() local a=NSPopStrRef() local str=NSGetStrValue(a) local res=#str NSSetIntValue(num,res) end --やはりちょっとだけ遅い。 NSExec("luasub mid2") function NSCOM_mid2() local rstr=NSPopStrRef() NSPopComma() local a=NSPopStrRef() local str=NSGetStrValue(a) NSPopComma() local num1=NSPopInt() NSPopComma() local num2=NSPopInt() local res=string.sub(str,num1,num2) NSSetStrValue(rstr,res) end 早いんならまだ救いようもあったけど。 2018/12/16追記:そもそもLuaにこんなしょうもない処理を投げても仕方ないのです。 |
私事 2010/02/07 |
usewheel対応に手を出したが最後地獄を見た。最初っからやっとくべきでした。 まだ終わらんのよ。あとそろそろページのレイアウトを整えたい。 |
私事 2010/12/30 |
メニュー画面作るとか言ってたのにもう年末だよ! envdata消した後のglobalon読み込みでグローバル変数が初期化されちゃうのって、 fileexist %hoge,"global.sav" :if %hoge=0 globalon で回避できるんじゃないかと思った。試してはいないし、何か問題が起きるかもしれないけど。 もちろんバージョンアップで定義部をいじっても変数の番号が変わらないという前提ありき。 あとenvdata削除も 何かしらのファイル(それこそ暗号化したcsvファイルとか)でバージョン判定 →バージョン更新があったらfileremove→reset みたいにやればユーザーの手間が明らかに減るんじゃないかと思う。たぶん。 やはり何か問題があるかもしれない。 私事制作修正更新というカテゴリ分けは失敗した気がする。 |
私事 2010/12/16 |
3Dダンジョンのオートマッピングというピンポイントにニヤニヤできる話題だったので、 ニヤニヤしていた。オートマッピングを無理やり実装した身としては見ていて楽しい。 こういう考えもしたっけなあ、みたいな。 Lua使うのが無難という意見には賛成だけど、Lua使わなくてもどうにかなる。 あくまで僕は「500階分(暫定)まで一つのダンジョンに詰め込める」という アホな仕様にしてみたから無理やりやらなきゃいけなかったけど、 全7階くらいだったら別に「無理やり」じゃなくても大丈夫だと思うよ! ちなみに今から作るならsplitよりmidの方が楽かと思うよ! 全然注目してなかったけど、draw系の命令群使えばたしかに描画におけるスプライトの制約は 気にならなくなるのかも。draw系の命令を実行してみたことが一度もないから推測だけど。 でも20*20なら普通にlsp使っても数は足りる。 20*20ってのはつまりそういうことなのかなあとかいろいろ考えを深読みすると楽しい。 でも、壁に厚みがないタイプのダンジョン(一般的なWIZライク)作る方がよほど大変だと思う。 個人的には。あとこの色気に入った。冬らしくてよい。 |
私事 2010/11/10 |
どこまでが私事でどこからが制作なのか、一度検討する必要性を感じる。 色々見やすい色を模索してみる。冬っぽい。むしろ先にフォント変えるべきかも。 Tipsさんで紹介されていたサイトが非常にありがたげなのでメモ。 NScripter覚え書き そうそう、$0と%0の混同とかeffectcutとか、まさに僕はそういう所で引っ掛かったんだ。 今後同じようなミスをする人が出てこないためにもこういうページは必要だと思うので、 作った方はお疲れ様です。 というか順序としてはNスク本スレ→Tipsさんか。まあいいや。 普通待ち時間を作りたくない時はprint 0で済ますだろうなあとは思う。 ずっと前に作った描画周りが頭悪い処理だからこそ引っ掛かったってのも一つある。 とにかくeffectcut様様。 checkkeyの速さにまだ笑いが止まらない。 新ボタン命令全然使ってなかったけど、 もしかしたら処理も従来のbtnwaitより速かったりするんだろうか。 暇な時に試してみようかな。 今さらだけどpreタグの使い方を何か間違ってる気がする。 ブラウザによるのかもしれないけど、テーブルがこう横にみょーんと伸びるのはよろしくない。 br要らないとか超便利と思って使い始めたけど何か違う。 cssで横の長さを指定する方法をこの前知ったから、そのうち改革しよう。 右利きの人からしたらマウスと矢印キー前提の配置って死ぬほど使いづらいだろうなと思いつつ。 ZキーとXキーあたりを使って代替機能をできるだけ作ればいいんだろうけど、 僕が使うわけではないので後回し。当サイトは左利きゲーマーを応援します。 家庭用ゲーム機でもボタン連打とかキツいよね! 左利きの人がみんなマウスを左手で操作してるとは限らないのか? |
制作 2010/10/31 |
btnwaitと併用するつもりでcheckkey命令を使ってみたら、 制御不能なレベルにダンジョン内移動が早くなって笑いが止まらない。 PCの性能に依存しそうだと思いつつ、btnwaitよりだいぶ処理が速いんだろうか。 あとこの色の組み合わせひどいですね。これはひどい。 |
私事 2010/10/11 |
最後にスクリプトいじってから33日が経過。 階段というか昇降用の記号が記号が。 別のところ先にやろうかな。 ctrl押しっぱなしのままダンジョン内で移動するとエラー落ちしていた。 スプライト描画のタイミングで落ちていたようなので、 エフェクトのウェイトを5ミリ秒から15ミリ秒にしてみたらあっさり直った。 ものすごく環境依存の予感がする。 あんまり無茶な時間にはしない方がいいのかもしれない。 →effectcutを使っていなかったのが原因と教えてもらい、解決しました。 通りすがりの方に激しく感謝の意。 |
私事 2010/09/24 |
宿題が終わった。夏休みも終わった。 この夏休みの間何やってたんでしょう僕は。 |
私事 2010/09/21 |
straliasとnumaliasを対等に扱うのっておかしいと思う。 使用頻度的な意味で。 大学入ってまで宿題に苦しむとか世の中間違ってる。 |
私事 2010/09/19 |
Luaの何を理解できているか後でまとめてみる。 それから何をLuaに回すと楽になるか考える。 ラベル数的な意味で精神的によろしくない敵のAI設定なんかは候補筆頭。 |
私事 2010/09/09 |
静かなサイトと明るいサイト、どっちがいいんだろう。 |
私事 2010/09/08 |
【メモ】blt使わずにアニメーションさせるならcellとspwaitを組み合わせるといい感じかも。 ただ、そもそもアニメーションさせる素材(攻撃エフェクト)を揃えられないと思う。 >tablegoto %数字変数,*ラベル名(,*ラベル名...) >テーブルジャンプ命令です。 >数字変数の値が 0なら一つ目、1なら二つ目…… に指定したラベルへジャンプします。 |
私事 2010/09/01 |
AIRNovelというサウンドノベル作成ツールを何か月か前に偶然見つけたのですが、 全然話題になっていないのはどうしてなんだろうと思っています。 落としていないのであれですが、パッと見そこそこ使いやすそうなのに。 NScripterや吉里吉里の方が解説周りが充実していたり作品数(→実績)も多いからなのかなあ、 とか考えながら眺めています。 |
制作 2010/08/28 |
・目印代わりに安易に,や"を使わない ・次があればdefsub先で使う汎用変数と普段から使う汎用変数を分ける ・風呂で寝ない |
制作 2010/08/14 |
気が付いたら生成されるセーブデータの容量が100KBくらい少なくなっていた。 いったい何があった。まさかOS依存なんてことはないだろうけど、気持ち悪い。 |
制作 2010/08/01 |
・timeはだいぶ遊べそうな命令。ユーザーを信じれば期間限定イベントやら 最終起動から間が空いた時のあらすじ解説やら。←これいいかも。 ・timertrapも面白そうな命令だけど、作中の演出に使うのは難しそう。特に後者。 ・bltの原理をようやく理解した。使えるかどうかはまた別の話。 ・今のPCがpageup/down最高に使いづらいのは最高に不幸。 以下未来の自分用メモ。小さい文字は読み飛ばす。 セーブデータとしての情報を外部ファイル、 おそらくはnsa内に格納されたcsvファイルにぶん投げるのは、 (→ってあれ? NSAファイル内のcsvファイルは読み込めてもcsvwriteで書き込むことは できないのか。勘違いしてた。) 作っているときはとても便利だけど、セーブデータの管理、 具体的には紐付けとデータ削除時の処理)が面倒になる。 紐付けは簡単にできるけど、「指定した番号のセーブデータを初期化」するのが面倒。 GUIからホイとセーブファイル削除するんじゃだめで、初期化処理を作成しないといけない。 関連してマップ情報の初期化を行うのは非常に大変な気がする。 マップ情報はセーブデータごとに個別処理しなくてはいけなくなっているから (→宝箱の取得状況も投げてしまっている) また、csvに書き込む=変更を確定してしまうわけで、 たとえばその回の探索途中でゲームを強制終了したときにどうするか。 階層移動するごとにオートセーブするようにしてしまうか、 あるいはダンジョンを出入りしたらオートセーブにして、 ダンジョン内でだけ通用する一時ファイル的なものを階層分用意するか。 読み込む時は階層別に読み込んで、 ある階層を離れた時に一時ファイルに保存。 同時にその探索内でどの階層に行ったかをどこかに記録して、 出た時に行った階層のマップ情報ファイルを上書き。 一時ファイルを再び真っさらにする必要は無い(最初に読み込む)。 →紐付け云々はともかく、これには「ユーザーがファイルをいじるとめちゃくちゃになる」 という危険性がある。個々のファイルは暗号化したcsvだからいいにせよ、 リネーム・上書きをされるとまずい。 NSAファイル内に放り込んでしまおうと考えていたけど、上記のとおり勘違いだった。 NSAファイル内から読み込む→csvwriteで書き込む→生のcsvファイルが放り出される という残念な挙動。まあNSAファイルだし無理もない。こっちの要求が無茶だった。 つまり、紐付けをcsvファイルに頼って行おうという以前からの考えは無理がある。 グローバル変数で管理? できそうだけど具体性がない。 マップ情報についてはどうしよう。ファイル名を無機質にしてしまえばいいのか。 あまりユーザーと喧嘩する意味はないから、その程度で十分か。 初期化処理についてだけは考えないと。 真っさらなcsvファイル batファイルで上書き さすがに強引過ぎるか? →ゴチャゴチャ考えていたら、紐付けの方法を過去の自分が既に作っていた。 開始時に固有番号(1〜999999999)をランダムに振る →マップ情報読み込み時に、マッピング情報先頭にある数値と一致するか判定 →一致しなかったら(未踏破のマップは当然0を返す)情報を読み込まない →そうしたら、マッピング情報セーブ時に結果的に上書きされる。 →万が一数値が被った時? そんなものは知らない(後から何かやってもいいけど)! マッピング情報が保存されるタイミングは、現状だと帰還時。 階層移動時のマッピング情報保存は、階層移動処理を作る時にまとめて。 考えてみればまだ階層移動処理を作っていない。別にすぐ作れるけど放置中。 >ダンジョン内でだけ通用する一時ファイル的なものを階層分用意する >読み込む時は元のダンジョンのマッピング情報から読み込んで(つまり今と変わらない)、 >ある階層を離れた時に一時ファイルに保存。 >同時にその探索内でどの階層に行ったかをどこかに記録して、 >出た時に行った階層のマップ情報ファイルを上書き。 >一時ファイルを再び真っさらにする必要は無い(最初に読み込む)。 >同じ探索内でその階層を二度目に訪れた時(行った階層情報から判断)は、当然一時ファイルの方から読み込む。 こういう風に仕様変えよう。 temp的なダンジョン名を用意して、書き込み先変えるだけだし。 どの階層に行ったかを記録というより記憶しておく場所だけ考えるといいんじゃないかな。 万が一めったやたらに壮大なダンジョン作った時でも対応できる形が一応望ましいだろうし。 真ん中らへんの要約とまとめ ・初期化はセーブデータ消去時でもなく新規ストーリー開始時でもなく、 マップ読み込み時(正確には初めてのマッピング状況保存時)に行われる ・マッピング状況保存のタイミングは帰還時になっているが、 階層移動時に保存するようにすると色々セーブ関係でややこしいから、 そのダンジョンを出るまでマッピング情報を一時保存する場所を作る。 ダンジョンを出た時にオートセーブ+一時ファイルから本来のマッピング保存箇所に保存。 →一時用csv開く・読み込み・閉じる・マッピング情報保存csv開く・書き込み・閉じる を階層数分行うか、batファイルを使って物理的に上書きするか。 見た目には前者がスマートだけど、ロード時間が長くなりすぎてしまうかもしれない。 csvファイル開く速度がどの程度環境に依存するやら。 ・結局、csvファイルをめちゃくちゃにいじられたらマッピング情報は破滅する。 マップ自体の書き換えは行えない(マッピング情報はあくまでマップ表示と宝箱用)が、 現状では宝箱の無限入手が一応可能になってしまう。 何か対策使用か。そもそもcsvファイルに投げた理由が 「宝箱の情報保存しておく変数足りないよ、配列変数がメモリ破壊しやがるよ」 だったから、NSluaの出番かもしれない。 NSluaの方で定義した変数がどういう風に扱われるのかよく分かっていないので、 一番最初に検証して覚えるのはその部分。 あるいは、素のNスク(と愉快な仲間達)だけで有効な対策ができるかもしれない。 ちょっと考えてみよう。 あまりにも長いダンジョンは、階層ごとにオートセーブってのもありだと思うよ。一応。 あんまり要約にならなかった。 そもそもセーブファイル数を1つにしてしまうという逃げもある。 たぶん歓迎されない。要熟考。 |
制作 2010/07/24 |
なんだかんだでこの一か月ほどろくに進んでいない。 春から延々メニュー画面作成中といいつつ未だ完成せず。 メニュー完成させたら連絡しようと思ったきり連絡を数か月取っていない高校の友人が一名。 そろそろ本気出さないと縁がぶっちぎれる。春休み中にはメニュー画面作る(笑) なんたるこった。 いくらなんでもNスクの配列変数がここまで融通効かないとは思わなかった。 splitに指定するのさえ駄目だなんて……デメリットの方が圧倒的に多いじゃないですか。 「現在のところ」という事はいつか対応……今となってはされないだろうなあ。 SGEやらNSlua的な意味で。 とりあえずNscripter標準の配列変数をまともに扱うのはどうやっても難しい。 制約が多すぎる。これはもうNSlua使えという事なんだろう。早くluaの連想配列使おう。 そしてWIZライクでも作らない限り、 raceとsexは使われることのない死にステータスになる予感。 何しろ今の今まで忘れていた。 キャラエディットしてテキストオンリーの戦闘に突撃、 という頃のバージョンで使おうとしていたはず。 |
制作 2010/06/17 |
numaliasの仕様を理解してなかったその2。 *define numalias a,1 numalias b,1 game *start mov %0,a mov %1,b %0と%1。\ 同じ数値に複数名前を付けられたんですね、こいつ。 |
制作 2010/06/01 |
メニュー画面制作の状況 ■アイテム使用処理 →装備選択時にキャラごとの装備可不可・能力上下判定からの矢印アイコン表示を右に表示 →そのまま装備させられるという処理を作りたい □特技使用処理 特技の仕様をいじった方がいい気がしてきた。 特技を追加するタイミングであらかじめ必要MPと使用可能なタイミングを取得して、 キャラごとに用意した変数にまとめてぶち込んでおく。参照する時はsplitで取りだす。 いずれこうしないと読み込みが重くなる気がする。 ■装備変更処理 ■マップ表示 →基礎は出来たから、もうちょい色々親切なアイコン表示を出してやりたい。 あと低スペックPCだと絶対表示重くなると思う。仕方ない。 □オプション画面 □ロード ■キャラごとのステータス表示(状態異常アイコン表示は未実装) →表示位置を考える。右側にアイコン。選択時には文字でも状態を表示したい。 |
制作 2010/05/01 |
もう五月ですよ? A.現行のまま →シンプル。 ただし行き止まりと途中で引き返した道の区別が付かない。 B.自マスの上下左右の情報を取得 →行き止まりなのか未踏破なのかが分かる。 角が埋まらないためなんだか気持ち悪い。 C.自マスの周り一マスを取得 →角が埋まる。 視覚的に見えない部分まで情報を取得してしまう。 これはミニマップも同じだけど… D.視界に入った場所を記録 →さすがにこれはどうかと思う。 今さら周囲の壁の情報を取得するようにするのも面倒だし、 早いところどれかに決めちゃおう。 →Cで行きます。 |
制作 2010/04/29 |
ダンジョン内部でのマッピングしたマップ表示機能を一応作ってみた。 配色センスの問題等はあとで考えたい。 それと、宝箱の位置を表示する意義があるのかどうかも。 周辺一マスくらいは親切でマッピングするようにしてもいいかも。 どちらにしてももう少しいじる必要がある。 2010/03/13の分 メニュー画面作りかけ |
私事 2010/04/22 |
ごちゃごちゃ修正するモチベーションが足りないので、 先に全体マップ表示を作っちゃうことにした。 本当は早めにやるべき作業なんだけど、延々修正する気力が湧いてこない。 修正するのとしないのとじゃ処理の重さがだいぶ変わりそうだけど…… もういいや。後回し、いつかやる。作業日未定。 今日知った便利な命令、textoff。textclearしか知らなかった。 bgcopyは特定の状況下で有効利用できそう。というかする。 スプライト表示上限が1200くらいあれば必要ないし、 屋内型ダンジョンの5/6が何かしらの物体(道含む)で埋まることは考えにくい。 でも、一応保険は欲しい。仕方がないので 全体図を半分描画した後にbgcopy ↓ csp -1 ↓ 残りの半分を描画 という強引なやり方を取ろうと思う。 ・遊ぶ側がマーカー置けた方がいいのか ・宝箱の位置を記憶≒宝箱の中身入手だが、宝箱の位置を記憶する意味はあるのか ・40×30のマップ内のどのあたりに居るのかが分かりやすくなるが、難易度低下しすぎないか いっそ目的の座標をアイコンで表示するくらいの親切さをつけようか。 で、実際そこに行くにはやたらめったらグルグル回らなきゃいけないようにしたりして。 ……ダンジョンの絵を確保できなければそれも無意味なんだけど。 ダンジョンの描画周りだけでもスプライト番号直そうかな、馬鹿みたいにキツキツだし。 毎回cspとlsp繰り返すくらいならlsphとvsp使った方がいいだろうし。 というかダンジョンのチップ判定自体を直したい。 ちゃんと変数とmid使えば160KBくらいあるスクリプトは10KBくらいに収められるし。 ああでもきりがない、妥協妥協。次があれば生かす。もうそれで妥協。 |
私事 2010/04/20 |
困った。 スプライト番号を修正しようと決めているのにモチベーションが足りない。 そうこうしているうちに本当に修正が必須なのかも分からなくなってくる始末。 本格的に困った。 |
私事 2010/04/04 |
当面の予定 作る方 ・サイト改装 ・罠のアイデアとエディタへの実装 ・メニュー画面の残った部分 遊ぶ方 ・どこまでゲームに時間を割けるやら現時点では不明。 ・ロストプラネット2他数点を買う。 |
現時点で明確にわかる反省点。 ・スプライトの番号管理 一番痛い。番号が足りなくなっている箇所だらけ。 今ならまだ直せるギリギリのラインかもしれない。 ・戦闘時メニューの大きさとレイアウト 要反省。大きすぎるしバランスも良くない。キャラの絵も無駄に大きいし。 ・defsub命令と実質defsub命令にすべきサブルーチン 曖昧になっているせいで結局defsubを有効活用できていない。 ・汎用変数的に使う変数のまとめが無く、二重のものも 同じような役割の変数があったり、あちこちで使いまわす変数があったり。 どの変数が一時的なもので、どの範囲でなら自由に使っていいのかが部分的に曖昧。 現在の行動を管理する変数において特に顕著。 こういう事態を回避するために最初は短編作れってことなんだろうなあ。 スプライトの番号管理だけでもなんとかした方がいいだろうと思う。 いつか直そう。できるだけ早い時期の夜中に。 |
私事 2010/03/13 |
もう三月中旬!? 当面の予定 作る方 ・リンク追加と改装 ・罠のアイデアとエディタへの実装 ・メニュー画面の残った部分 ・メモしておくページ 遊ぶ方 ・現行据え置きを優先して、アサクリ2とEoEと他五本 ・タイミングを見計らってロストプラネット他数点を買う |
RPGにおける竜の定義を拡大したのはブレスオブファイアで間違いないと思う。 けど、ファンタジー全体として見た場合に定義を拡大したのはゲド戦記になるのかな。 などと思ったので書いておく。四巻までまとめて読んだのが小学生の時なので若干曖昧。 |
制作 2010/02/28 |
%%と$%は使えるけど$$や%$は使えないんだっけ。 考えてみればそりゃそうなんだけど書いておかないとまた忘れる。 このままオートマッピングを実装できれば同時に罠の仕様も決まるのでエディタが更新できる。 マップ内で使う文字変数とデータを保存するcsvファイルを併用することにしたので、 階層(エリア)を切り替えた時にマッピング状況が勝手にセーブされる。 階層1から階層2へ移動→階層2でゲームオーバー、となった場合、 1のマッピング状況は有無を言わさず保存。2の分は全滅時に保存させてもいいけど、 全滅上等でマッピングを保存しに突っ込むことが可能になってしまうのでどうだろう。 |
※この仕様だと「データを消して最初から」の処理がややこしくなる。解決手段。 A.csvファイルの末尾にランダムな数値をくっつけセーブデータに紐付けるか、 あるいはそのマップを訪れたことがあるかどうかを変数に放り込んで判断させることで、 初めて訪れるマップだった場合にマッピング状況を初期化するという方法がある。 やるなら前者の方が楽か。 B.一度マッピングした地図はずっとそのまま。そのセーブ番号ごとにずっと共通。 同人ゲームのマップ固定型ダンジョンRPGを複数周やりこむ人がいるのか疑問なことを考えると、 これでもいいのかもしれない。ただ、投げやりすぎる仕様ではある。 C.全セーブデータで共通の地図を使う。 何もしなくていいので一番楽ではあるけれど、さすがにこの仕様はどうかと思う。 ゲームにせよエディタにせよ広まるとも思えないのでBやCでいいと思うけれど、 意地があるので基本的にA、ただしBのようにもするという妥協案で。 csvファイルを一部だけ削除するような人が出てきても知らない。サポート外。 |
制作 2010/02/28 |
midさん格好いい。素敵。splitから乗り換えちゃうかもしれない。 いやどちらも便利だし共存させますが。そして配列変数、君には失望だ。 |
私事 2010/02/26 |
とりあえず全部終わりました。お疲れさまでした。以下今後の予定。 ・サイトの軽い改装 ・エディタに罠実装 ・他のスクリプトいろいろ ・山と積まれたやりかけのゲーム消化(非現実的) ・借りていたゲームのクリア(期限アリ) ・やりかけのフリーゲーム数点 |
私事 2010/01/19 |
今さらですが明けました。 盲点繋がりという訳ではありませんが、 五日前にNScripterの基本的な仕様についての壮大な勘違いに気付きました。 200KBくらいなのでどうかちょっと落して、中身を見てください。■ 自分一人の勘違いだったのかそれなりの人数が勘違いしているのかさっぱり見当が付きません。 そんなの当たり前だろという人は勘違いを笑って削除してください。 もしそうでなかった人は一緒に驚いて、それから削除してください。 文字変数0番と数字変数0番は別々の変数だと数年間気付かずにいた。 |
私事 2009/12/30 |
公式の要望、inputじゃなくてtextfieldなら空欄でも大丈夫だし、 感覚的にも見栄え的にもよろしい気がしなくもない。 splitとかtextfieldとか大好き。 ※FAMさんにもらった助言に従ってダンジョンエディタへ追加した分は、 もう少し暖かくなった頃にゲームと一緒にでもアップロードしようかと思います。 今年の更新は本当にこれで最後です、あとは春まで我慢します。 |
私事 2009/11/16 |
RPGにおいてブレスオブファイアがもたらした意味は、「周囲の人間が竜だと認識すればそれが竜だ」まで竜の定義を拡大したことではないかと思う。 |
修正 2009/11/10 |
ダンジョンエディタの画像が変になっていたので修正。 とりあえずアップロードしたファイルは念のため自分で確認しないと駄目だと痛感。 |
更新 2009/11/06 |
ダンジョンエディタを公開。エディタしか公開していないので現状利用不能。 なんじゃそりゃと思われそうですが仕方がないのです。 |
日記を作った。作りました。 これで更新履歴の雑記化著しい状況を解消できる。 fc2のアカウントがあるんだから使えばいいのだけれど時代へせめてもの抵抗。 |