投稿記事

ツールの記事 (10)

K-Shin07 2024/06/23 16:02

【Wodistant】ウディタ開発補助ツールをVer1.3.4へ更新(Discordサーバーも公開)

ウディタでのゲーム開発効率を上げるためのツールである
WodistantをVer1.3.4.0に更新しました!
※最新版の取得はツール内のアップデート機能か公式サイトからダウンロードしてください。


タイルセット画面の通行設定切り替えショートカット

タイルセット設定画面にてクリックによる通行設定タイプ(〇×★▲等)をF1/F2/F3で切り替えられるように対応しました。

コモンイベントランチャー経由でイベント挿入

コモンイベントランチャーに登録された各コモンの右クリックメニューからイベント挿入コマンドを挿入できるようになりました。

ランチャーに登録したときのイベント挿入コマンドがそのまま使われます。
つまり、引数設定がそのまま引き継がれるため、よく使うイベント挿入コマンドを登録することで素早く配置できるようになります。

公式Discordサーバーを公開

WodistantのDiscordサーバーを作成して公開しました。
下記を気軽に行えることを目的としたサーバーとなります。

  • Wodistant
    • 更新/告知
    • 要望/バグ報告/質問/相談
    • 拡張機能の共有(プラグイン/カスタムウィンドウ)
      • ※各ユーザーが作成したものを共有できる状態にすることがメイン
  • ウディタ利用者間の交流の場提供
    • (コミュニティが各所に分散しているイメージなので中心的な場として使えるようになればと考えています)

ウディタ関係の人が集まるはずなので、
ウディタでゲーム開発をする者同士の交流目的でも使える状態にしています。

Wodistantを利用していない方もウディタユーザー間の交流目的で参加していただいてかまいません。
昔はウディタ使っていたけど、今は別のツールを使っているような方でも問題ないです。
ウディタを知っている人が集まる状態を達成できればと考えています。

下記招待リンクからご参加いただけますのでご自由にどうぞ。
https://discord.gg/ByP8fuHjf2

Wodistant経由でもDiscordサーバーに参加できるように対応

ヘルプメニューから招待リンクを開けるようにしました。
興味がありましたら下記からいつでも参加可能です。

おわりに

今回のDiscordサーバー公開で、そちらから要望やバグ報告ができるようになりましたが
従来通りツール内のフィードバック機能から報告していただいてかまいません。

更新告知/予告などは引き続きTwitter(X)やCi-en等でも行われるので
参加する予定がない方もご安心ください。

既にご参加いただいた方もありがとうございます。
次のWodistant更新時期は現時点では未定ですが、
これからも更新し続けていくので、引き続きよろしくお願いいたします。

K-Shin07 2024/04/12 20:42

【Wodistant】ウディタ開発補助ツールをVer1.3.3へ更新(新機能バグチェッカー公開!)

ウディタでのゲーム開発効率を上げるためのツールである
WodistantをVer1.3.3に更新しました!
※最新版の取得はツール内のアップデート機能か公式サイトからダウンロードしてください
実装機能を下記で紹介しておきます。

コモンイベントバグチェッカー機能追加

全てのコモンイベントを分析して
バグになりうる箇所を検出してくれる機能を実装しました。
いわゆる静的解析をしてバグのチェックや品質の低いコードを検出するというものです。

是非みなさんのゲームでも試してみてどれくらい検出されるか見てみてください。
自分は約60件ほど検出されて、いくつかの特に問題にはならないバグと1件のいつか致命的になるバグが見つかりました。
※検出されたからと言って必ずバグっているわけではありません。検出された警告内容と処理の場所を見て問題がないか確認してみましょう。

現在サポートしているチェック内容

