Javaでゲーム作成 2本目at GAMEDEV
Javaでゲーム作成 2本目 - 暇つぶし2ch204:まほろば ◆BmUbLWewsM
06/01/28 21:29:17 K+4gOIY6
>>203
実行中のメモリのぞかれれば意味なし
そんな事出きるの?ソースは?
やろうと思えばできるとか妄想でつか?

205:名前は開発中のものです。
06/01/28 21:37:25 EnQtmKxX
>>204
メモリ覗くだけならWindows上で実行しちゃえば簡単だろうけど、
手軽に解析って話は俺も聞いたこと無いな。

うちの会社はDashOとかいうバカ高い難読化ツールを買った。
そんな必要無ぇって主張は通らなかった。

206:名前は開発中のものです。
06/01/28 22:44:25 PUcSGIMg
読みやすくしてくれるツールはありませんか。

207:名前は開発中のものです。
06/01/28 23:06:37 u3ZzJuZS
>>204
多少は調べろ
クラスロードした後はざる

208:まほろば ◆BmUbLWewsM
06/01/28 23:57:58 K+4gOIY6
>>207

209:名前は開発中のものです。
06/01/29 01:11:24 1KG7yFUT
結局いいスレだったのをコテハンが壊したってことか。

210:名前は開発中のものです。
06/01/29 02:35:06 PecoYXTp
もう大学生は春休みか……
いいご身分だなぁ。

211:名前は開発中のものです。
06/01/29 12:34:08 FRX/ORuz
低脳だから卒業後ニート行きで
さらに良いご身分だな

212:まほろば ◆BmUbLWewsM
06/01/29 13:24:43 LX0lKjST
まったくだなww

213:名前は開発中のものです。
06/01/29 17:14:26 zbiz4Pm/
GraphicsクラスのdrawImageで浮動小数点数を使う方法って何かない?
ゲームのキャラクターを表示させるためにはint型では精度が悪いんで。

214:まほろば ◆BmUbLWewsM
06/01/29 17:28:00 LX0lKjST
ないよ。javadoc見りゃ分かるじゃん。。

215:名前は開発中のものです。
06/01/29 17:45:07 ec+1eYbr
>>213
そういうときは大きいバッファを持つことで回避する
320*240の画像を0.5単位で扱いたいときは640*480とかね

drawRenderedImageとかtranslateを使う方法もあるが
用途がゲームなら使わないほうがすっきりしていいと思われ


216:名前は開発中のものです。
06/01/29 17:57:12 2i9o9yjB
>>213
Graphics2D でもいいのなら AffineTransform を使えばできる。
デフォルトでは AffineTransform を使用しても補完してくれないので、
補完方法を設定する必要がある。

Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g2.drawImage(image, transform, null);

こうすると 0.01 単位でヌルっと動かせるけど、それなりに重くなるし
画質もはっきりしたりぼやけたりするので逆にオススメできない。
キャラ自身の内部座標を小数点で扱うのは自由だけど
画像の描画に関しては座標を int で処理するのが現実的だと思う。

217:名前は開発中のものです。
06/01/29 21:48:41 qPM3IQVC
正男ってjava?

218:名前は開発中のものです。
06/02/01 20:44:05 W1eX6IZO
Javaアプレットでしょ

219:名前は開発中のものです。
06/02/05 00:25:12 LCSDYznu
フルスクリーンモードで質問なんですが

  public static void main(String[] args) {
    GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice device = env.getDefaultScreenDevice();

    JFrame frame = new JFrame(device.getDefaultConfiguration());
    frame.setUndecorated(true);

    device.setFullScreenWindow(frame);

    MyPanel panel = new MyPanel();
    frame.getContentPane().add(panel);
  }

こんな感じでフルスクリーン化するフレームの上にパネルをはりつけてます。
このときフルスクリーン状態にはなるんですが、パネルのpaintComponent()が
呼ばれてないらしく描画されません(画面が真っ白のままでサウンドはなります)

panelのpaintComponent()が呼ばれるにはどう修正すればよいでしょうか。

220:名前は開発中のものです。
06/02/05 00:52:34 NFbwVJ0F
フルスクリーン使ってるならSwingのイベントモデルにはこだわらないのが普通
BufferStrategyってのをしらべてごらん

ようは好きなタイミングで描画が出来るのだ

221:名前は開発中のものです。
06/02/05 01:21:52 LCSDYznu
ありがとうございます。
やっぱそれですか。そうかもと思って実装始めたらできました。
frame.createBufferStrategy(2);
とやってpaintComponent(g)をdraw(g)にかえて
BufferStrategy strategy = window.getBufferStrategy();
Graphics g = strategy.getDrawGraphics();
draw(g);
g.dispose();
でうまく描画できました。

222:219
06/02/05 01:30:28 LCSDYznu
もう一つあるのでアドバイスいただけるとうれしいです。

Window window = device.getFullScreenWindow();
window.add(JPanelオブジェクト);

とやってフルスクリーン上にパネルを置いています。
こうするとパネルがちらついてしまうのですが対策はあるでしょうか。

223:名前は開発中のものです。
06/02/05 01:52:48 8ByMu9YS
まずパネルをおく必要はない
ウインドウ全体を使って描画してるから


224:219
06/02/05 09:38:19 LCSDYznu
コマンド選択パネルみたいに使っているんですが。

フルスクリーン上でスペース押すと右上にパネルが表示されます。
KeyboardListenerを実装してるのでキー入力はそのパネルが奪い
パネルを消すともとのフルスクリーン上にキー入力がいくという感じです。
パネルじゃなくてCanvasでもいいんですがどうもちらつきます・・・

パネルで何も描画しなくてもちらつくということはフルスクリーンにしてる
JFrame上にコンテナは置いちゃだめということでしょうか。

225:名前は開発中のものです。
06/02/05 12:29:26 8ByMu9YS
おいてはいけないということはないが、BufferStrategyはつかえんぞ

226:219
06/02/05 13:00:29 LCSDYznu
そうですか・・・ボタンやらも全部だめだったのでBufferStrategyの描画領域にコンポーネントは配置してもちらついてしまうみたいですね。
あきらめてパネル風のウィンドウを描画することにします。

227:名前は開発中のものです。
06/02/05 13:25:23 8ByMu9YS
ゲーム目的ならコンポーネントの描画は避けるべきだな
すべて自前で描画しないとリフレッシュとかのタイミングがコントロールできん


228:名前は開発中のものです。
06/02/05 14:37:09 15xceU0H
便乗だけど、フルスクリーンで文字の入力はどうすればいいの?
英語だけなら楽勝かもしれないけど、漢字変換とかどうすればいいのかさぱーり。
以前コンポーネント埋め込んだら酷いことになって諦めてた

229:名前は開発中のものです。
06/02/05 14:40:46 LCSDYznu
MMORPGの市販ゲームとかできてるからやり方あるんだろうけど。Javaだとどうなるんだろ。自分も知りたい。

230:名前は開発中のものです。
06/02/05 15:23:24 8ByMu9YS
MMORPGの場合フルスクリーンでもただすべての画面を占有するだけ
といった作りかたしてると思われ

JavaでやろうとするならBufferStrategyをあきらめるほうがいいだろうね
JPanelに画面部分を描画、paintComponentでバックバッファから自前で転送

231:名前は開発中のものです。
06/02/05 17:31:23 XoC15JKP

LWJGLやJOGLで日本語文字を画面に表示するにはどうしたらいいんでしょうか。
LWJGLにAWTGLCanvasっていうのがあって、これを使えばできそうなんですが、
サンプルがなく使い方がいまいち分かりません。

みんなはどうやっているんだろう。

以前Graphics2Dでゲーム作ろうと思ったけど、アルファブレンド処理がソフトウェア描画に
なったので、LWJGLに移ったんですが。

うううーーーん

232:名前は開発中のものです。
06/02/05 17:43:24 8ByMu9YS
基本はDirectDrawだからな
一応オプションでDirect3Dで動作させればアルファブレンドもハードウェアになるが
レンダリング品質の問題とか通常一番使うブリットが遅いとかJava2Dベースでは
通常合成しか出来ないとかが問題になるからな

LWJGLはまったくさわったことがないのでわからん
JOGLはOpenGLそのままだね
俺が触ったときはSDLとのリンクが未実装だったので対象には上がらなかったが

Java3Dは高級すぎてゲーム用途にはまったく使えないという感じだった
速度がまったくでないことやピクセル単位の処理という感じではなかった

ただ、軽く触っただけなのでなんともいえない
2Dゲームならソフトウェアによるアルファブレンドが問題になるほど遅い場面は少ないとは思う

233:名前は開発中のものです。
06/02/05 19:35:20 XoC15JKP

>>232

640x480の画面に32x32のマップをひきつめただけですでに40FPSだったんですよね
Graphics2D。。。

やっぱりC++の方がゲーム開発はいいのかなぁ・・・
開発効率はJavaの方がはるかにいいんですけどね

何かJOGLやLWJGLに近い速度がでるゲーム用ライブラリって
ないんでしょうか



234:名前は開発中のものです。
06/02/05 19:44:36 8ByMu9YS
アルファブレンドでしきつめたらそれくらいにはなりそうだが
通常転送ならそこまで遅くなることはあるまい

使い方がおかしいかと

235:名前は開発中のものです。
06/02/05 19:48:54 XoC15JKP

>>234

アルファブレンドで描画したときです。
正直なきたくなりました。
同様の処理でDirectXの場合は余裕を持たせてもFPS500ぐらいでした。


236:名前は開発中のものです。
06/02/05 20:03:06 8ByMu9YS
デフォはDirectDrawベースだから当たり前
PureJavaベースのゲームなら少し前のコンシューマの2Dベースにしておくべき

アルファブレンドが多い場合は自前のエンジンを使ったほうがいい
Java2Dのアルファブレンドは機能が多すぎて高級すぎる
回転とかも同様

あとメモリアクセスを減らすために解像度を下げるとか
今後を考えてレンダリングエンジンはマルチコアに対応させる

現状を考えると320*240-16bppが2DでJavaでの安定動作の限界だと思うよ
それを2倍拡大して描画するのがベストか

Sunはデスクトップ部分に5.0は力を入れるといいつつ
1.4.2とほとんど変わらなかった前科があるから6にも期待薄だな

237:名前は開発中のものです。
06/02/05 20:25:57 15xceU0H
-serverを指定するだけ多少は速くなるし、メモリ次第かなぁ

238:名前は開発中のものです。
06/02/05 21:05:19 8ByMu9YS
serverはゲームではオススメしない
強度の最適化のために滑らかに動かない


239:名前は開発中のものです。
06/03/01 00:33:42 LBMCdldE
BufferStrategyとpaintComponentを切り替えられるようにすれば
RPGツクールでキーボード名前入力を可能にした感じのゲームも可能なのかな。
でもそんなことしてたらMMORPGなんて作れない気もする。
-serverの件もそうだけど、なんかもどかしい

240:名前は開発中のものです。
06/03/01 00:53:30 iPnrcY6D
一応BufferStrategyはCanvasでも使える
AWTなのであまり込み入った使い方しないように

241:名前は開発中のものです。
06/03/01 01:34:48 LBMCdldE
おお、ホントだ。BufferStrategyは埋め込み可能だったのか。
ゲーム画面上に透明チャット窓とかしようとするのも可能そうだね。
BufferStrategyならAWTとSwingの差分なんてあってないようなものだろうし。
ちょっと希望が湧いてきました。

242:名前は開発中のものです。
06/03/01 02:35:02 LBMCdldE
5.0からAWTにZOrderが追加される。かゆいところに手が届いてら。

243:名前は開発中のものです。
06/03/04 19:59:23 +Bxv4duP
Swingでrepaintをした場合ってイベントキューで処理されるの?
Timerのタイミングできちんと描画スレッドに渡せますか?

244:名前は開発中のものです。
06/03/04 23:22:41 EEF7QBKs
何を言いたいのかわからんがSwingは普通のSUIのイベント処理だぞ

リペイントわたしてもリペイント範囲のaddされるだけ

連続でrepaint複数渡しても1回しかリペイントされないとかよくあること

これはSwingに限ったことではない
Windowシステムは全部そう

だからTimerでrepaintわたしたからすぐに描画されるわけではない

正確なタイミングでやるならAWTイベントでのリペイントは辞めるべき
BufferStrategyを使うのが正しい
これは内部でDirectXとか使われてるイベントモデルではなく、いわゆる直書きだ

245:名前は開発中のものです。
06/03/05 13:59:16 R322THrX
>>244 どうもです。
FPS管理するからrepaintのままでやります。
描画に失敗したら致命的というわけでもありませんし。

246:名前は開発中のものです。
06/03/05 14:46:49 o20ilzio
FPS管理って普通にみんなBufferStrategyでしてると思うぞ
なんか勘違いしてないか?

247:名前は開発中のものです。
06/03/05 15:12:44 R322THrX
いやJComponentもバリバリ使いたいので。

