シルバーセカンド開発日誌
 ここはゲーム開発者SmokingWOLF(スモーキングウルフ)の開発日誌です。
 【現在の目標】→ ウディタ3.5のバグを落ち着かせる! & 『片道勇者2』の開発!
 ※以前のブログが使えなくなったので、ただいまこの開発日誌に移転中です。
ウディタ 2/6

2025-03-22 (土)   ウディタ3.5開発開始からもうすぐ7ヶ月
 ウディタ3.5正式版を公開してから20日くらい、3.5開発開始(去年8月末)からもうすぐ7ヶ月くらいになろうとしています! 時間使いすぎ!
 数はだいぶ減りましたがまだほぼ毎日ウディタ3.5のバグが出てきています! 修正点は2週間で40個超、1日平均約3個くらいでしょうか。うーんまだ多い!
 


 ちなみに私は現在くしゃみ連射マシンと化しているのでこのシーズンはまったりモードです! その体調で朝から晩まで動ける時間に作業して、ちょうど日々のバグを安定して片付けられるくらいの感じになっています。
 他に何もできていないのは変わりませんが、どのみちこの季節はあまり進まないのでちょうどいい課題量だと思います! ベータ公開、正式リリースしたそれぞれのタイミングもちょうどいい具合でしたね。

 今週もバグ修正だけで日々が終わっているので、変わらずバグ修正リストの掲載とさせていただきます!
 今回はちょっと重要な修正がありましたのでそれだけお知らせします。


【重要な仕様変更 可変DBの「データ名」指定時の挙動】

 「DB操作」コマンドにて、「可変DB」の「データ」を「名前」で指定した際の動作が変更されました!

・これまで → 「ゲーム起動時点のデータ名」でしか判定されなかった

・変更後 → 「ゲーム中に変更された最新のデータ名」で判定するように修正!

 つまりデータ名を「最初の文字列データと同じ」にしてあるタイプの場合、常にその「1番目の文字列」の「名前」でデータを呼び出せるようになります!
 実質、連想配列(文字列キーで読む配列)として使えるようになるわけですね!
 具体例としては、

●「(データ名からの)データ番号の取得」を使えば、ある名前のキャラがリスト(可変DB)にあるか一発検索ができる!(なければ-1が返される)
 
●「名前」に対応する数値や文字列を取り出す!


 といったことが、可変DBにテキトーに文字列を放り込んだり、ちょちょっとDB処理するだけで簡単に作れるようになるわけです!
 修正内容の説明文からは分かりにくいですが、ちょっとひねって使うと意外と革命的な使い道が生まれる仕様変更です!


【この変更による影響について】

 ただし柔軟になった代わりに、過去のデータでは問題が起きる可能性があります!
 たとえばあるタイプを「最初の文字列データと同じ」のデータIDにしてあった場合、その中のキャラクターの名前が変わるイベントなどを作ると、旧仕様ではキャラ名が変わっても「起動時点のデータ名」で扱われるので同じようにDB操作できていましたが、新仕様では「最新の名前」しか受け付けなくなるため、エラーになる可能性があります!
 例:「ヒーローさん」という「データ【名】」で呼んでる処理があった場合、キャラ名とデータ名が「スーパーヒーローさん」に変わると「『ヒーローさん』というデータ名はありません」というエラーが出てしまいます。

→ もし従来の仕様で動かしたい場合は「ゲーム基本設定」の 「Game.exe動作バージョン調整」 にて、「旧Ver3.50時点の挙動で動作」 を選択してください。
 (すでにゲームデータ作成時に「Ver固定済み」のゲームには影響はありません)



【新機能 他ツールの作業時間も計測可能に!】

●【メインウィンドウ/新機能】「テスト」「絵」「文」の各作業時間がタイトルバーに表示される機能を追加!

 → 「テスト」「絵」「文」に指定したアプリが前面になっているとき、各項目に時間が加算されるようになります!

 → 各項目のアプリEXE名は「Editor.ini」内の[EditTimeCount]項目内で設定できます(一般的と思われるソフトはすでに入力済です)。
 例: EditTimeCount_TestPlay_Exe=Game.exe,GamePro.exe,
  (意味:Game.exeやGamePro.exeが前面にあると[テスト]時間に加算される)
  
 → もしこの追加部分だけ見えないようにしたい場合は、Editor.iniの
  [EditTimeCount]内の「EditTimeCount_View=1」を「=0」にしてください。
  その場合は従来通り、各時間が () 側に加算されます 
  
 →「他(EditTimeCount_Etc_EXE=)」という空き枠も用意されているので、
  必要ならEditor.ini内でEXE名を設定してご利用ください。




 以下はその他の細かな修正点です!


▼ウディタ修正内容を開く▼



 という感じで今もほぼ毎日修正中です!
 ウディタのバグが落ち着いたらゲーム開発も再開したいところ! そろそろゲームの作り方を忘れてしまいそうなのでリハビリしていかないとですね。

 そしてみなさまからのご支援、いつも本当に助けになっています! ウディタプロ版では生活できるだけのお金が入らないのになんでもかんでも高すぎるー!!



 そんな値上げに負けずに安心して生活できる体制を整えていくのが当面の目標! 
 今の私のように「(素材集め能力も含めて)1人でもゲームを完成させられるスキルを持てている」というのは、困った状況になるほどすばらしいアドバンテージだと感じます。これは1人でゲームを作り始めた人の強みですよね。
 いやまあ、お金がいっぱいあったらいくらでも外注したいんですけど、なんらかの1ジャンルをお任せするとなるとどうしてもまとまったお金が必要になっちゃうんですよ! いっぱいキャラが出るゲームで「顔グラフィック1枚だけお願いします」とかなかなか注文しにくいですからね(音楽なら1曲だけお願いすることもしやすいかもしれませんが、1曲だけどうしても外注したいレベルのものだったら「伝説になる曲つくってください」みたいな怖いオーダーしか言わなさそう)

 とにかく今もこれからも、現時点で使える知恵と能力を最大限に使って最善手を打っていきます!
 まずはウディタのバグ修正が落ち着くまで耐えつつ、少しずつでも次の準備に移れたらいいなあ、くらいの体制でやっていこうと思っております! うおおおーがんばるぞー!
 2025-03-22 (土) web拍手 by FC2 カテゴリ: ウディタ




2025-03-08 (土)   ウディタ3.5正式版公開! したけど毎日バグ修正!!!
 ということでベータ期間のバグ報告が少なくなってきたので『ウディタ3.5』を3/1に正式公開しました!
 すでに『ウディタ公式サイト』のダウンロードページで公開中ですので気になる方はぜひ!
 
 が、そしたら新たな使い手の方が大量にいらっしゃって新たなバグ報告を送ってくださったり、Microsoft Defenderに急にGame.exeがウィルス扱いされてしまって私がEXE作ったそばから消されまくる(ということは他の皆さんの元でも当然消される)ので消されずに済むパターンを見つけようと泣きながらがんばってたりと大変なことがありました。



 とはいえ修正点の個数自体は減ってきていて、2週間でだいたい70個超えくらいだと思います、って全然減ってないじゃないですか! 1日5個以上は修正点が発生しています!
 朝から晩まで対応する日々で他のことが一切できないのがつらい! 開発予算もとい口座残高がひたすらマイナスになっていきますが、引き続き落ち着くまでがんばります! ご支援くださってる皆さま、いつも本当にありがとうございます!
 
 そんな状況なので、今回も2週間分の修正点を貼り付けるだけの記事です! 難しかったものや印象深かった修正点は赤文字にしています。

