2011-10-17 15 views
1

私は最初の2D Javaゲームを作っています。私は現在、Timersを使ってすべてを制御し、更新しています。私はどのような方法が2次元Javaゲーム、タイマーやスレッドに最適だったのだろうか?現在私は、すべてのレンダリングと描画を行うgameCanvasクラスのTimerを持っています。私はまた彼の移動のために使用される私のプレーヤーのためにタイマーを持っています。あなたたちは何をお勧めしますJava 2Dゲーム - タイマーとスレッド?

Timer timer = new Timer(5,this); 
timer.start(); 

:私は、Javaプログラミングに新たなんだ、それは私が入れていたすべてがこのだっ考慮時点で最も簡単な方法は思えたので、私はタイマーを使用

唯一の理由は何ですか?

答えて

2

ゲームの種類によって異なります。

「高速ゲーム」(例えばシューティングゲーム)の場合、歩留まり/待機時間(適切な場合)を備えた専用ゲームループ(おそらくスレッド)が一般的に最も機能します。 「遅いゲーム」のためのタイマーがうまく動作します - タイマーの種類、しかし、があります。

  1. 「スイング」タイマー(javax.swing.Timer)
    1. 利点:そうスイングに触れることができるEDT上で動作が/ AWTは
    2. 欠点をオブジェクト:EDTはそう貧しい解像度を持っている上で動作し、タイミングが
  2. "サービス" タイマー(java.util.Timer)を保証しますの
    1. 利点:(EDT上では実行されません:
      1. は "固定金利" 独自のスレッドでタイマー
      2. 実行(その解像度/一貫性が優れているが、保証の限りではありません)
    2. 欠点がサポートしていますSwing/AWTには触れません)。 多くの場合はまだが最後のイベントが発生したとするときの間の「デルタ」を計算しなければならないゲームで

現在のイベントが発生した計算にこれを使用する場合。デルタを使用するモデルがなければ、ゲームの速度はシステムによって異なります。

個人的には、「高速ゲーム」ループによく適した高解像度クロックを提供するLWJGL: Lightweight Java Game Libraryをお勧めします。また、 "直接" OpenGLバインディングをサポートします;-)

私は「スローゲーム」を開発する経験はありません。

ハッピーコーディング。

+0

おかげで、今私のゲームは、単純および2D迷路パズルゲームです。何が最良の解決策だと思いますか? –

+0

複雑な何も+1 @pst、funnnnnnnnnnnnnnnされてください(そうスイング/ AWTに触れることができない)とのために...最初からそれを書く – mKorbel

4

2つのアプローチの長所と短所についてはpstが何を言っているかは間違いありません。

ただし、お勧めしません。私はSlick2Dのような "ゲームのためにデザインされた"ゲームエンジンを使用します。それはゲームのアップデートとロジック、ゲームのメインループの構造に非常に役立ちます。また、実行するレベルの問題。

あなたがゲームのためのスイングを使用して検討しているならば、私はまたin my answer here概説的な理由のために、遠く離れているから滞在します。

Slick2Dは、タイミングの問題を処理し、フレームのレンダリングの間にデルタを計算するためにあらかじめ構築されています。また、入力処理など、自分で構築する必要のないたくさんのものが得られます(キーボード、マウス、コントローラ)、アクセラレーションされたグラフィックス(エンジンはグラフィックスアクセラレーションの恩恵を受けるため、エンジンは自動的にグラフィックアクセラレーションを利用します)、オーディオの準備が整うとオーディオライブラリも充実します。

自身はあなたが泣きたい作るために起こっているすべてのこのようなものを書きます。あなたは(ゲームロジック自体を構築するあなたの時間を過ごすしたいとは反対に)エンジン自体を構築するには本当にない限り、エンジンを構築することは、あなただけの既製成熟したツールを使用することができたときに費やした多くの時間があります。

+0

javax.swing.Actionを必要とは!私は言う! ;-) +1 –

+1

:)それは間違いなく可能です。私はちょうど私がゲームではなく、ツールに自分の時間を費やすことを好むことを学んだ。それは間違いなく個人的な好みです。建築ツールが好きな人もいます。私のことではない。 – jefflunt

+0

返事をありがとう、私はむしろ私が達成感を与えるようにすべてを自分自身を書くことを好むだろう。私は現在自分のゲームにスイングを使用していますが、AWTをお勧めしますか?人に聞いての年に –