゚ラヌ凊理

「人々はこの真実を忘れおしたった」ずフォックスは蚀った。

-しかし、忘れないでください

あなたは飌いならしたすべおの人に氞遠に責任がありたす...



アントワヌヌ・ド・サン=テグゞュペリ「 星の王子さた 」



䜕もしない人だけが間違っおいたせん。 時間が経぀に぀れお、゚ラヌが蓄積されたす。 私が蚀えるこずは、珟圚、「 クォンタムチックタックトヌ 」 だけでさたざたな゚ラヌに぀ながる玄12のナヌスケヌスが手元にあり、それらに察凊する粟神がたったくないこずですコヌドは本圓に地獄です 。 しかし、時々私は䜕かを修正するのに時間がかかりたす。 そしお、あなたは䜕を知っおいたすか 叀い間違いを修正するこずは、新しい間違いを䜜成するこずず同じくらい面癜いです



新しい服を着た叀いりル



Urは私の最初のゲヌムの1぀です Zillions of Gamesでなければ、 Axiomでも 確実です 。 これは、ボヌドゲヌムぞの情熱を始めたゲヌムです もちろん、私たちはベルやマレヌの 再建に぀いお話しおいるのではありたせん。 圌らのすべおの長所に぀いお、これらの専門家は、明らかに、めったにボヌドゲヌムをプレむしたせんでしたいずれにせよ、独自のルヌルによっお。 私の意芋では、このゲヌムのルヌルの唯䞀のプレむ可胜なバヌゞョンは、 Dmitry Skiryukによっお開発されたした 。



ゲヌムは怖いようでした




幞いなこずに、 Nomad1はほがすぐに創造的なプロセスに関䞎するようになり、 AndroidおよびiOS向けのゲヌムの優れた実装を開発したした。 Habrの別の著者が開発に参加したこずに泚意しおください。 1eqinfinityによっお䜜成された優れた音楜テヌマがなければ、ゲヌムの雰囲気は半分になりたせんでした。 Androidバヌゞョンのリ゜ヌスはZoGバヌゞョンの倖芳を倧幅に改善したしたが、重芁な点の1぀は決しお䞎えられたせんでした。



それはすべお数字の「スタック」に぀いおです
Dmitry Skiryukによっお提案されたルヌルによれば、ボヌド䞊には最倧4぀のゲヌムチップを「重ねお」取り付けるこずができるいく぀かの䜍眮がありたす。 このようなスタックは、 LIFOの原理に埓っお動䜜したす。最初にチップが入ったチップは最埌に残りたす。 このメカニズムにより、敵チップの前進を遅らせ、自分のチップで「握り締める」こずができたす。 これにより問題が発生したした。 Zillions of Gamesモデルでは、各ボヌドフィヌルドに1぀のピヌスしか含めるこずができたせん。



この制限に遭遇したのはこれが初めおではなく、察凊方法を知っおいたす。 「 フォヌカス 」などの䞀郚のゲヌムでは、「合成」フィギュアを䜿甚できたす。これは、互いに積み重ねられたフィギュアの「スタック」です。 同様のアプロヌチがマンカリでも䜿甚されおいたす 。 残念ながら、この方法はUrには適甚できたせん;あたりにも倚くの皮類の図を定矩する必芁がありたす。 別のアプロヌチは、「スタック」ピヌスをボヌドの倖の特別にマヌクされた䜍眮にい぀の間にか移動するこずです Rhythmachiaで行われたように 。



Urの最初のバヌゞョンでは、ロックされた図圢を隠し、目に芋えないフィヌルドに移動したした。 䞀番䞊のチップが残ったら、スタックからピヌスを䞀床に1぀ず぀元の堎所に戻したした。 残念なこずに、可芖性は損なわれたした。 このような「トップビュヌ」では、「ノックダりン」チップず「カバヌ」の状況を区別するために、ルヌルをよく理解する必芁がありたした。 最近では、この問題をなんずか解決できたした。





私はプルックで始めたした
私は長い間このゲヌムを䜜りたかったです。 Pulukでは、チップを積み重ねるこずができたすが、Focusずは異なり、スタックのサむズに制限はありたせん。 「合成」ピヌスを䜿甚するこずは䞍可胜だったため、わずかにオヌバヌラップしおタむルタむルを描くずいうアむデアが生たれたした。 そしおここで、私は別のゲヌムからの成果に倚く助けられたした。 実際、ZRFのボヌドは2぀の方法で定矩できたす。 グリッドを定矩する最も簡単な方法は次のずおりです。

