問題タブ [quake]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
2660 参照

networking - 非常に少量のデータ (3-4 kib?) に最適な圧縮ライブラリは何ですか?

私はQuake 2から大まかに派生したゲームエンジンに取り組んでおり、スクリプト化された効果のようなものを追加しています(クライアントが可能な限られた数のハードコードされた効果のみを持つのではなく、サーバーがクライアントに詳細に特殊効果を指定できるようにします) of.) これは、ネットワーク効率と柔軟性のトレードオフです。

面白い壁にぶち当たりました。最大パケット サイズは 2800 バイトで、フレームごとにクライアントごとに 1 つのみ送信できます。

「火花」エフェクトを実行するスクリプトは次のとおりです (弾丸の衝突火花、電気ショックなどに適しています) http://pastebin.com/m7acdf519 (理解できない場合は、気にしないでください。これは私が作成したカスタム構文であり、私が求めている質問には関係ありません.)

そのスクリプトのサイズを縮小するために可能な限りのことをしました。変数名も 1 文字に減らしました。しかし、結果はちょうど 405 バイトです。つまり、フレームごとに最大 6 個のこれらを収めることができます。また、サーバー側の変更でさらに 12 削減できる可能性があることと、プロトコルの変更でさらに 6 削減できる可能性があることも念頭に置いています。ただし、どのスクリプトを使用しているかによって、節約できる量は異なります。

ただし、これらの 387 バイトのうち、41 バイトだけが効果の複数の使用法の間で一意であると推定されます。つまり、これは圧縮の最有力候補です。

R1Q2 (拡張ネットワーク プロトコルを備えた後方互換性のある Quake 2 エンジン) に Zlib 圧縮コードが含まれているのはたまたまです。私はこのコードを持ち上げるか、少なくとも参照として厳密に従うことができます。

しかし、ここでは Zlib が必ずしも最良の選択でしょうか? 少なくとも 1 つの代替手段、LZMA を思いつくことができます。

要求事項:

  1. 非常に高速である必要があります (1 秒間に 100 回以上実行した場合、パフォーマンスへの影響が非常に小さい必要があります)。
  2. できるだけ多くのデータを 2800 バイトに詰め込む必要があります
  3. メタデータのフットプリントが小さい
  4. GPL互換

Zlib は良さそうですが、もっと良いものはありますか? このコードはまだマージされていないため、実験の余地が十分にあることに注意してください。

ありがとう -マックス

編集:スクリプトをバイトコードにコンパイルすることを提案した人に感謝します。私はこれを明確にするべきでした--はい、私はこれを行っています。必要に応じて、私の Web サイトで関連するソース コードを閲覧できますが、まだ「きれいに」作成されていません。
これはサーバー側のコードです:
Lua コンポーネント: http://meliaserlow.dyndns.tv:8000/alienarena/lua_source/lua/scriptedfx.lua
C コンポーネント: http://meliaserlow.dyndns.tv:8000/alienarena/lua_source /game/g_scriptedfx.c
私が投稿した特定のサンプル スクリプトの場合、これは 1172 バイトのソースを 405 バイトに減らしますが、それでも十分小さくはありません。(これらをできるだけ多く 2800 バイトに収めたいことに注意してください!)

EDIT2: 特定のパケットが到着するという保証はありません。各パケットには、以前のパケットで伝達された情報に依存することなく、「世界の状態」が含まれていると想定されています。通常、これらのスクリプトは「見栄え」を伝えるために使用されます。1 つの余地がない場合、パケットからドロップされますが、それは大したことではありません。しかし、あまりにも多くのドロップが発生すると、見た目がおかしくなり始めます。これは望ましくありません。

0 投票する
1 に答える
1858 参照

iphone - アニメーション化された3DキャラクターをAutodeskMayaからQuakeMD2としてエクスポートするファイルトランスレータ

不正なアニメーションキャラクターのジオメトリ/テクスチャをQuakeMD2としてエクスポートする方法を誰かが知っているかどうか疑問に思っていますか?私はモバイルデバイス用のアプリを開発していますが、MD2は軽量のOpenGLレンダリングに最適であることがわかりました。アニメキャラクターが何人かいますが、MayaからMD2としてエクスポートしたいと思います。これが私が試したことのいくつかです:

  1. FBXを3DStudioMaxにエクスポートし、QTipプラグインを使用します。これは機能しますが、アニメーションをポイントキャッシュ(pc2)に変換し、それをMaxに取り込む場合に限ります。これを行うと、QTipプラグインはポイントキャッシュノードを尊重せず、取得するのはモデルだけで、アニメーションはありません

  2. OBJシーケンスをBlenderにエクスポートし、そこからMD2をエクスポートする-インポートされたobjシーケンスを単一のアニメーションオブジェクトにコンパイルするようにblenderを取得できないようです

  3. FBXをMilkshapeにエクスポート-その過程でマヤリグが破損します

  4. アニメーション用にポイントキャッシュをベイクし、FBXにエクスポートし、Milkshapeにインポートします。繰り返しになりますが、Milkshapeはジオメトリキャッシュを尊重しないため、表示されるのは静的な文字だけです。

私は現在、Blender MD2エクスポートスクリプトを参照として使用してMayaのプラグインを作成しています(ただし、C ++ Maya APIを使用して再作成しています)が、これを以前に行ったことがあるか、これを行う方法について何か提案があるかどうか疑問に思っています。 。

また、OpenGL ES(AndroidまたはiPhone)デバイスで単一のアニメーションキャラクターをレンダリングするための最適な形式について他の提案があれば、私は非常に感謝しています!私はこれらのアニメーションをデバイス上でレンダリングするために何でも試してみることにオープンです

ありがとう!

0 投票する
3 に答える
598 参照

c - Quakeのソースコードでわからない表記(C)

Quake 1 の GPL コードを調べていたところ、似たようなヘッダー ファイルがいくつかありましたが、その目的や用途がよくわかりません。それらはある種のテーブルのように見え、このように構造化されています

それらの前後には何もありません。それらが何かを定義していることは理解していますが、C でこの種の表記法に出くわしたことはありません。ここで参照しているヘッダー ファイルの 1 つを読むことができます。

私の質問は: それらは何ですか? ASM は、実際にはそれよりも問題が少ないです。

0 投票する
3 に答える
10620 参照

3d - DoomとQuakeの3Dレンダリングの違い

私は過去数週間(古い)3Dレンダリング技術を研究してきましたが、Doomでの3Dレンダリングがどのように機能するかを正しく理解できたと思います。レイキャスティングを使用して3Dシーンをレンダリングし、オブジェクトにスプライトを使用するため、「真の」3Dではありません。また、Yせん断によってのみ、実際のルックアップ/ダウンはできません。

QuakeはIDの最初の「真の」3Dエンジンであり、さまざまな角度から表示できるオブジェクトがあり、上下を見ることができます。

これらのテクニックを研究するとき、今ではこの「真の」3Dをよく耳にしますが、この真の3Dが何を意味するのかを明確に説明することはできません。QuakeレンダリングはDoomレンダリングとどう違うのですか?

Quakeの世界は3D頂点を使用していますか?交差点のレイキャスティングの代わりにそれらはすべて投影されていますか?

違いの明確な説明を聞きたいです!

PS Quakeのソースコードが利用可能であることは知っていますが、id softwareのFTPが数週間ダウンしていて、他のどこにも見つかりません。誰かがそれを他の場所で見つける場所を知っているなら、私に知らせてください。

0 投票する
1 に答える
775 参照

3d - Quake 3 ポータルとフラスタム カリング

Quake3 のソース コードを理解しようとしています。

( tr_world.c) ファイルの関数 R_MarkLeaves() が何をしているか知っている人はいますか?

これはポータルのカリングと関係があると思いますか?

