atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
スーパーマリオメーカー2 専門分野解説記事
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
スーパーマリオメーカー2 専門分野解説記事
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
スーパーマリオメーカー2 専門分野解説記事
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • スーパーマリオメーカー2 専門分野解説記事
  • 座標依存はどうして発生する?| How come position-affected behavior happen?

スーパーマリオメーカー2 専門分野解説記事

座標依存はどうして発生する?| How come position-affected behavior happen?

最終更新:2025年04月11日 22:42

smm2expert

- view
管理者のみ編集可
For English readers: Click this to access English article.

目次

  • 座標依存とは
  • 座標の表し方
  • 座標依存ギミック一覧
  • 座標依存の特徴
  • 座標依存の仕組み考察
  • 結論


マリオメーカー2を遊んでいて、このようなことは1度はなかっただろうか?

「合同な配置なのに異なる挙動を示す」

一見物理演算をするゲームとしてあってはならないことに感じますが、実は座標依存の例はいくつか見つかっています。

今回はその事象の例と座標依存が起きる原因の考察をしていきたいと思います!!
 

座標依存とは

その名前の通り、挙動を座標に依存していることです。より簡素に言うと、配置する位置によって動きが異なることを言います。

ここで注意したいのは"座標に依存している"とは他のパーツ(プレイヤー含め)の位置によって挙動を変えると言う意味合いではないことです。

例えば、ドッスンはマリオが接近するとあらかじめ定められた方向に突撃してくる敵ですが、これはふつう座標依存とは言いません。なぜならば、マリオの位置に動きが依存しているのであって、配置されている絶対的な位置は挙動に何も影響を及ばしていないからです。

座標依存はバグなのか?


結論を言ってしまうと、バグである可能性は低いと思いますし、バグ判定でコースが消されることもほぼないと思います。

確かに、スーパーマリオメーカー2の攻略本などを参照すると、配置される位置によって挙動を変えるパーツがあることを明記していないため、少なくとも座標依存の存在は想定されていないといいていいと思います。

ただし、そもそも管理者が参照した攻略本が任天堂公式出版でないこと、座標依存は非常に細かな違いのものがほとんどであること(後述)であり、バグ判定でコースを消してもほとんど意味がないことを
考えるとバグとは考えなくて良いと思います。

管理者が知っている限りでは、座標依存ギミックによってコースが消された前例もないようです。
 

座標の表し方


ここからは座標依存の例とそれが発生する位置を集めるが、そのためにはまずは座標の基準点をここで約束しなければいけない。

画面の一番左下のブロックの中心位置を(0,0)として、X軸を画面の横方向と並行に、Y軸を画面の縦方向と垂直に取ると約束する。
そして、1マス移動するためにX座標/Y座標が1変わるものとする。

例えば、クリボーの中心の座標は(5,4)で、でかブラックパックンの中心の座標は(9.5,3.5)となる。
 

座標依存ギミック一覧


1. 羽付きブロック1マス上昇



発生箇所: 16 < y < 64
この箇所だけ他とくれべて周期が1フレーム(1/60[秒])短い。

2. Pスイッチ積み重ね崩壊



画像の左側はx = 30,右側はx = 36

発生箇所: 32 < x < 64
この箇所だけPスイッチのタワーが崩れてしまう。(逆にこの範囲以外では崩れない。)

3. 坂コンペア+シューリンガン



左の装置: x = 13, 右の装置: x = 18
発生箇所: 16 < x < 64
この箇所以外ではシューリンガンがわずかなスピードでコンペアに流される。逆にこの範囲ではコンペアの上に止まる。

4. チョロプー+ブラックパックン



左の装置:x = 8, 右の装置: x = 12

発生箇所: x = 8,128
この箇所ではブラックパックンの当たり判定もしくはチョロプーの動きが違うため、ボム兵が爆発しない。この配置は比較的良く使われているため、気にした方が良いかもしれない。

※他にも座標依存ギミックは多数見つかっているが、ここでは配置が比較的簡単なものを選んだ。もっと知りたい方は
https://note.com/shamoji_smm/n/nb9f6507d42c1
へ訪れてみよう。
 

座標依存の特徴


上記に4つの例を挙げたが、これらにはある共通点がある。
挙動の変化の境界が2^n(nは非負整数)[マス]となっている
↓参考
xの値 2^x この座標が境界となるギミック
1 2 (なし)
2 4 (なし)
3 8 チョロプー+ブラックパックン
4 16 羽付きブロック1マス上昇,坂コンペア+シューリンガン
5 32 Pスイッチ積み重ね崩壊
6 64 羽付きブロック1マス上昇,坂コンペア+シューリンガン,Pスイッチ積み重ね崩壊
7 128 チョロプー+ブラックパックン
※コースの最長長さが240マスのため、x = 8以降は2^8 > 240より考慮する必要がない。
 