現時点で実装していものを以下に列挙しておきます。
※バグチェックというより品質チェックみたいな項目も含みます
※今後のアップデートでチェック対象が増える可能性があります。

  • 無意味な変数操作
    • 例:CSelf0 += 0 + 0
    • ゼロ代入をしたかった初期化ミスや不要になった処理消し忘れなど
  • 無意味な文字列操作
    • 例:CSelf5 += ""
  • コモンイベント名が見つからない
    • コモンイベント名を変更したあとに修正していない
      名前呼び出しのイベント挿入コマンドの検知など
  • コモンイベントの引数が一致しない
    • コモンイベント本体の引数を増やしたり減らしたりした後に
      コモンイベントを呼び出しているイベント挿入コマンドを修正していないものを検知など
  • 名前/番号呼出のコモンイベントが混在
    • コモンイベントの呼び出し方を統一している場合のコマンド挿入ミスチェック
  • ファイルが見つからない
    • ピクチャ表示で指定した画像ファイルが
      ファイル名を変えた等の原因で見つからないなど
  • 上記以外を含む条件分岐内のラベル地点
    • 上記以外を含んでいる条件分岐内のラベル地点へジャンプすると
      上記以外の処理が分岐終了後に続けて実行されてしまうため、
      その問題に該当するコマンドがないかチェック
  • 無効な同じ名前のラベル地点
    • 同じ名前のラベル地点が複数ある場合は2つ目以降が無視されるため
      名前の指定が間違っていないかチェック
  • ラベルジャンプ先が見つからない
    • ラベルジャンプで指定している名前と同じラベル地点が見つからない
      名前の指定が間違っていないかチェック
  • どこからもジャンプされないラベル地点
    • ラベル地点が挿入されているが名前が一致するラベルジャンプが見つからない
      名前の指定が間違っていないかチェック
  • 行数が多すぎる(3000行以上)
    • 行数が多すぎて修正や改善、処理の把握がしづらくなっているコモンのチェック
  • ネストが深すぎる(30以上)
    • 条件分岐が入れ子になりすぎているような箇所のチェック
  • 番号呼び出しのコモンイベントがある(オプション機能)
    • 名前呼び出しに統一している場合はコマンド挿入ミスをチェックできる
  • 直接番号指定のピクチャ表示がある(オプション機能)
    • ピクチャ番号を動的に生成して管理している場合の対応漏れチェックができる

実行方法

ウディタと接続中にメニューバーの
『ウディタ(W) > コモンイベントバグチェッカー』から起動できます。

この機能の目的

既に実装済みの処理などでバグがないと思っていても
たまたま今は正しく動作しているような場合があります。

そういったものは実際にバグが発生する状況にならないと見つからないことが多いため、それらの怪しいかもしれない処理を検出して、事前に対処するのが目的となります。

検出例

例えば、ある処理を回数付きループ等でループしながら処理する箇所があるとします。
ループ前に値を『0』に初期化して、ループ内で+1して順々に処理しているような実装パターンはよくあることでしょう。

このときに最初の『0』に初期化する処理が次のようになっていたら、1回目は正しく動作しますが、その処理をもう一度実行したときにバグります。
(0に初期化するはずが0を足してしまっている)

■変数操作: CSelf10[カウント] += 0 + 0 
■回数付きループ [ 10 ]回
 |■可変DB書込:DB[ 0 : CSelf10[カウント] : 0 ]  (- : - : -) =  0
 |■変数操作: CSelf10[カウント] += 1 + 0 
 |■
◇ループここまで◇◇

本バグチェッカーを使用すると↑の 【CSelf10 += 0 + 0】が
無意味な変数操作として検出
されます。

ゲーム上でよく実行される処理ならすぐにバグが発生しますが
たまにしか実行しない処理の場合は1回目が必ず成功してしまうため
バグを見逃してしまう可能性があります。

利用にあたっての注意点

バグチェッカーでチェックできるようになったからといって
これを過信せず、日々の処理実装時にこういった問題にならないかどうかを
意識しながら実装を行いましょう。

『後で一気にチェックしたら1000件以上ヒットした!』みたいな状態になると
それをいちいちチェックして直すのも大変です。

コメント文挿入機能(F2キー)でデバッグ文対応

従来まではコメント文しか挿入できませんでしたが
今回からデバッグ文も挿入できます。

  • コメント文の挿入
    • Ctrl+Enter または OKボタン
  • デバッグ文の挿入
    • Ctrl+Shift+Enter または デバッグ文ボタン

フィードバッグを送る機能実装

メニューバーの『ヘルプ(H) -> フィードバックを送る(要望/バグ報告等)』で
フィードバックを開発者に送れるようになりました。

バグ報告やこんな機能が欲しい!といったものがあれば
お気軽にお送りいただければと思います。


開発中の機能(α/β)を有効化する機能実装

オプションに開発中の機能を有効化する項目が追加されました。
メニューバーの下記でON/OFFできます。(デフォルトはOFFです)
『ファイル(F) -> オプション(O) -> 開発中機能(α/β機能)の有効化』