(grid (start-rectangle 0 54 50 104) (dimensions ("a/b/c/d/e/f/g" (18 0)) ; files ("10/9/8/7/6/5/4/3/2" (0 50)) ; ranks ) )
      
      



18括匧内は、氎平䜍眮が倉化したずきに圢状タむルがシフトするオフセットです。 タむル自䜓の幅は30なので、ピヌスは互いに「重なり」たす。 芋た目があたり良くありたせん







幞いなこずに、状況を修正する方法がありたす この小さなスクリプトは、Chaseでか぀お私を助けおくれたした。 それはあたり正しくありたせん。負の数ず耇数のグリッド蚘述では正しく動䜜したせんが、時間を倧幅に節玄できたす。 ゲヌムを適甚するず、次のようになりたす。







秘密は簡単です-珟圚、各ポゞションは個別に説明されおいたす。 䜍眮の蚘述の順序は、互いに「重なり合う」タむルのzシヌケンスを決定したす。

 (positions ... (g5 108 304 158 354) (f5 90 304 140 354) (e5 72 304 122 354) (d5 54 304 104 354) (c5 36 304 86 354) (b5 18 304 68 354) (a5 0 304 50 354) ... )
      
      





残念ながら、Pulukに固有の数字のグルヌプ固有の動きにより、画像は壊れおいたす。 芆われた図は2番目に移動し、プレヌダヌが移動した図よりも遅く描画されたす。 これでは䜕もできたせん。これがZillions of Gamesの仕組みです。







Pulukは、このような数字の衚瀺方法には適しおいたせん。 しかし、りル-来おいたす



りルでは、数字はグルヌプで移動したせん 。 単䞀のチップは、「パむル」の䞊䞀郚のボヌドフィヌルド䞊に配眮するこずも、「パむル」の䞊郚から離れるこずもできたす。 この点で、「Ur」のゲヌムのルヌルは、遞択したアプロヌチに最適です。 唯䞀のこずは、ボヌド䞊の䜍眮を正しく決定し䜍眮の䞀郚を䞊䞋に数ピクセル移動するこずにより、それらを接続するこずです









アプロヌチは機胜したすが、堎合によっおは状況が厩れたす。



䞀般的に、ここではすべおが明確です。 「透明な」色で郚分的に描かれた長方圢のタむルを扱っおいたすが、ZoGが「透明な」色を描くず、同じ堎所に重なる図圢ではなく、ボヌドの画像背景画像の䞀郚を取りたす。 「 MarGo 」の図を描いおいたずきにすでにこれに遭遇しおおり、その察凊方法を知っおいたす。 あなたがする必芁があるのは、シェヌディングされた右䞋隅で远加のタむルを描くこずです。 塗り぀ぶしの色は、䞋の図圢の色ず䞀臎する必芁がありたす。



残念ながら、問題はグラフィックリ゜ヌスの準備に限定されたせん。 実際、Zillions of Gamesシェルは「䜙分な」䜜業を「奜たない」のです。 1぀の図圢を移動しおも、他の図圢は再描画されたせん。 移動のアニメヌションの埌、図圢は新しい䜍眮に単玔に描画され、叀い䜍眮は再びボヌドの背景画像の長方圢の断片で塗り぀ぶされたす。 「システムをだたす」方法がありたす。 スタックの䞀番䞋から開始しお、すべおの図の再描画を「ちょうど」開始する必芁がありたす。



これは芋た目です
 (define refresh (if (im-white?) (if friend? (create White $1) else (create Black $1) ) else (if friend? (create Black $1) else (create White $1) ) ) ) (define check-refresh (if (on-board? down) (if (or (and (flag? is-enemy?) not-enemy?) (and (not-flag? is-enemy?) enemy?) ) (refresh $3) else (refresh $2) ) else (refresh $1) ) ) (define pre-action ... (if (on-board? down) mark down (while (and (on-board? up) (not-empty? up)) (if (or (piece? King) (piece? KingE) (piece? KingF)) (check-refresh King KingF KingE) else (check-refresh Man ManF ManE) ) (set-flag is-enemy? enemy?) up ) back ) )
      
      







実際、すべおの「パむル」ピヌスは、トップチップを削陀する動きの䞀郚ず同じタむプで再䜜成されたす。 これは完党に機胜する゜リュヌションです。 もちろん、アニメヌションを泚意深く監芖するず、チップを取り倖すずきに画像が短時間砎壊されたり、「角」が塗り぀ぶされた状態でフィギュアを動かすアニメヌションに気づきたすが、移動の終わりに、画像はかなり蚱容できる状態に埩元されたす。 おそらくこれは、Zillions of Gamesによっお達成できる最高のものです。



残念ながら、別の問題がありたす。






黄色の長方圢は、圢状に関連付けられた領域です。 「パむル」では、䞊郚の領域が䞋郚の領域ず重なっおいるこずがわかりたす。 これが問題です。 山の根元にあるチップを「クリック」するには、マりスを数ピクセル幅の狭いストリップに入れる必芁がありたす。 マりスカヌ゜ルはこれに少し圹立ちたす。移動を完了するこずができるピヌスの䞊にカヌ゜ルを合わせるず圢状が倉わりたすが、倧きな埅ち䌏せがありたす。



Zillions of Gamesシェルは、かなり扱いにくいUI関連オプションをサポヌトしおいたす。 「スマヌトムヌブ」を有効にするず、プレヌダヌはマりスでボヌド䞊のピヌスをドラッグする必芁がなくなりたす。 単䞀の移動を実行できるピヌスをクリックするず、ドラッグアンドドロップなしで移動が自動的に実行されたす。 Hurrayの堎合、これは非垞に䟿利ですただし、チェスでは、そうでない堎合がありたす。 ただし、このオプションには欠点もありたす。1回の移動で実行できる空のフィヌルドをクリックするず、この移動が実行されたす。 ここで、3぀の数字のスタックを想像しおください。 䞊郚の長方圢の面積は2ピクセルの角よりも倧幅に倧きく、その䞭で移動が可胜な堎合、わずかに震えおいる手がバッチ党䜓で簡単に敗北に぀ながる可胜性がありたす。



ボヌナスずしお、予期せぬ莈り物を受け取りたした。 䞀般的に、ZRFの埌にAxiomバヌゞョンを曞き盎す予定でしたが、必芁ありたせんでした ゲヌムロゞックが簡玠化されたため、AIはゲヌムによりよく察応できるようになりたした。 圌は時々私に勝ち、ほずんどの堎合、たった1぀のチップを䜿う時間がないず蚀うだけで十分です。 ただAndroidバヌゞョンよりも悪いですが、それで遊ぶのはすでにずおも楜しいです。



「象」の狩り



それは私の間違いではありたせんでしたが、私の手は非垞にかゆみを感じたした。 理由はわかりたせん。 これは、 むトゥリのピグミヌの間で人気があるず思われる、かなり独創的なチェスのようなゲヌムです。 著者によるず、このゲヌムの説明は、1821幎のフランスの宣教垫モヌリスモル゜ヌの日蚘で友人によっお発芋されたした。



゚レファントハントのゲヌムに関する最初の蚀及は、1821幎にむトゥリの森ぞの任務䞭に跡圢もなく消えたフランスの宣教垫、モヌリスモル゜ヌの父芪の日蚘で芋぀かりたした。 日蚘を含む圌の私物は、人類孊の遠埁によっお人食いの村で埌に発芋されたした。


残念ながら、著者の再構築のみを扱っおいたす。 ゲヌムの説明は明らかに䞍完党であり、゜ヌスにアクセスできず、友人ずの連絡はその埌倱われたした。 特に、ゲヌムが「 乗銬 」の動きを䜿甚しおいるかどうかは疑わしいです。



著者は、象がピグミヌの10x10フィヌルドを「半分に重ねる」5x5フィヌルドに移動し、ピグミヌが「チェスの階士のように跳ね回る」こずで移動したこずを蚀及したしたが、私は実際に圌らが䜜ったずは思えたせんナむトムヌブ。これは䞀皮の抜象的です。 しかし、ピグミヌは色が束瞛されおいるず勝おない可胜性があるため、他の可胜な遞択肢DやAなどは問題倖のようです。


ちなみに、この匕甚は「 ラルフ・ベッツァの「面癜い蚘法」」を䜿甚しおいたす。 このゲヌムに興味があるのはなぜですか それを理解しおみたしょう。









2぀の異なるサむズのフィギュアを䜿甚する珍しいゲヌムの1぀がありたす。 象は倧きな数字で、ボヌドの4぀のフィヌルドをすぐに占有したす。 盎亀に沿っお「倧きな」ステップを1぀移動し、4぀のタヌゲットセルにあるすべおのものを「抌し぀ぶす」こずができたす。 圌は、「銬」によっお動いおいる「ピグミヌ」ず、8぀の偎面のいずれかで1぀たたは2぀のセルで動いおいる1぀の「シャヌマン」に反察しおいたす。



もちろん、「小さな」図は、「象」が占有するセルに移動するこずはできたせんこれは単玔すぎたす。 象は、その䞋のすべおのフィヌルドが攻撃されるずいう条件でのみ「食べる」こずができたす 著者自身は、「 フォックスずギヌス 」ず題された䞭䞖のペヌロッパのゲヌムず類䌌しおいたす。 悪い考えではありたせんが、残念ながら、実装は私たちを倱望させたした。



いく぀かのコヌド
 (define Ele-shift ( $1 (verify not-friend?) (verify (not-friend? ul)) (verify (not-friend? ur)) (verify (not-friend? dl)) (verify (not-friend? dr)) (set-attribute vulnerable? (and (attacked? ul) (attacked? ur) (attacked? dl) (attacked? dr))) (capture ul) (capture ur) (capture dl) (capture dr) add )) (define Shaman-shift2 ( $1 (if empty? add $2) (verify (and not-friend? (or (empty? c) (vulnerable? c)))) (if (not-empty? c) (capture c)) add ))
      
      





ここには2぀の゚ラヌがありたす。 1぀は攻撃的ですが、もう1぀は基本です 第䞀に、完党に予想倖に、シャヌマンは孀独な象を攻撃するこずができたす同時に、たったく予想通り、絵を「壊す」。 同時に、圌は象自䜓を食べず、その䞋のケヌゞを単に占有したす。









悪の根源はここにありたす



 (if empty? add ...)
      
      





セルが空の堎合、その䞊に立ちたすそしお先に進みたすが、これは別の珟実です。 秘Theは、「象の䞋」のセルが本圓に空であるこずです。 それは別のグリッドにあり、小さく、すべおの欲求で「象」はそれに収たらないでしょう。 これを修正するのはずおも簡単です



 (define my-empty? (and not-friend? (or (empty? c) (vulnerable? c))) ) ... (if (my-empty?) (if (not-empty? c) (capture c)) add $2) ...
      
      





さらにもっず









このような簡単な方法で、シャヌマンを逌ずしお䜿甚するず、䞀人のピグミヌが象党䜓を倒すこずができたす もちろん、これは著者が意図したものではありたせん。 しかし、なぜそれが起こったのですか 実際、すべおがシンプルです。 象は、それが立っおいる4぀のセルすべおが攻撃を受けおいる堎合に捕獲できたす。 コヌドを芋おみたしょう



 (set-attribute vulnerable? (and (attacked? ul) (attacked? ur) (attacked? dl) (attacked? dr)))
      
      





すべおが非垞に透明であり、「ピグミヌ」のみがゲヌムに参加した堎合でも機胜したす。 「銬の動き」で戊闘を行うず 、圌らは自分がいる2x2のマスのフィヌルドを攻撃したせん 。 シャヌマンは別の問題です 圌は、自分が立っおいる広堎の4぀のフィヌルドのうち3぀を「カバヌ」したす。 シャヌマン自身が䜍眮し、トラップの準備ができおいるフィヌルドを「カバヌ」するために残っおいたす。 シャヌマンが食べ尜くされおも構いたせん-脆匱性属性はすでに蚭定されおおり、次の動き党䜓が有効になりたす



゚ラヌを理解したら、簡単に修正できたす。 パッチ自䜓はかなり冗長ですが、その本質は単玔です。 攻撃された述語の䜿甚を拒吊したすか このゲヌムではここには収たりたせん手動チェックに眮き換えたす。 より柔軟なアプロヌチにより、「シャヌマン」を特別に扱うこずができたす。 残念ながら、ゲヌムの倖芳には䜕もできたせん。 状況は垞に「砎壊的」です。 このゲヌムは、Zillions of Gamesにはあたり適しおいたせんただし、アむデア自䜓は確かに興味深いです。



振り返らないでください



新しいゲヌムに取り組む過皋で、Zillions of Gamesプラットフォヌムをよりよく孊びたす。 これたで考えられなかった党く新しい゜リュヌションが思い浮かびたす。 倚くの堎合、非垞に優れおいるため、他の叀いゲヌムを修正できたす。 そのため、Dmitry Skiryukの蚘事の 1぀で、非垞に独創的なゲヌム「 Duel 」が説明されおおり、チェスの駒の代わりにサむコロが䜿甚されおいたす。







移動を実行するず、立方䜓は、移動の開始時に䞊面に描かれたステップ数の間、ボヌドの呚りを回転したす。 動きは盎線ではなく、方向は任意に倉曎できたす。 タヌンの終わりに立方䜓が䞊を向く面は、開始点ず終了点だけでなく、遞択した移動経路にも䟝存するため、これは重芁です。



ボヌドゲヌムでは、同様の皮類の動きあらゆる段階で方向が倉わる可胜性がありたすが非垞に䞀般的です。 これず「 Ko Shogi 」のThunderclap、そしお「 Nine-Tile Cyvasse 」のフィギュアの静かな動きなど。 これに関連する䞻な問題は、以前に完了したフィヌルドぞの戻りを犁止する必芁があるこずです。 最倧距離が3ステップを超えない堎合Claude Leroyの「 マナ 」ゲヌムのように、移動方向を正反察に倉曎するこずを犁止するのに十分ですこのため、ZRFには、 最埌ではない玠晎らしい述語がありたす 。



厳密に蚀えば、圌はい぀も救うわけではありたせん
ZRFでのManaの実装では、この手法は機胜したすが、ゲヌムが異垞終了する可胜性がありたす。 ゲヌムでは、1぀たたは2぀の最初の郚分的な動きが行き止たりになり、そこから抜け出せない状況になる可胜性はありたすが、ありそうにありたせん。 これは、各郚分的な動きが独立しおおり、他から独立しおいるず考えられるためです。 䜕癟䞇ものゲヌムは、「ぶ぀かる」たで問題を芋るこずができたせん。 Joclyは 、コンポゞット党䜓の動きを党䜓ず芋なし、より正確な実装を構築できたす。



シェむプが3ステップ以䞊移動できる堎合、 最埌からではないですか すでに保存されおいたせん。 以前に入力したすべおのフィヌルドを䜕らかの方法でマヌクする必芁がありたす。 ZRFでは、ブヌル倀のフィヌルドにバむンドするために、いわゆる「䜍眮フラグ」が䜿甚されたす。 残念ながら、それらはゲヌムの状態の䞀郚ではなく、各郚分移動の開始時に自動的にクリアされたす。



もちろん、出口がありたす
 (define clear-mark mark a0 (while (on-board? next) next (if (and enemy? (piece? Mark)) capture ) ) back ) (define step ( (create Mark) $1 (verify (my-empty?)) (clear-mark) (add-partial $2 $3) ))
      
      







蚪問したフィヌルドには、目に芋えない数字を配眮できたすしたがっお、それらは確かに州の䞀郚です。 䞻なこずは、それらを時間通りに削陀するこずを忘れないこずです このテクニックは非垞に甚途が広いため、倚くのたったく異なるゲヌムで圹立ちたす。 たず、 サルタやトラバヌスなど、あらゆる皮類の移行ゲヌムが思い浮かびたすが、これはハルマ族のゲヌムに限定されたせん。 同じ手法により、「 Luzhanqi 」ず長文の「 Ossetian Checkers 」の「皌働䞭」状態を実珟できたした 。



あずがきの代わりに...



ドラフトに぀いおの䌚話を続けるず、「間違いに関する䜜業」は垞に玔粋に技術的な問題に限定されるものではないこずに泚意しおください。 非垞に頻繁に、ゲヌムに取り組む過皋で、私は䜕か新しいこずを孊びたす。 時々、そのような「詳现」がゲヌムに関する私のすべおのアむデアをひっくり返し、新しい方法でそれを芋るように匷制したす。 䟋ずしお、「 トルコの草案 」の最も興味深い皮類の1぀に぀いおお話したいず思いたす。





このゲヌムはバヌレヌンで行われたす。 「トルコの草案」のすべおの芏則に埓いたす。 元のゲヌムにはない新しいルヌルが1぀だけ導入されおいたす。 このルヌルは非垞に簡単に定匏化され、堎合によっおはゲヌムの性質に倧きな圱響を䞎え、より組み合わせやすくなりたす。 私にずっお、それは非垞に予期せぬ興味深い発芋でした。 ゲヌムを蚘録するこずで、それが䜕であるかを刀断できたすか



答え
ルヌルは私を驚かせたした。 バヌレヌンで行われるこの皮の「トルコチェッカヌ」では、チェスに非垞によく䌌たチェックの抂念が導入されおいたす。 図の1぀が攻撃される状況は、「Kish」؎كず呌ばれたす。 ルヌルは、前の動きで敵があなたのピヌスの1぀を攻撃した堎合、攻撃で応答するこずを犁止したす぀たり、「kish ... kish」を実行したす。 同時に、脅嚁を排陀する必芁はありたせん。 敵を脅かさない限り、どんな動きでも実行できたす。



「リタヌン」攻撃の戊術は「トルコの草案」で広く䜿甚されおいるため、このような革新はゲヌムを倚様化するのに非垞に機敏です。 たた、ドラフトに぀いお新しいこずを孊び、 ZRFで衚珟しようずするこずは非垞に興味深いものでした 。






All Articles