座標依存の仕組み考察


ここからは個人の考察なので鵜呑みにしないでください。

まず大事なのは、マリオメーカー2においてはパーツの座標はIEEE754の単精度浮動小数点数で表されることが重要である。

+ IEEE754の単精度浮動小数点数とは
簡単に言うと、2つの変数(x,y)をシステムに保存して座標をx*(2^(y-127))で表すこと。(1 <= x < 2)
ただし、xの値はシステム上では2進数で上位24桁まで、yの値はシステム上では2進数で8桁でデータが保存される。

例えば、130を表すとすると、
130 = 1.015625*2^7なので、
x = 1.015625,y = 134となり、システム上では2進数で、
x = 1.00000010000000000000000, y = 01000110
とデータが保存されている。



ここで注意したいのは、座標の移動が2^nを跨ぐと桁落ちする可能性があるということだ。

例えば、
x = 1.11111111111111111111111, y = 01000100 (64よりわずかに小さい状態)
から0.125マス正の方向に移動することを考える。

すると、理論上の位置は
x = 1.000000000111111111111111,y = 01000101
となるが、xは上位24桁までしかデーターを格納できないため、xの最後の桁の"1"が消えてしまい、実際のデータは

x = 1.00000000011111111111111,y = 01000101となる。

これによる座標のずれが影響していると考えている。
 

結論

座標依存はまだまだ謎が多いです。今回の議論も管理者の憶測に過ぎません。皆さんもぜひ考察して見てください!!


ここからは英語での記事となります。内容は日本語版と同じです。
 

INDEX

  • What is position-affected behavior?
  • Posotion expression
  • Examples of them
  • Features of them
  • Mechanism theory
  • Conclusion


Have you ever encountered following situation?:

「2 congruence entities behave diffrently」

You might feel this is a serious problem in the viewpoint of physics. However, there are some examples.
I'll introduce them and show my opinion what causes it.
 

What is position-affected behavior?


Literally, behavior being different because of where they was placed.

Be aware that the word doesn't refer in case where behavior being different because of other parts.

For example, thwomp activates when player get closer to it. In general, this is not considered as position-affected behavior because thwomp's behavior depends on player's position, not on absolute position.

Is it considered as a glitch?


In conclusion, it is hard to say it is glitch. Also it is unlikely to get your level deleted because of this.

I'm pretty sure it is unexpected phenomena for developers.

However, it triggers minor difference、there are almost no problem of leaving it undebugged.
As far as I know, There are no example of level deleted because of it.
 

Position expression


Before I introduce the examples of position-affected behaviors, we have to define how to express the position.
The center of the lower left block is defined as the origin. Then, we take X axis parallel to the horizontal direction of the screen, Y axis parallel to the vertical direction of the screen.
Finally, the position changes by 1 per block.

e.g; Goomba's position : (5,4) | Muncher's position : (9.5,3,5)
 

Examples of them



1. Winged music block




Range: 16 < y < 64
In this range its interval is 1 frame faster than other ranges.

2. P-switch stacking collapse



left P-switches : x = 30, right P-switches : x = 36