248:名前は開発中のものです。
06/03/05 16:46:58 o20ilzio
Swingコンポーネントベースのゲームってめずらしいな
ダブルバッファリングをライブラリに任せるのは割ときついからな

249:名前は開発中のものです。
06/03/15 01:15:11 cXOEjtfT
保守

250:名前は開発中のものです。
06/03/18 15:46:10 bpOUjL+k

良スレですね。


6年ぶりぐらいにJava触って驚いた~。
趣味の遊びには最適ですね。



251:名前は開発中のものです。
06/03/18 23:01:07 ATXsVevn
exewrapがJavaゲームの必須アイテムになるのかな?
ヒープサイズをjrockitと同じ物理メモリの75%とかに指定したいんだけど
exewrapにはそういう指定は出来ないんだろうか

128m版と256m版の2つ用意したほうがいいかな・・・うーむ

252:名前は開発中のものです。
06/03/18 23:25:32 xwepgm3J
鯖アプリじゃないんだから物理メモリの割合は意味がないぞ
メモリ増えればGCにかかる時間は増えるわけで、ゲームで使用するメモリ量とかちゃんと計算してないの?
それだとGCとかでかたつかないか?

253:名前は開発中のものです。
06/03/19 00:20:58 jd/0wDmz
単位時間に対するGC率が増えるのって操作性に影響でないの?

254:名前は開発中のものです。
06/03/19 00:26:14 UecNa0OI
100秒ごとに1秒とまるGCと1秒ごとに0.01秒とまるGCとどっちがゲーム向きかということだ

それにわりあいでやられたら世代の調整とかおわっとる
GCのアルゴリズムの種類だって調整するのは常識なんだし
アプリごとに最適な値は大きくことなる


255:名前は開発中のものです。
06/03/19 00:34:10 jd/0wDmz
Mapにキャッシュするサイズ+演算用のサイズで考えればいいんだよね?
最適値というのは演算分のヒープサイズがどのくらいのものなの?

256:名前は開発中のものです。
06/03/19 00:50:29 UecNa0OI
GCの頻度とか使用量とかチェックしてないの?
-verbose:gcオプションいれてごらん

もっと詳しく見たいのならプロファイラで見るのが一番だが
まずはGC部分に注力するならこれが見やすいだろうね


257:名前は開発中のものです。
06/03/19 00:58:12 jd/0wDmz
>>256
OK、チャレンジしてみます。

258:名前は開発中のものです。
06/03/31 14:22:07 5bd8BEHK
当方、子供の頃にZ80アセンブラやBASICでゲームプログラムして遊んでいました。
まぁアルゴリズムとかは結構わかります。

今頃になって、再びプログラムを趣味にしてみようと思いJavaを選択しました。
シンタックスやOOPの基本的なことは大丈夫そうです。
Eclipseインストールしてちょっと感激。

で、問題なのはすこしでもDirectDrawとかFPS管理とか、ちょっとでもシステム寄りの
部分になると全然わからないのです。
いくつかソースを読んでみますと、各人でわりと実装が違うようですね。
Java5ではどんな方法がよいのかなど、参考になるものは無いでしょうか。


259:名前は開発中のものです。
06/03/32 00:20:26 dul/XEV4
>>258
そういう人かなりいるよね
ゲームは問題なく作れるけどウインドウアプリになるとmainからはじまらないので
わけがわからない、と

Javaは一応mainから常に始まるしまだ楽なほう
>>1-11あたりはまずよんでみた?

260:名前は開発中のものです。
06/03/32 01:27:44 liMA6BYm
3/32 記念パピコ

261:名前は開発中のものです。
06/04/04 13:36:48 oy1ylhQ+
eclipseってそんなに良いか?【エクリプス】
スレリンク(tech板:274-番)
> 280 名前:デフォルトの名無しさん[sage] 投稿日:2006/04/04(火) 09:53:59
> >>276
> ほんとかよ。
> 2Dゲームの背景にタイルを敷き詰める処理を作ってみたが明らかに遅いぞ。
> これと言って変な処理は入れてないが、5fps出ない。
>
透過pngをImageIO.read()で読み込んで
Graphics.drawImage(Image, int, int, ImageObserver)で表示すると確かに重くなるが
上の奴はこれと同じ状況なのだろうか?

262:名前は開発中のものです。
06/04/04 13:41:10 h6nMnOJP
アルファブレンドだと重いけどただの色抜きなら重くはないよ
5.0ではBufferedImageのままなにもしなくてもそれなりにきくようになってるし
5fpsってありえんね

そもそもソフトウェア描画でもVGAで30fpsはでそうだが

263:名前は開発中のものです。
06/04/06 12:59:32 kzyZx0iO
iアプリを作ろうと思って勉強してるんですが、画像表示で躓いています。

サンプルではちゃんと表示されるんですが、画像を自作のものと入れ替えるとIO.connectionexception
ってのがでるんです。サンプルと同じGIFでサイズも同じにしてあるんですが。自作画像の方に問題が
あるんでしょうか。

264:名前は開発中のものです。
06/04/06 14:20:33 mP0GEHd4
>>263
動かないのが実機かPC上かを明記してもらえるとありがたい
サンプルがどんな処理を行うアプリケーションなのかも関係してくる
情報が少なすぎるのでエスパー回答してみるが、

・ファイルが壊れている
終端コードが無かったり、BMPなのに拡張子だけGIFにしたとか
試しにネット上に転がってる別のGIFファイルでテストしてみては?

・ファイル名の指定が間違っている
サンプルと同じファイル名にしてテストしてみては?
大文字小文字、全角半角の違いがないか気をつけて

・容量がオーバーしている
同じサイズというのはピクセル数のことだと思いますが、
バイト数が上限を超えていないか確認してください。

265:名前は開発中のものです。
06/04/06 17:15:27 kzyZx0iO
適当に書いてすいません。エラーがでるのはDoja3.5のPC上で、ビルドした後実行すると出ます。
サンプルは簡単なもので、画面にタイトルを表示するだけのものです。十枚ある画像を取り込んで
そのうちの一つを画面に表示するものです。

ファイルが壊れている>壊れているかは私に判断できないんですが、自作の画像はwindowsのペイ
ントで書いて、0という名前で(サンプルで表示されるのが0.gif)形式をGIFにしています。

容量がオーバー>サンプルは色付きですが、自作のものは白と黒のみなのでサイズは小さいです。


いろいろ試してみたんですが、サイズの違う画像の時に一回エラーがでずにちゃんと表示されて、
その画像の大きさをいろいろ変えたんてみても上手く表示されました。やはり元の画像が悪いので
しょうか

266:名前は開発中のものです。
06/04/06 17:20:56 kzyZx0iO
あともう一つ。一回エラーが出た後、画像をもとのサンプルの画像にしても、やはり
エラーが出たままなんです。

267:263
06/04/08 17:16:17 +i1+4exU
ソースも画像も変えてないのに何回かやったら表示されるようになりました。
お騒がせしました。264さんありがとうございます。

268:名前は開発中のものです。
06/04/08 21:22:15 MsUK1t+N
何回かやったらってありえね
ビルドしてないとか

269:名前は開発中のものです。
06/04/09 20:57:47 S2mcpQ+R
俺の場合、PCを再起動してみたら正常に動いたってことはたまにある。
メモリが不足してたのかな?

270:263
06/04/09 23:11:53 TOyrHTNi
原因はわからないです。さんぷるの画像の内、一枚だけ入れ替えたらうまくいったんで、
一枚ずつ入れ替えていったらエラーがでなくなりました。言われてみれば一回電源切った
あとかも

271:名前は開発中のものです。
06/04/10 02:20:42 tKGbAe46
>>270
わかんないならもうレスしなくていいよ

272:名前は開発中のものです。
06/04/15 01:23:46 sf5nUDiw
そのくらいのサンプル段階ならソース晒してもいいでしょう
アップローダにアップしては?
URLリンク(gamdev.org)
短いソースならこのスレに書き込んでもいいだろうし。

273:名前は開発中のものです。
06/04/15 10:51:05 0dEqMUag
この板寂しいからレスしてくれよ・・・
書き込みがあるとわくわくする

274:名前は開発中のものです。
06/04/15 11:44:35 HLCHM0Al
最近アプレットは流行らないよな。
このスレはJavaアプリのこと?アプレットのこと?
サーバ側の話?J2MEのこと? なんでもあり?

それよりなにより、漏れは女とJavaTea飲みたい。

275:名前は開発中のものです。
06/04/15 16:50:42 hisjoupK
MEは実装依存度が高すぎるからそちらのスレで
基本はJavaアプリだろうね

アプレットは社内用リッチクライアント用途ではかなりいいけど
アプリと違って起動時のパラメータとかチューニングが限界がある

アプリによってメモリやGC等の設定は細かくかえるのが普通だから
ゲーム用ではさほど・・
フルスクリーンとかファイルアクセスとか限界もあるしね

手軽に配布ということでフラッシュ程度でいいのならフラッシュで作ればいいし
JavaでやりたいのならWebStartにしたほうがまし

JRE同梱してアプリにしたほうがいいよ

276:名前は開発中のものです。
06/04/15 18:40:50 nQHtm5rD
某スレに幾つかアプレットの2Dゲームが上がってるけど、
速度的には全然遜色ないな。
アプレットでも結構作れる事は作れるけど、開発環境などその他諸々の点で
フラッシュの方が断然上。
アプレットでゲームを作るメリットは何もないよ。


277:名前は開発中のものです。
06/04/15 18:57:48 AcPPvKEl
無料でまともなFlash開発環境があればいいんだけどな

278:名前は開発中のものです。
06/04/15 19:10:16 Vc+Xe/9j
ActionScript経由でFlashの機能は全部表現できるんだよね?
だったらActionScript3.0がパブリッシュ(コンパイルの意)出来る環境があれば
あとはAPIリファレンスを手に入れるだけで何とかなりそう

279:名前は開発中のものです。
06/04/15 21:04:45 hisjoupK
>>276
配布を考えればの間違いでは?
開発環境はアプレットのほうがどこをどう考えても上

アクションスクリプトきっついよ


280:名前は開発中のものです。
06/04/15 22:36:11 lpccgP2z
>>276
ASの開発しづらさを知ってて言ってるのか?
マジキツイっての、アプレットと作り比べてみろよ。

281:名前は開発中のものです。
06/04/21 18:53:51 7zcsjMK6
Java使えればゲーム以外にも仕事で役立ちそう
Flashは覚えても応用範囲が狭そう

282:名前は開発中のものです。
06/04/26 22:50:39 h83t4bfk
>>281
俺はC→AS→Javaだったよ
ASだけは遊びで覚えたんだけど、OO開発の基礎は自然と身についた
MovieClipの仕様がいいんだろうな

283:名前は開発中のものです。
06/04/29 05:29:13 e8m8pSlv
みなさんゲーム作ったんですか?
ここじゃ晒さないんですか?

284:名前は開発中のものです。
06/05/01 20:40:07 nUaQGh3S
フリーのは、ふりーむ!とベクターで公開してる。
有料のはDLsite.com等で販売中。


285:名前は開発中のものです。
06/05/07 00:14:23 W2WiM6Ar
知っている方がいらっしゃったら教えてほしいことがあります。

以前j2re1.4.1_02でフルスクリーンとウィンドウモードを切り替えるものを作ったのですが
1.5.0_06では解像度の変更が正しくうごかないという事に当たりました。

手順は
1)フルスクリーンにする
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
device = ge.getDefaultScreenDevice();
DisplayMode fullscreen = new DisplayMode(640, 480, 32, DisplayMode.REFRESH_RATE_UNKNOWN);
device.setFullScreenWindow(fullscreen);

2)排他を解除しウィンドウモードにする

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
device = ge.getDefaultScreenDevice();
device.setFullScreenWindow(null);

この後で1)を行った場合、1.4.1_02ではフルスクリーンで解像度が変わったのですが
1.5.0_06ではフルスクリーンにはなるが解像度が変わらないということになりました。

何かご存知の方がいらっしゃったらお願いします。

286:285
06/05/07 00:27:33 W2WiM6Ar
書き忘れていました。
1)では決まったフレームをフルスクリーン指定してます。

device.setFullScreenWindow(frame);



287:名前は開発中のものです。
06/05/07 02:17:45 5a9PuC3k
元々フルスクリーンと行き来するとリークが発生するから起動時に選択させるほうがいい

ところで意味が分かりにくいのだが
1>2>1ってこと?

288:285
06/05/07 02:57:40 W2WiM6Ar
>287

>元々フルスクリーンと行き来するとリークが発生するから起動時に選択させるほうがいい

ありがとうございます、その方向で考えてみます。

>1>2>1ってこと?

そうです。

289:名前は開発中のものです。
06/05/07 11:37:59 5a9PuC3k
いまやってみたけど画面ちゃんと切り替わったよ

290:285
06/05/07 14:11:36 W2WiM6Ar
>289

j2re1.4.1_02では、繰り返し切り替えたときにちゃんと解像度も一緒に変わったのですが
1.5.0_06ではフルスクリーンにはなりましたが、二度目以降のフルスクリーン切り替えで
解像度が変わりませんでした。(一回目はちゃんと解像度が変わるようです。)

