ずっと後に、私がプロのプログラマーになったとき、正方形と長方形のボード上のさまざまなチェスのようなゲームの動きのルールを制御するための普遍的なアプリケーションを開発するというアイデアがありました。 もちろん、普遍的なAIを作成できるとは思いもしませんでした。 あらゆる種類のルールをカスタマイズ可能に制御し、ネットワーク上でプレイする機能を備えたユニバーサルチェスボードを実装するというタスクでさえ、圧倒的でした。 私はチェスゲームのルールを集めて一般化しようとしましたが、これらの短いスニペットを実行しているという事実を考慮して、メインの作業の間にプロセスが停止し、非常にゆっくりと進みました。 これは先週の金曜日まで続き、 Zillions of Gamesというプロジェクトを発見しました。
私が実際に出会ったものを実現し、私はおとぎ話にいると思いました。 無料のデモ版でも、同じエンジンに実装された48の完全に異なるゲームでプレイすることが提案されました。 チェスとドラフトに加えて、さまざまな三目並べ、 Go (プラグインdllをエンジンとして使用)、およびさまざまなパズルが提示されました。 聞いたこともないゲームがありました。 チェス自体は、紳士の伝統、中国、韓国、タイ、および日本のチェスのセットによって表されました。 後者は、デモ版ではミニバージョンとしてのみ提供されていましたが、それ自体がゲームのフルバージョンを購入する正当な理由でした。
しかし、主なものは提示されたゲームのセットではなく、有料版を購入した後、2000以上の追加のゲームとパズルをダウンロードすることさえできませんでしたが、新しいゲームを開発するには、 Lispを連想させる言語でルールを記述するだけで十分でした。 言語のガイドとその使用例が添付されています。 それから、私は長い間夢見ていたものを見つけており、このエンターテインメントは長い間私にとって十分であることに気づきました。
一般的に、私はZillions of Games(ZRF)ルール記述言語の可能性をより詳しく研究し、学習の過程で、興味深く有用な何かを書くことにしました。 もちろん、単純なものから複雑なものに移行する予定ですが、視点を失わないために、最後にやってみたい「夢のゲーム」について説明しようと思います。
だから:
一般的な情報
- ゲームは、大きくて大きな正方形のボード(17x17セルなど)で始まります
- 敵は交代で交代します
- 動きとは、駒を動かす、駒の状態を変える、または相手の駒を奪うことと考えられます
- ターンの開始前に、プレーヤーはフィールドにフィギュアや障害物を置くことがあります
- フィールドにオブジェクト(図、障害物、または修正子)を設定する機能は、プレーヤーのエネルギーメーターの現在の状態によって決まります
- エネルギーは、フィールド上のプレイヤーによって設定された特別なピース(ジェネレーター)によって毎ターン生成されます
- ゲームは両方のプレイヤーから同じ量のエネルギーで始まります(1つのジェネレーターをインストールするのに十分)
- ジェネレーターは、プレーヤーに面するボードの半分の自由なフィールドに設置できます(輪郭の数が奇数の場合、平均水平は中立と見なされます)
- フィギュアと障害物は、敵のフィギュアの戦闘下にない自由なフィールド、プレイヤーのフィギュアの戦いのフィールドに設置できます
- 修飾子をプレーヤーのピースに適用して、状態を変更できます。
- 一度に、1つのフィギュアに適用できる修飾子は1つだけです(次の修飾子を使用すると、前の修飾子がキャンセルされ、その使用時に消費されるエネルギーが失われます)
- 重いピースをサポートするために、各動きはエネルギーを消費します(ピースをサポートするのに十分なエネルギーがない場合、重いピースの一部は次の動きの開始前に自動的に削除できます)
- 敵の駒の捕獲(スカウトを除く)がプレイヤーのフィギュアの前に占領されたフィールドへの移動を伴う場合、プレイヤーは、重ねられた修飾子を考慮せずに、撮影されたフィギュアの初期配置に費やされるエネルギーの半分の形でボーナスを受け取ります(全体への丸めは下側に実行されます)
- ゲームは、パーティーのいずれかの数字が完全に破壊されるまで、パーティーのいずれかの敗北が認識されるまで、またはタイの相互承認まで続きます。
フィギュア
発電機
- ジェネレーターをインストールするには、20ユニットのエネルギーが必要です
- プレーヤーがフィールドに配置した各発電機は、1ターンあたり5ユニットのエネルギーを生成します(複数の発電機によって生成されたエネルギーが加算されます)
- 設置後、ジェネレーターは動かせず、敵の駒を打ち負かすことはできませんが、戦場は彼のために決定されます。これは、ジェネレーターの近くにプレーヤーのフィギュアを設置するために必要です
- ジェネレーターの周りに定義される戦場は、中央に配置されたジェネレーターを含む5x5のセルの周囲です。
センチネル
- Sentinelを設定するには、1ユニットのエネルギーが必要です
- インストール後、Sentinelは移動できません
- 敵がこのフィールドの前の動きで別のセンチネルプレイヤーを奪った場合、セントリーは1つのフィールドで一方向にビートします(全体として、これらのルールは、保護されているジェネレーターの周りの連続した壁によるセンチネルの配置を奨励する必要があります)
兵士
- 兵士を設置するには、4ユニットのエネルギーが必要です
- 兵士が移動し、一方向に一方向にぶつかる
- 1ターンで、エネルギーを消費せずに埋設/掘削状態に切り替えることができます
- すべての数字は邪魔されずに埋められた兵士を通過できます
- 埋もれた兵士は戦車に勝てない
- 埋もれた兵士は動かない
- 埋められた状態で、兵士が敵の駒に当たった場合、戦闘は移動せずに実行されます
役員
- 役員を設置するには、8ユニットのエネルギーが必要です
- 士官が移動し、1から2セルの任意の方向に直線でヒットします。
騎兵
- 騎兵隊を設置するには、10ユニットのエネルギーが必要です
- 騎兵は打ち負かされ、「馬のコースで」動かすことができます
- 騎兵隊は二重の「馬」で移動でき、同じ方向に移動し続ける
- 騎兵隊は、フィギュアや障害物を「飛び越える」
銃
- 銃を取り付けるには、15ユニットのエネルギーが必要です
- キャノンをサポートするには、1ターンあたり1ユニットのエネルギーが必要です
- 銃は任意の数のセルを垂直または水平に移動します
- 銃と戦場の間に戦線に沿って、埋葬された状態のヘリコプターまたは兵士を除いて、プレイヤーまたは敵の1人の人物がいることを条件に、大砲は任意の数のセルで敵の人物(または任意の障害物)を打ちます中国と韓国のチェスで同じ名前の図)
- 銃を動かさずにフィギュアや障害物の戦いが行われます
ヘリコプター
- ヘリコプターの設置には20ユニットのエネルギーが必要です
- ヘリコプターをサポートするには、1ターンあたり1ユニットのエネルギーが必要です
- ヘリコプターが移動し、敵のヘリコプターを任意の数のセルで斜めに攻撃し、数字や障害物を通過します
- ヘリコプターは「地面」の数字を打つことはできませんが、その周りに「戦場」を定義します。これは、他の数字を「着陸」するのに適した3x3の正方形の形で
- すべての図は、ヘリコプターが占有するケージを通過できます
- ヘリコプターは障害物を無視し、地雷で機体を停止できます(ヘリコプターまたは地雷を失うことなく)
- ヘリコプターがミナとフィールドで戦う場合、ミナも破壊されます
- ヘリコプターは、大砲(通常の戦闘ルール)または敵のヘリコプターで撃shotできます。
タンク
- タンクを設置するには、30ユニットのエネルギーが必要です
- タンクをサポートするには、1ターンあたり1ユニットのエネルギーが必要です。
- タンクは任意の数のセルに垂直または水平に移動します
- 戦車は、垂直方向または水平方向に1、2、または3マスの距離で相手のフィギュアまたは障害物(ミナを除く)を打ちます
- 戦車はセンチネルを倒しません(防衛線を突破できるようにします)
- タンクは発掘された状態の兵士と戦わない
スカウト
- スカウトをインストールするには、100単位のエネルギーが必要です
- スカウトは1セルまたは2セルだけでなく、「馬のコース」によって任意の方向に移動してヒットします。
- 数字や障害物を飛び越えることができます
- トラップと鉱山を破壊できる
- 敵が戦場にいる場合にのみ、敵を見る(センチネルの戦場を含む)
- 捕らえられると、相手に捕らえられ、エネルギーを消費することなく、相手が自分の色で設定できます。
修飾子
興奮剤
- アプリケーションには、5ユニットのエネルギーが必要です。
- 方向の継続を伴う動きに1つのフィールドを追加します(刺激装置の下の偵察者は、二重の「馬の動き」で動かすことができます)
- 戦車やヘリコプターでは使用できません
跳ね返る
- アプリケーションには、15ユニットのエネルギーが必要です。
- ボードの境界からの単一の反射を許可します
- 戦車には適用できません
周航
- アプリケーションには、25単位のエネルギーが必要です。
- まるでトロイダルであるかのように、ボードの境界の単一のトランジションを実行できます。
障壁
T
- 設置には、5ユニットのエネルギーが必要です
- 次の移動まで、セル上の任意の色の部分の移動を停止します
壁
- 設置には、10ユニットのエネルギーが必要です。
- フィギュア(兵士や将校)は壁を通過できません
- どちらの側のタンクまたはキャノン以外の部分によって破壊することはできません。
ミーナ
- 設置には、20ユニットのエネルギーが必要です。
- フィールドを通過するときに、任意の側面(兵士、将校、戦車)の姿を破壊します
- フィールドで停止すると、両側の兵士(兵士、将校、戦車、騎兵)を破壊する
- トリガー後に破壊された
- キャノンまたはスカウトによって破壊できます
- 敵の姿の1つが戦場にいることを条件にのみ敵に見える
簡単にわかるように、これらのルールの一部は実装が非常に難しい場合があります。 私は自分の計画を完全に実現することができない可能性がありますが、多くの場合、運動のプロセス自体は可能な結果よりもはるかに重要です。 Habréに関する記事で、Zillions of Gamesをマスターした私の進歩を説明しようと思います。 それまでの間、提示されたルールについて議論することを提案します。