This document written: 2013-05-22 .. 2013-06-18

Slick2D で今どきの Java ゲームプログラミング

  1. LWJGL そして Slick2D
  2. Eclipse における LWJGL + Slick2D の使い方
  3. Slick2D を使ったゲームプログラムの骨組
  4. 四角形を描いて、矢印キーで動かす
  5. スプライトシートからスプライトを切り出して表示する
  6. 効果音を付ける
  7. マップデータを配列で管理する
  8. メイン画面を描画する
  9. 敵キャラの移動
  10. API リファレンス

世間に流通している日本語ベースの「Java ゲームプログラミング」の情報は古いのです。今から 10 年くらい前の 2000 年代初頭に Web ブラウザで実行できるデスクトップ・アプリケーションの開発言語として Java が流行りかけた時期がありました(今でも昔でも Java の本来の本領はサーバーやデータベースなどのビジネス用分野か、埋め込みソフト用分野です)。Java でゲームも作ってしまおうということが流行ったのもその時期で、「Java ゲームプログラミング」関連の本にせよ、Web 上の情報にせよその時期に出たものがそのまま依然として残っている状況です。

ゲーム開発言語としての Java の立場は、すぐに Adobe の Flash に人気を奪われてしまい、以後、2010 年代に突入するまで、基本的に省みられることはありませんでした。状況が変ったのはここ 2、3 年のことで、Android が Java をアプリケーションの開発言語として採用していることによります(厳密には Android では多くの API が独自仕様になっていて、Java 本来の標準 API の全てが使えるわけではないため、一人前の Java 環境とは見なされていませんが、プログラミング言語としての文法は Java そのものであることには違いありません)

まず古い「Java ゲームプログラミング」の特徴として共通しているのは、そのようにかつて Java が流行りかけた時代の環境を背景としているため、「Java Applet(アプレット)」を想定しているのが特徴です。「Java Applet」はつまり、Flash や JavaScript のように、Web ブラウザ上で実行されることを前提としているプログラムです。この用途においては、初期に Java Applet を追い払って近年まで長くチャンピオンの座に就いていた Flash ですら敗退し、JavaScript が事実上の標準としてこれからの HTML5 の時代に君臨することが既定路線となっているのは、皆さんもお知りのことでしょう。今さら、セキュリティ問題も抱えている Java Applet の出る幕ではないことは言うまでもありません。

また、Android の流行による近頃の Java 人気の再燃を受けて、古い「Java ゲームプログラミング」の本でも改版されたものが何冊か出てきました。僕はそれらにも目を通してみたのですが、さすがに Java Applet は使わないように変更されているものの、awt や swing といった Java の標準 API を使ってゲームプログラミングを行っており、実用性について非常に疑問が残ります。Android プログラミングとの関連性から言っても、awt や swing は Android では使えませんし、そもそも Java の標準 API である awt や swing というのは、ビジネス用途における水準で用意されているものなので、ゲーム用途としてはかなり不十分なものです。なので、実際に(MineCraft を例にしてもわかるように)Java ゲームというのは、OpenGL を使うのが一般的です。また、Android もやはり OpenGL を使います。Java でゲームプログラミングする場合は、OpenGL を使っておけば、Android プログラミングに移行する場合でも比較的シームレスに移行できることになります。

ポイント 1:今どきの Java ゲームプログラミングは OpenGL を使う。awt や swing は使うな。


mihr.net::COMP