これがどのように機能するかを知る必要があるため、これをコードに実装してレンダリングを高速化することもできます。

0 投票する
1 に答える
423 参照

c - Quake での CreateEvent() の使用

Quake での CreateEvent() 関数の使用に興味があります。

WinMain() が定義されている c ファイルには、次のグローバルがあります。

WinMain() 関数自体には、次のように表示されます。

この作成が失敗した場合、ゲームは終了します。

次に、次の関数に表示されます。

最後に、Quit 関数で CloseHandle(tevent) が呼び出されます。

私は WinAPI に慣れていないので、2 つの質問があります。

- この CreateEvent() の使用は何を返しますか?

-これにより、SleepUntilInput() 関数が正しく動作するようになりますか?

0 投票する
2 に答える
114 参照

c# - ^7で終了する文字列

送信と受信にudpソケットとバイト配列を使用して、C#のquake3サーバーにrcon要求を行います。

サーバーステータスを要求すると、DeathMaster ^ 7のように、プレーヤー名の文字列がすべて^7で終了することを除いてすべて正常に機能します。

rconコマンドによって返される他の文字列にはこの問題がないため、何が間違っているのかについて困惑しています。

ご存知の方はお知らせください。

0 投票する
1 に答える
252 参照

python - このフィッシュアイ パースペクティブ ゲームを開発するには、どのテクノロジを使用すればよいですか?

プレイヤーが 3D 一人称視点で迷路を歩き、物を集めてモンスターから逃げる 3D ゲームを開発します。ゲーム自体は非常にシンプルですが、娯楽用ではなく生物学的実験用であるため、いくつかの特定の機能があります。

  1. グラフィックスを 3 台のプロジェクターで球状のスクリーンに投影します。そのため、グラフィックスは魚眼変換であり、さらに簡単に変換できる必要があります(プロジェクター間のマージに対処するため)。

  2. プレイヤーの移動経路やモンスターが出現した時点などのデータを記録する機能が必要です。すべてのイベントが記録可能でなければなりません。

  3. ゲーム プログラムは、USB 経由で外部デバイスと対話できます。たとえば、プレーヤーが特定のキーを押すたびに、プログラムは Arduino ボードに何かをするように指示します。

調査の結果、このようなゲームを開発するためのツール チェーンの候補が 3 つ見つかりました。

  1. Quake3 エンジン+ Fisheye Quakeで MOD を開発します。問題は、Quake3 が仮想マシンで実行されるため、上記の機能 2 と 3 を実装できるかどうかです。

  2. Panda3D + FisheyeLens API

  3. PyOpenGL . これは最も柔軟な方法ですが、ワークロードが最大になると思います。

C/C++/Python には精通していますが、3D ゲームを開発するのはこれが初めてです。私の質問は、どのツール チェーンがこのプロジェクト (またはその他の適切なオプション) に最も適しているかということです。どのような問題が発生しますか?

0 投票する
1 に答える
2355 参照

animation - アニメーション化された3DモデルをQuake2のモデルに変換します

アニメーションで3Dモデルをレンダリングする必要がある拡張現実アプリケーションを作成しようとしています。モデルを古い地震(.md2)形式にエクスポートするための最良の方法/プラグインまたはソフトウェアは何ですか?

3Ds MAX、Maya、Blenderなどの人気のあるモデリングソフトウェアを使用したいと思います。インターネットで検索しましたが、操作が難しいプラグインしか見つかりませんでした。

商用ツールはありますか?良いサポートが必要です。

0 投票する
2 に答える
1204 参照

c++ - Quake 3 マップのレンダリングに関する問題

私は Quake 3 BSP ローダーに取り組んできました。ただし、顔を正しくレンダリングできません。

ここに画像の説明を入力

これがマップの頂点です。マップ上に顔をレンダリングすると、次のようになります。

ここに画像の説明を入力

これはレンダリングのコードです:

完全なソース コード: