主にウディタを使ってのゲーム製作についてのブログです ※更新は不定期
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ウディタ中級者上級者向けの小ネタ第2弾です!
<< 目次 >>
ラベル名に特殊文字を使用してリアルタイムでジャンプ先を変更する |
『ラベル設置』及び『指定ラベルに飛ぶ』コマンドはラベル名に特殊文字を使用できる。 これを利用してゲーム中にラベル名の変更やジャンプ先指定ラベル名を変更できる。 プログラミング言語のswitch文の再現とかも可能。 ※あまり多用しすぎるとスパゲッティコードになるので注意 ※ラベル文と特殊文字の連携なので重い |
『1』か『0』かのフラグは1つの変数に最大で32個管理できる |
ウディタのコモンセルフや通常変数、予備変数等の全ての数値変数は 1バイトは8ビットで構成されるので4バイトの場合32ビットで構成されている。 各ビットにフラグを設定すれば最大で32個のフラグを管理できる。 ※ビット等の詳しい説明をすると長い文章になるので ここでは割愛。分からない方は検索してね |
コモンイベントの返り値の格納先にCDB等を指定する方法 |
以下はコモンイベント3を起動し返り値の受け取り先として 『CSelf0(1600010)』を指定した場合のイベントコード WoditorEvCOMMAND_START [210][3,0]<0>(500003,16777216,1600010)() WoditorEvCOMMAND_END 上記イベントコードを改造して 受け取り先を『CDB[0:0:4](1100000004)』に 変更したイベントコード WoditorEvCOMMAND_START [210][3,0]<0>(500003,16777216,1100000004)() WoditorEvCOMMAND_END UDBを受け取り先として指定すると UDBの値を書き換えることも可能。 |
ゲーム中に指定した名前のコモンイベントを起動する |
コモンイベントを名前指定で起動する際、 名前入力欄に文字列変数を特殊文字で指定すると その文字列変数で指定された名前のコモンイベントを起動できる。 |
ゲーム中にDBのタイプ数を調べる方法 |
データ数や項目数の取得はウディタに実装されているが、 タイプ数の取得は実装されていない。 しかし、求める方法は存在する。 タイプ名を取得した際、存在しないタイプIDの場合は 『×NoData』が返ってくるので タイプIDを0から順に判定していけばタイプ数を求めることが可能。 |
ファイルが存在するか確認する方法※扱い方注意 |
文字列操作のファイル内容読込機能を使ってファイルが存在するか どうかを調べることができる。 この機能を使ってファイルを読み込んだ際 ファイルが存在しなかったら『<NoFile>』が返ってくるので それを判定してファイルの有無を確認可能 ※ただし、ファイルが存在する場合は問答無用で読み込まれるので データの大きいものを読み込んだ際は重くなる。 |
先頭ビットのみ『1』をセットする方法 |
変数操作:Cself[0] = 1073741824 + 0 変数操作:Cself[0] *= 2 + 0 ※ウディタでは2000000000以上の値を直接代入できないため |
通常変数や予備変数の各変数にメモを記述する |
通常変数等はシステムデータベースで管理されているが それぞれデータベースの項目は使用していない。 ウディタがバージョンアップし通常変数等の 新機能実装が入らない限り ここの項目は追加しても問題がないので 自分用に変数の説明項目等を追加すると利便性が上がるかも。 (同様にBGMリストに著作権記入の項目を追加しておくとかの 活用方法もある) |
ループ中断の処理負荷 |
『ループ中断』コマンドが実行されると 『ループ中断』コマンドの位置から下方向に 『ループここまで』コマンドを探索する。 よって 『ループ中断』~『ループここまで』間にある 処理行数に応じて負荷が変化する。
ループ先頭付近でループ中断を行うより ループ末尾付近でループ中断を行う方が ループ中断実行の処理負荷は軽い。
絶対に末尾付近の方が軽いとは言い切れないので注意。 中断実行の瞬間の負荷が末尾の方が軽いというだけの話 |
ループ開始へ戻るの処理負荷 |
『ループ開始』地点へ戻る際の処理負荷は一定だが 回数付きループの場合 『ループ開始へ戻る』により回数分のループが終了した際は 『ループ開始へ戻る』コマンドの位置から『ループ中断』が 実行される。 『ループ中断』コマンドは 『ループ中断』~『ループここまで』までの 行数が多ければ多いほど重くなるため 『ループ開始へ戻る』コマンドがループ末尾に近いほど 処理負荷は軽くなりやすい。 ※ループ内の処理内容によって適切な 『ループ開始へ戻る』コマンドの位置は変わるため 絶対に末尾付近の方が軽いとは言い切れないので注意。 中断実行の瞬間の負荷が末尾の方が軽いというだけの話 |
プログラマーです
開発ツール・使用言語等
・WOLF RPG エディター
・HSP
・C
・VB
・Java
・C++
・C++/CLI
・C#
・アセンブラ
・Haskell
・PHP
・Ruby
・WPF
・DirectX( 9.0c )
・PhysX( 3.X系 )
k07.alpha.stella[あっとマーク]gmail.com