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

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


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




バグっぽい挙動

通常の名詞関係
+ ...
  • v448:「PULL」の挙動が不安定
    • 引かれるPULL物体の列を、先頭から順に1番目、2番目、3番目…と呼ぶと、以下が成り立つ
      • 1番目のPULL物体は、例え自身がSWAP状態であっても、壁に向かって移動しない
      • 2番目以降のPULL物体は、進入禁止を無視(レベル境界を含む)して移動する
      • 3番目以降のPULL物体は、同じターンに同じ方向に連続して2マス以上PULL移動しない
    • 重なった固体物体が同時に同じ方向に移動してPULL物体を引くとき、固体物体の内部IDによってPULL物体が移動するかが変わる
    • PULL物体を挟み込んで同時に同じ方向に移動するとき、次が成り立つ。ここで、左から順に「A B C」という配置で挟んだものとし、Aの方向へ移動するものとし、CとBには「移動に付随する破壊」が発生するルールが存在するとする。
      • 「AがPUSH物体を押す」または「『B IS SWAP』が存在し、AがBよりも内部IDが大きい」とき、移動時にCがBを破壊する
  • v448:「STILL」は、PUSHまたはPULLによって引き起こされるSWAP移動に対しては、移動を封じない
  • v448:「LOCKED」の挙動が不安定
    • 「LOCKED」かつ「MOVE/AUTO/CHILL」である物体は、正しく指定方向への移動を封じない
    • 「LOCKED」かつ「SWAP」である固体の物体は、移動を禁止する方向が逆
  • v448:「移動に付随する破壊」によって生じた物体は、そのターン全てのルールの影響を受けない
    • 例:「A IS WEAK」「A HAS B」でAが壁に向かって移動した際に生成されたBは、そのターン「B IS NOT B」「B IS DONE」「B IS WEAK」等の影響を受けない
  • v448:「SHIFT」物体が特定の条件下で「破壊されることを予測」したとき、自身のSHIFT効果を無効化する(「A IS YOU AND SHIFT」「B IS DEFEAT AND STILL」のとき、Bの向きが変化しない。さらに「B IS SHIFT」のとき、Bの向きは変化せずにAだけがSHIFTされる。)
  • v448:「TELE」物体が特定の条件下で「破壊されることを予測」したとき、破壊される側の物体に重なっている物体はTELE移動しない。これを利用して、一方通行のTELEを作ることができる。
  • v448:同レベルで2回以上仮ボーナスを獲得したとき、1回でも仮ボーナスを獲得したターンをUNDOすると、それまでに獲得した全ての仮ボーナスが未獲得扱いになる
  • v448:「A HAS B」「A ON B HAS C」「A ON C HAS D」…のとき、Aが破壊された際に生じる物体は、これらのルールの解釈順に依存する
  • v448:「A 前置詞 NOT A AND NOT B」のような判定は、内部IDに依存した真偽を返す
  • v448:「WITHOUT」「FEELING」の否定は、「NOT WITHOUT」「NOT FEELING」として扱われる
  • v448:「A FEELING B AND FEELING B」は、「A FEELING B AND B」と同値な真偽を返す
  • v448:「PLAY」関連(未調査)
  • v448:「SEEING」関連(未調査)