もしうまく切り替わったのでしたらソース、上げていただけませんでしょうか?

291:名前は開発中のものです。
06/05/07 14:15:43 5a9PuC3k
こんなかんじ

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = device.getDefaultConfiguration();
DisplayMode mode = new DisplayMode(640, 480, 32, DisplayMode.REFRESH_RATE_UNKNOWN);

JFrame frame = new JFrame(gc);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
device.setFullScreenWindow(frame);
device.setDisplayMode(mode);

Thread.sleep(1000);

device.setFullScreenWindow(null);

Thread.sleep(1000);

device.setFullScreenWindow(frame);
device.setDisplayMode(mode);

292:名前は開発中のものです。
06/05/07 14:17:41 5a9PuC3k
注意事項としてウインドウモードとフルスクリーンモードで
色深度が違う場合テクスチャキャッシュとか全部作り直してね

異なる色深度で転送を行うとすごく遅くなる

293:285
06/05/07 14:20:50 W2WiM6Ar
ソース、ありがとうございます。
確認してみます。

294:285
06/05/07 15:30:17 W2WiM6Ar
>292
先ほどのソースありがとうございました。
フレームの非表示をフルスクリーンとウィンドウ毎にきりかえりため
毎度フレームをdisposeし、再作成していたが原因でした。
ところで、上記ソースのやり方でフルスクリーンのときにだけ
frame.setUndecorated(true);
を有効にしたいとおもい、いくつか試しているのですがうまくいっていません。
作成していたソースを載せておきますので、再度も一度だけご指摘いただけますでしょか?

295:285
06/05/07 15:33:08 W2WiM6Ar
以下がソースです。

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = device.getDefaultConfiguration();
DisplayMode mode = new DisplayMode(800, 600, 32, DisplayMode.REFRESH_RATE_UNKNOWN);

JFrame frame = new JFrame(gc);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

System.out.println("初期表示");

frame.setSize(800, 600);

frame.setResizable(false);
frame.setLocationRelativeTo(null);//中央配置
frame.setVisible(true);

Thread.sleep(10000);
System.out.println("フルスクリーンへ");
//frame.setUndecorated(true);//フレームの非表示
device.setFullScreenWindow(frame);
device.setDisplayMode(mode);

Thread.sleep(10000);
System.out.println("ウィンドウモードへ");
device.setFullScreenWindow(null);

296:名前は開発中のものです。
06/05/07 16:01:17 5a9PuC3k
>このフレームの装飾の有効化と無効化を切り替えます。
>フレームが表示されていない時にだけ呼び出すことができます。

マニュアルどおりだと思うんだが

タイトルバーの表示、非表示はフレームが表示されているときは駄目
一度非表示にする必要があるよ


297:名前は開発中のものです。
06/05/07 16:03:32 5a9PuC3k
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = device.getDefaultConfiguration();
DisplayMode mode = new DisplayMode(640, 480, 32, DisplayMode.REFRESH_RATE_UNKNOWN);

JFrame frame = new JFrame(gc);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setUndecorated(true);
device.setFullScreenWindow(frame);
device.setDisplayMode(mode);

for(int i=0; i<10 ;i++){
Thread.sleep(1000/2);

//ウインドウモード
frame.setVisible(false);
frame.dispose();
frame.setUndecorated(false);
device.setFullScreenWindow(null);
frame.setVisible(true);

Thread.sleep(1000/2);

//フルスクリーンモード
frame.setVisible(false);
frame.dispose();
frame.setUndecorated(true);
device.setFullScreenWindow(frame);
}

298:名前は開発中のものです。
06/05/07 16:06:27 5a9PuC3k
あ、最後フルスクリーンモードで終わってるんでALT+F4な


299:285
06/05/07 17:03:17 W2WiM6Ar
丁寧な反応、本当にありがとうございます。
setVisible(false); の後でdisposeが必要なのですね、
わからずに数ヶ月引っかかっていました。
297でいただいたサンプルなのですが、最後のフルスクリーンの状態で
解像度が640, 480ではなく元に戻っていませんでしょうか?
これを何とかできないかなと
//フルスクリーンモード
frame.setVisible(false);
frame.dispose();
frame.setUndecorated(true);
device.setFullScreenWindow(frame);
device.setDisplayMode(mode);
としてみたのですが、今度はウィンドウモードの解像度が戻らなくなってしまいました。
これが一番最初の質問と同じ状態のようです。

300:名前は開発中のものです。
06/05/07 17:32:54 5a9PuC3k
ウインドウモードのタイミングが指定がおかしかった


//ウインドウモード
device.setFullScreenWindow(null);
frame.setVisible(false);
frame.dispose();
frame.setUndecorated(false);
// device.setFullScreenWindow(null);
frame.setVisible(true);

としてごらん

301:285
06/05/07 18:08:49 W2WiM6Ar
ありがとうございます。
切り替え動くようになりました。
動くようになったので調子に乗って切り替え100回とか試してみたら
java.lang.OutOfMemoryError
がでてきました。最初におっしゃってたように、あまり頻繁に切り替えるもんじゃないって事なんですね。


302:名前は開発中のものです。
06/05/09 15:25:13 ii7Fciy7
ソース見直してたらstaticでいいのにインスタンス生成してる部分が結構あった
インスタンス生成よりstaticの方が軽い、速いかな?

303:名前は開発中のものです。
06/05/09 16:50:48 BdqQPpYt
Java的にはstaticはできるだけ使わないほうがいいらしいけど

304:名前は開発中のものです。
06/05/09 17:54:55 oSIIzbHZ
オブジェクトはプールしないで積極的に生成破棄してくれ
世代別GCとの相性を考えるとこれ

305:名前は開発中のものです。
06/05/09 22:27:04 p8kDUjWo
>>303
実装するにあたって、static変数が必要なデザインパターンもあったんじゃね。


306:名前は開発中のものです。
06/05/09 23:23:28 j9harUZK
>>303
そういう覚え方はよくないよ。勉強しなおしたほうがいい。

307:名前は開発中のものです。
06/05/16 11:01:52 oJeJmTzF
ドラクエってさ、コマンド選ぶと前のコマンドがバックに表示されたまま
次のコマンドが出るじゃん それでキャンセルで現在のウィンドウが消えて
前のコマンドに参照が戻るよね
あれってそれぞれにバッファ用意してやるしかないかな?
たとえば道具→使う→誰に なら
道具を表示するバッファ
道具、使うを表示するバッファ
道具、使う、誰にを表示するバッファ
みたいに

308:名前は開発中のものです。
06/05/16 11:35:56 pNczDPI9
ファミコン時代にバッファがあったと思うか?
ひたすら上書き

ウインドウが消えたらアクティブになったウインドウの描画

それだけだよ


309:名前は開発中のものです。
06/05/16 11:37:03 pNczDPI9
一応レイヤーという考え方もありだが、いまだとそっちのほうが楽だろ
それぞれウインドウ内のみの描画管理
画面全体の描画でそれらを適切に呼び出す

310:名前は開発中のものです。
06/05/20 04:48:56 i7QcIrxX
>>308-309
遅くなったけどサンクス
なんとなく分かってきた

キャラやアイテムのリスト作るのが面倒臭いな・・・
存在してるキャラ、所持してるアイテムを調べてリストにして
多ければウィンドウをスクロールさせなきゃならぬ
面倒だけどがんばるか・・

311:名前は開発中のものです。
06/05/20 09:04:00 R0av8b56
面倒か?
わからなければ先にUMLでもなんでもいいけど処理の手順を書いたほうがいい


312:名前は開発中のものです。
06/05/21 05:45:05 BQPLtheI
処理を考えるのが一番面倒だ
きちんと順序立ててやってみるよ・・

313:名前は開発中のものです。
06/05/22 04:54:34 rAUj867u
俺はデータモデルの設計が一番面倒だなぁ。
変更や拡張に強く、ネットワーク越しの同期の取りやすいデータモデルをとか考え出すとはまり込む。

314:507
06/05/22 19:16:41 KUql4eEY
Javaを最近勉強しはじました。
とりあえず簡単なゲームを作りたいと思っているのですがどれ位勉強すればいいですか?

315:名前は開発中のものです。
06/05/22 19:27:29 bgWiXtf3
ゲーム作りで勉強すれば
そういう本最近多いし

316:名前は開発中のものです。
06/05/23 14:28:37 qGRGm1GF
if else で100近く分岐しそう・・
激重かな

317:名前は開発中のものです。
06/05/23 15:24:24 5zoiL+RS
>>316
どういう風に分岐させたいんだ?

318:名前は開発中のものです。
06/05/23 15:30:17 nyPWq5Mq
100こくらいのifでおもくなるって10MHz切ってるマシンの人かな


319:名前は開発中のものです。
06/05/23 22:43:16 qGRGm1GF
>>317
たとえばさ、魔法クラスがあって、そのメソッドに魔法No.をわたして
そのメソッド内で渡されたNo.によってswitchで分岐させるとか

話がswitchになっちゃったけどswitchは数しかつかえないんだよね、たしか
それ以外で識別したいならif elseしかないと思って

あと、変数は少ないけどメソッドがたくさんあるクラスのインスタンスを
100個くらいつくるとメモリがやばかったりするかな?

