DJGL-ゲームの基礎

「DJGL-ゲームの基礎」の編集履歴(バックアップ)一覧に戻る

DJGL-ゲームの基礎 - (2016/10/06 (木) 23:16:22) のソース

*ゲームの基礎
----
とりあえずゲームの基本的な考え方を解説します。
概念的な話なので、早くゲームを作りたい人は&u(){読み飛ばして構いません。}
ゲームは当有情のソフトウェアと違う点がいくつもあります。その点でゲーム以外のプログラムを作っていた人は戸惑うかもしれません。

**ゲームとソフトウェアの違い
----

一番大きな特徴に&bold(){常に状態が更新される}というものがあります。
例えば、アクションゲームならユーザーが入力していない間も敵は動いています。
でも、普通のソフトウェアはユーザーが入力して初めて処理を開始します。
この違いがかなり大きいです。今はよくわからないかもしれませんが、覚えておいてください。

**ゲームループ
----
ゲームでは基本的に&bold(){ゲームループ}という流れにそってゲームの処理をします。
1フレーム(60FPSなら60分の1秒)に一回ループします。DJGLでは

初期化
↓
更新
↓
描画
↓
1フレーム終了まで待機
↓
更新に戻る

という流れで行っています。
それぞれの流れを[[DJGL-環境構築]]で書いたソースコードのどの部分にあたるかを解説します。

-「初期化」にあたるのはメインメソッドの中とコンストラクタです。ここでプレイヤーや敵の初期配置などを決めます。
-「更新」にあたるのはupdateメソッドです。ユーザーの入力によりプレイヤーを動かしたり、敵を動かしたりします。
-「描画」にあたるのはdrawメソッドです。プレイヤーや敵の画像の描画や、ライフや残り時間などのゲーム情報を表示します。
この流れ及び待機処理は自動で行ってくれます。つまり、基本的に初期化とupdate,drawメソッドを実装すればゲームが出来上がるように作っています。
#highlight(linenumber,css){{{
import densan.s.game.drawing.Drawer;
import densan.s.game.manager.GameManager;
import densan.s.game.manager.Updatable;
 
 
public class TestGame implements Updatable {
 
	//初期化
	public TestGame() {
		// まだ使わない
	}
	//描画
	@Override
	public void draw(Drawer d) {
		// まだ使わない
 
	}
	//更新
	@Override
	public void update() {
		// まだ使わない
 
	}
	//初期化
	public static void main(String[] args) {
		//ゲームを管理するクラスを取得
		GameManager gm = GameManager.getInstance();
		//このメソッドでウインドウを表示する
		//引数はそれぞれ(幅, 高さ, タイトルバーに表示する文字)
		gm.createFrame(800, 600, "テストゲーム");
		//更新と描画を担うオブジェクトを設定
		//今はあまり関係ない
		gm.setUpdatable(new TestGame());
	}
 
}
 
}}}

**まとめ
----
今回はゲームの概念的な話をしました。
今はわからなくてもゲームを作り終わった後に読むと納得できるかもしれません。
次から本格的にプログラムを書いていきます。
----
#comment_num2