DJGL-ゲームの基礎

ゲームの基礎


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

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



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

ゲームループ


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

初期化

更新

描画

1フレーム終了まで待機

更新に戻る

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

  • 「初期化」にあたるのはメインメソッドの中とコンストラクタです。ここでプレイヤーや敵の初期配置などを決めます。
  • 「更新」にあたるのはupdateメソッドです。ユーザーの入力によりプレイヤーを動かしたり、敵を動かしたりします。
  • 「描画」にあたるのはdrawメソッドです。プレイヤーや敵の画像の描画や、ライフや残り時間などのゲーム情報を表示します。
この流れ及び待機処理は自動で行ってくれます。つまり、基本的に初期化とupdate,drawメソッドを実装すればゲームが出来上がるように作っています。
  1. import densan.s.game.drawing.Drawer;
  2. import densan.s.game.manager.GameManager;
  3. import densan.s.game.manager.Updatable;
  4.  
  5.  
  6. public class TestGame implements Updatable {
  7.  
  8. //初期化
  9. public TestGame() {
  10. // まだ使わない
  11. }
  12. //描画
  13. @Override
  14. public void draw(Drawer d) {
  15. // まだ使わない
  16.  
  17. }
  18. //更新
  19. @Override
  20. public void update() {
  21. // まだ使わない
  22.  
  23. }
  24. //初期化
  25. public static void main(String[] args) {
  26. //ゲームを管理するクラスを取得
  27. GameManager gm = GameManager.getInstance();
  28. //このメソッドでウインドウを表示する
  29. //引数はそれぞれ(, 高さ, タイトルバーに表示する文字)
  30. gm.createFrame(800, 600, "テストゲーム");
  31. //更新と描画を担うオブジェクトを設定
  32. //今はあまり関係ない
  33. gm.setUpdatable(new TestGame());
  34. }
  35.  
  36. }
  37.  
  38.  

まとめ


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

名前:
コメント:

すべてのコメントを見る
最終更新:2016年10月06日 23:16