320:名前は開発中のものです。
06/05/23 22:51:29 wlFUtSp+
class Magic
{


321:320はミス
06/05/23 22:57:01 wlFUtSp+
abstract class Magic{
public abstract void perform();
}
みたいにして、個別の魔法はこれを継承するようにするとJavaらしくなるよね
実際にゲームを完成させる気ならこんなことしないだろうけど

メソッドはたくさんあっても問題なし

322:名前は開発中のものです。
06/05/23 23:14:15 qo1KKw1q
デザインパターン立ち読みでもいいからおぼえとくといいぞ

制御とデータをわけるという考え方は
Cとか構造化言語までのものだ

323:名前は開発中のものです。
06/05/23 23:18:59 qo1KKw1q
>>321
いや、ゲームでも普通はそういうプログラムを書く

それと識別させたいのならenumを使え
switchもつかえるし

324:名前は開発中のものです。
06/05/23 23:34:50 qGRGm1GF
レスサンクス
おかげで設計ができてきた
enumすか・・あまり馴染みがないから学ぶよ

ところで>>321の4,5行目が素でわからない
アフォですまぬ
教えてもらっていい?

325:名前は開発中のものです。
06/05/24 00:05:11 qo1KKw1q
ポリモーフィズムとかStateパターンとか
そのへんしらべてみるとわかるよ

326:名前は開発中のものです。
06/05/24 00:29:52 0rz/nhQ6
おk、ゲーム作りながら勉強する
いろいろサンクス

327:名前は開発中のものです。
06/05/27 11:28:27 MsTUcez+
VectorにStringとInteger入れて、取り出すときに
Integerの要素をStringでキャスト、変換したり
Stringの要素をIntegerでキャスト、変換したら
エラー出るかな 面倒くさいんでInteger、Stringで統一してるんだが

勉強すればわかることだけどもしよければレスちょうだい

328:名前は開発中のものです。
06/05/27 11:38:38 EufEKVaf
それぞれIntegerとStringが対応してるんなら
class (名前)
{
public String getString();
public Integer getInteger();
}
みたいなクラスを作る

対応してないんだったら、String用のVectorとInteger用のVectorを別にする

329:名前は開発中のものです。
06/05/27 11:49:40 ryxQUfnb
キャストはかならずクラスの関連性がないと無理
かならず数字を含む文字列ということであれば格納前に返還すればいいだけの話だが
この情報だけではどうしたいのかがわからない

あとゲームということは多少パフォーマンス気にすることも多いのだろうから
Swing部分使わないのならVectorよりはArrayListで

シングルスレッドならパフォーマンスはまずかわらんけどな


330:名前は開発中のものです。
06/05/27 13:09:54 MsTUcez+
即&わざわざレス感謝
ArrayListの方がパフォーマンスいいのか・・・
大分Vector使ってコード組んじゃったから、今度からはそうしよう
RPGだからスレッドはマップのキャラ動かすのとアニメーションくらいしか使わないと思う

Vectorの指定された要素がIntegerかStringかで
変換、キャストしたのちifで分岐させて処理を分けたいと思ったんだけど
やっぱり元々のVectorを別にした方がわかりやすかった 対応してないし

話変わるけど、コマンドの実装が面倒だ・・
移動コマンド、アイテムコマンド、魔法コマンド、使用対象コマンド・・
それぞれにクラス作ってそのクラスのキーイベント処理メソッドを
現在のコマンドモードによって呼び分けなきゃならん
いい方法ないかな

331:名前は開発中のものです。
06/05/27 13:39:56 8ehQx4Ia
よくわからんがキーイベントにゴリゴリ書いてるのか?
それならフレームワークの設計自体からやりなおしたほうがいいぞ

332:名前は開発中のものです。
06/05/27 13:57:59 MsTUcez+
ゴリゴリ書いてる・・
とりあえず組んでみようとは思ったがマジで勉強が足りんらしい
チラ裏スマソでした

333:名前は開発中のものです。
06/05/27 14:12:56 8ehQx4Ia
キーイベントではキーの入力フラグを上げ下げするだけ
そしてゲームのループ内でそのフラグを読み取る

これでおけ

334:名前は開発中のものです。
06/05/27 14:23:34 MsTUcez+
ゲームループ内だとkeyTypedメソッドが呼ばれてから
時間差があるかもと思ってkeyTypedメソッドから
直接各コマンドクラスのメソッドを現在のコマンドモードで分岐させて呼んでた

ドラクエみたいなのを再現しようと思ってるんだがゲーム作りって難しいな
俺のゲーム作りが終わるまでJavaが生き残ってるといいんだけど・・

ここの住人はレベル高いね スレ汚しスマソでした

335:名前は開発中のものです。
06/05/27 14:52:54 8ehQx4Ia
ループ内は60fpsとか固定でチェックするから問題ないよ

というか、普通のゲームはイベントで処理するところはほとんどないから
それを隠すためのフレームワークというかそんなもの

まず言語的にJavaがどうのこうのというよりゲームプログラミングに対しての
技術がちょっと足りないかなぁという感じがする

10~20年前だったらゲーム作りとかいろんな本で毎月雑誌に載ってたんだけどな

いまじゃ残ってるプログラム雑誌がなくなってるし、ユーザーが求めるものが
高すぎてギャップで苦しんでる人が多いのはつらい時代だな

とにかくメインループで取得して状態に応じてswitchで戦闘時なのか移動時なのか
キャンプコマンド中なのか分離するようにかけばおけ

336:名前は開発中のものです。
06/05/27 17:41:03 MsTUcez+
ゲームの作り方か・・
一から設計見直すよ
マジで参考になった、ありがとう

337:名前は開発中のものです。
06/05/28 16:35:03 su6FTHmr
C++だとエフェクト(爆発とか)は加算合成を使うって書いてあるんですがJavaでも同じような方法で実装する手段ありますか?

338:名前は開発中のものです。
06/05/28 17:06:46 oT4lybEG
Java2Dには通常合成はあるが加算合成はない
自前で実装するかJOGLとかで3Dで描画するしかない

>>11とかのライブラリに単純な合成がある模様

339:名前は開発中のものです。
06/05/28 22:35:07 L8EQs44V
>316
ifをバイナリツリーみたいな構造にすれば
log2(100)の回数の比較だけで済むんじゃないか?

340:名前は開発中のものです。
06/05/30 19:56:51 AkbGbw5f
mpeg2のような差分圧縮形式のシーケンシャルアニメーションって負荷高いですか?
レイヤー可能でそれを実現できたらコンパクトになるなと思ったのですが

341:名前は開発中のものです。
06/05/30 21:02:41 bnvMLnBd
Javaの質問と関係ないな
効率がいい場合と効率が悪い場合があるっしょ

342:名前は開発中のものです。
06/05/30 22:16:22 AC7eOzy5
>>339
ポリモフィズムで解決という結論がとっくに出ていると思うのだが


343:名前は開発中のものです。
06/05/31 19:31:13 kqayNosp
みんなが配布物に同梱してるSPIってOGG Vorbisくらい?
これが便利ってのがあったら教えてください。

344:名前は開発中のものです。
06/05/31 22:06:19 H+lYwXra
だろうね
OggVorbisさえ再生できればだいたいこまらん


345:名前は開発中のものです。
06/06/01 20:01:54 oy8AdH4m
Javaのゲームライブラリ作成中。Flashの1/2くらいの表現力、生産性が目標。
まぁ皆も半月くらいでライブラリは作って、オーサリング環境作るのに挫折するんだろうけどね。

346:名前は開発中のものです。
06/06/01 23:16:05 mTuQuIix
普通に考えてFlashより表現力は上だし
生産性もFlashはスクリプトがおわっとるからまけないだろ

347:名前は開発中のものです。
06/06/01 23:24:39 IyLxQihX
実行環境の普及率と人々のイメージ

348:名前は開発中のものです。
06/06/02 02:24:25 IlXUhKKR
FLASHと比べるんだからブラウザ上で動かすんだよな
・MIDIや圧縮音声を再生する
・BGMと映像を確実に同期させる
・表示サイズを変更するとそこそこのクオリティで拡縮表示する
あたりが大変そうだ

349:名前は開発中のものです。
06/06/02 07:57:55 OCsBTCKI
・JavaSoundでmidiと圧縮音声は問題なく可能。すぐ上でOggの話が出てる。
・BGMとの同期はそうつくればいいだけ。
・拡大縮小時にアンチエイリアスをかけるかどうかの設定が可能。アルゴリズムも設定可能。

別に大変じゃないし


350:名前は開発中のものです。
06/06/02 21:25:12 cNNwG7w6
Flashは、例えばMovieClipの完成度の高さが大いに参考になる。
あれはComposite、Prototype、Flywightなどの
パターンの組み合わせがかなり洗練されててしかも使いやすい。

なんかFlash8.5からはさらに高度なAPIを持つらしいし
実装の研究をする教材としてはかなり好奇心がくすぐられる。

351:名前は開発中のものです。
06/06/05 07:16:50 voSd2aR7
JavaでノベルゲームとかRPGって作れますか?

352:名前は開発中のものです。
06/06/05 10:04:02 EcpAwWeS
macromediaはずっとデザイナー偏向で作ってきたけど
adobeとの合併で技術者向けのAPIも良くなってくと思う

でもFlashの対抗馬である事に関して、Sunは殆ど興味ないみたいだな
5年前のJavaに今の速度があればいい勝負になってたかもしれんのに

>>351
うん

353:名前は開発中のものです。
06/06/06 01:13:29 wO6xzgzA
>>351
余裕

>>352
Flashの代替はのぞんでないだろ
今はアプリと鯖メインでは?

ただJAX-WSとかGroupLayout標準装備があるんで
企業向けではアプレットやWEBStartが今でも多少使われているのが
今後さらに加速するかも


354:名前は開発中のものです。
06/06/06 23:16:48 /CfzneHU
個人的にはアプレットが一番好きだ
Webで公開して気軽に遊んでもらえるし

355:名前は開発中のものです。
06/06/06 23:20:22 wO6xzgzA
1.1時代のアプレットだとまともにうごかんしな
1.2以上だと別途セットアップが必要
1.2時代のJREなら今のブロードバンド時代なら問題は少ないのだが
5.0のサイズはすげぇ
1.4がかわいく見えるくらい


356:名前は開発中のものです。
06/06/07 21:23:04 IghNSOPk
今はJavaくらいふつうに入れてない?
メーカー製パソコンとかって入ってないの?

357:名前は開発中のものです。
06/06/07 21:41:53 4a3JF+Q3
まあJREも楽勝でインスコできるからな

358:名前は開発中のものです。
06/06/07 23:03:47 k1IxK3O2
>>356
バージョンは買ったときのマシンでばらばらだしそれを期待するのはちときつい
ゲームなら新しいバージョンになればどんどんよくなってるのが敏感にわかる

359:名前は開発中のものです。
06/06/14 15:09:12 LwkvhD3f
>>354
JavaWebStartも良くない?
あれ対応のゲーム出てくると使う側としては楽チンなんだが。見ないね。

360:名前は開発中のものです。
06/06/14 17:48:02 Kbfca28q
Javaで簡単なゲーム作るにはどれ位勉強すればいいですか?

361:名前は開発中のものです。
06/06/14 18:00:49 gnk1ZbZr
「簡単なゲーム」の定義と脳味噌の質によります

362:名前は開発中のものです。
06/06/14 18:55:46 oiUcwSTz
>>360
3じかん位かな?

363:名前は開発中のものです。
06/06/14 20:43:32 E7n+afyq
アプレットにしてもWebStartアプリケーションにしてもセキュリティの問題がつくからね

364:名前は開発中のものです。
06/06/14 21:01:18 KYL0jDeY
>>363に横から追加
Java Web Startってサーバー側にmime-typeの追加が必要だから、
レンタル鯖じゃ動かない可能性あり。

MIME-TYPE:application/x-java-jnlp-file

365:名前は開発中のものです。
06/06/15 13:30:54 tNRE7/uO
>>364
そこは連鎖場屋の中の人にMIME-TYPEの使いを頼めばなんとかなる予感。

366:名前は開発中のものです。
06/06/16 00:52:38 yygRlJ/S
apacheなら個人でもなんとかなるが、運用次第だな


367:名前は開発中のものです。
06/06/17 12:40:34 msfIS4LL
レンタルサーバーでJMSとか使えないかな
ApacheのActiveMQとかで低負荷のCGI代わりに使いたい

368:名前は開発中のものです。
06/06/17 13:13:35 Z2AWkk9k
1台丸ごと借りるならいけるけど
月1,2万かかるよ

369:名前は開発中のものです。
06/06/17 13:31:48 msfIS4LL
それだと完全にASP側に回ってるのと変わらないね
diceやtalkなどシンプルな機能をメッセージングできれば
使い方を決めるのは利用者側みたいなのイメージしてたんだが

370:名前は開発中のものです。
06/06/17 14:46:45 Z2AWkk9k
DBにしてもレンタル鯖のは使い物にならないのと同じ

371:名前は開発中のものです。
06/06/17 17:29:15 cZqcM90l
昨今のDIブームに乗ってアスペクト志向を取り入れようとして挫折気味
設計だけが楽しいみたいな状態に陥ってしまったw

372:名前は開発中のものです。
06/06/17 18:48:38 Z2AWkk9k
ゲーム開発でアスペクトが生きるかどうかはデバッグ時以外では微妙だが
DIはたぶん便利になる
俺も次のゲーム開発ではDIで開発するつもり

373:名前は開発中のものです。
06/06/17 23:46:12 2TpnxAFo
ゲーム開発でDIって例えばどんなの?

374:名前は開発中のものです。
06/06/17 23:58:20 kRFswYuv
例えば以下の内容を記述した設定ファイルを用意する
<resource id="hoge" path="rsrc/hoge.jpg" gen="org.hoge.SPIImageLoader"/>

んで

ImageLoader il = new ImageLoader(conf_path);
BufferedImage img = (BufferedImage)il.getImage(id);

これが基本形。こっからどうするかは腕次第。

375:名前は開発中のものです。
06/06/19 21:46:48 Zb7E8WNx
サウンドにフェード(イン/アウト)、パン(レフト/ライト)の加工をしたいのですが
ぐぐって見た限りではそれらしきところが見当たりませんでした。
これらは割りと基本的なものだと思っていたのですが、Javaにはない機能なのでしょうか?

376:名前は開発中のものです。
06/06/20 00:23:13 z0sECMlC
あります

377:名前は開発中のものです。
06/06/24 21:54:42 pcuzjDvS
フェードはFloatControlで出来ると思うけど、パンってどうすればできるの?
2スピーカーなら2スピーカー分のFloatControlが必要になるよね?

378:名前は開発中のものです。
06/06/24 22:08:59 pcuzjDvS
あ、そういうことか。自己解決orz

379:名前は開発中のものです。
06/06/25 14:38:34 fAOFmqJM
MIDIのSequencerでループさせようとしても
ループの開始時のgetTickPosition()が-2000とかなって余計な雑音が入る。
setLoopStartPoint(0)と設定しても効果なし。
現在はisRunning()でsleepはさむ方法でループさせているが気持ち悪い。

何かよい解決方法があれば教えてください。

380:名前は開発中のものです。
06/06/25 16:59:01 B6He1TJy
MIDIに送り出す部分を自分で作ってるの?
そうではなくMIDIファイルから単に流すだけならループ関係はどうしようもないよ

音源ドライバとか昔の8bit16bit時代ならいくらでも情報は手に入るから
そのへんさがすしかないかな

381:名前は開発中のものです。
06/06/25 20:25:58 US/w5wC7
Java2Dと違ってJavaSoundはちょい敷居が高めだね
ogg対応かつ簡単なエフェクトが掛けられるAudioClipが登場してほすぃ
標準で。

382:名前は開発中のものです。
06/06/25 20:36:42 AQjDLDTE
AudioClipは使い物にならないから今の実装だとoggが再生できてもいらね

383:名前は開発中のものです。
06/06/25 20:42:16 US/w5wC7
だからand条件つけてるやんw

384:名前は開発中のものです。
06/06/25 21:37:23 AQjDLDTE
エフェクトつけれたところでいらんだろ
あんなバッファサイズ最大制限が小さくオンメモリ必須なClipは

実装上の問題で音楽にも効果音にも使えないし

あとJava2DよりJavaSoundのほうが敷居は低いと思うよ
5.0以上ならだいぶ使いやすくなったJavaSoundにたいしていまだにアクセラレーションの聞く範囲がせまく
アルファブレンドもほとんど使えないJava2Dよりはね

385:名前は開発中のものです。
06/06/25 21:43:50 US/w5wC7
それは「敷居」とは関係ないのでは?

386:名前は開発中のものです。
06/06/25 22:12:46 AQjDLDTE
いやいや十分敷居は高いよ

ゲーム用と出ないのならさほど意識することはないのだろうが、
ソフトウェア転送になると目も当てられない

ム板ならともかくこの板ゲーム製作板だしね

387:名前は開発中のものです。
06/06/26 20:32:48 MgtqB2cg
アルファブレンドが敷居が高いとか馬鹿なこと言ってるし
そもそも敷居の意味がわかってないようだな

388:名前は開発中のものです。
06/06/26 23:48:06 6e6dhTU9
アルファブレンドじゃなくてアクセラレーションがきかない描画ってのが敷居が高い。
JavaSoundは非常にシンプル。DirectSoundやってたならすぐにわかるだろうさ。

ようは2Dの知識がない人がJava2Dを扱うのが大変と感じるか
Soundの知識がない人がJavaSoundを扱うのが大変と感じるかの違い。

まったく知識がない場合どちらも難しいだろうが、Java2Dのほうが範囲が広すぎて難しいと思われ。
JavaSoundのほうが難しいと感じるのならあなたは2Dの知識はそれなりにあって
Soundのほうが苦手ということだろう。

389:名前は開発中のものです。
06/06/27 00:34:52 VajeLVWc
所詮はビットマップなのに何が難しいんだか

390:名前は開発中のものです。
06/06/27 00:54:30 RNb1/qTw
java 画像 の検索結果のうち 日本語のページ 約 3,610,000 件中 1 - 10 件目 (0.04 秒
java 音楽 の検索結果のうち 日本語のページ 約 2,310,000 件中 1 - 10 件目 (0.03 秒)

java イメージ の検索結果のうち 日本語のページ 約 1,780,000 件中 1 - 10 件目 (0.09 秒)
java サウンド の検索結果のうち 日本語のページ 約 710,000 件中 1 - 10 件目 (0.11 秒)

"java.awt.image" の検索結果のうち 日本語のページ 約 38,500 件中 1 - 10 件目 (0.02 秒)
"javax.sound" の検索結果のうち 日本語のページ 約 11,400 件中 1 - 10 件目 (0.02 秒)

これで十分だろ、以降馬鹿レス禁止。

391:名前は開発中のものです。
06/06/27 10:22:35 GJGczP/s
検索結果が多いということはわからないからネタにしているのかその逆なのか判断は難しいな
あとJava2Dはピクセル単位での処理だけじゃないから割と面倒だよ

392:名前は開発中のものです。
06/07/09 17:44:21 O0aQTArO
今日書店寄ってきたが、3冊あったJavaゲーム本で
JavaSoundに触れていた本は0冊だったw
Javaでゲームなんて作ってんじゃねーよって感じなのだろうか

393:名前は開発中のものです。
06/07/10 14:41:59 7etPnpyv
まず、MIDIが使えない。
JavaのMIDIデバイスは古いバージョンのままで、多くのファイルが
正常に演奏できない。音が変になる。
OSのMIDIデバイスを取得して、その出力ポートに切り替えるメソッドは
どうやら中身が実装されておらず、事実上切り替えられない。

Waveは正常に演奏できるけど、そのショートカットであるAudioClipは、
短い曲だと何故かloopでしか演奏できない。さらに幾つインスタンスを作っても、
同じファイルデータだと勝手に一つのWaveハンドルに一本化してしまう様で、
同じWaveを複数同時に演奏できない。

陳腐な批評になるが、SUNのAPIは設計は最高なんだけど実装が・・・・

394:名前は開発中のものです。
06/07/10 21:24:37 ykWXL1Xc
>>392
ゲーム本じゃないけど
これの最後の章あたり、ちょこっとSound APIに触れてた
ま、これだけのために買うのはもったいないが・・・
URLリンク(www.oreilly.co.jp)

あと俺の知ってるのは
JavaWorld 2001年10月号、2004年5月号
Cmagagine 2002年8月号と9月号
にちょろっと載ってた
javax.sound.sampledパッケージ使って
複数の音声を同時に再生とかやってた


395:名前は開発中のものです。
06/07/12 00:08:04 ndOxEXf9
>393
Java 5.0あたりでは多くのMIDI問題は修正されているんじゃないの?

396:名前は開発中のものです。
06/07/12 00:31:43 6aHYcbBn
MIDIで音が変になるか?

AudioClipはまともな実装にしてほしいのは同意
結局自分でソースライン書くしかないからね
せめてバッファ長とか指定できねーのかな

それでもDirectSoundくらべてかなり楽なのはいいけどね


JavaSoundは本読むより実際にいじってみるほうが早いよ
難しくはないし、5.0以降でかなり楽になってる
ただ、JavaSoundDemoが5.0で動かないとかがあふぉすぎ

397:名前は開発中のものです。
06/07/21 19:29:07 rgZqd6WV
>MIDIで音が変
サウンドバンクのせいじゃね?
URLリンク(www.new-arrow.com)


398:名前は開発中のものです。
06/08/05 23:05:31 Uq7IRr/q
JOGLでGLJPanelは速度的に使えない?
jogl-demosのJGaersで35fps位しか出ないんだけど…うちのオンボードのビデオが弱すぎ?

Javaのバージョンは、1.6.0-beta2と1.5.0_07
JOGLのバージョンは、JSR-231 beta 05 - June 8

OS: WindowsXP Professional SP2
INIT GL IS: com.sun.opengl.impl.GLImpl
GL_VENDOR: Intel
GL_RENDERER: Intel 915G
GL_VERSION: 1.4.0 - Build 4.14.10.4363

399:名前は開発中のものです。
06/08/06 01:44:54 kmAOB+5B
jwsのdemoみてみたけどfps表示されないね
昔見たような気がしたけど

400:名前は開発中のものです。
06/08/06 02:36:29 A5aINFFL
>>399
jwsのdemoにあるGaresはGLCanvas(AWT)使用の物です。

JRefractを起動してGaersを呼び出すか、
jogl-demos.jarを落としてJGaersを実行するかすれば、
fps表示有りのGaers(GLJPanel swing使用)が起動します。

401:名前は開発中のものです。
06/08/06 16:06:10 kmAOB+5B
さんきゅ
JOGLなんて久しく触れてなかったから忘れてたよ

結果からいうとTransparentのチェックいれるとCPUパワー使い切って描画サイズ大きくすると
35fps前後まで下がるけど、これはずすとサイズに関係なく40fpsでCPU使用率は低い

自動リフレッシュはMAXが40fpsなのかな
ウインドウを動かすとfpsが上がって滑らかになるところを考えるとたぶん余力はある・・・のか
描画をすべておぺnGLでやってる場合はアクセラレーションがきいていると考えてよさそうだ

ソース読んでないけど

402:名前は開発中のものです。
06/08/06 17:49:22 A5aINFFL
>>401
うちの環境(>>398)だと初期の描画サイズで35fps…
Transparentのチェックに関係なく、大きくしたらそれだけfpsが下がる。
やっぱオンボードビデオが貧弱かw

GLCanvasの方使っときます。

403:名前は開発中のものです。
06/08/06 19:47:19 kmAOB+5B
FPS指定のアニメータつかった?
確か今は新機能としてあったはず
あとCPU使用率もみたほうがいい

OpenGLもJ2SE5.0のOpenGLアクセラレーションのようにまともに実装されてないのかもね
あっちは描画もおかしくなるから最悪だけど、nVidiaとATI以外はOpenGLが動く環境であっても
はねられるというすばらしい実装
結局Win32環境でDirectXアクセラレーション使うしかまともな回答がない

オンボードでも845GあたりからOpenGLはまともに動くようになってきたのにねぇ


404:名前は開発中のものです。
06/08/06 20:21:45 A5aINFFL
>>403
CPU使用率はPentium4 3GHz(HTオン)で論理CPU一つがほぼ100%に…
GLCanvas使うと殆どCPU使わない

405:名前は開発中のものです。
06/08/07 11:33:48 LXzNSWyz
今2Dアクション作ってるんだが
やっぱりグラフィック描画はJava2D使ったほうがいいのかな?
今のところpaintCompornent使って描いてて
そこまで不満はないんだが

406:名前は開発中のものです。
06/08/08 00:49:52 NGJuOaT6
paintComponentはJava2D使って描画してるわけだが・・・

407:名前は開発中のものです。
06/08/08 19:44:58 OxD/Wpxu
ああ、スマン
Graphics2Dを使わないで描画してるって意味

408:名前は開発中のものです。
06/08/09 01:40:46 jTOF7SJj
Graphicsだけつかっていても実態はGraphics2Dだぞ

BufferStrategyではなくて?

409:名前は開発中のものです。
06/10/05 02:14:46 6n2qO2al
java初心者ですが、質問に答えてもらえませんか?

for文を使うときに何か制限はありませんか?
キャンバスクラスでfor を使うとエラーが出てきてしまって困っています。

410:名前は開発中のものです。
06/10/05 02:23:59 nS6lvpAp
そんなのありえん
まずエラーは何なのか、どこでおきてるのか

あとCanvasはいまはほとんどつかわん


411:名前は開発中のものです。
06/10/05 02:26:18 UlwDPe/+
柄フレーム付きでBufferStrategyを使うときくらいか。

412:名前は開発中のものです。
06/10/05 14:34:39 6n2qO2al
URLリンク(gamdev.org)
15パズルを作ろうとしているんですが・・・
型の開始が不正と言われるんです・・・。

413:名前は開発中のものです。
06/10/05 17:15:27 JxBA5zKz
>>412
Canvasクラスじゃなくてもエラーになって当たり前
メソッドの中に書け

414:名前は開発中のものです。
06/10/05 23:15:13 6n2qO2al
今度はfor文に使う変数の型が不正と出てしまいました。
int型ではだめなのでしょうか?

415:名前は開発中のものです。
06/10/05 23:37:11 3erpkvWT
その部分のソースがないとなんとも

416:名前は開発中のものです。
06/10/05 23:38:34 UlwDPe/+
import見て、「ああ、MEね。独特な癖でもあるのかなぁ」とか思ってたら
クラスの内側を見た瞬間全てを理解した。

まずJavaの入門サイトを回ろう。質問はその後。OK?

417:名前は開発中のものです。
06/10/05 23:50:20 6n2qO2al
分かりました。サイトめぐりしてきます。

418:名前は開発中のものです。
06/10/06 00:37:07 n8QeDfZX
Eclipseでカーリングゲーム作ってるんですがパワーメーターなどを組み込むのに手間取っています。
なにかオススメの参考書を教えてください。よろしくお願いします

419:名前は開発中のものです。
06/10/06 03:47:35 RxJHFhg5
まずそれはEclipseであるかどうかが関係するアプリなのかとききたい?


420:名前は開発中のものです。
06/10/06 08:35:03 79ZjkJYk
swtつかってんの?

421:名前は開発中のものです。
06/10/06 17:15:07 NF0Fi7f7
失礼しました。書き方が悪かったです
これから一から作りたいのでそれに見合う参考書を教えていただけませんか?
できればゴルフかビリヤードのサンプルが載っている参考書がいいのですが・・・
よろしくお願いします

422:名前は開発中のものです。
06/10/06 17:22:32 VIIycFpg
システムをどうしたいの?
システムがわかってるならそのまま作るだけだと思うが


423:421
06/10/06 22:59:44 Mdom56kE
システムというとゲームの設定とかのことでしょうか?
ゲームを作るのは初めてなのでこんな感じにしたいっていうのはあるのですが
技術がないので、自分のイメージに感じが似てるゴルフかビリヤードのサンプル見ながら、
少しづつ作ろうかなと思って質問しました。

424:名前は開発中のものです。
06/10/06 23:08:13 DivPy0FS
>>423
URLリンク(javagame.main.jp)
このへんで一通り勉強すれば
ゲームなんて基本はどれも大体一緒だよ
はじめから目当てのものを作ろうと思わない方がいい

425:名前は開発中のものです。
06/10/07 01:11:11 BYxdR2eO
ゲーム自体がはじめてだったのか
まずはループ処理や入力まわり、描画、サウンドなどを一通り勉強しよう

Javaに限った話じゃないがね、これらの機能を使った最低限の動く単純なゲームを作るといい

426:名前は開発中のものです。
06/10/07 01:17:47 BYxdR2eO
ゲーム開発で何度か相談されたことがあるが、
ゲーム開発初心者なのに最初からでかいゲーム作ろうとするやつ多いよな

規模が大きくなってもメモリ節約しなくてもインタプリタで余裕でさばけるマシンが手に入るようになったのはいいが
サンプルプログラムとかも下手に大きくなりがちで役に立たないという感じ

昔は雑誌でコードがのるくらいだからあまり大きいのはのりにくいし、把握がしやすかった
1画面プログラムとかはテク満載で逆に覚えるのには向かなかったがね

ベーマガとかM・ファンとかOh!シリーズとかほんの10年前は毎月雑誌で
数十本のゲームのコードが入手できたってのはよい時代だったのかな

いまじゃハードとか違法関係ばかりで真っ当なソフト雑誌が残ってねぇ
危険すぎ

427:名前は開発中のものです。
06/10/07 01:50:40 xRS6QFs/
プログラミングの話をいまさら紙の上でやっても利点は皆無だから
白黒だし検索できないしコピペできないリンクもない


428:名前は開発中のものです。
06/10/07 01:54:11 BYxdR2eO
だがまったく資料がない現状よりましでは?
ネットでまとまった資料やたくさんのコードはでてこねーし

ようはゲーム開発の基礎ってすでに20年位前からある基礎なわけで
いまさらネットでまとめようと思う人はまずいない

429:名前は開発中のものです。
06/10/08 00:52:26 S1BiNozn
RMIはEJBだけで埋もれさせてはいけない低級APIな気がしてきた。

430:名前は開発中のものです。
06/10/08 01:36:32 +r9TQj6u
RMIはJava2SE5.0からは大幅に改善されたので普通に価値があると思うぞ

431:名前は開発中のものです。
06/10/08 03:06:24 CumxyfUX
RMIよくしらないんだが、ゲームでつかうとしたらたとえばどんな例があるの?
リアルタイムなものでもつかえそう?
MMORPGみたいのものはどうなんかな?


432:名前は開発中のものです。
06/10/08 12:24:12 +r9TQj6u
おもいっきりはしょるとソケット通信の高級APIみたいなもんだから場合によるとしかいえん
UDP使いまくらないといけない用途には使えないね
人数や設計しだいではMMORPGでも使えるかと

RMIは引数をシリアライズしてリモートのメソッドを起動、戻り値をシリアライズすることができる
もちろんコードはクライアントのコードとまったく同じでいける点が違う
その特定のメソッドが実行される場所がサーバーってだけ

オンラインゲームってローカルで計算される部分は少なく、入力を鯖に送って
結果を表示するだけのシステムだから設計だけしっかりしていればそんなに難しくはないかと

433:名前は開発中のものです。
06/10/08 17:25:06 S1BiNozn
カードゲームとかターン制のゲームには向いてると思うんだ。
ただホストをプレイヤーのどちらかが行うとなると性善説ゲームになるけどね。

434:名前は開発中のものです。
06/10/08 23:44:58 vqXTr2Px
Google Web Toolkit (GWT)を使ってJavaで、
Ajaxなブラウザゲームを作成している人はおらんかね。。。

435:名前は開発中のものです。
06/10/09 02:01:24 1PRT+gpJ
RMIはJavaの目玉である事実に間違いはないが、シビアなリアルタイムが
必要となるオンラインゲームに使う様なものじゃない。
重すぎる。


436:名前は開発中のものです。
06/10/09 03:22:04 +490gA4h
オンラインゲームだからすべてシビアなタイミングとは限らん

437:名前は開発中のものです。
06/10/09 18:17:01 wlsw1WDR
東風荘とかみてりゃ、まあそりゃそうだ


438:名前は開発中のものです。
06/10/10 11:31:47 aHfYBwCV
実際RMI使ったオンラインゲームとかあるの?


439:名前は開発中のものです。
06/10/10 13:08:42 COB1kkz5
その前にJavaがフロントエンドのゲームなんてあるの?といったほうが早いのでは

RMIは自前でプロトコル作るよりは重いけどWEBサービスに比べたらめちゃくちゃ早い
開発の容易さはRMIのほうが上


440:名前は開発中のものです。
06/10/10 19:14:44 Z6Vg5wVI
ぶっちゃけCGIより早ければ十分でしょ。

441:名前は開発中のものです。
06/10/10 19:44:19 Z6Vg5wVI
疑問なんだが第三者サーバを通さずに
ランダム性のあるゲームを公正に運用することって可能?

442:名前は開発中のものです。
06/10/10 20:52:02 Fmr3/ROI
両方のクラで同処理を行って結果に差異がないか互いにチェックするとか?

443:名前は開発中のものです。
06/10/10 21:10:32 Z6Vg5wVI
自分で言っといてなんだけど、公開鍵の応用でいいんだよね。

1.互いに乱数のハッシュを送りあう
2.乱数の実体とあるならば追加のコマンドを送りあう
3.実体とハッシュを照合する
4.互いの実体を合算したものを元に処理を進める

多少重そうだけどこれなら実際に通信があるのは1と2の送受信でよい。
でもまあランキング戦とかには使えないよなぁ。

444:初歩的なことでスマン
06/10/12 20:16:43 iUCUCn7d
j2sdkとJava3Dを入れてみたんだけど
3d絡みのDemoプログラムが無いっぽい。
ググってみたけど付いてきてるはずなんだけどなー

j2sdk下にはwireframeのサンプルプログラムしかないし
それとも他に入れるべきソフトがあるのかしら
少なくともjava3d-1_4_0_01-windows-i586.exeには入ってないですか?

445:名前は開発中のものです。
06/10/12 23:35:22 LKwsUKW6
joglやりましょうよ。
java3dは抽象度たかすぎ。

446:名前は開発中のものです。
06/10/13 02:39:03 zPaEQQ16
マックでも動くなら

447:名前は開発中のものです。
06/10/13 03:55:03 S+VaDlj1
ゲーム用途ならJava3Dやめとけ
あとでなくぞ
JOGLにしとけ



448:444
06/10/13 16:45:36 vmtvD3zz
>445>446>447
そうします。ありが㌧

449:440
06/10/13 20:32:45 /GHVYosk
OSXのJava5.0って完成度高い?

450:名前は開発中のものです。
06/10/13 20:33:34 /GHVYosk
おっと、何故か番コテが残ってた。てか復活した?w

451:名前は開発中のものです。
06/10/13 22:17:57 GU1W4jxT
さわってないけどおかしいという話は特に聞いてないな


452:名前は開発中のものです。
06/10/14 00:08:50 NtWi6K2U
これからはdirectxじゃなくてjoglやろうぜ
URLリンク(61.215.215.33)

453:名前は開発中のものです。
06/10/14 02:31:13 MGTxKfzz
Sun本気でゲームやるならジョイパッドいい加減対応してくれ


454:名前は開発中のものです。
06/10/14 02:52:06 ZM4Zxtns
>>453
JOGL, JOAL, JInput と一通り用意されていたりする。

が、JInputの使い勝手と品質は、アレゲです(約1年前試用)。

455:名前は開発中のものです。
06/10/14 03:02:31 MGTxKfzz
JOGLにしてもそれらのライブラリぜんぶ標準じゃないし
基本的なヒューマンインターフェースデバイスは標準にしないと意味ないのに

456:名前は開発中のものです。
06/10/14 06:59:51 nYtGilm6
OpenGLに関してはJava6で標準だろ
入力デバイスがアレなのは、Win以外がアレだからでしょ

457:名前は開発中のものです。
06/10/14 07:22:45 1AUmoz7r
>>449
 1.4.2と比べて何が変わったのやらという感じ。

458:名前は開発中のものです。
06/10/14 07:48:07 nYtGilm6
>>452
RuneScapeとかいうのは4.5億も売り上げがあるのか
そういやTibiaってのもグラはしょぼいが潤ってたらしいしな

459:名前は開発中のものです。
06/10/14 10:21:48 MGTxKfzz
>>456
VMが一部環境用にアクセラレーションとして使ってるだけで標準実装とはちがうはずだが


460:名前は開発中のものです。
06/10/14 11:53:22 r+tdu3ZM
ところで
JInputを使おうとするとArrayIndexOutOfBoundsExceptionが出るのは自分だけだろうか…

461:名前は開発中のものです。
06/10/14 15:16:14 MGTxKfzz
JInputの日本語資料ゼロか・・・こりゃ普及せんな

462:名前は開発中のものです。
06/10/17 23:44:15 46k9HZL6
Input Method Frameworkの使い方がドキュメント読んでもいまいち良く分からないw
BufferStrategyと日本語入力を組み合わせるならこれしかないと思うんだが。。。

Swingベースに切り替えようかな、Java6からJOGLがPanel化されるんでしょ。

463:名前は開発中のものです。
06/10/18 13:58:55 YpbpZhIP
BufferStrategytと日本語入力の問題はDirectXとかでも同じだからな
Panelのは速度が遅いはずだが改善されたんか


464:名前は開発中のものです。
06/10/19 00:32:10 nGTITlbS
>>462
自前描画している日本語入力対応エディタのソースを見てみると良いかもしれない。

465:名前は開発中のものです。
06/10/27 07:07:03 Yr57x8PW
CopyOnWriteArraySetなどの並行APIを試してみたけど
結局STGとかだとLinkedListで十分なんだと分かっただけだった。

466:名前は開発中のものです。
06/10/27 07:15:14 xDAg32vR
マルチスレッドでつくってんの?

467:名前は開発中のものです。
06/10/27 07:28:53 Yr57x8PW
マルチコアへの自動的な最適化とか面白そうだなと思ってね。
でも並行APIはiteratorによるremoveにたいして適正の在るのがなくて辞め。

468:名前は開発中のものです。
06/10/27 08:40:24 xDAg32vR
こんな会社があったんですね。。。
URLリンク(www.cyberstep.com)

469:名前は開発中のものです。
06/10/27 08:51:15 phd+j6pm
>>488
マルチプラットホーム化が容易とうたってる割にGetAmpedRもC21もWindowsのみ対応なんだな‥‥

470:名前は開発中のものです。
06/10/27 12:18:12 v3In4esC
2Dゲームで個人レベルで作れるものでマルチコアが生きる分野ってあんまりないかもね
超連射みたいにソフトレンダなら明らかに効果があるがそれはシステム構築を楽しむためくらいしか・・・

471:名前は開発中のものです。
06/10/27 23:11:57 Yr57x8PW
スタンドアロンなゲームは「余ったリソースは捨てるリソース」なんだなと思ったよw

472:名前は開発中のものです。
06/10/30 15:12:29 VjSo8VCQ
JOGLって凄いんだな

473:名前は開発中のものです。
06/10/30 15:57:55 Sn/Y/O/E
ん?

474:名前は開発中のものです。
06/10/30 18:47:16 Gg9zo7Zm
だたのOpenGLのラッパ
びっくりするくらいオブジェクト指向もくそもねぇ

それだけに触ったことある人ならそのまま使える

475:名前は開発中のものです。
06/10/30 21:46:59 AwvN98hH
Graphics2DオブジェクトそのものがGCの原因になるから
フルGCの発生回数を特定シーンごとに0に押さえるみたいな方法って不可能?

476:名前は開発中のものです。
06/10/30 23:24:45 Gg9zo7Zm
Graphics2Dのものによるかな
ゲーム用途なら基本はGraphicsだけで収まる範囲にすること

アクセラレーションがきくタイプは負荷はたいしたことない

あとフルGCやりたくないなら使用メモリを把握した上でコンカレントGCに変更することや
シーンがはっきりと分けれていたりするなら切り替え時にFullGC入れてみるとか

477:名前は開発中のものです。
06/11/08 22:10:52 nrOch+Qr
URLリンク(www.youtube.com)
これJavaでできてんの!?すごい

478:名前は開発中のものです。
06/11/08 22:17:38 /VhjzjqX
ムービーからだとフレームレートとかようわからんし、
あちらの人は固定フレームレートにこだわらないからねぇ

まずはパッドを標準ライブラリで使えるようにしないとね
表示もだ大事だけど入力がないとどうしようもない

479:名前は開発中のものです。
06/11/09 01:22:54 C3JWOVJ7
specforce
chrome作ったところが2005年ごろ作ったみたい。
ページ開いたらBGMが流れるので注意。
URLリンク(www.specforcethegame.com)

かなり品質の高いFPSゲームだと思う。


480:名前は開発中のものです。
06/11/09 02:09:01 yu7HeJLH
これって、Javaサーバーに使えますかねぇ
URLリンク(www.hikakuserver.com)

普通のレン鯖でメモリ8GBも載ってるのがあるなんて
さっきまで知らなかった・・・(´・ω・`)

人柱キボン


481:名前は開発中のものです。
06/11/11 11:19:53 C9CXGr4F
URLリンク(www.puppygames.net)<)
URLリンク(www.agency9.com)<)
URLリンク(www.chromethegame.com)<)
URLリンク(home.halden.net)
GroundFX
URLリンク(www.javagaming.org)
URLリンク(www.oddlabs.com)<)
URLリンク(www.jpct.net)
URLリンク(www.jmonkeyengine.com)<)
ホッケーのゲーム
URLリンク(www.wurmonline.com)<)
URLリンク(www.crystalsquid.com)<)
URLリンク(www.puzzlepirates.com)

482:名前は開発中のものです。
06/11/11 11:45:18 C9CXGr4F
>>481>>477に出てくるゲームのURLね
このうち、開発に役立ちそうなのは多分
URLリンク(www.imilabs.com)<)
URLリンク(www.javagaming.org)
URLリンク(www.jmonkeyengine.com)<)

しかし、面白そうなゲームが山のようにあるな

483:名前は開発中のものです。
06/11/11 13:07:20 HZB9qJCG
java, javax系でAudioClipより表現が豊かなサウンド用インタフェースってありませんか?
AudioSystemやMidiSystemを上手くラップしたいんだけど、AudioClipじゃ物足りない印象

484:名前は開発中のものです。
06/11/11 13:35:38 bJZMO9on
なんでAudioClipがでてくるんだよ
JavaSoundカワイソス

485:名前は開発中のものです。
06/11/11 13:41:41 HZB9qJCG
君一行目しか読んでないでしょ

486:名前は開発中のものです。
06/11/11 18:45:04 oHATF8vt
2行目が一致しないから仕方ないだろ
JavaSoundがでてくるなら問題はないのに

487:名前は開発中のものです。
06/11/12 03:04:56 FcOUrdTF
正直、あちらさんのゲームを見せられて、すごい、すごいと言われても、も一つピンとこねえな。
あちらさんはアセンブラかましたりとか平気でやるからな。
日本人でJavaでFPSを作ってる人っていないの?

488:名前は開発中のものです。
06/11/12 06:49:35 1OH5pVw5
>>487
Javaでどうやってアセンブリ言語を使うのだ

489:名前は開発中のものです。
06/11/12 07:28:17 0f+TtNLb
JNIの事を言ってるんじゃ無いか?

490:名前は開発中のものです。
06/11/12 08:23:03 +OD3pyxM
ここにいる人だけど、その多くは、Javaで本格的にゲームを作った事が
ない人だろう。
各種Docで知識は豊富だけど、ただ読んで覚えてるだけ。
ゲームの開発経験はないだろう。

Java実行コードのスピードは、部分部分で比較するとC++と大差なく
見えるけど、全体のアプリとして組み立てると、その漏れてた部分の遅さが
積み重なれて顕著となり、システム系ならば許容できるけど
シビアなタイムが必要となるゲームじゃとても使えなくなる
上の洋ゲーも間違いなくそのコアにJNIをふんだんに使ってるよ。
そうなると、それはJavaであってもJavaの範囲外ってことだ

491:名前は開発中のものです。
06/11/12 08:26:03 +OD3pyxM
>>ただ読んで覚えてるだけ

ってのは、その知識をもとに小規模なテストアプリを作成して
その結果で判断する事も含まれてる

492:名前は開発中のものです。
06/11/12 10:16:17 5sSMIo0r
増えてきた本格派JAVAゲーム
URLリンク(61.215.215.33)

こんな記事あったよ。日本のゲーム業界でJava使ってるとこってあるの?教えて業界人。

493:名前は開発中のものです。
06/11/12 10:38:02 wvoDMNwq
>>490
javaのPrduct系ゲーム開発経験者ですか?
それとも勘でいっている?

当方、確かに経験ないので今いちわからないんだけど
コード量が増えるとメモリリークが増えるから
PureJavaじゃ使いもににならないといいたいの?




494:名前は開発中のものです。
06/11/12 16:48:08 sIeJXGua
>>486
おまえは何を言ってるんだ?

495:名前は開発中のものです。
06/11/12 21:12:28 RoytZnjF
>>490
> ここにいる人だけど、その多くは、Javaで本格的にゲームを作った事が
> ない人だろう。
で、おまいはJavaで本格的にゲームを作成したことがあるのか?

>その漏れてた部分の遅さが
>積み重なれて顕著となり、システム系ならば許容できるけど
>シビアなタイムが必要となるゲームじゃとても使えなくなる
VMのGC処理が良く問題になるだけであって、コード本体の実行スピードには問題ない

> 上の洋ゲーも間違いなくそのコアにJNIをふんだんに使ってるよ。
間違いなくとか勝手に推測で断定されても、完全な間違いなんだが。

RuneScapeはPureJavaで作成されている。
その他のゲームで利用されているJNIも、
OpenGLやDirectInputを直接呼び出すだけの利用。

デタラメも大概にしてくれ。

496:名前は開発中の者です。
06/11/12 21:43:38 BPHT/7vm
LWやメタセコで作ってXファイルで吐いた3DモデルをJava側で読み込むツールとか、キャラのモーションを登録してJavaで読み込ませるツールとか、どこかで公開してるのかな?
そういうのがないと、素人には3Dゲームなんて、とても作れない。

497:名前は開発中のものです。
06/11/13 00:19:13 i1RxyPEd
>>494
JavaSound理解してないやつ乙

498:名前は開発中のものです。
06/11/13 01:47:03 xomXll6Q
お前がインタフェースベースな設計を知らないだけだろw

499:名前は開発中のものです。
06/11/13 19:04:22 jHwlfoAH
AudioClipってもっとも低機能で使い勝手の悪いものなんだが
それをほしいといわれても困る

500:名前は開発中のものです。
06/11/13 23:23:32 YBTvT9dR
ローダつくろうと思ってるんだけど、どのローダ書くのがいいかな?
1.メタセコ
2.ブレンダ
3.Xファイル
Xのローダ書いとけば一番無難?
自分、右手系でPG書いてるから変換が面倒くさそうだけど。
みんなはどんな感じ?

501:名前は開発中のものです。
06/11/14 06:53:06 t9hh4M26
>>499
それより良いインタフェースはないかと聞いてるだけでは?

502:名前は開発中のものです。
06/11/14 06:56:22 t9hh4M26
てか質問の意図を理解してない以前に設計知らないだけみたいだな

503:名前は開発中のものです。
06/11/14 09:51:06 v38jtkOO
あれ質問の意図がわかるやつのほうが頭どうにかしてるとおもうぜ・・・
本人ですか

504:名前は開発中のものです。
06/11/14 17:34:18 wMYc2bpW
Javaでゲーム作るとき
描画ってどうしてる?


505:名前は開発中のものです。
06/11/14 19:15:20 KGaPDyoT
2Dなら普通にJava2D+BufferStrategy
フルスクリーン時は垂直同期取るのに対してウインドウモードは取らないという点に注意してね

506:名前は開発中のものです。
06/11/14 23:35:47 N+Lhd8Zl
初めてアクションゲーム作ってるんですが
画像を半透明にしたりパレットデータを換えるときどうしてますか?
できればリアルタイムで処理させたいのですが
いい方法が見つかりません。RGBImageFilterではImageを得るまでが面倒で動作も不安定でした。
PNG形式のbyte列を直で変更して毎フレームImageに変換も遅そう
助けてください

507:名前は開発中のものです。
06/11/14 23:48:08 t9hh4M26
>>503
普通にわかるが?

508:名前は開発中のものです。
06/11/15 00:19:12 kbx8RzUW
>java, javax系でAudioClipより表現が豊かなサウンド用インタフェースってありませんか?
なぜAudioClipと比較したインターフェースにこだわる?Lineとかいってほしいということか?


>AudioSystemやMidiSystemを上手くラップしたいんだけど、AudioClipじゃ物足りない印象
JavaSound理解しているならまったく問題ないし、そこでなぜAudioClipが出てくるか不明。
同じインターフェースにこだわりたいのならともかく音量調整も出来ないようでは使い道なし。

~System系は5.0から大幅に使いやすくなったので迷うようなことはないと思うのだが。
普通に自分で好きなインターフェースで作りなさいとしかいえない。

509:名前は開発中のものです。
06/11/15 00:21:40 kbx8RzUW
>>506
Java2Dは使ってみた?通常合成なら大丈夫。
ハードウェアアクセラレーションはきかないからXGAで常時60fps維持したいとかだと厳しいけど。


510:名前は開発中のものです。
06/11/15 00:21:42 VX1VJ6O9
「同じインターフェースにこだわりたい」んだろ、もういいよ

511:名前は開発中のものです。
06/11/15 00:39:05 kbx8RzUW
こだわるならこだわるでAudioClip実装すればいいだけなんだけど。

512:名前は開発中のものです。
06/11/15 00:45:16 VX1VJ6O9
うざw そのインタフェースじゃ物足りないってんだからループするだけだろ
無いなら無いってだけなのに何引っ張ってんだか

513:名前は開発中のものです。
06/11/15 01:38:20 VX1VJ6O9
Java6になっても非Winの透過アクセラレートは無しなのかな。
まあ非Winを切り捨てても何の問題もないが。

514:名前は開発中のものです。
06/11/15 07:10:33 EhAiNbIT
>>509
それってGraphics2Dのことですか?
時間ができたら調べてみます。

515:名前は開発中のものです。
06/11/15 13:57:28 zHfv0gGD
>>512
だからこそあの質問が意味不明なのだ。
1行目と2行目と一致しない。

>>513
JavaSE5.0も現実的にアクセラレーションきかない。
openGLモードだと描画がバグバグだし、
Direct3Dモードだと描画方法によってレンダリング品質が変わるため使えない。

>>514
それだけじゃないけどね。
URLリンク(java.sun.com)

516:514
06/11/15 23:56:59 EhAiNbIT
>>515
バッファストラテジというのを導入してみたんですが、といってもほとんどコピペで理解してないんですが
Graphics2D.drawImage(Image,AffineTransform,Observer)でキャラを拡大したらGraphicsのdrawImageで描いた
ブロックの画像に縦縞ができてしまったんですが、どうすればいいでしょうか?必要ならできるだけ答えます
みなさんはバッファストラテジをどう使ってるのか教えていただけると助かります。

517:名前は開発中のものです。
06/11/16 00:11:55 RzG/81yb
これDirectX使って描画するからビデオドライバに問題があると崩れる場合がある。真っ当な環境なら問題は出ない。

とはいえ、アクセラレーションが利く描画じゃないようなのでその影響があるとは考えにくい。
コードと環境と加工前の画像と加工後の画像をアップしてもらえばわかるかも。

Graphics::drawImageでの拡大だとどんなかんじ?

518:名前は開発中のものです。
06/11/16 00:37:17 A0r/2s0Y
>>515
>だからこそあの質問が意味不明なのだ。
>1行目と2行目と一致しない。
お前日本語学校からやり直した方がいいぞw

519:514
06/11/16 07:35:27 DvgKUdTk
>>517
環境は何を書けばいいですか?今まで気にしてなかったもので…

520:名前は開発中のものです。
06/11/16 10:21:23 HdufXzqB
作ってみたけど微妙('A`)
ネットで対戦だから一人じゃバランスもとれず適当、せっかく作ったから遊んでください。
URLリンク(cattaka.myhome.cx)

521:名前は開発中のものです。
06/11/16 12:59:05 GPsbxADW
>>519
そもそもWindowsなのか、フルスクリーンモードなのかウインドウモードなのか
ビデオチップやドライバ等

ところでGraphics::drawImageによる拡大は問題なさそうなの?それが先決か。

522:名前は開発中のものです。
06/11/16 13:01:06 GPsbxADW
>>518
具体的な対応取らない荒しはかえれ
最近ずっとJava関係荒らしてるのお前だろ

523:名前は開発中のものです。
06/11/16 23:02:33 A0r/2s0Y
AudioClipがinterfaceなのを知らないのか
デザインパターンを知らないのか
日本語を知らないのかどれだい?

524:514
06/11/17 18:00:42 7Zpg5IH1
>>521
OS:Win98
ウィンドウモード
Graphics::drawImageでは縞はでませんでした。
バッファストラテジはそんなに効果があるんですか?
今一速くない気がします…

525:名前は開発中のものです。
06/11/17 18:50:02 gSEH6ifA
>>524
速度に関してはソフトウェア描画になる部分とアクセラレーションがきく描画と分かれる。
拡大縮小やαブレンドはソフトウェア描画になる。

Graphics::drawImageによる拡大描画は大丈夫なのか・・・。
画像のロードの仕方とかにも結構左右されるっぽいけど、そのへんどうなってるかな。
あと256色モードとか16bitカラーモードが原因になる可能性もある。

転送元imageはBufferedImage使ってると思うけど、そのカラーモードはフレームとあわせてある?
抜き色があるかとか細かいこともある。

フレームレート命のアクションゲームならできるだけアクセラレーションがきく描画を選択したほうがいいよ。
あとは画面サイズが大きすぎないこと。

まとめると
・画像のロードの仕方
・デスクトップの色数
・実際に問題の出るコードと画像

526:514
06/11/17 19:08:46 Lt0Wj0UY
>>525
画面は24bitでした。転送元imageというのがいまいち分かりません…
今まで携帯でしか作って無かったので、、、
あとこういうゲームに特化してJAVAの解説してるとことか無いですかね?
人に見せられるもんじゃないですけどソースアップしました。
URLリンク(park21.wakwak.com)

527:名前は開発中のものです。
06/11/17 21:47:35 6OJGRcli
まずぱっとみpaintイベントに描画ロジックが書いてあるようなきがするが、
通常paintイベントに対して処理は行わない。

repaint呼び出すところを自前のメソッドを呼び出すようにかえて、
paintメソッド名をそれにあわせて書き換えよう。

キー入力をビットに割り当てているのを見ると、他の言語でゲーム自体は作ったことあったのかなとおもた。

Skeruというクラスがわからないのでなんともいえないな。

画像のロードはImageIOを使うと柔軟にロードできるよ。わざわざバイト配列をロードするとか必要ない。
その際に画像バッファは現在のビデオの解像度と合わせると高速に転送が出来るけど、それはまた後の機会に。

これってフレームのサイズ固定で描画しているようだけれども、タイトルバーの高さとかふちの大きさは
同じWindowsでもバージョンや環境によって大きく異なるからしないほうがいい。

pack()やsetVisible()したあとにインセットを取得して本来ほしいサイズにそれを足して処理する。

528:514
06/11/17 23:51:15 83DvLp/B
>>527
お返事ありがとうございます。
>repaint呼び出すところを自前のメソッドを呼び出すようにかえて、
>paintメソッド名をそれにあわせて書き換えよう。
playに変えました。

>キー入力をビットに割り当てているのを見ると、他の言語でゲーム自体は作ったことあったのかなとおもた。
まあ、ボチボチですが

>Skeruというクラスがわからないのでなんともいえないな。
これはいらないクラスです。うっかりしてました。
画像とか変更したソースとかさっきのURLにアップしておきます。

>画像のロードはImageIOを使うと柔軟にロードできるよ。わざわざバイト配列をロードするとか必要ない。
>その際に画像バッファは現在のビデオの解像度と合わせると高速に転送が出来るけど、それはまた後の機会に。
やってみましたけど、こんなんでいいんですかね。

>これってフレームのサイズ固定で描画しているようだけれども、タイトルバーの高さとかふちの大きさは
>同じWindowsでもバージョンや環境によって大きく異なるからしないほうがいい。

>pack()やsetVisible()したあとにインセットを取得して本来ほしいサイズにそれを足して処理する。
やってみました。


529:名前は開発中のものです。
06/11/18 00:24:13 3XstkAv5
>>pack()やsetVisible()したあとにインセットを取得して本来ほしいサイズにそれを足して処理する。
>やってみました。

これ、取得した後にそのサイズを足してsetSizeするってことね。
320*240とかを描画サイズにしたい場合それプラス余白部分。
もちろん、描画する際の起点もその分ずらす。

あとは時間管理だろうか。
sleepは固定でのウエイトが入る。つまりメインループの処理時間の差があった場合に考慮されていない。
普段は10msで動いていたとしたら1ループは30msだろうけど、これが5msだったり15msだったりすると・・・。
したがってがくがくするのを防ぐためには一定の速度でまわす必要がある。
30msでループさせるなら処理に5msかかったら25ms停止、処理に15msかかったら15ms停止というようにね。

だいたいでいいのなら一番簡単なのはjava.util.Timerを使う。TimerTaskとあわせてね。
メインループのほうをwait()で停止させて、TimerTaskからnotify()で起こすといい。

あとこのスレと前スレを一度全部見ておいたほうがいい。

530:514
06/11/18 16:22:37 09nqBb7g
言われたところは大体やりました。ただTimer系がまだいまいちわかりません
サクっとでいいんで説明してもらえたら助かります。
あとJAVA2Dなら画像のパレット替えやフィルタリングもできるんですよね?

531:名前は開発中のものです。
06/11/18 16:36:52 qC5zAejN
タイマーはここみるといいよ。
URLリンク(www.javainthebox.net)
ほかにも櫻庭さんのサイトはJava関係の重要なのが多いから関係のありそうなところ見といたほうがいい。

描画に関してはアクションゲームで60fpsを目指すのなら複雑なことはしないほうがいいよ。
あらかじめ使用するパレットがわかっているなら画像ロード後にそれらのImageを生成したほうがいい。
あくまでもいわゆる画像をスタンプのように貼り付ける場合はやいから。

RPGとかで30fpsくらいでいいのならいろいろと出来ると思うよ。
Java2Dを詳しく書いた書籍ってあったかな・・・。まずはJava2Dのマニュアルをよんでみよう。
少なくともJDKのJava2Dサンプルくらいはすぐできるから。

532:514
06/11/18 17:44:49 Zk4f2vJN
>>531
ありがとうございます。
Timerは分かってきたんですが、上にある
>メインループのほうをwait()で停止させて、TimerTaskからnotify()で起こすといい。
の書き方が分かりません…。
あと、キャラクター・エフェクト・特殊ブロックなどの処理部分を一つのクラスにまとめて中で
switch文分岐して処理させようかなーと思ってるんですが、こういうやり方だと遅くなったりするんでしょうか?
座標や状態変数なんかはメインループのある方のクラスに持たせれば、敵にくっついてく敵とかが作れそうですよね。
一応JAVAなのでポリモーフィズムも考えたんですが、数が数なだけに多すぎるので辞めたんですが

画像も予め用意したらその分メモリ食われて遅くなるってこともありますよね?
いかんせんJAVAでのメモリの使われ方が良く分かって無いのでどこかで損してる気がします…

533:名前は開発中のものです。
06/11/18 19:54:34 ZKUyfd27
wait、notifyはObjectにあるメソッド。これはJavaの基本中の基本なので勉強するといいよ。
APIドキュメントよんでごらん。ざっくりというとwaitはスレッドを停止させてnotifyで起こすという感じ。
マルチスレッド使ってるのでこの辺基本を抑えないと大変なことになる。

参考
URLリンク(www.nextindex.net)

switchだろうが複雑な分岐だろうがCPUだけが処理するようなものは速度的に問題にはならない。
ネックになるとすれば16bitCPU時代くらいでJavaSEとは関係ない。

最初はざっくり作ってリファクタリングをゆっくりやるといいよ。IDE使えば手軽に見通しよくなるし。
オブジェクト指向等も徐々に勉強していきながらでいい。


534:514
06/11/18 22:14:54 Bis6pJQA
>>533
wait()とnotify()意味は半分ぐらい分かったのですが、いまいち調べても
欲しいサンプルが見つかりません…。色々試してはいるんですがなかなか
動いてくれません。ヘタレで悪いんですがゲームで使う時のwait、notify
のコードをちょろっと書いて貰えないでしょうか?

ただ分岐は多くてもいいというのはホッとしました。丁寧なレスありがとうございます。
助かります(^^;。

535:名前は開発中のものです。
06/11/18 23:55:20 ZKUyfd27
基本中の基本だけにしらべればいくらでもサンプルコードが出てくると思うのだが。


536:514
06/11/19 10:56:55 1IKPzYYc
Timer/TimerTaskとwait/notifyを組み合わせられないんです。
どうやったらTimerTaskで周期的にnotifyできるのかとかSynchronizedを付けるべきところとか
探し方が悪いのかも知れないんですが

537:名前は開発中のものです。
06/11/19 13:54:05 dZdtxI9w
自分はこんな感じで実装しているが、間違っていても知らない

public class Hoge extends Thread{

  private boolean processStop = false;
  private WakeTask wakeTask = new WakeTask();

  public void start(){
    super.start();
    new Timer().scheduleAtFixedRate(wakeTask, 0, WAKE_TIME);
  }
  public synchronized void run(){
    while(true){
      game();
      try{
        wait();
      }
      catch(InterruptedException e){
        e.printStackTrace(System.err);
        break;
      }
    }
  }
  private synchronized void awake(){
    if(!processStop) notify();
  }
  private class WakeTask extends TimerTask{
    public void run(){
      awake();
    }
  }
}

538:名前は開発中のものです。
06/11/19 20:11:00 8MYA5LfB
>>536
URLリンク(www.y-adagio.com)


539:520
06/11/19 23:41:03 yvfHZIx2
今頃鯖のポート解放忘れてるのに気がついた。
何がしたいんだよ俺・・・・orz

540:名前は開発中のものです。
06/11/20 00:56:56 mU6Ad/cq
リアルタイムシミュレーションでネット対戦できるゲームをjavaで作りたいのですが、参考になるサイトありますかね?
ちなみに自分は今までCで数値シミュレーションを生業としてきてGUI関係はよくわかっていません。
勉強できるサイトがあるとうれしいです。
よろしくお願いいたします。

以上

541:名前は開発中のものです。
06/11/20 01:19:17 8PZEbpO9
ものすごい初心者な質問なんだけど、
普通のゲームってソフトとかクライアントとかをダウンロードするじゃない?
JAVAゲームの場合、ブラウザから直接開始するけど、
読み込み時間みたいのがかなりかかるんじゃないのかな?
音楽もいちいちMP3をダウンロードすることになるの?

542:名前は開発中のものです。
06/11/20 01:42:07 HqvpBzdY
>>540
シミュレーションが、物理シミュレーションかシミュレーションゲームか不明
GUIプログラミングは簡単なので立ち読みか普通のサイト見れば良いのでは
URLリンク(www.javadrive.jp)
URLリンク(www.hellohiro.com)

543:名前は開発中のものです。
06/11/20 15:21:51 107nEDGg
>>541
Javaのプログラムってのはアプレットだけじゃないよ。
通常のアプリケーション等もあるし、一度ダウンロードしたらアプレットはキャッシュからとってくることも出来るし
WebStartはバージョン等が変わってなければすべてキャッシュファイルからとってくる。

そもそもC等で作ったアプリだって同じだぞ。ネット経由でダウンロードするように作ってあるなら。
バックグラウンドスレッドでガンガン落としていけばあまり問題はなさそうだが。

544:名前は開発中のものです。
06/11/26 21:31:48 vp/Awfnk
話題が無いがage
無限にステージが生成されるマリオっぽいゲーム「Infinite Mario Bros」
URLリンク(gigazine.net)

545:名前は開発中のものです。
06/11/26 23:34:43 o/jL46vw
>>544
Wurm Online の中の人が製作しているみたい?
ソース付きだし勉強になりそうだ。

546:名前は開発中のものです。
06/11/27 18:13:24 QR83lXnt
VolatileImageとMemoryImageSourceって一緒に使えますか?

547:名前は開発中のものです。
06/11/27 18:15:01 IAG3BIQ8
使えるけど、後者は使う意味ないぞ
1.1時代の互換性のためだけの遺産だから

548:名前は開発中のものです。
06/11/27 18:52:38 QR83lXnt
詳しく教えてください
VolatileImageでピクセル操作とかできますか?

549:名前は開発中のものです。
06/11/27 21:03:56 OAwnVtrw
VolatileImageは画面モードにも夜がVRAMをさすと思っていい。
VRAM直書きはメインメモリ直書きに比べて非常に遅いので出来てもやらないほうがいいのは常識。

メモリ上のImageを扱うなら1.2以降はBufferedImageを使う。最初にピクセルフォーマットをきめて
配列で扱えること、出来上がった画像を何度もコピーする場合アクセラレーションが自動的に適用される。


550:名前は開発中のものです。
06/11/27 21:56:18 L4SNxotk
>>547
いや、実際にはMemoryImageSourceが一番素直な「フレームバッファ」
で使いやすい。BufferedImageは、メモリ上の配列と直接関連付けられ
ないのが致命的(ピクセル列に見立てたint配列を操作すれば直ちに
対応するImageに反映されるという意味での「Buffered」でなければ、
Rasterなどという扱いにくい邪魔者が出てくるだけでまったく意味が
ない。まだMemoryImageSourceの方がまし)。


551:名前は開発中のものです。
06/11/27 23:13:58 OAwnVtrw
ゲーム用途だとダイレクトにピクセルを扱う場合8bitか16bitにしないと速度的に問題が出るから
BufferedImageでそういう指定するのが一番だと思うし、ピクセルフォーマット合わせる場合
GraphicsConfiguration使うだろ?

問題あるのか?short配列アクセスとか簡単に出来るから便利だと思うんだが。

552:名前は開発中のものです。
06/11/28 22:11:57 WdzF4q7Z
>>544
それすごいな
pure javaだけでここまでできるの?

553:名前は開発中のものです。
06/11/28 22:46:49 jI1vxm7H
>>552
2Dなら余裕
あとは根気等

ただグラフィックなどあからさまなパクリはいかんね

554:名前は開発中のものです。
06/11/28 22:52:55 dIaLfStB
>>552
署名なしで動くアプレットだから当然、pure javaです。

携帯で普通にドラクエが動いている世の中だからな。
出来るかどうかはプログラマの腕次第だと思うよ。

555:名前は開発中のものです。
06/11/29 08:24:09 SF7yfmPu
>>551
>問題あるのか?short配列アクセスとか簡単に出来るから便利だと思うんだが。

いや、だからその配列の内容は一度変換・コピーしないとImageとして表示できないんだよ。
自分でRGBを数値として処理する配列を取ると、一度それをMemoryImageSourcre/BufferedImageを介して変換しないと描画可能なImageが得られない。
そして、そうしたRGB配列のImage化には一発でできて余計な機能がないMemoryImageSourceの方が使いやすい。
Win32のDIB/DIBSectionのような機能(直接描画可能なフレームバッファを配列として取得できるImage)があれば楽だし、変換や不要な配列の二重確保が入らない分性能上も有利なはずなんだけどね。
BufferedImage(あるいは各種変換機能を削除して単純化したMemoryImageクラスでも新設して)でピクセル列の配列を直接公開してくれれば良いのだけど。

あと、int配列から作ったMemoryImageSourceで速度的な問題って感じたことないぞ。
Pen3+845GEのマシンで100以上のキャラクタ描いてもまったく問題にならなかった(100FPS以上)。



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch