質問

Flashをクライアントとして使用する最初のオンラインゲームを作成し、実際のゲームの状態を保持するC ++でバックエンドアプリケーションを作成することに興味があります。

SDL、SFML、Allegroなどを使用する前にC ++で多くのゲームをやったことがありますが、ネットワークライブラリを使用することはありません。私は、実際のサーバーにグラフィカルなディスプレイがない(または必要ではないが持つことができる)ゲームサーバーにライブラリが最も適している方向に興味がありました。正直なところ、答えは any になると思います。ソケットがハングすると、データをやり取りするのが楽になります...しかし、最初に質問するのは仕方がありません。

フラッシュやas3の経験はほとんどありませんが、ブラウザーを介してゲームにアクセスできるというアイデアと同様に、フラッシュを学習することは明らかに私が克服しなければならない難解なものになりますが、私の主な関心は再びですライブラリ、ソース、またはソケットを介したデータの送受信に適したチュートリアル、または最適な方法のいずれかのヒント。

TCP / UDP間の議論について読みましたので、ここでそのような戦争を始めたくありません。一般的な役立つアドバイスをお願いします-私は私を立ち上げて実行するのに簡単なものを探しています:-p

サイドノートとして、私がC ++を選んだ理由は、プレイヤーは実際にはミニチュア仮想マシンを備えたロボットであり、すべてがサーバー上で実行されるため、プレイヤーの数が増えるにつれてすべてのvmをエミュレートする必要があるためです:-p

更新:

ゲームの世界はリアルタイムであるように意図されていますが、プレイヤーの相互作用はそうである必要はありません。ゲームの基本は、永続的な世界で相互作用し、目標を達成し、毎日/毎週ベースでポイントを獲得するために挑戦する小さなロボットをプログラムすることです。

プレイヤーはロボットを直接制御できないため、リアルタイムのビジュアルを必要としないため、表示データのバッファリングが可能になると考えていました。サーバーは、各接続ごとに10秒程度のデータをバッファリングし、一度にそれを出荷します。これにより、クライアントでデータが再生されている間、サーバはさらにバッファリングに忙しくなります。

プレイヤーとサーバーとの一般的なやり取りは、新しいコードのアップロードと統計の取得です。また、ロボットを動かしたり、開始位置にリセットしたりするためのコマンドもあります。リモート制御は通信チャネルを介して行われるため、バッファによって遅延します。これは、永続的な世界が火星(惑星)のような場所にあり、信号が行き来するのに時間がかかるという事実によって簡単に説明できます。

「ラボ」を計画していました。クライアント上でロボットをセットアップしてリアルタイムでテストすることができますが、これは実際のゲームの世界とは何の関係もないため、ネットワークは必要ありません-VMを両方の言語で書くのは面倒ではありませんが:(

私はC ++に完全に慣れており、永続的な世界のいくつかの実用的なプロトタイプを既に用意しています-私はネットワーキングに関しては完全に初心者なので、最初にアドバイスを受けるのが最善であると考えました。

役に立ちましたか?

解決

主にC向けに書かれていますが、C ++向けにも優れています:
Beejのnetwor programming.kのガイド
すべての基本をカバーし、Win32に必要な変更に関するセクションがあります:)
また、フラッシュは各パケットでヌルバイトを終了する必要があったので、send(socket、szData、strlen(szData)、0);の代わりに思い出したようです。 use(socket、szData、strlen(szData)+1,0);文字列を送信するには:)

他のヒント

ネットワークプログラミングにboost :: asioを使用

FlashのSocketクラスまたはXMLSocketクラスを使用する場合は、サーバーにセキュリティポリシーファイルがあることを確認してください。そうしないと、ソケットを開くことができません。詳細については、この SOの質問をご覧ください。

ゲームでリアルタイムの通信が必要かどうか、またはゲームの読み込み、保存、実行をサーバーに要求するだけで十分かどうかはわかりません。

もしそうであれば、ある種の「ミドルウェア」を使用するのが最善かもしれません。ネットワーク部分を処理するためのレイヤー。 Flashはxmlドキュメントを作成し、それらをHTTP経由でサーバーに送信し、受信したXML応答を処理します。これらのすべてを非常に簡単な方法で処理するための多くの優れた機能が組み込まれています。

おそらく、Webサーバーで実行され、リクエストと応答を処理し、メッセージキュー経由でサーバー上で独立して実行できるc ++サーバーにリクエストを渡すプラットフォームに応じて、c#またはphpまたはjavaのサーバーを使用できます。データベースまたはローカル接続。

c ++はライブラリを使用してもネットワーキングを行うのに最も簡単な言語ではないため、この方法でネットワークと通信の問題をフラッシュとサーバーの両方の側で処理する方が簡単かもしれません。

これがゲームまたはプラットフォームの要件を満たしているかどうかはわかりませんが、提案として投げ入れているだけです

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top