▼大量のウディタ修正内容を見てみる▼



 という感じでした!
 不具合修正ついでに、使いやすさを上げるちょっとした調整もたくさん行いました。こんな状況だと、どうせウディタ修正以外のことに神経を振り分けられないですからね! やれるチャンスにまとめてやってしまいましょう。

 引き続きバグ修正を続けつつ、次の目標にも意識を向けていきたいです。朝から晩までウディタ修正で1日終わる日々がそろそろ終わってくれるといいんですが。
 そもそも、去年9月始めからずっとウディタ3.5修正で走り続けてるので、落ち着いたらちょっと休みたい気分もありますね! 春は花粉症や大気汚染がひどくて心身が故障しがちなので。

 とにかく、体調管理もウディタ修正も最善を尽くしていきます!! うおおおー!!
 2025-03-08 (土) web拍手 by FC2 カテゴリ: ウディタ




2025-02-22 (土)   ウディタ3.5ベータ バグ修正だけで終わる日々、一ヶ月経過
 ということで前回に引き続きずっっっとウディタ3.5ベータのバグ修正中です! 朝から晩まで基本それだけやっている生活をしています! 口座残高がもたなくなってきてしまう!
 それでも色んな部分の修正が進んでいるので、だんだん問題は減ってきていると思います!
 修正点はこの2週間で81個! 1日平均5個以上! ってやっぱり多いですよ!!
 なおこっそりベータ公開した1/18からだと全部で修正点が260個以上になりました! たくさんのご報告、ありがとうございます!! ヴォオオオ!!



 本当に何も新ネタがないので、今回もこの2週間の更新履歴紹介です!

▼大量のウディタ修正内容を見てみる▼



 といった感じで、バグの修正だけでなくて使いやすくするための修正もついでにぼちぼちやっております! 私も使いますからね!
 色んなものがキツくなってますが早く落ち着かせたいです!

 まだ確定申告もできてない! 稼ぐための作業が何もできてない! 心もつらい!!
 うまいこと休み休みやっていって自分の管理もしっかりやりつつ、引き続き頑張ります!
 2025-02-22 (土) web拍手 by FC2 カテゴリ: ウディタ




2025-02-08 (土)   ウディタ3.5こっそりベータ中、20日毎日修正してもバグが止まらない!
 ということでウディタ3.5こっそりベータを公開してから約三週間が経ちました。20日で25回更新して185個の修正点がありました。

 が、今でも毎日平均7件くらいのペースでバグが出続けており一般公開どころではありません!! この2週間ですら新たに100個以上も修正点が発生しています!
 本当に朝から晩まで一生懸命バグを直し続けて他に何もできない生活が20日くらい続いているので大変です!



 どうしてこんなもの作っちゃったんだ感もありますが、今は元気だし夜もちゃんと寝てるので20日くらい超全力作業してもまだ平気です! さすがに心は少し疲れてきたかもしれませんね!

 ということで、進捗報告として出せる目玉情報や面白い話などは何もないので、ここ2週間の修正履歴でも貼ってお茶をにごしておきます!
 修正が難しかったところは赤文字にしておきました。

▼大量のウディタ修正内容を見てみる▼



 といった感じで、以上、2週間分の修正履歴でした! バッと出されると一個一個確認するのも大変なくらい多い!
 まだ一部の仕様も調整途上なので、みなさまは今のベータは信用せず、一般公開されたバージョンだけを信じてくださいね!

 そしてまだ一般公開もしてないのに各種ご支援をしてくださっている皆さま、本当にありがとうございます!
 そろそろプロ版売上だけだと時給100円くらいになったり100円切ったりしそうで口座残高がすごい勢いで減ってるのでとても助かっております!
 現状のユーザー数を考えると、もはやウディタ関連で細かいマネタイズするよりは自分でゲーム作った方が圧倒的にお金になりますしクリエイター魂も満たされやすいので、一刻も早くバグ修正を落ち着かせてゲーム開発に戻りたいですね!

 ギャーそういえばそろそろ確定申告もありました! 税金払ってお金どれだけ残るかなあ。この調子だとまた次回作の開発も『片道勇者プラス』のときみたいに開発予算2万円コースになりそうで緊張感が高まってきましたね(※本当に素材費用2万円くらいでできてます)。
 しかしそれでも、すばらしい素材を無料や安価で公開・販売してくださっている皆さまのおかげで、ほぼ一文無しでもバッチリすばらしいものを作れますからいい時代です。ウディタですら今や『Visual Studio』の無料版を使ってタダで作ってますからね!
 いま一番大事なのは意欲! そしてそれを生むための健康! パワー! いただいたご支援はそれらの維持にも使わせていただきます!

 ということで、しばらくは引き続きウディタのバグ修正がんばっていきます!
 早く安定させて一般公開したーい!
 2025-02-08 (土) web拍手 by FC2 カテゴリ: ウディタ




2025-01-25 (土)   ウディタ3.5、こっそりベータ公開中!
 ということで1/18からこっそりウディタ3.5を公開中です! ウディタ公式サイトのバグ報告スレッドで!
 Ver3.500で公開され、今はVer3.509になっています。毎日平均10点以上も直し続けて1/24までの修正点が80個近くになるほど大量のバグが発生しているので、表だっての公開はまだ控えております! まだベータな感じですが気になる方はよければお試しください! 今も必死で修正中です!

 そんな中、さっそく新機能を使ってすごいものを作っておられる方もいらっしゃるので、Xからご紹介させていただきます! みなさま本当にありがとうございます!

 ※Ver3.507で「ピクチャ挙動Ver2」使用時の文字列の改行幅が2倍になりました。申し訳ございませんがこちらが正しい仕様っぽいので修正が必要な方は修正お願いします!



【画像データをXY配列(二次元配列)で管理できる機能で画像合成】

 こちらで投稿されている映像のようにオーバーレイ合成やクリッピングマスクっぽいこともできるようになりました!(しかもXY配列4つ使ってそのままピクチャ表示することもできます!)
 画像のアルファ値やRGB値をXY配列に読み書きする機能を使えば、画像合成回りの自由度がかなり上がります! 
 隠しコード「<<LOAD_IMAGE_TO_XY/A=?/R=?/G=?/B=?>>(ファイル名)」を使えば、画像ファイルの2次元データを4つのXY配列(ARGB分)に読み込むことができますので、あとは計算次第でなんでもできますよ!




【お絵かき掲示板が作れる!】

 前述の「XY配列の内容を画像として表示する機能」を使えば、もちろんお絵かき掲示板だって作れます! がこちらは想像以上にちゃんと動いててすごい!
 今回の新機能(隠しコード)で、XY配列から画像をファイル出力することも可能になりましたので、ウディタで完結するペイントツールを作ることも普通に可能になりました!

https://x.com/F0X_k/status/1880511375426089325




【【XY配列や新しい計算機能を使って地形生成】】

 XY配列が来たので作れたー! とおっしゃってた気がしますが、アルゴリズムでこんな自然な地形生成ができるそうです! すごい!
 XY配列にその地形情報を色塗りすれば画像にもできるので、こんな風に「ランダム世界の世界地図」のお手軽表示だってできるようになります!

 


【サウンドのパン機能を3Dゲームに搭載】

 そしてこちらはサウンドのパン機能の利用見本! 音源の場所が3Dチックに聞こえるようになっていて、ウディタ3D学会の方々の作品もさらに満足度アップ! 
 そもそもこの3D具合の完成度がすさまじい!! すごい!





【【ミニマップをゲーム内だけで作れる!】】

 XY配列を使えば無から画像が作れますので、ミニマップだってゲーム内だけでピクチャ1枚にして作れます! ということを実演してくださっています!

https://x.com/shiratamamoti/status/1882064450259402816




【ウディタ3.5の紹介記事を書いてくださいました】

 そしてこちらはウディタ3.5の感想記事! テンション高い内容&ウルファールのイラストまでありがとうございます! 

【ウディタver3.5(ベータ)公開おめでとうございます記事 (あきら様より)】 (アーカイブ)


 プロ版にはレイヤー5まで使えたりフォントの暗号化ができたりしますのでさらなる上級者の方はよければぜひ!(ただしウディコン審査中はプロ版が使えないのでご注意を!)




【これまでの新機能紹介記事のリンクまとめ】

 これまで書いてきた新機能紹介の記事が8回分もあるので、もし細かく見ていきたい方はこちらもどうぞ!

その1(セキュリティ関連や始まり)
その2(空Ev作成/フォント暗号化)
その3(経路探索/キャラレイヤー強化)
その4(ピクチャリンク/DBソート/特殊文字入力) 
その5(自動移動/パン/オートタイルアニメ速度)
その6(XY配列/TXT入出力[Git用]) 
その7(タブウィンドウ/正規表現/ゲーム内画像生成/レイヤー5搭載)
その8(BGSチャンネル機能・エフェクトディレイ・コマンド折りたたみ)



【引き続きバグ修正がんばります!】

 しばらくは必死にウディタ3.5のバグを直す日々が続くと思います!
 安全にご利用になりたい方はもう少しお待ちいただいてから、もう3.5に慣れていっちゃうぞーという方はぜひもうお試しください! 今はウディタ公式のバグ報告スレッドでこっそり公開中です!

 ということで引き続きバグ修正、がんばっていきます!
 開発費はすでに完全に枯渇してるので石油王のウディタユーザーの方がいらっしゃいましたらご支援/投げ銭もお待ちしております!!! さすがにここまで来て新しくウディタプロ版買われる人はあんまりいらっしゃらないので、ウディタのマネタイズとしてはほぼ一旦終了してしまった感じです(そしてこれ以上努力してウディタを売ろうとするより、自分でゲームを作った方が圧倒的にお金にできます、当たれば!)。

 早くウディタ3.5を落ち着かせて私もゲーム作っていかないとですね! がんばります!
 2025-01-25 (土) web拍手 by FC2 カテゴリ: ウディタ




2025-01-11 (土)   ウディタ3.5開発中その8 BGSチャンネル・コマンド折りたたみ等
 ウディタ3.5開発の経過報告、その8! たぶん最終回です!
 引き続きX(Twitter)などでご要望をいただいて「あ、これ入れたいと思ってたやつだ、忘れてた!」となっては追加で実装する日々が続いております!
 新機能は目次だけご覧になればだいたい分かるとは思いますが、それぞれ詳しく見ていきましょう!


●BGSの多チャンネル化!


 なんとウディタ3.5ではBGSにチャンネル機能が付きます!
 以下の映像で再生見本を流しておりますので気になる方はぜひ!

https://www.youtube.com/watch?v=-raNSyYmVUg


 「BGS」とは「WAVやOGG、MP3形式」のサウンドのみ、つまりMIDI以外を「ループ」で流せるモードなのですが、これが多チャンネルで再生できると色んなことができます!
 滝の音や鳥の声みたいな環境音をたくさん同時に鳴らしたり、パン(左右偏り)や音量の大小差を付けたり、なんでしたら状況が変わるとシームレスに音が切り替わっていくインタラクティブミュージック的なこともしやすくなるかもしれません!
 こだわる人には色々使い道があると思いますので、今後ぜひご利用ください!
 


●ピクチャエフェクトにディレイ設定可!

 エフェクトの「ピクチャ」にディレイが設定可能になります!
 つまり座標を元のピクチャから+10する、みたいなのをディレイを付けて未来の分まで設定しほうだいになるってことですね!


 これによって、ディレイだけで大量のエフェクト予約などして気軽に動かしたりもできますし、そっちのほうがピクチャ本体を動かすより処理が軽いと思いますので、色んな意味でさらに無理ができると思います! 私もピクチャエフェクトで色々制御することが多いので、これは私も欲しかったやつです!

 ちなみに、これはピクチャコマンドの「ディレイ」設定と内部処理的には同じものが使われていますので、ピクチャ側の「ディレイリセット」コマンドでエフェクトのディレイごと全部消すことができます。まとめて消えた方がラクだと思いますのでこれでいきます!



●コマンド折りたたみやコメントアウトが可能に!

 これも映像を作ってありますのでよければご覧ください!
https://www.youtube.com/watch?v=jZzEkfpF1yQ


 「折りたたみ」は文字通り、「条件分岐」や「ループ」コマンドを折りたたんでおける機能です! 条件分岐は分岐1つずつでも、全部まとめてでも折りたためます!
 折りたたんだコマンドはダブルクリックですぐ展開可能です。

 「コメントアウト」は直接そういうコマンド名があるわけではなく『0回ループに入れる』というコマンドが追加されます!
 0回ループに入れた部分は処理されないので、コメントと同じく緑色になります。処理されない部分が一目瞭然に!
 なお「0回ループ」内に「ラベル地点(他の場所からジャンプしてこられる)」コマンドを入れてそこに飛ばす、という使い方もあるので、0回ループ内でも「ラベル地点」があったらそこ以降は色が元に戻るようにしています。安心!

 また、「0回ループ」や「1回ループ」を選択したときに右クリックメニューを開くと、ループ0→1回、1→0回の切り替えもできます! ショートカット(Q)もあるのでバッチリ!
 これから気軽に0~1回ループに入れていきましょう!
 ただし「ループから出る」とか「ループ先頭に戻る」処理の範囲が変わってしまうので、それだけはご注意を。




●ファイル選択ウィンドウで音声再生も可能に!+画像が自動拡大で見やすく!

 ファイル選択画面に以下の強化を加えました!

●画像サイズに応じて自動拡大縮小されるようになります! 小さい画像は200~400%に、大きな画像は枠内におさまるように。
●音声再生が可能です! MIDIはゲーム内と同じ音源で再生されますし、効果音のチェックも非常にラクになります!


 見てみたい方はこちらの動画より! ↓
https://www.youtube.com/watch?v=-kd-mIkBHaM


 しかしこの一見大したことなさそうな『ファイル選択ウィンドウ』、搭載されている機能を考えると余裕で1アプリ相当になると思います! ツクールとかに入ってるファイル選択ウィンドウも実は凄い! いろいろ見られるようにしたり、色んな形式の音声を再生できるようにしておくのは、実は思ったよりも大変でした。
 でも、これからは画像も音声も気軽にチェックできますよ!



●\imgの特殊文字を強化! 文中にアニメーションアイコンを入れたり画像の一部切り出し可能に!

 「\img」または「\imgS」に裏技を追加しました!
 「\img(S)」の後に「<DIV/」「<CUT/」「<ANIME/」から始まるコードを記入すると、画像を特別な方法で表示することができます。それぞれの例は以下の通りです。

- 分割表示 DIV \\img[<DIV/X3/Y4/5>Pic/Test.jpg]
  「Pic/Test.jpg」を横3、縦4パターンで分割し、パターン5を表示します。
  パターン番号はピクチャと同じで、「1」から始まります。

- 部分切り出し CUT \\img[<CUT/X123-150/Y200-300>Pic/Test.jpg]
 「Pic/Test.jpg」の X123~150、Y200~300pxの範囲だけ切り出して表示します。
  X0-2なら左端の1ピクセル目から幅2ピクセル分だけ表示されます。

- アニメアイコン ANIME \\img[<ANIME/X6/Y4/8>CharaChip/Chicken.png]
 「CharaChip/Chicken.png」を横6、縦4パターンで分割し、8フレームごとにアニメーションします。
 アイコンとしてアニメーションさせた上にルビを付けることも可能です!
 見本はこちら↓
  → 





 という感じで、今回もウディタ3.5での表現力がアップしたり、開発の快適性もアップしております! 普通に一ヶ月単位で遅れるくらい実装が大変な部分もありましたが、この先ずっとウディタを使うことを考えれば安い投資でしょう!


<余談:マスク機能について>
 あと、ご要望の中でたびたび挙がるものとしてマスク機能の強化があるのですが、これはライブラリ側の都合で、今の通り「マスク1枚しか使えない」+「画像を回転させたり拡大したりしてマスクすることはできなさそう」が限界そうでした(そしておそらく、1フレーム中に何度も切り替えする前提の処理速度で使えるマスク切り替え機能は入ってない気がします)。なので、マスクについては当面は変更されないと思います。

 他にも描画周りはほとんどの処理をライブラリに依存しており、「何かの新機能を作るべく代わりの機能で似た機能を代替しようと思ったらめちゃめちゃ重くて結局使い物にならなかったー!」となって終わる経験も今回たびたび繰り返しています。
 需要が高くても実装されないものは、だいたいこういう経緯で搭載を諦めていることが多かったりしますのでその点はご容赦ください。
 他にも実装されない理由として、単純に技術的に難しいとか、出てきそうなバグがあまりに多すぎて心が折れた、私にとっての需要や興味がなさすぎた、などもあります。ウディタ3.5開発では、それを乗り越えられた量がすごくいっぱいありましたね! やはり元気は大事!


<今後について>
 そしてまた、ウディタ開発予算もすでに超絶マイナス突破してるので、今回挙げた分で、3.5への修正は終わりにする予定です! お賽銭やご支援をくださった皆さま、本当にありがとうございます!
 現在は、すぐ見つかるバグの修正や、新機能の調整や、マニュアル修正にいそしんでおります! 一通りすぐ見つけられる分の問題を解決できましたらリリースできると思いますので、ほんのり楽しみにしつつ、もう少々お待ちください!(もちろん公開されてもバグは出るでしょうね! よければご協力お願いいたします)

 それでは最後の仕上げ作業、がんばっていきます!
 2025-01-11 (土) web拍手 by FC2 カテゴリ: ウディタ




2024-12-14 (土)   ウディタ3.5開発中7 タブ・正規表現・レイヤー5・XY配列ピクチャ
 ウディタ3.5開発の経過報告、その7です!
 Xなどで様々なご要望をいただいており「あ、これ入れたいと思ってたやつだ!」となっては追加で実装する日々が続いております!
 当面の最後の大規模実装だと思って、自分の技術で作れそうなもの、かつ私や多くの人が必要そうなものはどんどん採り入れ中です。

 ということで、今回もウディタ3.5に実装される新機能をご紹介します!



●タブウィンドウ化! 行ったり来たりする作業の効率アップ!



 ウディタ3.5からは「マップイベントウィンドウ」「コモンイベントウィンドウ」「データベースウィンドウ」の3つにタブが付きます!
 いま開いている場所(イベント番号や行数、スクロール位置など)がタブごとに保存できるので、たまにある「あっちとこっちの処理を見比べながらデータをコピーしたり入力したりする」場面では非常に便利です!
 忘れておきたくない場所にタブを開いておけば後からでも開けるので安心!

 特に「データベースウィンドウ」でのマルチウィンドウ機能が欲しいというご要望をだいぶ昔からいただいていたのですが、それもこのタブ機能で、ある程度はカバーできるようになると思います(技術的な都合でよさげなマルチウィンドウが作れませんでした)。

 なおこのタブ機能、ちゃんと「エディターオプション」から従来通りの「タブなし」に戻すこともできます! 以前通りの方がいい方や、タブの縦幅すらカットしたい人にはそちらもぜひ!




●【正規表現】が「文字列操作」や「条件(文字列)」に搭載!

 文字列周りの処理についに『正規表現』が実装されました!
 紹介映像を作りましたので見られる方は以下をどうぞ! 正規表現について知識ゼロの方でも、ほんのり使い方が分かると思います! たぶん。


 ウディタ3.5では、【文字列操作】に「正規表現で()内抽出」と「正規表現で置換」、そして【条件(文字列)】の比較コマンドに「の正規表現と一致」が追加されます!
