±20億を超える数値を入力した場合の挙動について

エディタ上での数値入力の挙動

手動入力可能な数値については、いずれの箇所も手入力において以下の範囲で受け付ける。

-2,000,000,000 ~ 2,000,000,000

手入力ではない場合(マウスホイール操作など)では入力項目によって上下限が決まっている。

これについては「エディタ上での入力制限」タブで別途列挙。

符号あり32ビットIntの範囲は -2,147,483,648 ~ 2,147,483,647 、 符号なし32ビットIntの範囲は 0 ~ 4,294,967,295 なので、 これらの範囲+αの値を入力したときの挙動を調べる。

-999,999 ~ 999,999 は通常の数値として扱う。

通常

1,000,000 ~ 2,000,000,000 は基本的には整数変数として扱う。ただし「データを呼ばない」にチェックを入れた場合は通常の数値とする。(該当オプションがある項目のみ)

「データを呼ばない」にチェックを入れない状態で、整数変数として誤っている値(1,400,000,000以上など)を入力することもできる。

この場合、エディター上では「★エラー!整数変数ではありません!!」と表示されるが、ゲーム起動は可能。該当箇所を実行してもエラーにはならない。

整数変数入力例1
整数変数入力例2
整数変数表示例

-999,999,999 ~ -1,000,000 も通常変数として扱う。

ただし画面上の説明を見ると「通常の整数値」の範囲には含まれていない。

負の整数変数表示例1
負の整数変数表示例2

-2,000,000,000 ~ -1,000,000,000 も通常変数として扱う。

ただし画面上では「指定不能」と表示される。

負の整数変数表示例3
負の整数変数表示例4

-2,147,483,648 ~ -2,000,000,001、2,000,000,001~2,147,483,647 は入力不可能。

この範囲の数値を入力してコマンド確定しても ±2,000,000,000 に補正される。

計算結果がこの範囲に入るようにした場合の挙動は後述。

-2,294,967,295 ~ -2,147,483,649 は入力不可能。

入力した瞬間に 2,000,000,000 に補正される。

~ -2,294,967,296 は入力可能。

ただし実際には入力とは異なる値に置換される。

負のオーバーフロー表示例4

これらより、ユーザが自由に入力できる数値について、 -2,000,000,000 ~ 2,000,000,000 の範囲で扱うことができる。

演算によって±20億を超える場合

公式マニュアルに記載あり。

http://www.silversecond.com/WolfRPGEditor/Help/04ev_value.html

マップイベント、コモンイベントで挙動が異なる。また、コモンイベントの場合、左辺・右辺どちらが±20億を超えるかによって挙動が異なる。

具体的には以下のような動作になる。

コモンイベントの場合

  • 右辺が±20億を超える場合、その時点で±20億に補正される。
  • 左辺が±20億を超える場合、補正されずにそのままの値が得られる。ただしint32のオーバーフローが発生する。

マップイベントの場合

  • 左辺・右辺問わず、±20億を超える場合±20億に補正される。コモンイベントと異なり、オーバーフローは発生しない。

以下のようなマップイベントおよびコモンイベントを用意する。

オーバーフローテストイベント1
オーバーフローテストイベント2

このイベントを実行する。

オーバーフローテストイベント3