ゲーム「C&C Tiberium Alliances」の世界地図作成のストーリー。 死後

みなさんこんにちは! この投稿では、悪名高いオンラインゲームのサービスを作成および開発した経験を共有したいと思います。



その中での生活はまだ温暖化していますが、最終結果を出すことはすでに可能だと思います。



私はこのゲームがリリースされるずっと前に気づき、最初のベータテスターに​​なれました。 私はブラウザゲームにあまり期待していませんでしたが、関心が犠牲になりました。 かなり迅速に、私は適切なロシア語を話すコミュニティを見つけ、一族に加わりました。



生じた最初の質問は、「私はどこにいますか?」でした。 このジャンルの規範に従って、レーダーを構築する必要があることを提案しました。 しかし、何らかの理由で彼はそこにいませんでした。 さらに、ミニマップがゲームでまったく提供されていないことに私は驚きました。 巨大なゲーム空間を考えると、これは非常に奇妙でした。 さらに、後で判明したように、開発者の当面の計画にはその作成は含まれていませんでした。



サーバーAPIを少し研究した結果、必要なデータの入手先、つまりデータベースを持つユーザーのリストを見つけました。 数時間、パーサーをphpで作成しました。 困難は、認可によってのみ生じました。 ハッシュとヘッダーを備えた2レベルでしたが、彼女は倒れました。 ひざの上で、彼は単に無料のホスティングにアップロードされたプレーヤーの名前を絶対的な位置で並べたページを盲目にした。 マップ上の検索は、「ctrl +マウスホイール」を使用してマップをスケーリングするのと同じように、「ctrl + f」ブラウザを使用して実行されました。 この作品を一族と共有しました。 私だけでなく地図が欠けていることが判明しました。 彼女を見て、一族のメンバーはとても幸せで、一族の指導者は一族の外の地図について広がらないように「命令」しました。



翌日、一般的なゲームフォーラムに地図情報を投稿しました。 そのために彼は一族から追放されましたが、プレイヤーから多くの肯定的なフィードバックを受けました。 このような反応に触発されて、私はマップをさらに開発することにしました。



最初は、プレーヤーの名前をhtmlタグのマーカーに置き換えようとしましたが、スケーリングするとすべてが不気味に見えました。 2番目の試みはsvgを使用することでしたが、パフォーマンスが低下しました。 キャンバスしかありませんでしたが、ここではすべてがすでにはるかに速く鳴っています。



canvasの最初のリリースは次のようになりました。







さらにいくつかの機能を導入した後、私のリソースへのアクセス数は1日に1万回に達しました。 ユーザー数の増加に伴い、より多くのゲームサーバーがゲームで開かれました。 その瞬間、1つのサーバー(ゲームワールド)が約1時間解析していました。 その数が増えると、個々のサーバーのマップが次第に更新されなくなることが判明しました。 データの関連性は急速に低下し、ユーザーは不平を言い始めました。



curlマルチソケットの導入により、1つのワールドの解析時間が半分に短縮されましたが、最終的には問題を解決できませんでした。 幸運にも、PMで開発者の1人が私に登録を解除しました。 データ転送プロトコルの操作、クエリの作成、ゲーム内のランドスケープをレンダリングするための情報の解析を担当するコード内の関数を指します。 リクエスト数を最小限に抑えるためのいくつかの実験の後、1つのサーバーの解析時間は6分に短縮されました。



そのような幸運に触発されて、私は熱意が倍増した新しい機能を見始めました。 地図上に戦術的操作を描画して共有し、配色を完全に変更し、アイコンをカスタマイズする機能を追加しました。 繰り返しますが、世界の数が100程度に達すると、すべてがパーサーになりました。





バックエンドを完全に書き直すことにしました。 ZeroMQが基礎として採用され、それぞれ承認、解析、アップローダーのマネージャー、それらのワーカーセット+この喜びの監視システムがありました。 問題は、それをどこに置くかである。 通常のプロジェクトパフォーマンスの場合、ホスティングコストは宇宙で発生します。 ゲームコミュニティでのサーバー検索では、目的の結果が得られませんでした。 仮想化のハードウェアサポートを備えた新しいハードウェアを購入して問題を解決しました。 特に私は長い間これを掘り下げたかったので。 私は自分用に1つの仮想マシンを作成し、そこにvidyuhaとusbポートの一部を投げました。 残りの部分ではシステムを上げましたが、仮想マシンの一部はLinuxで、Windowsの一部でした。 0mqバインディングの実装の機能のため。 サービスの稼働時間にも問題がありましたが、まだティア4ではありません:)が、プロバイダーをすべて変更すると安定しました。 新しいアイロンを備えた加熱パーサーは、数分で100の世界に対応しました。



マップは次の形式を取りました。







これと並行して、私はアンドロイド用のクライアントの開発を始めました。 私は自分のphp APIをJavaに移植して拡張し、基本的な機能を実装しました。 ほぼ同時期に、シカゴのエンコーダーが開発に接続したかったのですが、私は非常に驚きました。 タスクは彼の肩にかかって、攻撃または基地の破壊に関するプレイヤーへの電子メール通知を実装しました。 C#の同僚がパーサーのサブスクライバーを作成し、すべての世界のすべてのプレーヤーのすべてのベースを追跡しました。



しかし、すべてが瞬時に停止しました。 私の「インサイダー」は、EAがプロジェクトを採算が取れないと考えていると言いました。 彼らのチームは解散し、他のプロジェクトに散らばっていました。 ゲームの開発は凍結されました。 したがって、クライアントとサービスの開発も、死んだプロジェクトにふさわしくなくなり、私はそれらに終止符を打ちました。



現時点では、私のカードの出席者は2.5千人です。 2012年7月以降の広告収入は5,000ドルでした。 ドーナツは200未満です。



PSヘッツナーの記事を書いているときに、1つのIPから1日に1回100kkのポストリクエストを行い、1か月あたり5トンのトラフィックをアップロードしていることに突然腹を立てました。



0mqでの作業用に作成したライブラリは、 https//github.com/limitium/0MQで表示できます 。 誰かが興味を持っている場合は、作曲家向けのReadmeを作成してパッケージを作成します。 何も流れず、24時間年中無休で2年間耕します。



プロジェクトの顔はここにあります: github.com/limitium/C-CTA-map-frontend



All Articles