「仕様・バグ関連」の編集履歴(バックアップ)一覧に戻る

仕様・バグ関連 - (2021/12/15 (水) 18:56:49) の編集履歴(バックアップ)


ここでは、「BABA IS YOU」の詳細な仕様や発見されているバグをまとめます
本編未使用語句やテクニックのネタバレが含まれますので、未クリアの方は注意してください




バグっぽい挙動

  • v488:「移動に付随する破壊」によって生じた物体は、そのターン全てのルールの影響を受けない
    • 例:「A IS WEAK」「A HAS B」でAが壁に向かって移動した際に生成されたBは、そのターン「B IS NOT B」「B IS DONE」「B IS WEAK」等の影響を受けない
  • v488:「TELE」物体が特定の条件下で破壊されるとき、破壊される側の物体に重なっている物体はTELE移動しない。これを利用して、一方通行のTELEを作ることができる。
  • v488:「A HAS B」「A ON B HAS C」「A ON C HAS D」…のとき、Aが破壊された際に生じる物体は、これらのルールの解釈順に依存する。
  • v488:「SWAP」かつ「LOCKED」である固体物体は、移動を禁止する方向が逆。
※ バグ情報を書く際にはバージョンも併記してください。

用語

物体・実体・オブジェクト・エンティティ

  • このwikiでは今のところ特に区別して使っていません
    • メタテキストを考えるとどういう分類がよいのか…

移動

  • 「移動」は「通常の移動」と「特殊な移動」に分類される
    • 「通常の移動」は、YOUs、MOVEs、NUDGEs、FEAR、SHIFTによって引き起こされる移動を指す
    • 「特殊な移動」は、BACK、TELE、SELECT、FALLsによって引き起こされる移動を指す

向き

  • オブジェクトには「向き」が存在し、「上」「下」「左」「右」「無し」の5種類ある
  • 無の向きは、特に向きが指定されない限り「無し」として扱う
  • 向き「無し」の物体は、どの方向にもどの物体にも向いていない(割と未調査)

変化

  • 「変化」は、「A IS B」及び「A IS REVERT」によってAが別の物体に変化する処理を指す
  • 「A IS BACK」を変化と生成のどちらに入れるべきかは考え中

消失

  • 「消失」は、Aが無に変化する場合、及び「A IS NOT A」によってAが消える処理を指す
    • 「A IS DONE」もここにいれるべきか名前を変えるべきか…

生成

  • 「A IS ALL」及び、MORE、HAS(動詞)、MAKE(動詞)によって新しく物体が生成される処理を指す

移動に付随する効果

  • 「移動に付随する効果」は「移動に付随する移動」と「移動に付随する破壊」に分類される
    • 「移動に付随する移動」は、PUSH、PULL、SWAPによって付随する移動を指す
    • 「移動に付随する破壊」は下記を指す
      • 「A IS OPEN」「B IS SHUT」のとき、一方が他方に移動した際に起こる破壊
      • 「A EAT B」のとき、AがBに移動した際に起こる破壊
      • 「A IS WEAK」のとき、Aが壁に向かって移動した際に起こる破壊
      • 「EMPTY IS WEAK」のとき、物体が無に移動した際に起こる破壊
  • 「通常の移動」の際、「移動に付随する効果」が発生する
  • 「特殊な移動」の際、「移動に付随する効果」の一部または全部が無効化される

向きの付与

  • 「向きの付与」は、下記ルールによる処理をいう
    • UP、DOWN、LEFT、RIGHT、FOLLOW(動詞)、TURNs
  • 「向きの付与」は、特殊な移動を含めた全ての移動の終了後、及び新しく物体が生成された時に適用される
    • このため、1ターン内にTURNs処理が2回起こる場合がある

内部ID

  • ステージ内の全てのオブジェクト(テキスト含む)は固有の内部IDを持っている
  • 内部IDは以下のときに付与される
    • 同時に同種のオブジェクトが生成された場合(レベルスタート時含む)、同列内を上から下に、同レイヤー内を左列から右列に、各レイヤーを低レイヤーから高レイヤーの順に付与される
    • レベルスタート時は同時に異種の物体が新しく生成されるが、このときは次の手順に沿って内部IDを付与する(ちゃんと確認していないのでもしかしたら違うかも)
      • 上記の順番でマス目を見ていき、テキストに内部IDを付与する。このとき、新しく登場した種類のテキストorオブジェクトがあれば、その順番を記憶する。
      • 登場した種類順に上記の順番でマス目を確認し、同じ種類のオブジェクトに連続して内部IDを振っていく
    • UNDOした時に新しく物体が生成された場合、上記の逆順で付与される
  • 内部IDは、以下のような処理に関係する
    • 2方向から同じ属性の移動でPUSHされた場合、内部IDが小さい方の処理を一瞬行ってから、大きい方の処理で上書きする
    • 向きの異なる2つのSHIFTオブジェクトが重なっている場合、内部IDが小さいほうの処理を優先する(向きが変化するからだと思われる)
    • 3つのSHIFTが重なっていたり、移動先にPUSHオブジェクトがあったりすると上記の限りでない
    • ルールが解釈される順番。普通は気にしなくていいが、処理によっては内部IDではなくルールの解釈順が関係する場合がある。

文法(beta版)

よりわかりやすく修正できる方いましたらお願いします

記法

  • {A}/{B}…AまたはBが入る
  • (A)…Aが0または1回入る
  • (A)+…Aが0回以上入る

語句のグループ分け(括弧内は例)

  • noun…名詞(BABA)
  • verb…動詞(IS)
    • vi…後ろに名詞/形容詞を伴う動詞(ISのみ)
    • vh…後ろに名詞を伴う動詞(HAS)
  • adj…形容詞(YOU)
    • dir…方向を表す形容詞(UP)
  • prep…前置詞(ON)
    • pface…後ろに名詞/方向を伴う前置詞(FACINGのみ)
    • pfeel…後ろに形容詞を伴う前置詞(FEELINGのみ)
  • adv…副詞(LONELY)

AND,NOTの文法

  • n_***
    • (NOT)+ ***
  • ***_s
    • n_*** (AND n_***)+
  • nounORadj
    • {noun}/{adj}
  • nounORdir
    • {noun}/{dir}
  • verbnoun
    • {vi nounORadj_s}/{vh noun_s}
  • verbnoun_s
    • verbnoun (AND verbnoun)+
  • prepnoun
    • prep noun_s
    • pface nounORdir_s
    • pfeel adj_s

解釈可能な構文

  • (adv_s) noun_s (prepnoun_s) verbnoun_s

仕様

暗黙のルール

Baba Is Youには、明示されていないが常に成立しているルール(基本ルール)が3つ存在する。
  • TEXT IS PUSH
  • LEVEL IS STOP
  • CURSOR IS SELECT

HIDEについて

何のルールも存在しないときはポーズ画面の「RETURN TO MENU」より下の部分に何も表示されないが、HIDEで隠れている場合は「RULES:」と表示されている
一部のルールが隠れている場合、そのルールのみが非表示となる

同種のオブジェクトの重複は6つまで

同種のオブジェクトは同じマスに6つまでしか存在できない(ただしレベルオブジェクトを除く)。
それ以上重ねようとすると消える。これは破壊ではないのでHASは反応しない。

テキストを重ねた時の処理

LONELY/NOT/ONなどの語句にテキストを重ねると、その文は多重解釈される。正確には重なった部分までを無効化して再解釈される。正直よくわからない。
  • 例1. 「BABA IS MOVE AND YOU/PUSH」=「BABA IS MOVE AND YOU」+「BABA IS MOVE AND PUSH」
  • 例2. 「LONELY/IS BABA IS MOVE」=「LONELY BABA IS MOVE」+「(IS) BABA IS MOVE」
  • 例3. 「BABA NEAR/IS KEKE IS PUSH」=「BABA NEAR KEKE IS PUSH」+「KEKE IS PUSH」
  • 例4. 「BABA IS MOVE AND/IS YOU/IS」=「BABA IS MOVE AND YOU」+「BABA IS MOVE (AND IS)」+「BABA IS MOVE (IS)」
  • 例5. 「BABA ON KEKE/IS IS MOVE」=「BABA ON KEKE IS MOVE」+「KEKE IS MOVE」
    • KEKE/ISを、KEKE/ONやKEKE/ANDにしても同様
    • BABA ON ISを無効化して再評価している?
  • 例6. 「BABA AND KEKE/IS IS FLAG」=「BABA AND KEKE IS FLAG」
    • BABA ANDを、BABA ISにしても同様
    • 例5.と違って再評価されない。なんで?(どちらかというと例5.がおかしい?)

レベルの境界

レベルの境界には、いかなるルールの効果も受けないSTOPオブジェクトが配置されている。ver350以降、このオブジェクト上に配置された全てのオブジェクトは、いかなるルールも無効化して破壊されるようになった。(FLOAT, SAFEを無効化。たぶんHASも無効)

INFINITE LOOP

以下の条件を満たすとき、特殊演出が発生する
  • 同じ構文が200回解析される(WORD)
  • 同じ条件が80回解析される(FEELING)
  • オブジェクトが200回落ちる(FALL)
  • グループメンバーが400回更新される(GROUP)
  • 連続するPUSH等の処理が10000通りになる
  • CRASHオブジェクトが存在する(内部的)
具体的には、以下のようなルールがある
  • ROCK IS WORDかつrock IS NOT WORD
    • 本編で可能
  • NOT GROUP IS GROUP またはGROUP IS NOT GROUP
  • BABA NEAR GROUP IS GROUP、KEKE IS GROUP
    • 前者は、「BABAが、GROUPに属する全ての種類のオブジェクトの近くにいるとき、GROUPに含まれる」という意味になる
  • BABA FEELING YOU IS NOT YOU
  • BABA IS CRASH(内部的)
無限ループになりそうだけどならない例
  • BABA MIMIC KEKE、KEKE IS BROKEN

TOO COMPLEX

テキストの組み合わせが約1000通りに達すると特殊演出が発生する。
例えば、6個重ねた名詞のテキストを6個連続で並べると発生する。

処理順

おおざっぱには
  1. 移動処理の解釈
  2. 移動
  3. それ以外の解釈
  4. 変化
  5. 消滅
  6. その他の形容詞
の順(推測です)

移動

  1. YOU
  2. CHILLの向き適用
  3. MOVE = CHILL = AUTO
  4. NUDGE(RIGHT > UP > LEFT > DOWN)
  5. FEAR
  6. SHIFTの移動処理
  7. (ルール解釈1)
  8. REVERT・変化・矛盾
  9. (ルール解釈2)
  10. FOLLOW
  11. BACK
  12. TELE
  13. SHIFTの向き変化処理
  14. (ルール解釈3)
  15. SELECT
  16. (ルール解釈4)
  17. FALL(RIGHT > UP > LEFT > DOWN)
  18. (ルール解釈5)
  19. RIGHT > UP > LEFT > DOWN
  20. TURN RIGHT = TURN LEFT
  21. FLOAT
  22. 色・エフェクトの適用(判定タイミングが調査不可能なため、とりあえずここに置く)

詳細
+ ...
  • 移動によるstacking/unstackingについて
+ ...
  • 上記の移動番号が同じ移動で、同時に同じマスに2つの異なるオブジェクトが侵入した場合、その2つのオブジェクトが固体であるかどうかに関わらず重なる
    • PUSH、PULL(、SWAP)はそれぞれの移動に追随し、同じ番号扱いで処理される
      • ただし、TELE、FALL、SELECTには追随しない
    • NUDGEでは、同方向のものは同時に処理されるが、異なる方向のものは上記順に処理される
    • FALLでは、同方向のものも、各内部ID順によって処理される
      • ただし、NUDGE、FALLは反対方向同士は打ち消し合うため、UP・DOWNとLEFT・RIGHTが同ターンで処理されることはない
    • SWAPの処理は、進入禁止を無効化する
    • 3つ以上のTELEは同時にランダムにワープする
  • 複数の異なるTELEオブジェクトが同一マスに重なっているとき、そのマスに乗ったオブジェクトは、ポーズ画面で先に書かれている側のオブジェクトによってTELEされる。
  • FALLの特殊性
+ ...
  • FALLは、次の処理を移動する物体がなくなるまで繰り返す
    • FALLが適用されている物体を内部ID順に選び、次の処理を移動できなくなるまで繰り返す
      • その物体のFALL方向の隣接するマスを確認し、FALL移動できるのであれば1マス移動する
    • ステージ上のルールを再解釈する(殆どのルールはきちんと解釈されるようですが、BROKEN絡みはうまく反映されないようです。他のMIMIC、WORD、GROUPがきちんと反映されるかは検証中)
  • TELEの特殊性
+ ...
  • BACK中のオブジェクトがTELEオブジェクトの上に乗っても、TELEされない
    • そのTELEの上に別のオブジェクトが乗っている場合、そのオブジェクトのみがTELEされる
  • BACK中のオブジェクトがTELEオブジェクトでもある場合、上に乗ったオブジェクトをTELEさせる
  • TELEオブジェクトAが特定の条件を満たす場合、その上のオブジェクトはTELEしない
    • 特定の条件とは、BACK移動後のTELE直前のタイミングで、TELE移動・FALL移動・TELE以下のルール解釈を無視した場合に、A自身がSINK状態であることに伴う破壊以外の処理によって破壊される、という条件
    • このとき、Aから他方へのTELEは行われないが、他方からAへのTELEは行われる
+ ...
以下、ICE IS TELEとし、babaとiceが重なるとする
  • ICE IS WEAK
    • TELE前にiceが破壊される
  • ICE IS SINK
    • TELE後にbabaとiceが破壊される
  • BABA IS SINK
    • TELE前にbabaとiceが破壊される
  • BABA IS HOT, ICE IS MELT
    • TELE前にiceが破壊される
  • BABA IS DEFEAT, ICE IS YOU
    • TELE前にiceが破壊される
  • ICE ON BABA IS DONE
    • TELE後にiceがDONEする(DONE≠破壊)
  • ICE IS BONUS
    • TELE後のiceによってBONUSを取得する
  • A IS directionsの特殊性
+ ...
  • HAS, MAKEによって生成された実体に対し、その実体の向きを適用するルールがある場合、予めその向きで生成されて出現する

  • old-editor版ではFEARとMOVEの優先順位が逆になっている。そのため、これを利用したカスタムレベルは最新版ではクリアできない場合がある。(DOWNTOWN等)

消滅

  1. 移動によるOPEN / SHUT・EAT, 移動失敗時のWEAK
  2. REVERT・変化・矛盾
  3. BACK
  4. (SELECT)
  5. FALLによるOPEN / SHUT・EAT
  6. DONE
  7. そのマスにMOREするかの判定
  8. WEAK
  9. MORE
  10. SINK
  11. HOT / MELT
  12. YOU / DEFEAT
  13. 重なりによるOPEN / SHUT
  14. 重なりによるEAT
  15. (MAKE)
  16. WIN・BONUS
詳細
+ ...
  • 移動によるOPEN/SHUT, EAT, WEAKは各移動の度に判定されるが、それによって新たに生成された実体はそのターンREVERT・変化・矛盾・BACKの影響を受けない
  • ROCK IS ROCKがある状態で、矛盾とROCK IS FLAGを同時成立させると、岩は旗に変化する
  • 変化処理は1ターンに1度しか行われず、ISによる変化以外に増殖もしない。同時に適用した場合、REVERT > 変化・矛盾 > BACKの順に優先される。
  • 移動によるEATはPUSH, STOPより優先される

条件

  • 他ルールに影響を及ぼす:GROUP, WORD, MIMIC, BROKEN
  • 自身の条件を指定する:ON, NEAR, FACING, LONELY, WITHOUT, IDLE, FEELING
  • ルール全体を読み込んだものをここではルールリストと表現することによる
  • ルールリストの更新タイミングは"移動"項目で述べているが、リストが更新されていてもすでにそのルールの処理タイミングが終わっている場合は、そのルールはそのターン何の効果もない
  • ルールリストの更新と、ルールの条件部分の真偽の更新は、別で行われる
  • 条件の真偽更新は、ターン開始時、移動時、実体が新しく生成された時に行われる。向き変化時には行われない場合もあるらしく、FACINGのルールが正しく機能しない場合がある
    • FEELINGは、ターン中にルールが更新された場合に、条件の真偽が更新される?
  • HASの文に条件を付与すると、直感的な動作に従わない場合が多い

通常版とbeta版で異なるマップ・ステージ

ネタバレ注意
+ ...
  • SOLITARY ISLAND
    • ステージ順・配置変更
  • WIRELESS CONNECTION
    • 沼の向こうに1列追加
  • DIM SIGNAL
    • 同上
  • LOCK THE DOOR
    • 木が外側に移動してわかりやすく
  • HORROR STORY
    • 初期配置変更(BABA IS YOUが横→縦)
  • EXISTENTIAL CRISIS
    • 初期配置変更(BABA IS YOUが横→縦)
  • CONDITION
    • 別解封じ(KEY IS NOT YOUが追加され、さらに単に鍵をPUSHするだけでは解けないよう変更)
  • SECRET GARDEN
    • 挙動変更による解法一部変更(ISが1つ減り、条件文の一部が変化して別の変化文が成り立つ場合、その処理は次のターンに行われるように変更)
  • TUNNEL
    • 別解封じ(FIRE IS NOT PUSH追加)
  • TECTONIC MOVEMENTS
    • 別解封じ(TEXT IS FLOAT追加)
  • ???,DEPTHS
    • PARADE, FIREPLACEの位置交換
  • ABC,META
    • QUEUEがABCからMETAに移り、METAのステージ順・配置変更