特殊な名詞関係
+ ...
EMPTY関係
+ ...
  • v448: emptyは、全ての移動効果を含めて、1ターンに1マスしか移動しない(ターン初めの無の位置からの移動を繰り返す)
    • 例:「BABA IS MOVE AND PUSH AND REVERSE」、「EMPTY IS YOU AND NEDGEUP」の状態で上入力を押すと、babaは「YOU処理の時に上に移動」「MOVE処理の時に下に移動」「NUDGE処理の時に上に移動」をし、最終的に1マス上に動く
  • v448: 各emptyは、「FOLLOW」による向きの指定に対して、1ターンに1回しか効果を受けない
    • 「UP・DOWN・LEFT・RIGHT」による向きの指定に対しては、何度でも効果を受ける(上書き)
  • v448:「EMPTY FOLLOW EMPTY」は、効果がない
  • v448:「EMPTY FOLLOW LEVEL」は、効果がない
  • v448: empty同士は、浮遊状態が異なっていても「移動に付随する破壊」を引き起こす
  • v448:「EMPTY IS PULL AND LOCKED」のとき、emptyの移動制限の方向が逆。
  • v448:「EMPTY IS PULL」のとき、emptyをSWAP状態の物体に向かって引っ張っても、SWAP移動が発生しない。「EMPTY IS YOU」で直接移動した場合はSWAP移動が発生する。
  • v448:「EMPTY IS ALL」で生成された物体は、emptyに向きが指定されているか否かに関わらず、向きが「無し」として生成される
  • v448:「EMPTY IS ALL」は、「EMPTY IS NOT X」があっても、Xを生成する
  • v448:「EMPTY IS CHILL」は、emptyに向きが指定されているとき、その向きに動く
  • v448:「A IS OPEN」「EMPTY IS SHUT」「EMPTY HAS B」のとき、重なったAがemptyに移動すると、全てのAが破壊され、1つのBが生成される。「OPEN」と「SHUT」を入れ替えても同じ仕様となる。
  • v448:「EMPTY IS YOU AND WIN AND BONUS」のとき、レベルをクリアしない
  • v448:「EMPTY NOT ON EMPTY」は、常に偽
  • v448:「A FEAR EMPTY」は、レベル境界をemptyとみなす
  • v448:「A FACING EMPTY (AND EMPTY …)」は、Aが無を向いているとき真となり、無の数が考慮されない
  • v448:「A SEEING EMPTY (AND EMPTY …)」は、Aの視線上に無が1マス以上あれば真となり、無の数が考慮されない
  • v448:「A 前置詞 NOT EMPTY IS X」は、特殊な物体の扱い、及び複数使用した際の扱いに統一性がない


GROUP関係
+ ...
  • v448:「条件付きEMPTY IS GROUP」は、名詞EMPTYをGROUPに追加しない。物体は追加する。
  • v448:「(条件付き)NOT GROUP IS GROUP」は、「NOT GROUP」に属する名詞が存在する(かつその条件を満たす)ときに限り、「INFINITE LOOP」を引き起こす。(個人的にはこのルールは「(条件付き)ALL IS GROUP」と等価になりそうにも思えるが…)
  • v448:「GROUP IS NOT GROUP」は、GROUPに属している通常の物体がレベル内に存在するときに限り「INFINITE LOOP」を引き起こす。レベル内にGROUPに属する通常の物体が存在しない場合、及びレベル全体と無に関しては存在していても「INFINITE LOOP」を引き起こさない。
  • v448:「A 動詞(≠IS) GROUP」は、X∈GROUPが条件付きでGROUPに入る場合、Xに付与された条件をこのルールに付与する
    • 例:「BABA ON KEKE IS GROUP」「IDLE ME IS GROUP」「FLAG HAS GROUP」のとき、「FLAG ON KEKE HAS BABA」「IDLE FLAG HAS ME」として処理される
  • v448:「LEVEL NEAR NOT GROUP」は、レベル全体に対しては、GROUPが何であっても処理されない
  • v448:条件付きグループの指定を連鎖させると正しく機能しない
    • 例:「ROCK NEAR WALL IS GROUP」「FLAG NEAR GROUP IS GROUP2」「BABA NEAR GROUP2 IS WIN」
  • v448:「NOT GROUP IS GROUP2」は、Xが条件付きでGROUPに指定されているとき、その条件の真偽によらずXはGROUP2に追加されない
    • 例:「BABA ON EMPTY IS GROUP」「NOT GROUP IS RED AND GROUP2 IS BLUE」のとき、babaは赤色にのみ変化する
  • v448:前置詞句に「GROUP」と他の名詞の双方が指定された場合、正しく判定されない

LEVEL・SELECT・PATH関係
+ ...
  • v448:「LEVEL IS YOU」「BABA IS YOU」「KEKE IS YOU2」のとき、YOU2用の移動キーでもレベルが動く
  • v448:「LEVEL IS YOU2」「BABA IS YOU」のとき、YOU2用の移動キーでもbabaが動く。さらに「KEKE IS YOU2」があるとき、babaはYOU2用の移動キーでは動かなくなる。
  • v448:「LEVEL IS STILL/LOCKED」は、「LEVEL IS YOU/CHILL」による向き変化も含めて、移動を無効化する
    • 「BABA IS STILL AND CHILL」のみのときは待機できるが、「LEVEL IS STILL AND CHILL」のときは待機できない
  • v448:「LEVEL IS STILL/LOCKED」は、「LEVEL IS PUSH/PULL」による移動を封じない
  • v448:「LEVEL IS LOCKED」は、「LEVEL IS NUDGE」に対して、レベルがLOCKED方向を向いているとき、任意のNUDGE方向へのNUDGE移動を無効化する
  • v448:「LEVEL IS TURNs」は、レベル全体の見た目の向きと実際の向きに、齟齬が生じる
  • v448:「LEVEL EAT A」は、レベル全体に対して、Aとレベルの浮遊状態を無視して処理される
  • v448:「A EAT LEVEL」は、レベル全体に対して、Aとレベルの浮遊状態を無視して処理される
  • v448:「LEVEL IS SAFE」は、「LEVEL IS BONUS」による破壊を防げない
  • v448:レベルのクリアとレベルの破壊が同ターンに行われる場合、どちらが先に行われるかはルールの処理順による
    • 例:「LEVEL IS WIN AND BONUS」のとき、ボーナスを獲得せずにレベルをクリアする。「LEVEL IS BONUS AND WIN」のとき、レベルが破壊され、クリアとならない。
  • v448:「LEVEL NEAR LEVEL (AND …)」は、レベルに対しては常に偽。レベルアイコンに対しては正しく処理されていると思われるが、見間違えでなければ調査中に挙動が変わったように見えた。調査には無関係なテキストの配置を変えただけなのだが…
    • 「LEVEL NOT NEAR LEVEL (AND …)」は、どちらに対しても正しく処理されている
  • v448:「LEVEL WITHOUT LEVEL」は、常に偽
  • v448:レベルに対して、「LEVEL ABOVE」と「LEVEL BELOW」の挙動が一貫していない。特に「LEVEL ABOVE EMPTY」「LEVEL ABOVE LEVEL」「LEVEL BELOW LEVEL」の3つが他と異なる挙動をしている。
    • 「LEVEL ABOVE/BELOW BABA」は、babaがレベル内に存在するとき真
    • 「LEVEL NOT ABOVE/BELOW BABA」は、babaがレベル内に存在しないとき真
    • 「LEVEL ABOVE EMPTY」は、常に偽
    • 「LEVEL BELOW EMPTY」は、emptyがレベル内に存在するとき真
    • 「LEVEL NOT ABOVE/BELOW EMPTY」は、emptyがレベル内に存在しないとき真
    • 「LEVEL ABOVE/BELOW LEVEL」は、常に偽
    • 「LEVEL NOT ABOVE/BELOW LEVEL」は、レベルアイコンがレベル内に存在しないとき真
    • 上記において、「ABOVE」は「BESIDE←」に、「BELOW」は「BESIDE→」に置き換え可
  • v448:「IDLE LEVEL IS AUTO」は、ルールを有効にするのに1回、ルールを実行するのに1回の、計2回連続で待機する必要がある。ただしレベル開始時は既にルールが有効なので、1回の待機でルールが実行される。
  • v448:「NOT IDLE LEVEL IS AUTO」は、レベル開始時に自動で1ターン経過する。レベル開始時は既にルールが有効であり、このとき「待機」入力の検知は行われないので、「NOT IDLE」の条件を満たしルールが実行される。
  • v448:「条件付きLEVEL IS POWER」は、正しく動作しない
    • 条件が「IDLE」「NOT IDLE」のとき正しく動作する
    • 条件が「IDLE」以外の「NOTのついていない条件」の場合、レベル全体が条件を満たすか否かに関わらず、レベルに電気エフェクトが発生するが、POWERED条件を真にしない
    • 条件が「NOT IDLE」以外の「NOT付き条件」の場合、レベル全体が条件を満たすか否かに関わらず、レベルに電気エフェクトが発生しないが、POWERED条件を真にする
  • v448:隠しレベル及びロックされたレベルを別の物体に変化させ、それをREVERTで元のレベルアイコンに戻すと、一時的に選択可能となる(未調査)
  • v448:レベルの見た目上の位置は、「ZOOM MODE」の変更によって元に戻る。元に戻したターンをUNDOすると、レベルが変な方向へずれる。
  • v448:「REVERSE AND LOCKED」のとき、通常の移動、及びFALLでは反転後の移動に対してLOCKED判定を行うが、SELECT移動では反転前の移動に対してLOCKED判定を行う
  • v448: PATH設定を持つ物体に重なったSELECT物体は、待機すると向きが「無し」になる
  • v448:レベル開始直後とリスタート直後の短時間、SELECT移動は反映されない

