#contents(level=3) *バグ &bold(){※ バグ情報を書く際にはバージョンも併記してください。} **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) --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などの語句にテキストを重ねると、その文は多重解釈される。&s(){正確には重なった部分までを無効化して再解釈される。}正直よくわからない。 -例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 -ROCK IS WORD、rock 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 +TELE +REVERT・変化・矛盾・BACK +SELECT +FALL(RIGHT > UP > LEFT > DOWN) +色・エフェクトの適用(判定タイミングが調査不可能なため、とりあえずここに置く) -ver.HXではFEARとMOVEの優先順位が逆になっている。そのため、これを利用したカスタムレベルは最新版ではクリアできない場合がある。 -PUSH、PULL、SWAPはそれぞれの移動において追随する -上記の移動番号が同じ移動で、同時に同じマスに2つの異なるオブジェクトが侵入した場合、その2つのオブジェクトが固体であるかどうかに関わらず重なる --PUSH、PULLによる移動も同じ番号扱いで処理される --NUDGE、FALLは例外 -SWAPの処理は、進入禁止を無効化する -複数の異なるTELEオブジェクトが同一マスに重なっているとき、そのマスに乗ったオブジェクトは、ポーズ画面で先に書かれている側のオブジェクトによってTELEされる。 -TEXT IS Xを作った場合、この直後に再度ルールの解釈が行われる。 -HAS, MAKEによって生成された実体に対し、その実体の向きを適用するルールがある場合、予めその向きで生成されて出現する -FOLLOWによる向きの適用は調査中 **消滅 +移動によるOPEN / SHUT・EAT, 移動失敗時のWEAK +REVERT・変化・矛盾・BACK +(SELECT) +FALLによるOPEN / SHUT +MORE・DONE +WEAK・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の順に優先される。 -MOREによって増えた実体はそのターンDONEされない(バグ) -WEAKとSINKは同時に処理される(バグ?) -移動によるEATはPUSH, STOPより優先される -重なりによるEATは、HASによる生成場所は移動によるEATと同様移動する直前の位置である **条件 -他ルールに影響を及ぼす:WORD, MIMIC, BROKEN -自身の条件を指定する:ON, NEAR, FACING, LONELY, WITHOUT, IDLE, FEELING -ルール全体を読み込んだものをここではルールリストと表現することによる -1ターン内でルールリストが更新されるのは --ターン開始直後(移動直前) --SHIFT処理の直後 -一部のルールのルールリストへの追加・更新・削除が行われるのは --WORDオブジェクトによるルールの追加・変更・削除 --それによって追加されたMIMIC, BROKENによるルールの追加・削除や、FEELINGの条件の真偽が変更されたことによるルールの追加・削除 --及びこれらの相互作用 --ルールリストが更新されるだけであって、すでにそのルールの形容詞の処理が終わっている場合は、そのルール自体はそのターン何の効果もない -自身の条件を指定するものは、ターン開始直後(移動直前)に、条件部分が読み込まれる --ターン中に実体が新しく生成された場合、その都度条件の真偽のみ更新される --FEELINGは、ターン中にルールが更新された場合に、条件の真偽が更新される -HASの文に条件を付与すると、直感的な動作に従わない場合が多い