現状はVer1.4.0 α版で公開していた
『ウディタデバッガー機能(α版)』が利用できるようになります。
これに伴いVer1.4.0α版は公開を停止しました。
デバッガー機能を試したい方はこちらの機能を有効にしてご利用ください。

ウディタデバッガー機能自体については下記記事を参照してください。
【Wodistant】待望のウディタデバッガー機能のα版公開!


そのほか変更点

ウディタVer3.310のファイル形式に対応化

ウディタVer3.310以降は以前のWodistantで読み込めないため、
これらのウディタバージョンを利用する方は本Ver1.3.3.0以降に更新してください

追記:まだ一部の状況で読み込めないことがあったので修正しました。お手数をおかけしますがVer1.3.3.3以降に更新していただくことで改善されます。

ウディタVer3.310までの約1年分の仕様変更に対応

イベントコマンドの表記仕様変更や新コマンドに正しく対応化

.NET Frameworkを4.5.2→4.7.2へ更新

古いOSや最新のWindowsアップデートを適用していない場合は
起動できなくなる場合があります。

万が一起動できない場合は下記URLから『.NET Framework 4.7.2 ランタイム』をダウンロード/インストールしてください。
https://dotnet.microsoft.com/ja-jp/download/dotnet-framework/net472

リンクが切れている場合は『.NET Framework 4.7.2 インストール』などをウェブブラウザで検索してください。



Ver1.3.3.0のアップデート内容は以上です。
Wodistantを利用して、よきウディタでのゲーム開発ライフを!

K-Shin07 2023/12/17 16:26

プロシージャル生成による効果音作成ツール『GameSynth』検証

はじめに

前から気になっていたプロシージャルサウンド合成による
効果音作成が可能な『GameSynth』を試しに使ってみました。

開発中のゲーム用効果音を作ってみて、
どんな感じだったのかを軽くまとめてみます。

そもそもプロシージャル生成とは

データを作る際に手作業で順々に作っていくのではなく、
処理を連続的に組み合わせてデータを生成していくものになります。

例えば次のような工程でデータを作成しているとします。

  • 処理A → 処理B → 処理C → データ完成

この場合、常に上記工程を辿ってデータが自動的に生成されます。

手作業でデータを作成している場合は『A』で行った作業工程だけを調整して
新しくデータを確認したい場合は、
『A』の調整後に『B』→『C』ともう一度加工する必要があると思います。

プロシージャル生成では全ての工程が『処理』になっているため
『A』を調整したら自動的に『B』→『C』も処理されて常に最新のデータが生成されます。

これにより、調整や工程の抜き差しが簡単に行えます。

自分は3Dモデルの作成で『Houdini』を主に使っているのですが
それもプロシージャル生成によるツールなため、
初めて使ったときは各途中工程の3Dモデル状態がいつでも確認、調整できて感動しました。

以下の動画はHoudiniによるプロシージャル生成で自作した歯車です。
完成したあと各工程のパラメータを調整して歯車の歯数を変えたり、
外見を変えたりしています。

効果音作成ツール『GameSynth』を使ってみた

サウンドモデルの選択

GameSynthでは基本的に下記モード(サウンドモデル)のどれかを選択して
効果音を作成するようです。

  • Whooshモデル(風切り音)
    • 剣を振るなどの風に関する音を作りやすい
  • Impactモデル(打撃や摩擦音)
    • 物がぶつかる音や引きずる音などを作りやすい
  • Retroモデル(8ビットゲーム効果音)
    • レトロゲーム音やUIの操作音などを作りやすい
  • Modularモデル(プロシージャルサウンドモデルを組み立てる)
    • プロシージャル生成手法で音を作り上げていくモデル
    • これを使えば基本的に何でも作れる
    • 他のモデルで作った音をベースに加工していくことも可能
    • ベースとなる音源(炎、風など)はたくさんあるので音を用意しなくてそれを加工していくだけでOK
    • 今回の記事で主に使用するモデル
  • Particlesモデル(断続的に発生する音)
    • キラキラ音や瓦礫が崩れる音など特定の音が何度も発生するような音が作りやすい
    • 作成した効果音を音源として利用する
  • VoiceFXモデル(ボイス加工系)
    • 持っているボイスに対して各種エフェクトをかける機能
  • Footstepsモデル(足音)
    • いろんなパターンの足音を簡単に作成できるモデル
  • Weatherモデル(天候に関する音)
    • 雨や暴風、雷、雹などの天候に関する環境音を簡単に作成できるモデル

基本的にModularモデルを今回使用しますが
他のモデルは簡単に扱いやすいものが多いので
下記で軽くいくつか紹介してみます。

Whooshモデル(風切り音)

以下の動画ような感じで風に関する音を作れます。
マウスで線を描いて軌跡に沿って音をならせます。
描いた線をランダムにほかの形状に変えることもできます。
※ペンタブを使用すると筆圧なども考慮されるようです

Impactモデル(打撃や摩擦音)

以下のように打撃や摩擦に関する音を作れます。

Retroモデル(8ビットゲーム効果音)

以下のようにレトロ風の効果音が作れます。

Modularモデル(プロシージャル生成)

以下のように各種ノードを組み合わせて音を作っていきます。
慣れるまでは時間がかかりますが、
扱えるノードが増えれば増えるほど自由に音を作っていけるようになります。

Particlesモデル(断続的に発生する音)

以下のように任意の効果音をベースとして
音をパーティクル的に発生させて作ります。
※ベースの効果音を複数にすることもできます

VoiceFXモデル(ボイス加工系)

以下のように任意のボイスに対してエフェクトを付与できます。

Footstepsモデル(足音)

以下のように足音をシミュレートすることができます。


Weatherモデル(天候に関する音)

以下のように雨や雷などの環境音をシミュレートすることができます。
※雨の強さや雨が当たる地面の材質を変更するなど各種パラメータを変更可能です。


実際にゲームの効果音を作ってみた

今回は主にModularモデルを使用してプロシージャルに効果音を作成してみます。

最近作ってたエフェクトの効果音を試しに作ってみました。
まずは完成品の動画です。


前半のエフェクトと後半のエフェクトで別々の効果音を作っています。
最初の効果音はこのようなノード構成になりました。

上記ノードを見るとなんだか複雑そうに感じると思いますが
実際に作業しているときは1つ目のノードから順々に作っていくので
思ってたよりは複雑に感じないです。
※上記では用意していないですがコメント文も配置できます

上記画像はいきなり他人のプログラムの完成したソースコードを
見せられているようなものなので
自分で組めばどこで何をしているかは把握できますね。


音を再生する際に動画も同時再生する機能があるのですが
こちらを利用すると実際のエフェクトを見ながら確認ができるので
音の調整がとてもしやすかったです。


ノードの種類がかなり多いので自分もまだほとんど理解できていません。
それでも10種類ぐらい使えるだけで
充分いろいろ作れるので意外となんとかなりそうです。

ツール内の『help > Manuals > モジュール周期表』を見ればどれがどのような機能を持っているか確認できる(動画もある)のでまずはここを見ていくのがよさそうですね。

プリセットもたくさんあるのでまずはそれを確認してみるのもおすすめです。


また、各ノードのパラメータを時間経過で変化させることが可能な
『Automation Curve』という機能があります。
このあたりの機能はなるべく早めに扱えるようになるとよさそうです。
(途中からピッチを急激に上げて音が高くなるような表現や音量のフェードコントロールなどが自由にできるようになります)



ちなみに後半のエフェクトの効果音はこのようなノード構成になりました。


まとめ

Modularモデル以外のサウンドモデルは割と雑に使っても
それなりに簡単に効果音が作れると思います。

Modularモデルは自在に音が作れますが
慣れるまでは時間がかかりそうですね。

ちなみに上記で作ったエフェクト効果音の作業時間は
だいたい1時間ちょいぐらいです。
機能を理解しつつ作っていたので、
理解が進めばもっと早く、もっとイメージ通りに作れるようになりそうですね。

一度作ったノードは使いまわすことも可能なので
作れば作るほど音の表現を自在に作れるようになりそうです。

今作っているゲームの効果音は
GameSynthを使って作ってみようと思います。

フォロワー向けに
他の作ってみた効果音やそのノード構成をいくつか公開しておきます。
(大したものではないです)

フォロワー以上限定無料

無料プラン限定特典を受け取ることができます

無料

K-Shin07 2023/07/29 20:33

【Wodistant】ウディタデバッガーはどうやって実現しているのか?[解説]

今回の内容は Wodistant Ver1.4.0 α版に実装された
ウディタデバッガーの仕組みについて解説する内容となっています。

