SmokingWOLF Nov/30/2024 08:08

ウディタ3.5開発中その6 XY配列・データのテキスト入出力・キー入力強化

 ということでウディタ3.5開発の経過報告、その6です!
 今回で最終回かと思いましたが、データのテキスト入出力機能を実装してたら想定以上に時間がかかっちゃったのでまだまだ続きそうです。


●念願の「XY配列」(二次元配列)機能を搭載!

 一部の人には念願だった二次元配列機能が搭載されます! その名も『XY配列』!
 数値データのみが入る、最大『10000×10000』の二次元配列を無限に作ることができる機能で、1つずつの読み書きだけでなくCSVからの入出力やソートなども可能です!

 使い勝手としては、「数値だけを入れられるDB(ただし項目数は100から10000まで拡張可)が無限に作れる」みたいな感触となっております。
 
 XY配列の入力画面は以下の通り! ……といっても、この「XY配列」機能はインターフェースとしては従来のDBと並んでいる扱いなので、そのまんま「DB操作」画面です。

【特徴】

●「配列番号/名前」には好きな「番号」または「文字列(名前)」を指定できます。
 「X列」と「Y列」には「数値(変数)」だけ指定可能です。

 → この「配列」は、あらかじめ用意する必要はありません。なかった場合、数値を格納した時点で勝手に作られます。

●「X列」と「Y列」は、使った番号まで自動で配列が拡張されます。
 サイズの限界は最大でX、Y共に「10000」までです。

●「新データ挿入・抜き取り・コピー・ソート・CSV入出力」機能も使用可能です。

●XY配列の内容はもちろんセーブデータにも保存されます。



【どういう場面で使える?】

●自作システムを作ってる最中に出てくる、『DBを作るほどでもないけど大量の数値を扱いたい!』という場面で非常に有用です!
 たとえば「素早さが高い順に行動順の並び変えをしたい!」みたいな処理をするときも、今後はいちいち可変DBに計算用のDBを作る必要はなく、XY配列だけで完結できてしまいます!

●単純に自作システム内で、『コモンセルフの足りない分を補う』のにも有用です!(使えるのは「数値」だけですのでそこはご注意を)

●コモンイベントを配布したい時、処理がほぼ数値データだけで済む場合は、わざわざ可変DBの新たなタイプを作らなくてもXY配列だけで用が済むようになります! コモン導入がシンプルに!
 → その場合、使用されるXY配列の名前は「(作者名)_(コモン名)_1」みたいにしておいてくださると他のコモン作者さまとバッティングしなくなるので安心ですね。

●他には『マップに関わるなんらかの処理で使う』というのがすぐ思いつきます! 「マップと同じサイズのXY配列」を作って、何かの値を格納したり読んだりする、ということが従来よりも圧倒的に簡単にできるでしょう。

「名前で一部の変数を管理したい」という需要にも応えられます!
 たとえば1x1の配列を使う前提で配列の名前に「[物語用]ウルフがトイレに行ったフラグ」などと入れれば、文字列でのフラグ管理も可能になります。

●今後、2次元配列を入出力とする「何か」を私が追加で作る場合でも気軽に色々できます! 今回の更新では、【4つのXY配列「アルファ値・赤・緑・青」を指定すれば、その配列のアルファ、RGB値で画像を出力できる隠しコード】みたいな機能も検討中です。ウディタをちょっとしたペイントツールにすることもできますよ!


 といった感じで、地味ですが利便性が上がり、夢も広がります!
 


●データのテキスト入出力機能!

 データのテキスト入出力機能! これは入れるか迷ったのですが、今回入れなかったらたぶんあと3年くらい搭載されなくなりそうだったので10日くらいかけて思い切って実装していました。10日で実装できたのなら割のいい投資です。

 これは、ゲーム設定、各データベース、コモンイベント、タイル設定、マップファイルを「TXTファイル」でも出力、ないし読み込み可能にする機能です。
 これができると何が嬉しいって、Gitで差分管理やバージョン管理がしやすくなるんですよ!
 というのも、これまではウディタの各種ファイルは、.datや.mpsのような、人間が読めない「バイナリファイル」で保存されていたため、Gitで差分を取ったりするのが難しかったのです。ですがこれが「テキストファイル」なら、しっかり管理してくれます。

↓マップファイルのテキスト版、最初の方にマップチップ情報、(見えない)後ろにイベントデータが書き込まれています


【Gitでファイルが扱えるようになると何ができる?】
●定期的に「コミット」(=送信?アップ?)することで、コミット単位で書き換えた場所だけを後から確認できる!
 致命的なバグが起きてしまったけれど原因が分からないとき、「いじった部分」だけを追跡すればどこが悪かったのかを見つけ出しやすくなります。

●前にコミットした時点の内容に巻き戻せる! バグが起きて困ったときに、データを巻き戻したりできます。

●他の人のテキストファイルと、修正部分を「マージ(合体)」させることができる。うまく作業の仕組み作りができれば、遠隔での共同作業もいくらか可能になるかも!

→ といったGit利用におけるこれらの強みを、ウディタでも一手間かかるものの享受できるようになります!
 ただ最初はGitの扱いがだいぶ難しいと思いますので、あくまでできる人向けです(私は分からないなりに色々操作した結果、過去のバックアップデータを全部吹っ飛ばしたことがあります)



