MiniAiCup#2へようこそ。 今回はAgarIOを台無しにしました







6年連続で、私たち(Mail.Ru Group)はSSUと共同でロシアのAi Cup (ゲームボットの作成競争)を開催します。 私たちはゲームの世界を思いつき、それにAPIを書き、参加者によって書かれた戦略に対して額をプッシュします。 それは非常に興味深い、オリジナルであるたびに判明し、一般的にはCISで最大の毎年恒例のAIコンテストです!

同じソースで、2017年の秋に、私たちはさらに別の会場であるMiniAiCupsで最初のコンテストを書いて開始し、開催しました 多くの人々がそれを気に入っており、賞品の配布後、私たちは偽装して別のコンテストを約束しました。 そして最後に、私たちは誰もがそれに参加することを歓迎します。







サイト力学



特定の法律に従って生きるゲームの世界があります。 API(単なるテキストプロトコル)がこの世界から突き出ています。 このAPIに従って、お気に入りの言語で記述されたプレーヤーの戦略は、世界の状態の変化(STDINから)を読み取り、アクションを(STDOUTに)送信します。 したがって、ゲーム自体が行われます。 技術的な詳細-投稿の最後。







スケジュール



すべてのチャンピオンシップゲームは4x1形式で開催されます(ゲーム内の4人のプレイヤー、それぞれ自分用)。 ゲームの評価(評価テーブルでのプレイヤーの配置に影響する)と評価なし(単なる「決闘」、対戦相手の詳細な検討、戦略のテスト、一種のサンドボックス)が可能です。







3月28日 -コンテストを開始します。レーティングなしのゲームは7,500ティックで始まります(ティックはゲームの世界では不可分な時間単位です)

4月2日 -7500ティックのゲームのレーティングの開始(数分ごとに、システムはいくつかのゲームを開始し、真のスキルシステムに応じて参加者を選択し、結果に応じてポイントを獲得します)

4月19日 -サンドボックスのトップ参加者が決勝戦に進み、レーティングゲームを停止し、25,000ティックのレーティングなしゲームを作成する機会を与えます

4月23日 -サンドボックスを完全に停止し、ファイナルを過ごします。 これは40,000ティックの多数のゲームになります。4x1ゲーム内で全員がそれぞれプレイするように選択します。 その後、賞品(下記について)を贈ります。フィナーレのすべての参加者は伝統的にTシャツを記念品として受け取ります

4月26日に、未評価のゲームを含むサンドボックスを元に戻します。このタスクは(秋の​​パズルに加えて)2番目であり、永久に残ります。







これがその方法です。 コンテストの重要なイベントの間にできるだけ多くの休みがあることを確認しようとしました。 すべてがあなたのためです。







簡単なタスク



そしてすべてがシンプルです。 私たちはagar.ioを手に入れ 、この素晴らしいゲームの仕組みに関するコンテストに参加することにしました。 彼らはそれをやった。 それから、それはあまりにも単純であるように思われ始めました。 移動時の慣性を追加、物理学のビット...まだ素朴です。 さて、私たちはこの奇妙な世界の物理学を構成する慣性係数、加速度、質量成長、およびその他すべての独自の係数セットを考えることにしました。 これで停止しました。

したがって、プレーヤーのタスクは、まず現在の物理法則に対処することです(競技場のすべてのものが弾丸で飛んで、すぐに停止して方向転換するか、慣性でい回って軌道に乗ろうとします)。 さて、そうして初めて、そのような甘い心が「すべてを食べる」ようになります。 より詳細なルール-以下、賞品の後(はい、賞品があります)。







賞品



そもそも、新しいMacBook Airを提供します(または同等の費用で、参加者は自分の希望を表現する機会があります)。

2位と3位-Apple iPad

4位から6位-Samsung Gear S3。 しかし、正直に言うと、私たちは何を与えるべきかわからないので、コメントのオプションをスケッチします。 私たちはコミュニティです。

伝統的に、決勝戦に出場したすべての人には、シンボル入りのTシャツが贈られます。







ルールの詳細



ここでは、選手権の仕組みの本質を伝えるような方法で、非公式にルールを説明しようとします。 だから:







ゲームの世界





ショックコンテンツから始めましょう-競技場は長方形です! 誰もそれをやったことはありません、そしてここに再び:)

座標カウントは左上隅から始まります。 フィールド上の各オブジェクトには、質量と速度ベクトルの2つの座標があります。 各オブジェクトは円です。







オッズ



開始する前に、プレイヤーの戦略はゲーム世界が生きるのに応じて、ゲーム世界から一連の物理的係数を差し引きます。 これは、慣性の尺度、質量成長の尺度、最大速度などです。 ゲームごとに、ランダムな値を生成します(一定の制限内)。







プレイヤーオブジェクト、動き



世界のゲームの開始時には、ランダムに(ただし中心軸から対称に)4人のプレイヤーが配置されており、それぞれが独自に選択した戦略によって表されています。 みんなの体重はまだ小さく、速度はゼロです。 動いて、食べて、成長する時です。これが勝利の本質です。 モーションベクトル(実際には2つの座標)を示し、このゲームで定義されている慣性係数、質量などに従って速度を上げ始めます(これは、チャンピオンシップの開始時に完全なルールで詳細に説明されます)。 つまり、オブジェクトの質量が大きいほど、オブジェクトにインパルスを与えようとする応答が遅くなり、さらに、オブジェクトが展開できる最大速度が制限されます。







