こんにちは親愛なる読者。 Habrの読者の中に、 マインスイーパのような素晴らしいゲームの愛好家がいることを心から願っています。
私の記憶が正しければ、1994年に初めてこのゲームがWindows 3.1オペレーティングシステムに登場しました。 当時、このゲームは、コンピューターのマウスと、一般的にはOSのグラフィカルインターフェイスの使用を教えるためのツールとして位置づけられていました。 次のようになりました。
ウィキペディアによるとゲームの原理
フラットまたは3次元の競技場は、隣接するセル(正方形、六角形、立方体など)に分割され、その一部は「採掘」されています。 「採掘された」セルの数はわかっています。 ゲームの目的は、地雷を含まないすべてのセルを開くことです。
プレイヤーは、地雷でセルを開かないように、セルを開きます。 鉱山でセルを開くと、彼は負けます。 地雷は最初の移動後に配置されるため、最初の移動で失うことは不可能です。 開いているセルの下に地雷がない場合は、開いたばかりのセルに隣接するセルがいくつ「マイニング」されているかを示す数字が表示されます(ゲームの各バージョンでは、近傍は独自の方法で決定されます)。 これらの数字を使用して、プレーヤーは地雷の位置を計算しようとしますが、ゲームの途中や終了時でさえ、一部のセルをランダムに開く必要があります。 隣接するセルの下に地雷が存在しない場合、特定の「マイニングされていない」エリアが開いて、番号のあるセルが表示されます。 プレイヤーは、誤ってセルを開けないように、「採掘された」セルにマークを付けることができます。 「採掘されていない」セルをすべて開いた後、プレーヤーが勝ちます。
プレイヤーは、地雷でセルを開かないように、セルを開きます。 鉱山でセルを開くと、彼は負けます。 地雷は最初の移動後に配置されるため、最初の移動で失うことは不可能です。 開いているセルの下に地雷がない場合は、開いたばかりのセルに隣接するセルがいくつ「マイニング」されているかを示す数字が表示されます(ゲームの各バージョンでは、近傍は独自の方法で決定されます)。 これらの数字を使用して、プレーヤーは地雷の位置を計算しようとしますが、ゲームの途中や終了時でさえ、一部のセルをランダムに開く必要があります。 隣接するセルの下に地雷が存在しない場合、特定の「マイニングされていない」エリアが開いて、番号のあるセルが表示されます。 プレイヤーは、誤ってセルを開けないように、「採掘された」セルにマークを付けることができます。 「採掘されていない」セルをすべて開いた後、プレーヤーが勝ちます。
しかし、時間が経つにつれて、サッパーの人気は低下しているため、このゲームに新しい命と色をもたらしたいと思っています。 これが、オンラインブラウザーゲームである「 ロシアの掃海艇 」と名付けられたマルチプレイヤーバージョンのゲームの誕生です。 猫の下で興味を持ってください。
ゲーム機能
もちろん、特定の数のプレイヤーがこのゲームを一緒にプレイできるようにするには、ルールを何らかの形で近代化し、完全に変更する必要があります。 ただし、主なルールは、元の原則と同じように本質的な原則を残すことです。
したがって、実際には、複数のプレーヤーが同じフィールドで同時にプレーできるようにするための一連のルールが開発されました。
ゲームの基本的なルールは次のとおりです。
- ゲームの目的は、最初にすべての地雷にフラグを立てることです。
- 各プレーヤーには、独自の(ローカル)フラグがあります。
- プレイヤーは地雷がある同じ(グローバル)フィールドを持っています。
- プレイヤーは交代します( ただし、「パラレル」モードの開発が進行中です )。
- プレイヤーが地雷をクリックすると、プレイヤーは負け、対戦相手はそれに応じて勝ちます。
- プレーヤーのターンの時間は制限されています(最大25秒)。できるだけ早く歩く必要があります。
- プレイヤーが連続して3回移動をスキップした場合、プレイヤーは負け、それに応じて対戦相手が勝ちます。
- プレーヤーがゲーム全体で6つの動きを逃した場合、彼は負け、対戦相手はそれに応じて勝ちます。
- 引き分けは不可能です。 いずれにせよ、プレイヤーの1人は他のプレイヤーよりも速くフラグを正しく設定します。
- 最初の動きはランダムなプレイヤーに行きます。
- プレイヤーはゲーム中いつでも降伏することができます。
ゲームの地雷原の多くの特性も開発されました。
- ゲームの開始時に最初のセルの開口部を損なうことは不可能です。
- 鉱山は競技場全体に均等に分布しています。
- 最初のクリックで開く「空」のプロパティ:
- サイズAからBの空のセル( 約0分 )。
- 空隙は、方向の片側のみにある連続したセルのラインであってはなりません。
- 鉱山セルの割合( レギュレーターのタイプは実数 )およびフィールドのサイズは、アプリケーション設定で調整されます。
したがって、現在の構成では、最初のクリックで3〜12個の「ゼロ」セルの「ボイド」が開き、フィールドのサイズは32x20です。
膨大な数のリストをおaび申し上げますが、このゲームには次の機能もあることに言及するしかありません。
- コード-ターンごとに複数のセルを開きます。 これは、プレイフィールドのセル内の番号をクリック(LMB)する場合に可能です。隣接するセルの周りのフラグの数は、目的の数に等しくなります。
- 敵を助ける-マウスの中央ボタン、または[上部の敵のニックネームをクリックして、目的のセルをクリックします]。 緑色で表示されます:
- チャット-リアルタイムでプレイヤー間。
- ゲーム内のニックネーム。
- ゲーム内のサウンドトラック。
テクノロジー
製品開発で使用される技術の完全なリストは次のとおりです。
- C#.NET + ASP .NETは、Webサーバーの基盤です。
- HTML5 / CSS3-クライアント側インターフェースの開発用。
- JavaScript-クライアント側の動的操作用。
- JSON-クライアント/サーバーパケットのシリアル化/非シリアル化用。
- WebSocket-プロトコルは、クライアントとサーバー間の通信方法として使用されます。
- HTML Canvas-地雷原をレンダリングする技術。
- jQueryは、HTMLとJSの間の効率的かつ高速な対話です。
- JSON Newtonは、 JSONを使用した便利な作業のためのライブラリです。
- Adobe Photoshop-グラフィカルインターフェイス要素のレンダリング用。
- GitHub-プロジェクトのバージョン管理のための便利なプラットフォームとして。
- Microsoft Azure-インターネット上のWebサーバーをホストするため。
- Yandex.Metrica-プレイヤーの行動の統計と分析。
- CloudFlare -CDNプロキシとして/ SSL / Anti DDoS。
- Microsoft Visual Studio-メイン開発環境として。
- Sublime Text -JavaScriptの開発ツールとして。
- Microsoft IIS -ASPの展開用。 NET
プロジェクトで最も問題のあった場所は次のとおりです。
- プレイヤーを互いに同期する
- 問題 :フィールドの変化をプレイヤーにすばやく通知する方法は?
オプション:長いポーリング。 websockets; 周期的なポーリング; など - 解決策 :WebSocketを使用する
- 問題 :フィールドの変化をプレイヤーにすばやく通知する方法は?
- 地雷原やゲームの他の要素を描く
- 問題 :どのツールが最適ですか?
オプション:HTMLテーブル/ div; SVG; HTML5 Canvas など - 解決策 :HTML5 Canvas + JavaScript
- 問題 :どのツールが最適ですか?
興味深い数字
- 少なくとも23人がテストに参加しました。
- テスト中、フィールド全体で183,298回のクリックが行われました。
- 119回目の試みから、地雷原は最後まで完成しました。
- 32x20フィールドは、ゲームに最適です( 経験的観察 )。
- 3〜12 個の 「ゼロ」セルは、最初のクリックで開くのが最適です( 経験的観察 )。
また、Yandex.Metricaのクリックマップを添付します。このマップから多くの興味深い結論を出すことができます。 たとえば、「バトル」のメインエリアがフィールドの中心であり、チャットが人気があることは明らかです。
今後の計画
将来的には、次の機能を終了したいと思います。
- N人のプレーヤー用の部屋を実装します。
- 「友好的な部屋」(参照によって友人と遊ぶ)とシングルプレーヤーモードを作成する機能。
- プレイヤーとリーダーボードの登録。
- 「スキルによるバランス」(プレイヤーが経験のある仲間と遊ぶように)。
- モバイルデバイス用のアプリケーションの最適化。
- アプリケーションを大衆に実装するためのより強力なサーバーに切り替える。
- バグトラッカーの作成。
- プレイヤーとの便利なフィードバックを実装します。
- より詳細なアプリケーション使用統計。
おわりに
結論として、私は次のように言いたいです-ゲームサーバーに注意してください:)
Microsoft Azureからサブスクリプションによって無料で取得され、その容量は非常に控えめです。
この記事の後、このゲームを一緒に楽しめることを心から願っています。
https://rmsweeper.comで入手でき、VKontakteにもコミュニティがあります。
ご清聴ありがとうございました
ピーターはあなたと一緒でした。