2005年01月06日

LWJGL

LWJGLイイ感じ。
Game Libraryの名が付いてるだけあってゲームを作るのに適したメソッドが用意されている。

スバラシイと思ったところは
Display.sync(60);
と書くだけでフレームレートが60になるようにwaitがかかる点。
FPSを固定するのは難しい処理ではないけどこういうメソッドが標準で用意されているのがさすがゲーム用だなって感じ。
syncメソッドのソースを眺めてみるとThread.yield();を時間が来るまで無限ループさせている。
スレッドをスリープさせているわけではないので時間が余ってもCPU使用率は100%に張り付くようだ。
CPU使用率が気になる場合は、待ち時間が多いとsleepメソッドを使うように改造するとイイかも。

ソースが公開されてると内部で何してるか見れるので良いな。
気になるところはカスタマイズできるだろうし、何よりどういう実装してるのか見て勉強になるのがイイ。

あとゲーム用として良いなと思ったのは時間取得がより精確になっていること。
Javaで時間をミリ秒単位で取得するにはSystem.currentTimeMillis()が使用できるけど精度は10ミリ秒程度。
ループさせて時間取得をすればわかるけど10ミリ秒ごと時間が変化してるのがわかる。
(Java1.5だとナノ秒までの精度で時間がとれるらしいがやったこと無いので不明)

LWJGLで時間を取得するにはSys.getTime()でおk。
ただちょっと特殊なのは(このメソッドから取得した値/タイマー解像度)が実際の時間になること。
ちなみにタイマー解像度を調べてみると3579545だった。
つまり精度は約0.3ナノ秒と言ったところかな?
ただ本当にこの精度があるかは不明。
ソースを見るとネイティブな処理を呼び出して時間を取得してる模様。

OpenGL,OpenALをJavaから使えるスバラシイライブラリだがなんかバージョンによってクラス構成が大きく違う様子。
デモゲームのソースが最新バージョンで動かなかった・・・。
正しいデモのソースはwebページから取得せずにライブラリJarの中にexampleパッケージがあるのでそこから取得する。
これ結構ハマった・・。

あと最大の問題は日本語の情報が致命的に少ないこと。
googleでLWJGLを検索すると実質19件しか検索されないw

日本語での情報が少ないというか皆無だなぁ。
まぁ普通Javaでゲームを作ろうなんて考えないし仕方ないけど。

Trackback on "LWJGL"

このエントリーのトラックバックURL: 

"LWJGL"へのトラックバックはまだありません。

Comment on "LWJGL"

"LWJGL"へのコメントはまだありません。

Post a Comment

コメントする

コメント登録機能が設定されていますが、TypeKey トークンが設定されていません。