2011-12-21 2 views
1

私はここに少し突っ込んでいます。私と友人は楽しむために2Dゲームを作っています。私たちは、「戦争の霧」を実行しようとしています。それは、プレイが見ているものを制限して、コーナーを見ることができないようにします。しかし、私は "シャドウマップ"を作る最善の方法を見つけ出そうとしています。それは、プレイヤーの動きに合わせてピクセルをフレームごとに変更できるということです。時々シャドーマップは1024x1024のように大きいです。私たちはLWJGLとSlickを使用しています。各フレームの大きな画像をレンダリングして編集する最も良い方法は?

各フレームで大きな画像を編集してレンダリングする効率的な方法はありますか?

私はこのサイトで他の霧の質問を調べましたが、実際のレンダリングと編集の方法については言及していません。私はSlickのImageBufferを使用しようとしましたが、レンダリング用のイメージを取得するための唯一の方法は、各Imageオブジェクトに新しいImageオブジェクトを作成して、古いImageオブジェクトが破棄されても大きなメモリリークを引き起こします。

答えて

1

私はこの古い質問にキックを与えたいと思っています。この話題で起こったOPや他の誰かの質問を解決したいと思っています。最近同じ問題に遭遇したので、私は自分の解決策の概要を説明したいと思います。私が作成した2Dゲームエンジンを使用していますが、私はOpenGLまたはJOGLを使用していませんでしたので、私の描画方法はかなり特殊で、この場合は一般的ではありませんでした。特定の回答は、使用しているシステムに合わせて調整する必要があります。

私の場合、私はマップをタイル張りにしました。一般に、サイズはXでYです。文字の表示設定(visibilityRange = visionLengthなど)。

私の "ビジョンライン"もすべて文字の中央から出ています。

初期設定は簡単でしたが、戦争の霧を単に文字の範囲外に作成します。これは私のキャラクターの周りに素敵な円を作りました。そこから、ビジョン半径内のすべての「ビジョンブロッカー」を見つけました。 2行(1つは左端の視野側に、もう1行は右端)にマップし、その後ろのすべてを隠す。部分的に打ち負かされたものは、私は戦争の "半分のビジョン"の霧を行うでしょう。ここでは大まかな例...

P =プレイヤー、X =ビジョンブロッカー、L =低視力、N =なしビジョン

P  X N N N 
     L L L N 
X X X X L L N 

希望がこのポストに遭遇任意のゲーム開発者を支援します。

+0

共有いただきありがとうございます。私のソリューションは非常に似ていると私は信じていますが、私がもう何をしたかは覚えていません。 – Zachar543

0

この回答が少しばかり曖昧ですが、Pixel Buffer Objectsをお試しください。それらは、ピクセルデータを効率的に操作する方法です。

関連する問題