ゲーム自体にゲームプレイを記録しますか?


8

現在、iOSプラットフォーム用の3Dカーレースゲームに取り組んでいます。リプレイシステムを実装し、そのリプレイを動画ファイルに記録してYouTubeにアップロードする必要がありました。

レコーディング部分に問題があるだけで、残りは完了です。私がしていることはglReadPixels()、OpenGL ES 1.1のコマンドを使用してフレームバッファーのコンテンツをキャプチャし、ランタイム中にこれらのフレームからビデオを作成することです(AVFoundationフレームワークを使用)。

私が直面している問題glReadPixels()は、非常に遅い更新ごとに呼び出す必要があることです。FPSを約30から2-3に減らします... glReadPixels()コマンドに代わるものはありますか?または、誰かが再生システムを作成してビデオに録画しましたか?

回答:


8

再生システムが整っているので、ゲームプレイ中にのみ再生データを保存し、その再生からオフラインでビデオをレンダリングすることをお勧めします。例えば。ゲームが終了し、ユーザーがリプレイをビデオとして投稿することを選択した後、リプレイデータからビデオをレンダリングします(リプレイを再生してを使用glReadPixels)。


kこのアプローチは新しく、チェックする価値があります...これは以前に行ったことがありますか?
竜巻

1
いいえ、これまでに行ったことはありません。しかし、この質問で概説されているようにリプレイシステムを実装し、フレームが画面外にレンダリングされます。おそらく、レース終了後にレンダーからテクスチャへのアプローチを使用します
bummzack 2011

2
私はほとんどのゲームがこれを行うと思います(スタークラフトは間違いなくそうします)。ただし、シミュレーションが完全に確定的であることを確認する必要があります。つまり、特定の入力セットを指定すると、常に同じ出力が得られます。さらに、再生データは大幅に小さく、共有可能です。
pek

@bummzack-あなたが提供したリンクは私にとって非常に役に立ちます...そのおかげで
トルネード

0

最も単純な方法は、実際のフレームではなく、ゲームプレイ中にユーザーとAIのアクションと状態を記録することだと思います。ゲームプレイが終了した後、プレイヤーはレースを完了するか、メインメニューに戻ると、リプレイを見る(または保存する)オプションが表示され、その後、アクションを再生してフレームを再作成するために使用されるアクションとゲームエンジンを介して状態。これには、ゲームプレイ中に各フレーム全体を(本質的に)複数回追加で描画する必要がないという追加の利点があります。


2
基本的に同じ答えを出しました。あなたのアプローチと私のアプローチの違いは何ですか?
bummzack 2011

ここでの注意点の1つは、非決定論的なAIがある場合です。レーシングゲームなので、プレーヤーのリプレイデータを再生するときは、すべてのAIレーサーがまったく同じように動作することを確認する必要があります。
Apreche、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.