その他
+ ...
  • v448:「LONELY BABA AND NOT ON BABA IS YOU」は、ANDを無視して解析される
  • v448:「LONELY NOT*n AND LONELY BABA IS YOU」は、NOTを無視して解析される
  • v448:「LONELY NOT BABA IDLE BABA IS YOU」は、何のルールも解析されない
  • v448:「BABA IS RED NOT BABA NOT ON TILE IS BLUE」は、「BABA IS RED」「NOT BABA NOT ON TILE IS BLUE」に加え、「BABA NOT ON TILE IS BLUE」が解析される
  • v448:「P O W E R E D BABA IS YOU」は「POWERED BABA IS YOU」に加え、「BABA IS YOU」が解析される(「RED BABA IS YOU」を認識する)
  • v433?:追加レベルパックにおいて、セーブデータからleveltree設定が消失する(あるいは最初から設定されていない?)場合がある
※ バグ情報を書く際にはバージョンも併記してください。

用語

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

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

◯◯s

  • 一部の単語は、それらをまとめて◯◯sと表記する
    • YOUs:YOU、YOU2、3D
    • MOVEs:MOVE、CHILL、AUTO
    • NUDGEs:NUDGEDOWN、NUDGERIGHT、NUDGEUP、NUDGELEFT
    • FALLs:FALL(DOWN)、FALLRIGHT、FALLUP、FALLLEFT
    • DIRs:RIGHT、UP、LEFT、DOWN
    • TURNs:TURN、DETURN
    • LOCKEDs:LOCKEDDOWN、LOCKEDRIGHT、LOCKEDUP、LOCKEDLEFT
    • COLORs:RED、ORANGE、YELLOW、LIME、GREEN、CYAN、BLUE、PURPLE、PINK、ROSY、BLACK、GRAY、SILVER、WHITE、BROWN
    • EFFECTs:BEST、PARTY、PET、SAD、WONDER
    • GROUPs:GROUP、GROUP2、GROUP3
    • ABOVEs:ABOVE、BELOW、BESIDERIGHT、BESIDELEFT
    • RANDOMs:OFTEN、SELDOM

移動

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

向き

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

変化

  • 「変化」は、「A IS B」「A IS ALL」「A IS REVERT」「A WRITE B」によってAが別の物体に変化する処理を指す
    • ただし、一部の「A IS ALL」は生成のような挙動をとる

消失

  • 「消失」は、Aが無に変化する場合、及び「A IS NOT A」によってAが消える処理を指す
    • 「A IS DONE」は便宜上ここに入れる