【TXT入出力にはどんなモードがある?】
 このデータのTXT入出力機能には以下のモードがあります!

●「エディターオプション」から、ファイルのセーブ時に自動でTXTファイルも保存されるよう切り替えできる。
→ 一番シンプルなモード。ゲーム設定やコモン、DB、マップなどを保存した際に自動でTXTも出力されます。ただ環境によっては少し保存処理が重くなるかもしれません。

●「エディターオプション」から、指定したフォルダに「TXTファイルをまとめて出力」、ないし「TXTファイルからまとめて読込」できる。
→ Gitのバージョン管理では全ファイルをまとめて戻すことが多いので、エディター内からも「まとめてTXT読込」でデータを復元できる機能を用意しておきました。その逆の「まとめてTXT出力」機能はたまに出力したい人向け。

●コマンドラインでまとめて出力・読み込みできる。
 Editor.exe -txtoutput -target ALL -txt_folder Data_AutoTXT
 みたいにコマンドプロンプトで入れると、「ALL」対象である「基本データ(ゲーム設定・DB・コモン・タイル設定・マップ)」と「全マップ」が「Data_AutoTXT」フォルダ以下にフォルダ構造を再現してTXT出力されたりします。逆に、そこから読み込んで各ファイルを復元する「-txtinput」モードもあります。
→ batファイルなどを使える人なら、「Gitにコミットする直前だけまとめてTXT出力する」みたいな工夫もできるはずです。
→ 「-target」オプションは 「ALL(全部)」の他に「BASIC(基本データのみ)」と「MAP(全マップ)」があります。



●キー入力強化! 「新押し」と「離した時」の取得が可能に!

 もう上の画像を見てくださるだけでピンと来る方も多いかもしれません!
 3.5ではいつも通りの「押されている状態」を得るだけでなく、「新たに押された瞬間」「離した瞬間」の1フレームだけ値を返す、という取得方法が追加されます!
 
 いちおう自作コモンイベントでもこの処理自体は作れるのですが、従来は毎フレーム「そのキーが押されているか」を記録し続けなければ「このフレーム中に新たに押されたか」「離されたか」を知ることは難しく、意外に手間な部分でした。なんならうまくまだ作れない人もいらっしゃるでしょう。
 そこがワンコマンドで作れるようになったので、以後はだいぶ気楽に使うことができます!


【「新押し」機能はタイピングゲームに強そう!】
 従来の「押されている状態」を使い、「キーボード全キー(を取得)」と合わせてタイピングゲームを作っておられた方もいらっしゃるかもしれませんが、実はこれだと同時押しされている際、「同時押しされている中で最も小さいキーコードの値だけが返される」という問題がありました。つまりAキー(130)から指が離れてない状態でSキー(131)を押しても、判定上は「A(130)」のキー値しか返されないという状況になってしまうのです。

 ですが! 3.5からは「新押し時のみ取得」で「全キー」を取得するようにすれば、最初に押されたキーは1フレームで返し終わってしまい、別キーが受理可能になるので、「新押し時のみ取得」を使えば前のキーを押したまま別のキーを押してもちゃんと新しい方のキーが返される」ようになるのです! これはタイピングゲームがすごい作りやすくなりますよ!
(といっても、0.016秒内に2キーを同時押しされるとやっぱり小さいキーコード1つしか認識されないという問題はあるので、そこまで気にされる方は従来通り1キーずつ全チェックされるしかないんですけれども)

 「1フレーム差あれば全キー受理される」くらいの精度のゲームであれば作るのが相当楽になるはずですので、タイピングゲーム作りに挑戦される方もこの機会にぜひご利用ください!


 もちろんアクションゲームやRPGでもキー反応をより正確にすることができるはずですので、どんなゲームにおいても、ぜひこの「新押し時のみ」「離され時のみ」判定は役立つと思います! 私もいっぱい使う場面がありそうです。


 といった感じで、今回も「作り方」から変わってしまうような重要な新機能がいろいろ実装できました!
 
 この調子だと公開時期がほぼクリスマスになったりするかもしれませんが、どうか気長にお待ちください! まだ故人の都合で、リアルの用事もいろいろ発生してしまっているものでして。


 また、チップやBOOTHなどでご支援くださっている方、本当にありがとうございます!
 いよいよウディタプロ版の売上げも停滞しつつあり、ウディタプロ版や関連するBOOTH売上に対する作業時給がこの3ヶ月間ずっと200円前後になっているので、もうこれが最後の大規模更新のチャンスだと思って色んなものを体中から出しながらも色々追加しておりました!
 が、みなさんのご支援のおかげでもう一踏ん張りがんばれております! 本当に助かります!

 引き続きラストスパート、がんばっていきます!

  • Icon
    くろめー ID00751627
    ラストスパート応援!
  • Icon
    徳之助 ID01164686
    あまり無理がない範囲で頑張ってください。応援しています。

7 tips have been sent.

Sending tips requires user registration.Find details about tips here.

Monthly Archive

Search by Exclusive Perks

Search Articles