Range: 32 < x < 64
In this range the stack of P-switch will be destroyed. (They won't in other ranges.)

3. Conveyor and spike ball



left spike ball: x = 13 | right spike ball : x = 18

Range: 16 < x < 64
In this range spike balls stay on the conveyor.(They will be slightly flowed by the conveyors in other ranges.)

4. Moles and muncher stack



left muncher : x = 8 | right muncher : x = 12
Range: x = 8,128
In this range, the muncher's hitbox is diffirent from other place. This different appears on whether the bomb-omb explode or not.
This might be concerning because this gizmo is widely used.

※If you want to look up more, please visit:
https://note.com/shamoji_smm/n/nb9f6507d42c1
 

Features of them


These 4 examples has common feature:
The place Where behavior changes is always 2^N[block](N is a integer)
↓Table
x 2^x Behavior chage
1 2 (None)
2 4 (None)
3 8 Mole and muncher
4 16 Winged music block & conveyor and spike ball
5 32 P-switch stacking collapse
6 64 Winged music block & conveyor and spike ball & P-switch stacking collapse
7 128 Mole and muncher
(Since the longest possible level is 240 block long, if x is 8 or larger, we don't have to consider about them. (2^8 > 240).)
 

Mechanism theory


This is merely my opinion. Don't swallow it.

The important fact is that in SMM2, the position is expressed by IEEE754 single precision floating point numbers.

+ What is IEEE754 single precision floating point numbers?
In short, it is a one way to express number in computer, by storing 2 variables. The number is expressed by x*(2^(y-127)).(1 <= x < 2)
Here, the x value is stored as binary digits, only top 24 digits are stored. The y value is stored as binary digits, 8 digits are stored.

e,g: when the system express number 130,
130 = 1.015625*2^7
valuables will be x = 1.015625,y = 134.
In the system, these are converted to binary digits. Therefore, the variables are stored as following:
x = 1.00000010000000000000000, y = 01000110



The point is, It means that if the movement of position crosses 2^n, there is a possibility of an order of magnitude drop.

e,g;
Suppose
x = 1.11111111111111111111111, y = 01000100 (slightly lower than 64),
When the position changed by 0.125,The position should be:
x = 1.000000000111111111111111,y = 01000101
{However, only x's top 24digits are stored, the 25th(= last) digit of x will disappear.The actual number would be:
x = 1.00000000011111111111111,y = 01000101

This means the position is changed unexpectedly. I guess think makes position-affected behavior happen.
 

Conclusion


It is still in mystery. Why don't you examine it?
「座標依存はどうして発生する?| How come position-affected behavior happen?」をウィキ内検索
LINE
シェア
Tweet
添付ファイル
  • 2025041119261200-BF19FBEA37724338D87F26F17A3B97B2.svg
  • 2025041119272600-BF19FBEA37724338D87F26F17A3B97B2.jpg
  • 2025041119330200-BF19FBEA37724338D87F26F17A3B97B2.jpg
  • 2025041119343700-BF19FBEA37724338D87F26F17A3B97B2.jpg
スーパーマリオメーカー2 専門分野解説記事
記事メニュー
#1
座標依存はどうして発生する?| How come position-affected behavior happen?
記事メニュー2
[更新履歴]
2025.4.11
座標依存はどうして発生する?| How come position-affected behavior happen?
最近更新されたページ
  • 86日前

    マリメで頻出の英単語集 | Important words in SMM2
  • 86日前

    トップページ
  • 172日前

    座標依存はどうして発生する?| How come position-affected behavior happen?
  • 172日前

    メニュー
  • 172日前

    右メニュー
もっと見る
最近更新されたページ
  • 86日前

    マリメで頻出の英単語集 | Important words in SMM2
  • 86日前

    トップページ
  • 172日前

    座標依存はどうして発生する?| How come position-affected behavior happen?
  • 172日前

    メニュー
  • 172日前

    右メニュー
もっと見る
ウィキ募集バナー
急上昇Wikiランキング

急上昇中のWikiランキングです。今注目を集めている話題をチェックしてみよう!

  1. デジタルモンスター まとめ@ ウィキ
  2. まどドラ攻略wiki
  3. 戦隊・ライダー:装備@ ウィキ
  4. 戦隊・ライダー:怪人まとめ@ ウィキ
  5. おんJ模擬ドラフトまとめwiki
  6. 作画@wiki
  7. MadTown GTA (Beta) まとめウィキ
  8. アニヲタWiki(仮)
  9. 東方同人CDの歌詞@Wiki
  10. 提督たちの憂鬱 支援SSほか@ まとめウィキ
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 発車メロディーwiki
  6. モンスター烈伝オレカバトル2@wiki
  7. 検索してはいけない言葉 @ ウィキ
  8. オレカバトル アプリ版 @ ウィキ
  9. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  10. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
もっと見る
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MadTown GTA (Beta) まとめウィキ
  2. まどドラ攻略wiki
  3. シュガードール情報まとめウィキ
  4. ちいぽけ攻略
  5. 戦国ダイナスティ攻略@ウィキ
  6. SurrounDead 攻略 (非公式wiki)
  7. 20XX @ ウィキ
  8. ソニックレーシング クロスワールド @ ウィキ
  9. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  10. Dark War Survival攻略
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  3. スーパーロボット大戦Y - アニヲタWiki(仮)
  4. 鬼レンチャン(レベル順) - 鬼レンチャンWiki
  5. 信じていた仲間達にダンジョン奥地で殺されかけたがギフト『無限ガチャ』でレベル9999の仲間達を手に入れて元パーティーメンバーと世界に復讐&『ざまぁ!』します! - アニヲタWiki(仮)
  6. 奴隷騎士ゲール(DARK SOULS III) - アニヲタWiki(仮)
  7. コメント/雑談・質問 - マージマンション@wiki
  8. 機動戦士ガンダム サンダーボルト - アニヲタWiki(仮)
  9. サーヴァント/一覧/クラス別 - Fate/Grand Order @wiki 【FGO】
  10. 模擬ドラフト結果 - おんJ模擬ドラフトまとめwiki
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.