生成

  • 「A IS MORE」「A HAS B」「A MAKE B」によって新しく物体が生成される処理を指す

固体

  • Aが固体であるとは、AがPUSH、PULL、STOPのいずれかの状態であることをいう

移動に付随する効果

  • 「移動に付随する効果」は「移動の失敗」「移動に付随する移動」「移動に付随する破壊」の3つに分類される
    • 「移動の失敗」は、移動先が固体であり、その固体が「移動に付随する移動/破壊」が発生しない状態(STILL、LOCKED、FLOAT、SAFEによる)のとき、元の移動が行われない処理を指す
    • 「移動に付随する移動」は、PUSH、PULL、SWAPによって付随する移動を指す
    • 「移動に付随する破壊」は下記を指す
      • 「A IS OPEN」「B IS SHUT」のとき、一方が他方に移動した際に起こる破壊
      • 「A EAT B」のとき、AがBに移動した際に起こる破壊
      • 「A IS WEAK」のとき、Aが「移動に失敗」した際に起こる破壊
      • 「EMPTY IS WEAK」のとき、物体が無に移動した際に起こる破壊
  • 「通常の移動」の際、「移動に付随する効果」が発生する
  • 「特殊な移動」の際、「移動に付随する効果」の一部または全部が無効化される

向きの付与

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

内部ID

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

メタテキスト

  • 特定のテキストを指すテキスト
  • エディタでテキスト名をTEXT_TEXT_IS等とすることで作成できる
  • 正式に対応している訳ではないが、一部の動作に関しては動作する
  • 動作する処理
    • IS/HAS/MAKEによる変換・生成
    • FEAR/MIMICによる処理
    • HOT、OPEN、DEFEAT、WIN、BONUS、END
      • エフェクトは発生しない
    • LEVELとの相互作用
    • 重なったときのEAT
      • 移動に付随する破壊は発生しない

メサテキスト

  • メタテキストの亜種
  • エディタ上で、例えばbabaを指すテキストの名前を「TEXT_BABA」ではなく「BABA」とすることで作成可能
  • これは、効果の対象として自分自身をとる。動作する処理はメタテキストと同じ。
    • メサテキスト「BABA」を用いて「BABA IS WIN」を作ると、このテキストの「BABA」自体がWIN状態となる
    • メサテキスト「BABA」を用いて「KEKE IS BABA」を作ると、kekeがメサテキスト「BABA」に変化する
  • さらに(.ldファイルを直接編集して)同名のオブジェクトを用意すると、メサテキストはこのオブジェクトに対しても効果の対象にとる。

文法(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も無効)

ALLの範囲

  • ALLは通常、レベル開始時に存在する通常の名詞、または通常の名詞によって指されるオブジェクトのどちらかが存在する場合に、それら1種類につき1つずつまとめたものを指す
  • 以下の場合においては、その限りではなく、ALLの範囲が拡張される。拡張された範囲はUNDOでは戻らず、リスタートによって戻る。
    • アルファベットを並べて通常の名詞を作った場合、その名詞がオブジェクトリストに含まれている場合に、新しくALLの範囲に追加される
    • メタテキストを用いて変化させて生じたテキストは、テキストであってもALLの範囲に追加される

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個連続で並べると発生する。

デバッグモード

セーブファイルがあるファイルに存在するSettingC.txtにおいて、[setting]の箇所にdebug=1を追加することで、デバッグモードが利用できる
デバッグモードでは以下の点が変更される
  • レベルプレイ時、F3キーを押すことで即エディタで開くことができる
  • レベルプレイ時、CTRL+Mで即クリアとなる
  • レベルプレイ時、CTRL+F5で昔のビルドの名残
  • エディタ時、ステージの広さの上限が68×38となる(投稿できる広さの上限は変化なし)

処理順

おおざっぱには
  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のステージ順・配置変更