どうやってウディタデバッガーのブレークポイントなどが実現できているのか
興味があればご覧いただければと思います。

技術ある人が見たらおそらく再現できるぐらいの
ボリュームで書いてるので内容がとても多いです。
目次を用意しているので、全部見なくてもいいやって方は気になる
項目だけ見てやってください。

また、Wodistantの技術解説系は前回と同様にフォロワー向けに
公開させていただきますのでご了承ください。

フォロワー以上限定無料

ウディタデバッガーの仕組みについて解説しています。

無料

K-Shin07 2023/07/26 18:12

【Wodistant】待望のウディタデバッガー機能のα版公開!

Wodistant-Ver1.4.0.0のα版を公開しました!
※まだα版なので更新手順は通常とは異なります。(後述)

デバッガー機能が実装され、
遂にウディタでブレークポイントが使えるようになりました!
※ブレークポイントが何なのかについては後述します
※本機能は現在ウディタPRO版でのみ動作します

これを使用することで
意味不明なバグが発生したときのデバッグ効率が格段に上がります!

更新手順

↓2024年4月11日時点でVer1.4.0α版の公開を停止して
 正式版Ver1.3.3.0にて開発中機能として利用できるようになりました。
 オプション設定から開発中機能を有効化すると従来通り利用できます。

下記画像に更新方法をまとめています。
※α版/β版はツール内更新のみで提供します。


※パスワードコピペ用『w140a050_5Ad2

Wodistant本体をまだ持っていない方は下記ページからダウンロードできます。
https://alpha-stella.com/tool/wodistant/

ブレークポイントってなに?

プログラミングによる開発において多用するデバッグ機能の1つです。
任意の処理タイミングでプログラムを一時停止することができます。

ウディタで開発している場合、大多数の人は
『文章表示』コマンドを設置したり
『1ウェイトの無限ループ』を配置したりすることで一時的に停止して、
変数値の確認などをすることが多いと思います。

ただ『文章表示』で停止したあと、続けて別の箇所でも停止したい場合や
途中から停止してほしく無くなった際は
コモンイベントを編集して再度ゲームを起動したりF12等でリセットするしかありません。

ブレークポイントを利用することでゲーム実行中に
いつでもどこでも任意の処理タイミングでゲームを一時停止/解除することができます。
更に『停止した箇所のコモン』及び『そのコモンの呼び出し元コモン全て』のコモンセルフ変数値を確認することができます。

ウディタデバッガーの実演

サンプルゲームでウディタデバッガーを実際に使っているところを
動画にまとめてみました。
使い方の流れについては下記動画を参考にしてみてください。
https://youtu.be/QPQygWzeHwo

フィードバックについて

まだα版なので、何かしら問題が発生する可能性があります。
万が一問題があればWodistant上でフィードバックを送れるようになっているので
そちらからご報告いただけると助かります。
(ウディタデバッガーウィンドウ上のフィードバックボタンから報告できます)

もちろん要望もあればお気軽に送って頂けると助かります。

今後の予定

以下に今後の更新予定についても記載しておきます。
・β版の公開:2023年9月~10月頃
・正式版の公開:2023年11月頃
※暫定なので時期が変更される可能性はあります

現在ウディタデバッガーはウディタPRO版でのみ動作する状態です。
正式版でもPRO版での動作を予定していますが
機能制限状態で通常版ウディタでも利用できるようにするかもしれません。

どちらにしろβ版の段階では
一時的に通常版ウディタでも利用できる状態にする予定です。

またβ版で実装する可能性が高いものも下記に記載しておきます。
・データブレークポイントの実装
  ・特定の変数の値が変わった瞬間に自動的に停止するブレークポイント
・条件ブレークポイントの実装
  ・設定したブレークポイントを通過した時に
   任意の変数の値が特定の条件を満たすときのみブレークを実行する機能
・『1600000』もしくは『\cself[10]』などの文字列指定で現在の値を確認する機能
  ・現状いくつか課題があるので解決できたら実装される可能性あり

最後に

ウディタデバッガーを利用することで
とても効率よくゲームのデバッグができるので、
原因が分からないバグが発生した際は、是非試してみてくださいね。

ウディタデバッガーがどのように動作して
どのような仕組みで機能を実現しているかについては
別途フォロワー向けにまとめようと思います。
こちらはもう少々お待ちください。

« 1 2

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索