「仕様・バグ関連」の編集履歴(バックアップ)一覧に戻る
仕様・バグ関連 - (2021/05/13 (木) 12:33:47) の編集履歴(バックアップ)
バグ
※ バグ情報を書く際にはバージョンも併記してください。
LEVEL IS ALL
ver.320で確認。
2種類以上の名詞またはオブジェクトが存在しているとエラー。
TEXT以外の特殊な名詞は反応しない。
文法(beta版)
よりわかりやすく修正できる方いましたらお願いします
記法
- {A}/{B}…AまたはBが入る
- (A)…Aが0または1回入る
- (A)+…Aが0回以上入る
語句のグループ分け(括弧内は例)
- noun…名詞(BABA)
- verb…動詞(IS)
- vi…後ろに名詞/形容詞を伴う動詞(ISのみ)
- vh…後ろに名詞を伴う動詞(HAS)
- adj…形容詞(YOU)
- prep…前置詞(ON)
- pface…後ろに名詞/方向を伴う前置詞(FACINGのみ)
- pfeel…後ろに形容詞を伴う前置詞(FEELINGのみ)
- adv…副詞(LONELY)
AND,NOTの文法
- n_***
- ***_s
- nounORadj
- nounORdir
- verbnoun
- {vi nounORadj_s}/{vh noun_s}
- verbnoun_s
- 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などの語句にテキストを重ねると、その文は多重解釈される。正確には重なった部分までを無効化して再解釈される。正直よくわからない。例3以降は現在修正中。
- 例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.がおかしい?)
内部ID
ステージ内の全てのオブジェクト(テキスト含む)は固有の内部IDを持っている。
これは、オブジェクトが発生、変化したとき(UNDOによって発生した場合含む)に付与(更新)される。
同時に同種のオブジェクトが出現した場合、同列内を上から下に、同レイヤー内を左列から右列に、各レイヤーをレイヤー1からレイヤー3の順に付与する。
内部IDは、以下のような処理に関係する。
- 2方向からPUSHされた場合、内部IDが大きいほうの処理を優先(上書き)する
- 向きの異なる2つのSHIFTオブジェクトが重なっている場合、内部IDが小さいほうの処理を優先する(向きが変化するからだと思われる)
- 3つのSHIFTが重なっていたり、移動先にPUSHオブジェクトがあったりすると上記の限りでない
レベルの境界
レベルの境界には、いかなるルールの効果も受けない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
- 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個連続で並べると発生する。
処理順
おおざっぱには
- 移動処理の解釈
- 移動
- それ以外の解釈
- 変化
- 消滅
- その他の形容詞
の順(推測です)
移動
- YOU
- CHILLの向き適用
- MOVE = CHILL = AUTO
- NUDGE(RIGHT > UP > LEFT > DOWN)
- FEAR
- SHIFTの移動処理
- (ルールの解釈)
- SHIFTの向き適用(そのターンSHIFTされていない場合)
- RIGHT > UP > LEFT > DOWN
- TURN RIGHT = TURN LEFT
- REVERT・変化・矛盾
- FOLLOW
- BACK
- TELE
- (ルールの解釈2)
- SELECT
- FALL(RIGHT > UP > LEFT > DOWN)
- 色・エフェクトの適用(判定タイミングが調査不可能なため、とりあえずここに置く)
詳細
+
|
... |
- 移動によるstacking/unstackingについて
+
|
... |
- 上記の移動番号が同じ移動で、同時に同じマスに2つの異なるオブジェクトが侵入した場合、その2つのオブジェクトが固体であるかどうかに関わらず重なる
- PUSH、PULL(、SWAP)はそれぞれの移動に追随し、同じ番号扱いで処理される
- ただし、TELE、FALL、SELECTには追随しない
- NUDGEでは、同方向のものは同時に処理されるが、異なる方向のものは上記順に処理される
- FALLでは、同方向のものも、各内部ID順によって処理される
- ただし、NUDGE、FALLは反対方向同士は打ち消し合うため、UP・DOWNとLEFT・RIGHTが同ターンで処理されることはない
- SWAPの処理は、進入禁止を無効化する
- 3つ以上のTELEは同時にランダムにワープする
- 複数の異なるTELEオブジェクトが同一マスに重なっているとき、そのマスに乗ったオブジェクトは、ポーズ画面で先に書かれている側のオブジェクトによってTELEされる。
|
+
|
... |
- BACK中のオブジェクトがTELEオブジェクトの上に乗っても、TELEされない
- そのTELEの上に別のオブジェクトが乗っている場合、そのオブジェクトのみがTELEされる
- BACK中のオブジェクトがTELEオブジェクトでもある場合、上に乗ったオブジェクトをTELEさせる
- TELEオブジェクトによってテキストが移動し、ルール解釈に変更が生じる場合、再度ルール解釈を行う
- TELEオブジェクトが"破壊予知"条件を満たす場合、その上のオブジェクトはTELEしない
- "破壊予知"条件とは、TELE直前のタイミングで、BACK移動・TELE移動・FALL移動・TELEによる再ルール解釈を無視した場合にTELEオブジェクトAが破壊される、という条件
- このとき、Aから他方へのTELEは行われないが、他方からAへのTELEは行われる
|
+
|
... |
- この処理の後、再度ルール解釈が行われる。このターンの変化処理には適用されないが(β版)、DEFEATやWINのルールは更新される。
|
+
|
... |
- HAS, MAKEによって生成された実体に対し、その実体の向きを適用するルールがある場合、予めその向きで生成されて出現する
|
- old-editor版ではFEARとMOVEの優先順位が逆になっている。そのため、これを利用したカスタムレベルは最新版ではクリアできない場合がある。(DOWNTOWN等)
|
消滅
- 移動によるOPEN / SHUT・EAT, 移動失敗時のWEAK
- REVERT・変化・矛盾
- BACK
- (SELECT)
- FALLによるOPEN / SHUT・EAT
- DONE
- そのマスにMOREするかの判定
- WEAK
- MORE
- SINK
- HOT / MELT
- YOU / DEFEAT
- 重なりによるOPEN / SHUT
- 重なりによるEAT
- (MAKE)
- 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
- ルール全体を読み込んだものをここではルールリストと表現することによる
- 1ターン内でルールリストが更新されるのは
- 一部のルールのルールリストへの追加・更新・削除が行われるのは
- WORDオブジェクトによるルールの追加・変更・削除
- それによって追加されたMIMIC, BROKENによるルールの追加・削除や、FEELINGの条件の真偽が変更されたことによるルールの追加・削除
- 及びこれらの相互作用
- ルールリストが更新されるだけであって、すでにそのルールの形容詞の処理が終わっている場合は、そのルール自体はそのターン何の効果もない
- 自身の条件を指定するものは、ターン開始直後(移動直前)に、条件部分が読み込まれる
- ターン中に実体が新しく生成された場合、その都度条件の真偽のみ更新される
- FEELINGは、ターン中にルールが更新された場合に、条件の真偽が更新される
- HASの文に条件を付与すると、直感的な動作に従わない場合が多い