2

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

SDL、SFML、Allegroなどを使用する前に、C ++で多くのゲームを実行しましたが、ネットワークライブラリを使用することはできませんでした。私は、実際のサーバーにグラフィック表示がない(または必要ではないが、表示できる)ゲームサーバーにライブラリが最適であるという有用な方向性に興味がありました。正直なところ、答えはなんでもいいと思います。ソケットのコツをつかむと、データをやり取りするのが簡単になります...しかし、最初に尋ねるのは仕方がありません。

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

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

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

アップデート:

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

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

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

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

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

4

4 に答える 4

2

これは主に C 向けに書かれていますが、C++ にも最適です:
Beej のネットワーク プログラミング ガイド.k
すべての基本をカバーし、Win32 に必要な変更に関するセクションがあります
:)各パケットなので、代わりに send(socket,szData,strlen(szData),0); send(socket,szData,strlen(szData)+1,0); を使用します。文字列を送信する:)

于 2008-11-04T13:58:18.160 に答える
2

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

于 2008-11-04T14:14:37.173 に答える
1

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

于 2009-08-25T16:23:46.357 に答える
0

あなたのゲームにリアルタイム通信が必要なのか、それともゲームのロード、保存、実行をサーバーに要求するだけで十分なのか、私にはわかりません。

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

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

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

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

于 2008-11-05T15:22:12.123 に答える