ゲームの基礎
とりあえずゲームの基本的な考え方を解説します。
概念的な話なので、早くゲームを作りたい人は読み飛ばして構いません。
ゲームは当有情のソフトウェアと違う点がいくつもあります。その点でゲーム以外のプログラムを作っていた人は戸惑うかもしれません。
ゲームとソフトウェアの違い
一番大きな特徴に常に状態が更新されるというものがあります。
例えば、アクションゲームならユーザーが入力していない間も敵は動いています。
でも、普通のソフトウェアはユーザーが入力して初めて処理を開始します。
この違いがかなり大きいです。今はよくわからないかもしれませんが、覚えておいてください。
ゲームループ
ゲームでは基本的にゲームループという流れにそってゲームの処理をします。
1フレーム(60FPSなら60分の1秒)に一回ループします。DJGLでは
初期化
↓
更新
↓
描画
↓
1フレーム終了まで待機
↓
更新に戻る
という流れで行っています。
それぞれの流れを
DJGL-環境構築で書いたソースコードのどの部分にあたるかを解説します。
- 「初期化」にあたるのはメインメソッドの中とコンストラクタです。ここでプレイヤーや敵の初期配置などを決めます。
- 「更新」にあたるのはupdateメソッドです。ユーザーの入力によりプレイヤーを動かしたり、敵を動かしたりします。
- 「描画」にあたるのはdrawメソッドです。プレイヤーや敵の画像の描画や、ライフや残り時間などのゲーム情報を表示します。
この流れ及び待機処理は自動で行ってくれます。つまり、基本的に初期化とupdate,drawメソッドを実装すればゲームが出来上がるように作っています。
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());
}
}
まとめ
今回はゲームの概念的な話をしました。
今はわからなくてもゲームを作り終わった後に読むと納得できるかもしれません。
次から本格的にプログラムを書いていきます。
最終更新:2016年10月06日 23:16