食べ物



自分の質量を増やすには2つの方法があります(プレーヤーは時間とともにこの質量を失うため、これを行う必要があります)。







まず、一定量の「食物」が競技場全体に散らばっています。これらは一定の質量を持つ小さな静止物体です。 そのようなオブジェクトがブロックされると、プレイヤーはそのようなオブジェクトの塊を自分自身に追加し、オブジェクトは破棄されます。 時々、食べ物が競技場に追加されます(ランダムな場所ですが、フィールドの4辺でも同じです)。







第二に、あなたはお互いを食べることができます。 2人のプレーヤーが完全に重なり合っている場合、大きい方のプレーヤーが小さい方の質量を増やします。 食べたものは畑から出されます。 良いことには、ゲームの最後まで。







死の星



実際、用語agar.ioのウイルスです。 多数の「死の星」がマップ上にランダムに配置されています。 すでにデススターの質量を超えているプレーヤーが衝突した場合、デススターは破壊されます。 プレイヤーは爆発をいくつかの小さな部分に分散させます(その数、質量、運動量は多くのパラメーターに依存します)。 その後、プレーヤーはこれらのオブジェクトをすべて一斉に制御します(同じポイントで運動量ベクトルを与えます)。 この形式では、プレーヤーは食べやすくなりますが、小さなオブジェクトの速度と応答は高くなります。 互いに接触すると、全体の一部がマージされるため、一緒になって何か大きなものに戻すことができます。







質量分割



プレイヤーの戦略である移動に加えて、さらに2つのアクションを使用できます。

部門 。 プレーヤーによって制御される各部分は、正確に2つの部分に分割されます。

大量排出 。 プレーヤーが制御する各部分は、プレーヤーの速度ベクトルに応じて方向が計算される、制御不能な独自の質量を少量放出します。 それは一種の「ショットフード」になります。 そのような仕掛けが死の星に落ちた場合、それはその(星)部分になります。 「過剰な」死の星は、最後のショットとは反対の方向にその部分を投げます。 したがって、あまりにも死にかけている外国の戦略を細分化することができます。







戦争の霧



はい、そうです。 すべてが見えるわけではありません。 移動の方向を考慮した楕円と見なされ、多くのパラメーター(グループサイズ、グループ内のパーツの質量、速度)に依存します。 全体として、戦争の霧は、ええと...面白いことになりました。







勝者の選択



ゲーム全体を通して、プレイヤーは何らかの形でゲームポイントを獲得します(ゲームイベントで獲得)。 これらのポイントについては、ゲームの終わりに勝利が与えられます。

4つの戦略のうち3つが死ぬと、残りの1つがポイントでトップ1になった時点で、ゲームは予定より早く停止する可能性があります。







技術的な詳細



現在、Go 1.10、Java 1.8、C#Mono 4.3、NodeJS 6、C ++ 11、Python 2.7 / 3.5、php7を使用しています。 さらに、新しい言語の追加を可能な限り単純化するようにしました。サポートされている言語のリストにお気に入りのXXX言語を表示する場合は、特定のテンプレートに応じたdockerfileのみが必要です。

1つの戦略のソースコードの最大量は、現時点ではアーカイブ形式で20メガバイトです。

サポートされている言語のリストに表示する必要のあるライブラリが必要な場合(わかりませんが、誰かがMLに集中することを決定します)-kamentyで書き込み、 3月25日までにすべてを時間内に配置します(ただし、チャンピオンシップ中は可能であれば、PLのdocker-imagesを塗り続けます。

チャンピオンシップの開始時に完全なルールがこのリポジトリで開きます。







前回のチャンピオンシップからの変更



もちろん、私たちはじっと座っていません。 前回の優勝以来:







  1. 正しいlocalrunner



    が開発されました(Cで書かれています)。
  2. シミュレーションもCで行われ、最初の競技会であったpythonと比較して計算が速くなりました。
  3. サイトでゲームをデバッグするためのデバッグウィジェットが追加されました(競争が始まります-表示されます)
  4. ソリューションの起動スキームが再設計され、現在は別のソリューションがSTDINおよびSTDOUTと通信するだけで、ローカルtcpサーバーを維持する必要はありません。 私たちはあなたのためにそれを行います。
  5. 個々のゲームの評価とコメントによる評価、ソーシャルネットワークでのゲームと評価の正しい共有など、あらゆる種類の小さなものが追加されました...ボタン、リンク、要するに、このウェブ全体
  6. 参加者にとっても私たちにとっても、新しい言語を追加するのがはるかに簡単になりました。


一方、デザインは同じです。 私たちはそう見えることを完全にふりすることにしました... :)







追われた?



チャンピオンシップ@aicupsの公式グループaicups.ruで今すぐ登録できます。グループに参加したくない人のための公式チャンネルは@mrgchampsです。 私たちはあなたを待っています、それは楽しいでしょう!








All Articles