(ちなみに「条件(文字列)」には他にも「を含まない」場合と「が最後にある」場合の比較コマンドも追加されました! これらも便利!)

 「正規表現」とはおおまかに言うと「あいまい検索」みたいなことができる機能!
 たとえば「人数400人」が入った文字列S1に対して、正規表現で「人数(\d{1,4})人」の「(正規表現の)()内を抽出」処理を行うと、S1には「400」という数値のみが返されるのです!
 「\d{1,4}」は「1~4桁の半角数字」で、それを()で囲んでいるので、その数値部分だけ抽出して返してくれるわけですね!
 もし1つの文字列に2つ以上当てはまる部分があったら、2行の文字列として返してくれるようになっています。
 
 また、「条件(文字列」の「の正規表現と一致」も同様で、正規表現で「人数\d{1,4}人」(\d{1,4}=1~4桁の半角数字)と指定しておくと、文字列側が「人数1人」でも「人数1234人」でも「条件を成立」させられるのです!!
 一方で、文字列が「人が1人」だった場合は、いくら似てても「成立しません」。

 このあいまいさは「\d」に始まる「メタ文字」というもので色々な表現を書くことができます。
 たとえばさっきの延長で、「\d{1-3}-\d{1-4}-\d{1-4}」の正規表現に該当する文字列が含まれてたら「電話番号っぽい数字が入力されたぞ!」みたいに認識できたりするわけです! 
 これを駆使すれば、「掲示板への書き込みで電話番号っぽいのが書かれていたらその投稿を弾く」みたいな処理だって作れるわけですね! 正規表現のおかげで、「000-0000-0000」から「999-9999-9999」まで全パターンの禁止ワードを入れたりする必要はなくなるのです!

 この「正規表現」はプログラミングにおいてよく使われるもので、文字列の取り回しやすさの限界値が大幅にアップします!
 といってもかなりのガチ勢向けで、私も普段よく使うもの以外は見ずに書けないので割と達人向けです!
 テキストスクリプトなどを作成される方にはとても便利だと思いますので、よければぜひご利用ください。
 
 これから正規表現を学びたい人には、「正規表現 サンプル」などで検索すれば勉強になるページが色々出ると思いますので、色々探してみてください!




●マップのレイヤーが5まで使用可能に!(プロ版専用)

 これまで3レイヤーまでしか使えなかったマップのレイヤーが、ウディタ3.5からはレイヤー5まで使用可能になります! ただし使用できるのは「プロ版のみ」です!

 仮にプロ版で「レイヤー5」まで使ったマップを作って、そのデータを無料版Game.exeで起動すると、「レイヤー3までしか表示されなくなります」ので、その点はご注意ください。
 つまりウディコンでは、審査中はマップレイヤー4~5は使えないということですね。

 
 ↑マップレイヤーの拡張は「ゲーム基本設定Pro」から設定可能です。
 レイヤー4だとマップの描画負荷が1.33倍、レイヤー5だと1.67倍になりますのでそこはご注意を!
 それでも、従来よりもさらに複雑なマップ表現が行えるようになります!




●「XY配列をピクチャとして表示」する機能を追加!

 これは事実上、「ゲーム内で好きに画像を作れる」機能です!
 アルファ値、R、G、Bのパラメータを保存した4つのXY配列(2次元配列、無限に作れる)をピクチャのファイル名指定欄に隠しコマンドで指定すると、その配列の値にしたがった画像をゲーム中に表示することができます!!
 以下のコマンドをピクチャのファイル名のところに入れると出せます!

「<XY_IMAGE/A=?/R=?/G=?/B=?/XSIZE=??/YSIZE=??>」または
「<XY_IMAGE/A=?/R=?/G=?/B=?>」


 「?」部分には、Aならアルファ値だけを格納したXY配列番号を、R、G、Bにも同様に各色の0~255の値を記したXY配列番号を指定します。XSIZE=??やYSIZE=??の部分には使用するサイズを記載します。
 たとえば「<XY_IMAGE/A=1/R=2/G=3/B=4>」と指定すると、アルファ値としてXY配列「1」、R、G、B値としてXY配列「2,3,4」に入っている値でピクチャを表示してくれるのです!

↓右上に出てるのがXY配列ピクチャで作ったミニマップ!


 つまりマップの通行設定を格納して即席で「ミニマップ」を作ったり、なんらかの「グラフ」を出したり、「複数の画像」を読み込んで1枚に重ねたりと色んな使い方ができます!
 特にミニマップがゲーム内処理だけで作れるようになるのは大きいのではないでしょうか!(従来から、アイコンなどを活用して作ることはできてましたけれどね!)

 なお、XY配列からピクチャ化する「表示」の瞬間の負荷は大きめになってしまっているので、そこはご了承ください。
 毎フレームやるにはちょっと向かないかもしれないので、【主人公付近だけ表示するミニマップ】を作るにも、たとえばいったん全マップ分を作っておいて「マスク」で主人公の近くの分だけを見せるようにするとか、そういった工夫が必要になる可能性もあります。



●キー入力に「押し続けフレーム数」の取得も追加!


 前回、「キー入力」に「新押し時のみ」「離した時のみ」の取得モードを追加しましたが、コメントを見てあと1つ足りないと思ったので「押し続けフレーム数」の取得モードも追加しました!
 これで「新押し時」と合わせれば、「↑キーを押しっぱなしにしてたら一定時間ごとにリピートされる」、「ショットキーを押し続けていると一定間隔で自動連射」みたいなのが簡単に作れるようになります!
 情報としてはシンプルですが色んな処理を書かずに済むようになるので、ちょっと楽になるはずです! これまで上手に処理を組めなかった人にもお役に立てるでしょう!

(なお、この「新押し時のみ」~「押し続けフレーム」の取得モードは、「キーボード・パッドボタン(スティックやPOVキー除く)・マウスクリック」のみに使えますので、その点はご了承ください)



●エディターからのテストプレイ開始が快適に!

 エディターからのテストプレイ、これまでは『すでにGame.exeがテストで立ち上がってる状態』でテストプレイを開始すると「(ゲームの)重複起動です」みたいなエラーが出るだけでなんだか面倒臭い感じになっていました!

 が! 今回からはすでにテストプレイからのGame.exeが立ち上がっていれば次にテストプレイを押したとき、自動でそのゲームのウィンドウが最前面に来ます! 地味だけどとても便利!



 ちなみにこの機能、どうしてこれまで簡単に作れなかったかというと、Editor.exeとGame.exeの通信機能を用意しないとダメだったからですね!
 というのも、最近のWindowsはよそのEXEのウィンドウをいじったりする処理が極めて強く制限されており、Editorから立ち上げたと分かっているGame.exeのウィンドウすら、Editorから直接最前面にすることができなかったのです。
 なので最前面にするだけといっても、内部的にEditorからGameに対して「最前面に出して~」と通信を行い、「Game.exe側でそれを受信したら自主的に最前面表示になる」という回りくどい手順が必要だったのです。
 
 今後はゲーム画面を開きたかったら、とにかくF9やCtrl+Tやテストプレイボタンを押せばいいだけになるので手軽です!
 もう毎回数秒かけてマウスカーソルでタスクバーからゲームのウィンドウを開きなおす必要もなくなるので、効率がほんのちょっとアップするはずです!




 という感じで、ウディタ3.5での快適性アップや、やれることの幅の拡張が進んでおります!

 残る新機能予定は『BGSの多チャンネル化』など! BGSは割と全体に処理が食い込んでるので、すごい修正量となってしまいますが、ウディタの長年の弱点だったのでこの機会に補強したいと考えています!
 根本からの修正は今みたいな大規模修正のチャンスじゃないとなかなか着手できない部分なので、これを逃したら普通に次のチャンスは 3年後 などになってしまうと思います。せっかくなので、この機会に強化しちゃいましょう!
 もちろんここまで作った機能にも大量のバグが出ておりまして「ギョワアア!」って叫びながら直しております!


 そして引き続き、チップやBOOTHなどからご支援くださっている方、本当にありがとうございます! リソース的にはもう限界をややオーバーしちゃってましたが、おかげさまでもう一踏ん張りがんばれております! 本当に助かります!
 
 ウディタ3.5のリリースは運がよければ今年中、やっぱりダメそうなら来年始め頃になると思いますが、気長にお待ちいただけますと幸いです。当面の最終大規模更新と思って全力を尽くします!


 そしてまた、12月24日にはうちのサイト、シルバーセカンドが26周年! もし生放送ができそうなら今年を振り返る生放送をやろうと思いますので、そちらもうっすらお楽しみに!(体調の都合でナシになる可能性は常にあります)

 ということで年末に向けてのラストスパート、引き続きがんばります! うおお!!
 2024-12-14 (土) web拍手 by FC2 カテゴリ: ウディタ




2024-11-30 (土)   ウディタ3.5開発中その6 キー入力・XY配列・Git間接対応
 ということでウディタ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円前後になっているので、もうこれが最後の大規模更新のチャンスだと思って色んなものを体中から出しながらも色々追加しておりました!
 が、みなさんのご支援のおかげでもう一踏ん張りがんばれております! 本当に助かります!

 引き続きラストスパート、がんばっていきます!
 2024-11-30 (土) web拍手 by FC2 カテゴリ: ウディタ




2024-11-16 (土)   ウディタ3.5開発中その5 自動移動・サウンドのパン機能など
 ということでウディタ3.5開発の経過報告、その5です!
 「これまで欲しかったけど入れられなかった新機能」をまだまだいっぱい追加中!
 今回もご紹介していきます!


●動作指定に「自動移動」機能を搭載!

 以前、隠しコードで「経路探索機能」を実装しましたよ~とお伝えしましたが、次はもっと使いやすいよう、「動作指定」に落とし込んでみました!
 それがこの「自動移動」コマンドです!
 紹介映像を作りましたのでよければまずそちらをご覧ください!

 ※映像は開発中のものです


 この「自動機能」、行き先を指定すれば勝手にそこまで経路を判断して歩いて行ってくれます!
 モードとしては[単純][スマート][大負荷]の3種が用意されています。それぞれ以下の違いがあります。


 
- 自動移動[単純]:最初に「マップ通行設定のみ(Evはないものとする)」で移動ルートを計算し、以後はルート通り進みます。進路上に他のイベントや主人公がいた場合は止まります。
 → プレイヤーやイベントが道を塞いで止まってしまっても問題ない状況向け。
 
- 自動移動[スマート]:最初に大局的な進行ルートを「マップ通行設定」のみで取得し、基本はそれに沿って移動しますが、他イベントや主人公が経路を塞いでいた場合は少し迂回して移動します。
 → それなりに賢く移動させたい場合はこれがおすすめです。負荷もほどほど。
  ただし「イベントでゴールまでの通路が塞がれている」場合は途中で止まってしまいます。
 
- 自動移動[大負荷]:大局的な進行ルートも「マップとイベント両方込み」の当たり判定で取得し、数歩ごとに何度もおおまかなルートを再取得し直します。負荷が高いです。
 → イベントが完全に道を塞いでいて、非常に遠回りせねばならない状況でも経路探索に成功する可能性があります。
  ただし「ランダム移動するキャラがたまたま経路を塞いでいる」場合もそれに敏感に反応して大局的な進行ルートを変えてしまったり、「道がない」と判断して一時的に止まってしまったりする場合があります。

- 「自動移動一歩のみ」オプション: 自動移動のゴール地点まで行かず、1歩移動した時点で処理を終了するオプションです。ゴール地点が頻繁に変化する状況で有用です(たとえばこれナシで「自動移動」すると、追いかけっこのときも「3秒前の主人公の位置」を追い続けてしまい、そこに一回着くまで自動移動経路が変わらない問題が起きます! そういうときに「一歩のみ」オプションをオンにして「動作を繰り返す」ようにしておけば、1歩で終了→最新の場所を経路探索して1歩移動→……と繰り返すので常に最新の位置を追い続けてくれます。ただし負荷は高くなります)


 という感じ! 基本は、キャラを避けて移動させたいなら「スマート」、そうでないなら「単純」モード、ゴール地点が移動する場合は「自動移動一歩のみ」をオンにする、で問題ないと思います!

【これからの動作指定】
 動作指定でこれまで↑↑→→↓↓←↑←↑みたいに1歩ずつ指定していたのが、今後は行き先までの経路を「自動移動」ワンボタンで設定できるため、動作指定の作業はかなり簡略化されると思います! 後述の「マップ表示」機能と合わせればさらにサクサク入力可能なはず!

 もちろん機能面での広がりも大きく、「スマート」自動移動で「たくさんイベントが歩く中をうまくよけて通らせる」ことがワンボタンでできるようになったのは非常に大きな点です。
 想像してみてください。酒場のウェイターやウェイトレスさんが、歩いている人を避けながらテーブルに食事を配膳しにいったり食器を回収しにいくような指定だってものすごく簡単にできるようになるんですよ!
 
 なんなら「自動生成されたマップ」や、「自分で1マスずつ壁を配置して作った村」内ですら、簡単に道を判断して移動させられるようになるというのはものすごく大きなメリットのはず! 仕事場に行って働いて、夜になったら自分の家のベッドに帰るなんて処理も簡単!
 作れるゲームの幅も一気に広がるはずです!



●動作指定中の「マップ表示」機能も!

 そして引き続き「動作指定」画面の話なのですが、ウディタ3.5からは動作指定を設定中に並行動作するマップ画面を表示させることが可能になります! むしろどうして今までなかったんだ感がありますが、実装はすごく面倒臭かったです!

 ↓並行して表示できる「マップ画面」搭載!


 このマップ画面は、「クリックした地点の座標」や、「そこにあるイベント名」を確認できるだけでなく、【ダブルクリックすると動作指定画面の「座標指定」欄にその座標がセット】されます!

 なので今回の「自動移動」コマンドと合わせれば、

 マップをダブルクリック(座標が格納される) →
 「自動移動」をぽちっ →
 次の移動先をダブルクリック →
 「自動移動」をぽちっ


 という手順を繰り返すだけで、あっという間に経路指定ができるのです!
 もうこれまでのように座標をメモしながら↑↑→→とか一歩接近とか入力しまくらなくてもいいんです! 
 
 これによって動作指定周りの入力効率が冗談抜きで10倍くらいになると思いますので、キャラを動かすのもこれまで以上に気軽にできると思います。



●サウンドのパン機能!

 お待たせしました! 「サウンド」コマンドについに『パン』機能が搭載されます!
 その前に「パン」って何?って思われる方も多いと思いますが、これは「音の左右バランスを調整する機能」のこと! 右から鳴らすとか、ちょっと左から鳴らす、みたいなことができるわけですね!
 
 以下はパンの見本映像! ヘッドフォン推奨です(画質が低すぎるとモノラル音声になってパンが体験できないので、その場合は画質を「360p」以上に上げてみてください)


 上の映像にあるように、「BGM・BGS」の再生においては、同じファイル名を指定して違うパンの値をセットすることで、「再生を止めずに」パンだけ変更が可能です!
 効果音は「再生開始時にしかパンをセットできません」のでその点はご注意を!
 もし右から左にぴゅ~んと流れる音を流したい場合は「BGS」などをご利用ください。
 
 このサウンドのパン機能、音の位置にこだわる場合は、たぶんどんなゲームにでも使えます。
 「右から戦闘の音が聞こえる!」といった情報はアクションゲームでも有用ですし、ホラーゲームで部屋の前を通り過ぎていく何者かの足音を表現したりするのも面白そうですね。
 パンは「-255(左)~0(中央)~255(右)」の範囲で設定可能で、いつものように「変数」でも指定できます。



●DBやコモンからのデータベース参照が「タイプ名」でも可能に!

 このタイトルを見てすぐ意味が分かる人は相当のウディタリアンです!
 データベースの「データ名」や「データ内容の特殊設定」、コモンイベントの「入力設定」などにおいて、データベースから「データ名」を読み取って番号と一緒に並記する機能があります。それを「データベース参照」と言うのですが、これまではDBのタイプには「番号」しか指定できませんでした。
 が! Ver3.5からは「タイプ名」の【名前】でも指定が可能となります! 以下の画像のように!



 「タイプ呼び出しなんて【名前】で呼んでも【番号】で呼んでも同じじゃん」と思われる方もいらっしゃるかもしれませんが、使い込んでいくと全然そうじゃないんですよ! 開発が長期に渡ると「DBのタイプの場所(番号)を入れ変えたい~!」ってなることが意外にあって、そんなとき番号でタイプ指定してるとヘタに場所(タイプ番号)が変えられなくて困るんですよ!
 一方、そこを「名前」で指定しておけば、DBタイプの番号が変わってもそのまま読み込まれるので安心! というわけです!(まあ番号は変えられても、今度はDBタイプ「名」の方が簡単には変えられなくなるんですけども。でも名前は普通変えないですからね)

 ということで、これからはデータベースも整理しやすくなるでしょう!
 私もいま開発中のゲームで「DB並べ替えたいなあ、でも面倒臭くなるしなあ」と50回くらい思ったので、この機能を使ってきれいに並べ替えたいと思います。


●オートタイルアニメ速度変更!

 ウディタのオートタイルは、画像を横に長くしてアニメパターンを作っておくと自動でアニメーションさせることができるのですが、これまでは「毎秒3コマ(20フレームに1回)」のスピードでしかアニメーションさせられませんでした。
 ですが今回、オートタイルにフレーム数を指定する手段が搭載されます!

 たとえば「Water_Auto.png」というオートタイルがあったとき、「Water_Auto_FRAME=5.png」という感じに「_FRAME=??」と入れると、1コマのアニメーション時間をそのフレーム数に変更できるのです!(※1フレーム=1/60秒)

↓滝のアニメーション速度を変えた見本
https://twitter.com/WO_LF/status/1853416989018214459

 これまでも強引にピクチャでオートタイルを再現してアニメーション速度を変えることもできなくはありませんでしたが、今回からはもっとマシな方法で速度を変更できます! よければぜひご利用ください!



 という感じで、今回も新機能盛りだくさん!
 次がたぶん最終のご紹介になると思います! つまり公開もおそらく間近という雰囲気になってきますので、ご期待ください!

 とはいえ、今回いじった分がかなり多くて致命的なバグもまだ結構ポコポコ出ているため、いつ出せるかははっきりと明言しにくい状況です。「11月末か12月頭くらいに出せたらいいなあ!」くらいで見込んでおりますが、あまり信用しすぎずにお待ちください。
 2024-11-16 (土) web拍手 by FC2 カテゴリ: ウディタ




2024-11-02 (土)   ウディタ3.5開発中その4 ピクチャリンク・DBソートなど
 ということでたぶんその4くらいになったウディタ3.5開発の経過報告です!
 引き続き「これまで欲しかったけど入れられなかった新機能」をいろいろ追加中!
 今回もご紹介していきます!


●キャラへのピクチャリンク機能

 今回の目玉! マップイベントやプレイヤーなどのキャラクターに『ピクチャをリンク』させることが可能になります!

 ピクチャをキャラにピクチャリンクさせるとどうなるかというと、『ピクチャをキャラクターに永久に追従させられる』ようになるのです!
 これは「マップイベント」を使う自作システムを作り込む人にはうれしい機能!
 もう並列イベントでゲージのピクチャをキャラ位置に動かし続けなくてもいい時代になります!

 より厳密には、ピクチャリンクすると「キャラの(マップズームも加味した)画面上のX・Y座標をリンクしたピクチャに『加算』し、マップズームに応じた『拡大率変化』をかける」という処理が行われます。一言でいうと、キャラクターにピクチャがくっついたような動きをするわけです。

 紹介映像も作ってみましたので、よければぜひご覧ください!



 で、ピクチャリンク機能は「エフェクト」コマンドの「キャラ」欄から使用可能でして、設定可能な内容は以下の通りとなっています。「マップズーム(の拡大率)への連動」は外すことも可能です。

ピクチャID
 キャラにリンクしたいピクチャ番号を設定します。

リンクさせるレイヤー
 - キャラの表に:キャラのすぐ表側にピクチャが表示されます(キャラ本体と同じく、リンクさせたピクチャが他キャラや▲チップで隠れます)。
 - キャラの裏に:キャラのすぐ裏側にピクチャが表示されます。
 - 影レイヤーに:「全てのキャラの足下」のレイヤー、かつ「地面のY座標(キャラの「高さ」を変更しても変化しません)」にピクチャが表示されます。(ピクチャレイヤーのマップの上、キャラの下とほぼ同じ)
 - ピクチャのまま:ピクチャのレイヤーのまま、キャラの座標や拡大率のみ反映し続けます。

連動させるパラメータ
 - XY拡大連動:(マップズームを考慮した)画面X・Y座標をピクチャに「加算」し、マップズームによる拡大率の変化をピクチャにも反映させます。
 - XYのみ連動:(マップズームを考慮した)画面X・Y座標をピクチャに「加算」します。マップズームの拡大率はピクチャに反映されません。



【どんなことに使える?】
 ピクチャリンク機能の用途ですぐ思いつくのは、頭の上に状態異常マークや感情マークを出したまま歩かせたり、HPゲージを出したりすること!
 「キャラにピクチャをリンク」と1行指定するだけで、ゲージのピクチャがずっとそのキャラについていってくれます!

 なおゲージを頭に出したいときは、ピクチャの座標は「中央下」基準で(0,-30)[※上に30ピクセルだけずらす]のように指定します。これにキャラの足下中央の座標が足されるので、自然に頭の上に表示されるのです。
 他にも、ただ「キャラの名前」を頭の上に出しておきたいだけでも、従来ほどの苦労は不要になります! ピクチャを0,0座標とか0,-30座標あたりに出して、ピクチャリンクのコマンド1発おこなうだけで実現可能!


【これまでアクセスできなかったキャラ間の描画優先度にも挟み込める!】
 さらにはこれまで不可能だった、『ピクチャの表示優先度をそのキャラと同じ』にすることも、このピクチャリンクを使えば可能になります!
 これまでピクチャは、「キャラレイヤー全体や、マップ下地レイヤー全体の上か下」にあったので「自分の前にいるキャラで隠れるピクチャ」というのは作れなかったのですが、今回からはそれも可能!
 ピクチャでオーラを出したキャラが「木の裏」に行けば、オーラの一部も「木の裏」に隠れるようにできるのです!(従来のピクチャだと、「キャラだけは木に隠れてるけどオーラだけどうやっても木の前側にでちゃう」という感じになってしまっていました)

 他にも、透明キャラにピクチャをリンクさせれば、「キャラの前後関係やイベント判定処理はそのまま使いつつ、キャラ描画だけを全部ピクチャで行う」こともできるようになります。
 補正したピクチャをキャラに重ねて、HD-2Dっぽいエフェクトをかけたりするのもたぶんだいぶ簡単に!
 「影レイヤー」へのリンクも用意してあるので、影をピクチャで描画するようにだってだいぶ簡単にできるでしょう(これ自体は工夫すれば前もできたんですけれども)。

 さらには「メッセージを頭の上に表示させたまま歩かせる」なんてことも非常に簡単に作れるようになります! これまでのように、並列イベントでずっとピクチャ座標をキャラに追随させる必要がなくなるので、かなりすっきりと処理を作れるはずです。

 私の開発中の『片道勇者2』でも多くのキャラの上下にゲージなどの情報を出すことをしているので、これが使えたらもっと簡単に実装が進んでいたと思いますが後の祭りです。




●可変DBのソート(並び変え)機能

 ついに来ました、可変DBを特定の項目の値にしたがってソートする機能!
 ゲーム中のデータの並び変え処理を作らなければならなくなった人なら誰でも欲しかったはず!

 これは特定の「項目」の値の大小にしたがって可変DBの「データ」を並び変える機能です。
 「昇順(小→大)か降順(大→小)」か、「どのデータ範囲を並び変えるか」「並び変えにはどの『項目』の値を見るか」を指定してソートできます。文字列ソートもいちおう可能ですが、C++のstring型の文字の大小関係をそのまま使ってるだけなので、詳しい話は言えません。たぶんUTF-8のコード順になると思います。


 それでこのソート機能、それこそ「すばやさ順」で1ターン中の戦闘の行動順を計算する、といったことに始まり、「アイテムの性能別ソート」や、あるいは項目に「乱数」を入れてから並び変えることで「シャッフル」させることだって可能!
 いちいちこういうソート処理を苦労して作らなくてもよくなるので、これからはその労力を他に回せます!

 どこまでできるかの紹介は下の動画で説明しておりますので、よければぜひご覧ください(でも動画内で素早さを「小さい順」にソートしてるのはちょっと変ですね! 素早さで行動順を算出するなら「大きい方」から並べないと!)





●Editorで右クリックから特殊文字入力

 ウディタには、数値欄に1600000(コモンセルフ0)のように100万以上の変数呼び出し値を入れることで、数値そのものでなく「変数の値」を指定できる機能があります。
 主な入力箇所では変数用のプルダウンメニューが使えるので別に使わなくてもいいんですが、けっこうなところでこの入力方式を要求する場所がありました。



 そこで! Ver3.5からは上の画像のように、数値欄の右クリックメニューに各種特殊文字を入力できる機能が搭載されます!
 「数値欄」には変数呼び出し値を右クリックメニューから見本入力できるほか、「文字列欄」には¥v[?]や¥f[?]のような「特殊文字」も指定可能!
 今後はいちいちマニュアルなどを見なくてもよくなります!



●総合的なパフォーマンス向上

 ウディタ3.5では細かなところでパフォーマンスが向上します!


●【起動時間/調整】Editorの起動時間が短縮されました。
→ 【参考】 サンプルゲーム入りEditorの起動時間が作者環境で 約19秒→約11秒(約40%カット) に短縮されました。

→ 代わりに各イベントコマンド入力欄の「初回表示」時のみ0.数秒~1秒程度の待ち時間がかかるようになります。2回目以降の切り替えは高速です。
(最初に全てロードせず、初めてクリックされたときにコマンド入力欄をロードするようにしたためです)


●【文字列操作/調整】「上1行切り出し」の処理速度が向上しました。
→ 16KBで320行のファイルを30回、1行切り出しで最後まで読み込ませたテストでは処理時間が620ms→約360msになりました。
 処理速度にして約70%アップ!
→ テキストスクリプト機能を自作しておられる方が一番使う機能だと思いますのでそこそこ貢献できると思います。私もかなり使ってます。


●【コモンイベント・データベース/調整】
 コモンイベントやデータベースファイルに圧縮をかけるよう修正
→ サンプルゲームのファイルが以下のように削減されます!
 CommonEvent.dat 1232KB => 352KB (約71%削減!)
 DataBase.dat 88KB => 18KB (約80%削減!)
 CDataBase.dat 81KB => 7KB  (約91%削減!)
 SDataBase.dat 2,787バイト => 693バイト (約75%削減!)


 といった具合に、可能な範囲で細かなところの性能アップも行っております!
 あと、計測できなかったので載せていませんが、イベントコマンド切り替え時のレスポンスも全体的に上がってると思います。



●「変数操作+」の大幅強化

 3.5では「変数操作+」で新たな情報が取得可能になります!

●【キャラ】コマンドに追加
- 画面X座標[マップズーム反映]
- 画面Y座標[マップズーム反映]
 → 通常の画面X・Y座標と違い、「マップズームの拡大率」の影響を加味した現在の画面上の座標を返します。
 
- すりぬけ属性[1=YES 0=NO]
 
 
●【位置】コマンドに追加
- キャラ通行可能方向[1上+2左+4右+8下]
- タイルのカウンター属性[1=YES 0=NO]
 
 
●【位置】コマンドに【画面座標】オプション追加 (「画面座標」は新規追加)
 「画面座標(ピクセル単位)」を指定し、その位置の情報を得ることができます。
 
- px座標のイベントID[マップズーム加味]
 → 指定座標下にイベントがあるか判定できます。
  座標として「マウス座標(Sys71~72:マウスXY座標)」を指定すればマウス下のイベントを返せます。マップズームも考慮します。
   
- px座標のイベントID+範囲拡張[マップズーム加味]
 → 接触範囲拡張部分も含めたイベントIDを取得できます。
 
- px座標のマップX[マップズーム加味]
- px座標のマップY[マップズーム加味]
- px座標の精密マップX[マップズーム加味]
- px座標の精密マップY[マップズーム加味]
- px座標の最上ピクチャID[Z加味/なし:-20億]
- px座標の最上ピクチャID[Z無視/なし:-20億]
- ピクセルのR値
- ピクセルのG値
- ピクセルのB値
 → ピクセルのRGB値は、指定画面座標の1ピクセルのRGB値を0~255で返します。
 
 
●【ピクチャ】コマンドに追加
- ピクチャの横分割数
- ピクチャの縦分割数
- カラーR・G・B値
- 表示形式[0:通常 1:加算 2:減算 3:乗算]
- スクロールとリンク[ON=1]
- 設定された処理時間フレーム
- 現在の残り処理時間フレーム
- 最小の発動ディレイ(1以上のみ,なければ-1)
- 最大の発動ディレイ(なければ-1)
- IDより前にあるピクチャ番号[なし:同値]
- IDの次にあるピクチャ番号[なし:同値]
 
 
●【その他】コマンドに追加
- 今フレームに決定/接触起動したマップEvID(なし:-1)
 → これを使えば新たに生成した空イベントの起動も検知できます。ただし起動した瞬間の1フレームしかイベント値を返さないので注意してください。
 
- マウスが画面内にあるか?(YES=1)
 
- マウス座標の範囲拡張EvID(小さいID優先,なければ-1)
 → 「接触範囲拡張」も考慮した範囲で、マウス座標下のイベントIDを得られます。



 といった具合!

 新しい内容としては「指定IDより前後の、実際にあるピクチャ番号」が分かるようになったことや、「指定ピクセル位置のRGB値が取得できる」ことでしょうか。「画面上の指定ピクセルのRGB値を得られれば、それを大きな四角に広げてモザイク処理が作れるね」とおっしゃっている方もいらっしゃいました。

 あと他にも、「画面上のXYピクセル位置上の情報」を取れるようになったのも便利ポイント! 
 たとえば「マップズームを加味した指定ピクセル座標のマップXYマスの値」が一発で取れるようになったので、『マップズームが自由なゲーム』でのタイルやオブジェクト、範囲座標をカーソル選択する場合も、作るのがけっこう楽になると思います。

 他にも、「マップズームを加味したキャラの画面X・Y座標」や「イベントの接触範囲拡張を考慮したマウス下判定」を取得しやすくなったのは朗報だと思います!
 特に、「キャラをマウスで拾って移動させたりする」といった処理をする場合でも「接触範囲拡張」を広げてキャラのクリック範囲を広げてあげたりしやすくなるので、よければぜひご利用ください。
 これらはがんばれば計算できないこともなかったのですが、私もいちいちその補正を反映する処理を作るのが面倒臭かったですからね!




●文字列操作の裏技に「画像の1点の不透明度+RGB値を得る」機能が追加!

 文字列操作の「隠しコード実行」コマンドとして、画像のX、Y座標の不透明度、RGB値を得る <<GET_IMAGE_ARGB_X=?/Y=?>>(ファイル名)コマンドが搭載されます!

 これは (ファイル名)で指定した画像の、X=?、Y=?座標のピクセルの不透明度、RGB値を「不透明度(改行)R値(改行)G値(改行)B値」という文字列で得られるという機能!
不透明度やRGB値はそれぞれ0~255の値を取ります。
「不透明度が取得できる」という点が特に重要です!
 
 というのもこの機能で不透明度を得られるのが何に使えるかというと、
「クリック位置の『不透明度』をチェックして、画像中の立ち絵がある部分をクリックした場合だけ反応させる(透明な場所をクリックしたときは何も反応しないようにする)」
 といった処理をしたい状況や、あるいは一枚絵マップを作る際、
「32ピクセルごとに画像をチェックしておき、もし不透明なピクセルがあったらそのマスは侵入不能にする」
 といった自動判定をするのに使えます!
 他、自由な形状の「当たり判定」をあらかじめ自動認識しておくのにも使えるかもしれません。

 ただしこの機能は「画像ファイルの左上を(0,0)とした座標を指定して情報を得る」機能なので、たとえばマウス位置の画像部分が透明か知りたい場合は「マウス座標が画像のどの位置にあたるか」を計算し直する必要があります。その点はご注意ください。

 それでも画像の「不透明度」情報を得られるようになると、判定の面で色々やれることが広がります! 手作業で画像の当たり判定を作っておくという超面倒臭い作業の必要もなくなるので、もしそういうので苦労されていた方はよければぜひご利用ください。




 といった具合に、今回も自作システム内の『作り方』からして変わってしまうような新機能がいっぱい!
 まだ次回予定分もたくさんありますので、引き続きウディタ3.5の情報をお楽しみに!
 2024-11-02 (土) web拍手 by FC2 カテゴリ: ウディタ
ウディタ 2/6


▲一番上へ戻る


 

アーカイブサイトへ

Copyright © SmokingWOLF / Silver Second