忍者ブログ

主にウディタを使ってのゲーム製作についてのブログです  ※更新は不定期

ウディタの中級者上級者向けの小ネタ第2弾
前回の第1弾に引き続き
ウディタ中級者上級者向けの小ネタ第2弾です!

<< 目次 >>
ラベル名に特殊文字を使用してリアルタイムでジャンプ先を変更する
ラベル名に特殊文字を使用してリアルタイムでジャンプ先を変更する

『ラベル設置』及び『指定ラベルに飛ぶ』コマンドはラベル名に特殊文字を使用できる。

これを利用してゲーム中にラベル名の変更やジャンプ先指定ラベル名を変更できる。

プログラミング言語のswitch文の再現とかも可能。

※あまり多用しすぎるとスパゲッティコードになるので注意

※ラベル文と特殊文字の連携なので重い


『1』か『0』かのフラグは1つの変数に最大で32個管理できる

ウディタのコモンセルフや通常変数、予備変数等の全ての数値変数は
4バイトで管理されている。

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リストに著作権記入の項目を追加しておくとかの

活用方法もある)


ループ中断の処理負荷

『ループ中断』コマンドが実行されると

『ループ中断』コマンドの位置から下方向に

『ループここまで』コマンドを探索する。

よって

『ループ中断』~『ループここまで』間にある

処理行数に応じて負荷が変化する。


つまり

ループ先頭付近でループ中断を行うより

ループ末尾付近でループ中断を行う方が

ループ中断実行の処理負荷は軽い。


※ループ内の処理内容によって適切な中断位置は変わるため

 絶対に末尾付近の方が軽いとは言い切れないので注意。

 中断実行の瞬間の負荷が末尾の方が軽いというだけの話


ループ開始へ戻るの処理負荷

『ループ開始』地点へ戻る際の処理負荷は一定だが

回数付きループの場合

『ループ開始へ戻る』により回数分のループが終了した際は

『ループ開始へ戻る』コマンドの位置から『ループ中断』が

実行される。

『ループ中断』コマンドは

『ループ中断』~『ループここまで』までの

行数が多ければ多いほど重くなるため

『ループ開始へ戻る』コマンドがループ末尾に近いほど

処理負荷は軽くなりやすい。

※ループ内の処理内容によって適切な

 『ループ開始へ戻る』コマンドの位置は変わるため

 絶対に末尾付近の方が軽いとは言い切れないので注意。

 中断実行の瞬間の負荷が末尾の方が軽いというだけの話

拍手

PR
COMMENT
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
 管理人のみ閲覧
 
WoditorOptimizer - Ver2.0.1
┗最新版公開日 : 2017/08/31

WoditorOptimizer - Ver1.00 -
┗旧バージョン : 2015/04/18

WECDeletor - Ver1.01 -
┗最新版公開日 : 2012/11/03
09 2017/10 11
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
HN:
K-Shin07
性別:
男性
趣味:
ゲーム製作
自己紹介:
趣味でゲームを作っています
プログラマーです

開発ツール・使用言語等
WOLF RPG エディター
・HSP
・C
・VB
・Java
・C++
・C++/CLI
・C#
・アセンブラ
・Haskell

・PHP
・Ruby

・WPF

・DirectX( 9.0c )
・PhysX( 3.X系 )

Mail
 k07.alpha.stella[あっとマーク]gmail.com
[02/26 たかねぇ]
[02/24 たかねぇ]
[06/07 たかねぇ]
[04/23 たかねぇ]
Copyright ©  -- α-Stella[R]_ブログ --  All Rights Reserved

Design by CriCri  /  Material by 妙の宴  /  Background by K-Shin07  /  powered by NINJA TOOLS / 忍者ブログ / [PR]