変数 のバックアップ(No.9)
変数とは、不確定要素を擬似的・暫定的に記号・抽象化したもの。不確定要素が計算出来るようになる。対語は定数、類語は不定元・未知数など。
目次
変数ってなんぞ? †
算数・数学における変数 †
- 学校教育における計算問題の答えだと思って下さい。
- 算数では空白部分
- 数学ではx,yやa,bなど
一般社会における変数 †
- 電子分野ではなくてはならないものです。
ウディタにおける変数 †
- ウディタではイベントを組むには避けては通れないモノです。
- 二つの使い方があります。
数字の大きさを変えられること 数字を読み取ってイベント分岐させられること
- 例えば
ダメージを受けたらHPが減る、HPが0だったら倒れる
- HPやExp、恋愛ゲームの好感度といったパラメータは勿論、装備している武器なんかもIDで管理された変数です。
- ゲームを開始してから経過した時間や、主人公がマップのどの辺りにいるかも変数として記録されています。
- 気づいてなかっただけで、実はゲームというのは変数のかたまりです。
- 聞きなれない言葉かも知れませんが、難しく考えずにステップアップしてください。
各変数の意味 †
セルフ変数:そのイベント固有の変数
- コマンド中はselfで表示されます。
通常変数:ゲーム全体に影響を与えることができる変数
- コマンド中はvariableの頭文字のVで表示されます。
- 文字列変数はscriptの頭文字のSで表示されます。
システム変数:ゲームのシステムとして役割が決まっている変数
- システム変数はSys、システム文字列はSysSで表示されます。
書き込み可能の変数 †
- 可変データベース(cdb)
- システムデータベース(sdb)
- 4:文字変数名(S)
- 6:システム変数名(Sys)
- Sys0:顔グラフィック番号
- Sys1:メッセージウィンドウX座標
- Sys2:メッセージウィンドウY座標
- Sys3:選択肢ウィンドウX座標
- Sys4:選択肢ウィンドウY座標
- Sys5:ポーズカーソルX(-1=自動)
- Sys6:ポーズカーソルY(-1=自動)
- Sys7:選択肢次回初期位置(0,1,2...)
- Sys8:基本フォントサイズ
- Sys9:メッセージ速度(X文字/秒)
- Sys10:メッセージ表示ウェイト(Xフレーム)
- Sys11:ピクチャ文字速度(X文字/秒)
- Sys14:選択肢ウィンドウ表示する?(1=ON)
- Sys15:方向キーリピート初ウェイト(フレーム数指定)※[キーが押されるまで待つ]に適用
- Sys16:方向キーリピート次ウェイト(フレーム数指定)※[キーが押されるまで待つ]に適用
- Sys17:選択肢SE番号:決定(Sys3)
- Sys18:選択肢SE番号:選択(Sys3)
- Sys19:選択肢SE番号:キャンセル(Sys3)
- Sys20:選択肢カーソル現位置(0,1,2..非選択時:-1)
- Sys21:文字影付ける?(0=OFF,1以上=ON)
- Sys22:選択肢カーソル表示モード?(0=通常,1=加算)
- Sys25:現在セーブデータ番号(0〜)
- Sys33:フレームスキップレベル(0〜2)
- Sys36:主人公の影番号(Sys9)
- Sys37:仲間の車間距離(1あたり0.5マス)
- Sys40:キーボ入力文字列X座標
- Sys41:キーボ入力文字列Y座標
- Sys52:決定キー(キーボード)
- Sys53:キャンセルキー(キーボード)
- Sys54:サブキー(キーボード)
- Sys55:決定キー(パッド)
- Sys56:キャンセルキー(パッド)
- Sys57:サブキー(パッド)
- Sys59:決定キーリピートする?(1=ON)※[キーが押されるまで待つ]に適用
- Sys60:キャンセルキーリピートする?(1=ON)※[キーが押されるまで待つ]に適用
- Sys61:フォグ番号(Sys13)
- Sys62:フォグX速度
- Sys63:フォグY速度
- Sys64:フォグ描画タイプ(0通常1加算2減算)
- Sys65:フォグ不透明度(0〜255)
- Sys66:遠景番号(Sys13)
- Sys67:遠景X速度
- Sys68:遠景Y速度
- Sys71:マウスX位置
- Sys72:マウスY位置
- Sys73:文・選択肢のマウス入力(1なら受付)
- Sys74:マウスポインタ表示する?(1=ON)
- Sys87:仲間1影番号(-1=主人公と同じ)
- Sys88:仲間2影番号(-1=主人公と同じ)
- Sys89:仲間3影番号(-1=主人公と同じ)
- Sys90:仲間4影番号(-1=主人公と同じ)
- Sys91:仲間5影番号(-1=主人公と同じ)
- Sys95:再生中BGM音量[%]
- Sys96:再生中BGMテンポ/周波数[%]
- Sys97:再生中BGS音量[%]
- Sys98:再生中BGSテンポ/周波数[%]
- Sys100:BGM音量補正[%]
- Sys101:BGS音量補正[%]
- Sys102:SE音量補正[%]
- Sys104:Xスクロール値
- Sys105:Yスクロール値
- Sys110:現在の乱数のシード(種)
- ※104と105はマップに対応
- 14〜24:通常変数、予備変数(V)
- 各セルフ変数(Self)
読み取り専用の変数 †
- ユーザーデータベース(udb)
- システムデータベース(sdb)
- 0:マップ設定
- 1:BGMリスト
- 2:BGSリスト
- 3:SEリスト
- 5:システム文字列(SysS)
- 6:システム変数名(Sys)
- Sys12:メッセージ表示中?(1=ON)
- Sys13:イベント実行中?(1=ON)
- Sys24:[読]セーブデータ読込判定(1=成功 0=失敗)
- Sys28:[読]経過フレーム数[1000万で一周]
- Sys29:[読]プレイ時間(1秒単位)
- Sys30:[読]プレイ時間(ミリ秒単位)
- Sys31:[読]内部FPS(毎秒変化)
- Sys32:[読]描画FPS(毎秒変化)
- Sys35:主人公移動中?(1=YES) マスの間にいるかどうか
- Sys39:[読]キーボ入力状態 0=Enter -1=キャンセル
- Sys42:キーボ入力時文字アンチエイリアス 1=有
- Sys43:[読]ネット/DL済サイズ(byte)
- Sys44:[読]ネット/DL予定サイズ(byte)
- Sys45:[読]ネット/接続速度
- Sys46:[読]ネット/接続時間(秒)
- Sys47:[読]ネット/残り時間(秒)
- Sys48:[読]ネット/状態 -1失敗 0通信中 1終了
- Sys77:現在の[年]
- Sys78:現在の[月]
- Sys79:現在の[日]
- Sys80:現在の[時]
- Sys81:現在の[分]
- Sys82:現在の[秒]
- Sys84:画面サイズ(0=320x240,1=640x480 2=800x600)
- Sys85:描画モード(0=3Dモード,1=ソフトウェア)
- Sys108:[読]現フレームのコマンド処理数
- Sys111:[読]画面アクティブ状態(1=アクティブ)
- 7:位置設定リスト
- 8:キャラクター画像
- 9:キャラ影グラフィック名
- 10:ウィンドウ画像
- 11:トラジションタイプ
- 12:文字色
- 13:遠景画像
- 24:顔グラフィック名
変数に名前をつける †
- 新版ウディタ講座で説明されているのでそちらを参考にして下さい。
使い道 †
手順 †
1、アイディアのアルゴリズム(プロット)化 †
- 仕様書の段階です。
- どういう手順を経て
- どういう結果が導き出されるのか
- を文書化します。
2、アルゴリズムのフローチャート(UML)化 †
- ゴブリンと戦ってLvを10以上にする。
- エディを仲間にする。
- コックからパンを買う。
- 夕一を仲間にして、後ろの宝箱から鍵を手に入れる。
- ダンジョンのドラゴンを倒して、ウディタを手に入れる。
- 関係ツールは以下を参照して下さい。
3、フローチャートのコマンド(ソース)化 †
- ここからようやくツールや言語(ウディタ)の出番で、つまり1と2の作業は紙媒体(チラシの裏)でも十分できるということです。
- オープンソースという暗号化されてないゲームの場合、見れるのがこの部分だと思って下さい。
- また、配布コモンもこの状態です。
種類 †
- ツクールや基本システムを使用した場合、システムはほとんどいじる必要はありませんが、仕様がどういうものか理解する必要があります。
- シナリオやキャラクターは自分で作る必要があるというわけです。
システム †
- 文章表示や選択肢などの基礎的なシステムはウディタ本体に標準装備されています。
- 戦闘やメニュー等は基本システムとしてフルパッケージに用意されてます。
- 配布コモンには基本システム改造用コモンや独立した大規模コモン、汎用なテストプレイコモン等があります。
シナリオ †
- マップイベントとコモンイベントの両方から通常変数で管理する事になります。
- フラグという概念が一般的です。
キャラクター †
- NPCはマップイベントで管理することになります。
- AI戦闘はコモンイベントのシステムとして管理することになります。
FAQ †
変数を増やしたいのですが †
「システムデータベース」 → 「14:通常変数名」 のデータ数を弄りましょう。
変数を増やしたのにイベントコマンド入力時に項目が増えていないのですが †
条件(変数)の所の注釈に書いてあるように、変数の種類選択ボタン→([Self][変][Sys])を押す事で更新出来ます。
乱数、ランダムの作り方 †
- いくつか方法があります。
1.変数操作で、 左辺=右辺A〜右辺B とする。 2.変数呼び出し値の、 8000000+X を利用する。(0〜Xまでの範囲がランダムで返る) 3.システム変数30と変数操作の%を組み合わせる。(例えば100で割った余りを求めた場合、0〜99の範囲が返る)
- 乱数でアイテムを入手できるイベントを作成したのですがデータをロードして始めると、毎回同じアイテムを同じ順番で入手します。
1番2番目のようなウディタの乱数は、いわゆる擬似乱数と呼ばれるもので、そういう状況に陥るのだと思います。 3番目のような方法を試すか、キー入力監視などの並列(常時)内部にセルフ変数=0〜0のような乱数を噛ませる事で回避できます。
検索語 †
- 変数
- 代入
関連項目 †
外部リンク †
このページに関するコメント †
このページに関するコメントがございましたらこちらへどうぞ。
- 【注意!】
- 疑問・質問・相談・要望などへの回答は期待しないでください。
- また、コメントへの回答・指摘される方は冷静に余裕を持ってお願いします。