[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 21:08 / Filesize : 296 KB / Number-of Response : 982
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Javaでゲーム作成 2本目



1 名前:名前は開発中のものです。 [2005/10/27(木) 09:43:50 ID:dzSvRQXE]
Javaでのゲーム作成について情報交換をするスレです。
ゲーム作成以外の話題はム板(pc8.2ch.net/tech/)、
他言語に関する話題は他スレでお願いします。

前スレ
JAVAでゲーム作成
pc8.2ch.net/test/read.cgi/gamedev/1074347252/

テンプレは>>1->>10あたりを参照

40 名前:名前は開発中のものです。 mailto:sage [2005/11/05(土) 15:14:53 ID:bFW/1MqR]
標準でXPath使えるようになったから大分楽になったけどね

ゲームつくろうって人間は自前で実装が多いと思われ
なんせ、ばらす必要はなくてたとえばList<Element>でもっていけば、
Beansとちがって仕様変更に強かったり、例外処理がしやすかったりする


41 名前:名前は開発中のものです。 mailto:sage [2005/11/07(月) 02:44:21 ID:vwx0ALlq]
WikiのJava実装のソースを読むと正規表現が山のように出てくる
WikiはPerlで作ったのをコピーしてるからそうなっているんだと思うけど
これが、Perl文化かと思ったよ

42 名前:名前は開発中のものです。 [2005/11/15(火) 23:05:03 ID:P0cI9ezk]
OGGって再生コストがえらい高いらしいけど
それをJavaで再生したらどえらいことになったりする?
Wavのがディスク食うだけでいいから安定するのかな?

43 名前:名前は開発中のものです。 [2005/11/15(火) 23:12:48 ID:ShfCvdFQ]
質問は明確に

44 名前:名前は開発中のものです。 [2005/11/15(火) 23:19:48 ID:P0cI9ezk]
CPUへの負荷が高いそうなのですが、実用レベルなのですか?

45 名前:名前は開発中のものです。 mailto:sage [2005/11/15(火) 23:33:03 ID:Wrh6FbhN]
>>42

>>11のを見る限りCPU使用率は1GHzで1,2%ってところでは?


46 名前:名前は開発中のものです。 mailto:sage [2005/11/17(木) 20:29:55 ID:8R2XVZPE]
フルスクリーンから
device.setFullScreenWindow(null);
System.exit(0);
とやって終わらせると画面真っ黒になって操作不能になることが
あるのですが、なる理由がわかりません。
あと、フルスクリーンにするときそこで処理が止まってctlALTDelで終わるしかない
ときもあるのですがどうすればよいのですか?
1_4_2です。

47 名前:名前は開発中のものです。 mailto:sage [2005/11/17(木) 20:35:02 ID:2shdXMro]
System.exit()すればすべて開放するから
問題はないはずだけど

ベータのときはnullわたしたやつはダメだったけどね
今は大丈夫だったと思ったけど

あとはチップとビデオドライバによるかも
安定してDirectX動いてる?

48 名前:名前は開発中のものです。 mailto:sage [2005/11/17(木) 21:44:27 ID:8R2XVZPE]
それを確認するにはどうしたらいいんですか?
PC初心者板逝きですか?



49 名前:名前は開発中のものです。 mailto:sage [2005/11/17(木) 23:38:12 ID:2shdXMro]
>device.setFullScreenWindow(null);
これをコメント化してみたら?

あとは他のJavaのフルスクリーンのゲーム試してみるとかどうかな


50 名前:46 mailto:sage [2005/11/18(金) 20:45:39 ID:Jjzsx+o7]
フルスクリーンで操作不能になったりする理由はわかりませんでしたが
とりあえず動くのでよしとすることにしました。
ですが背景を付けてみると
ぱちぱちしてとても目に悪いことこの上ないという状況になりました。
これがちらつきというのでしょうか?
BufferStrategyは使っているのですがどうすれば改善するのでしょうか?

51 名前:名前は開発中のものです。 mailto:sage [2005/11/18(金) 21:13:51 ID:bdg3zZZw]
BufferStrategyでページフリッピングしてれば大概の環境で垂直同期取るはずなので
ちらつくことはないと思うんだが、他のアプリでもちらついてるの?

52 名前:名前は開発中のものです。 mailto:sage [2005/11/18(金) 21:16:43 ID:yEqWeMq1]
フルスクリーンじゃなくても垂直同期とるんだっけ?

53 名前:名前は開発中のものです。 mailto:sage [2005/11/18(金) 21:24:56 ID:bdg3zZZw]
フルスクリーンのみな
ウインドウモードはフリッピングのフラグが降りてブリットのフラグがたってるはずだろ


54 名前:46 mailto:sage [2005/11/18(金) 22:02:38 ID:Jjzsx+o7]
もしや、自分の環境が大概の外にあるということでしょうか。

他にはコマンドプロンプトしか動かしてません。
ちらつくときとちらつかないときがあるのですが
背景を付けると100%ちらつくこの状況。
フルスクリーンを諦めるしかないのか

55 名前:名前は開発中のものです。 mailto:sage [2005/11/18(金) 22:16:33 ID:bdg3zZZw]
だからフルスクリーン対応のアプリ立ち上げてみればわかるっしょ

56 名前:46 mailto:sage [2005/11/19(土) 06:56:25 ID:59ba+Epe]
東方、どっかで拾ったフルスクリーンにボールが増えていく
もの(Java)、百本ゲームのゲームは問題なく動きます。

57 名前:名前は開発中のものです。 mailto:sage [2005/11/19(土) 13:09:03 ID:BsSsGwkc]
なら自分のコードがわるいってことかと

58 名前:46 mailto:sage [2005/11/19(土) 13:40:21 ID:59ba+Epe]
背景の描画オブジェクトにフレームのを
渡していたことが発覚。
正直すみませんでした。
ちらつきは直りましたが、それ以前の操作不能になること
がある時があるのはわからない。
これもどこか自分のが悪いのだろうか。



59 名前:名前は開発中のものです。 mailto:sage [2005/11/20(日) 02:35:57 ID:PktMjKAY]
>>46=58
一言アドバイス
発覚したってことは他も可能性アリ
煮詰まってそうだけど、連レスしてないで
とりあえずもちつけ

で、もっかいソースとにらめっこしてみようぜ!


60 名前:名前は開発中のものです。 [2005/11/26(土) 22:10:42 ID:wK3zX5BN]
Javaのパワーを生かしてツクールやFlashみたいなエンジン作ろうよ
馴らしたSEの人が設計してくれるならコードは手伝うよ

61 名前:名前は開発中のものです。 mailto:sage [2005/11/26(土) 22:25:05 ID:sU6iOuYI]
まず自分でたたき台を作るくらいが必要と思われ

ツクールにしてもダンテのようにフラグだけでいいのか、スクリプトでいいのか
スクリプトなら次期バージョンで標準実装だとか

出だしはコードと設計は同一者でひっぱっていくくらいじゃないと
オープンソースなプロジェクトは成功しないと思われ

SEだ、プログラマだといったすみわけはいらない

まず、>>60がJavaでスタンドアロンのゲームを作れるかどうかという点がポイントになる


62 名前:名前は開発中のものです。 mailto:sage [2005/11/26(土) 22:53:12 ID:wK3zX5BN]
>>61
すまん。実は業務系でSwingは勉強中なんだ。

63 名前:名前は開発中のものです。 mailto:sage [2005/11/26(土) 22:56:43 ID:sU6iOuYI]
いや、誤る必要ないよ
業務系でJavaさわってるならまず言語の基本は問題ないとして

Java2Dを筆頭にフルスクリーンとか時間管理、JavaSoundあたりが触れるようになるといいね



64 名前:名前は開発中のものです。 mailto:sage [2005/11/26(土) 22:56:47 ID:WkbR04YY]
画像を回転させようと思って
AffineTransform form = new AffineTransform();
draw(){
form.rotate(x*Math.PI/180,画像の幅/2,画像の高さ/2);
画像イメージの描画オブジェクト.drawRenderedImage(画像イメージ,form);
描画先の描画オブジェクト.drawImage(画像イメージ,null,gx,gy);
}
というふうにすると、背景が透明なでただ↓と描かれている画像を使うと背景が黒くなり矢印が見えなくなります。
また、横長い画像をつかって見ると画像の中心に
画像の高さを直径に丸くなって回転をし
その丸以外の部分が白くなってしまうんです。
ただ画像をその場で回転させて
表示させたいんですがどうすればいいんでしょうか?

65 名前:名前は開発中のものです。 mailto:sage [2005/11/26(土) 23:04:49 ID:wK3zX5BN]
>>63
最初はCっぽくなるかも知れないけどやってみる。

66 名前:名前は開発中のものです。 mailto:sage [2005/11/26(土) 23:11:28 ID:sU6iOuYI]
>>64
もちつけ

なんか日本語が分かりにくいぞ

まずGraphics2Dのrotateメソッドを使ってみて描画してもおかしいかチェック

それに画像イメージってやつをを上書きしてしまってるように見える


67 名前:名前は開発中のものです。 mailto:sage [2005/11/26(土) 23:29:16 ID:PhHUEMA7]
>>60-63
Flash やツクールみたいのはゲームどうこうより、
アプリとしての設計の方が100倍重要だと思うけどなー
エンドユーザ的意見としては、時間制御 UI は Flash じゃなくて
AfteEffects を参考にして欲しいと願う。

Shape エディタがあったら超便利なのにと思う事は多々あるので
正直これはかなり興味ある。
そのうち Sun が出すんじゃねーかとか思ってたけど全然だし。

このへんは現状だと SVG (Illustrator -> Batik) とかになるんだろうけど
こっち方面は面倒すぎて手が出せん。


68 名前:名前は開発中のものです。 mailto:sage [2005/11/27(日) 00:07:17 ID:XSFMA6v6]
まず最低限ゲームが作れないとどういう設計したらいいかわからんのでは?



69 名前:名前は開発中のものです。 mailto:sage [2005/11/27(日) 00:25:55 ID:H8JPzJcw]
以下でJavaで作るゲームの基本を学ぶ。
Java基本機能だけのベースとしてはかなりいい材料と思う。
www.brackeen.com/javagamebook/

70 名前:名前は開発中のものです。 mailto:sage [2005/11/27(日) 01:11:36 ID:bXtTt1i7]
>>69
すごいね。いい勉強になりそう。
TimerとGraphics2Dでアニメくらいは出きるからちょこちょこ学んでみるよ。

71 名前:名前は開発中のものです。 mailto:sage [2005/11/27(日) 01:13:57 ID:laCqt6jf]
>>68
それは多分作ってほしいと思うもの違いがあるのかも。
オレが想像したのは、エンジンはメタなインターフェイスを提供して
ゲーム的なエッセンスはエンドユーザが作るって形のものだから。

んで実際の所、描画の最適化とか絶対に必要になるけど、
それがゲームに限った話かと言われると微妙な気がするのよ。

むかーし似たようなモン作ろうとしたけど (作りかけたま放置)
必要としたゲーム的な知識ってタイマーの使い方くらいだった。

>>70
とりあえずガンガレ!

72 名前:名前は開発中のものです。 mailto:sage [2005/11/27(日) 01:16:07 ID:XSFMA6v6]
>>70
スレッドプールとか5.0で標準で実装されてるのもあるし注意な
とくにJavaSoundのストリームと偽ったところはなめてる感じ

73 名前:名前は開発中のものです。 mailto:sage [2005/12/05(月) 22:23:20 ID:DrFNVWzV]
gifなどの透過画像をImage等に描画して
そのImageのなにも描いてない部分を透過させるにはどうしたらよいのですか?

74 名前:名前は開発中のものです。 mailto:sage [2005/12/05(月) 23:52:46 ID:YnmMxKVz]
>>73
BufferedImage(int, int, int)で
3番目の引数にBufferedImage.TYPE_4BYTE_ABGR指定で透明になるかな?

75 名前:名前は開発中のものです。 mailto:sage [2005/12/06(火) 12:56:55 ID:m90gA8zy]
Java2Dの基本なんだけど、Java2Dをちゃんと説明してる書籍ってまったくないな


76 名前:名前は開発中のものです。 mailto:sage [2005/12/06(火) 18:51:26 ID:vSoUCqBN]
>>74
うまくいきました。ありがとうございます。
しかしcIearRectするとダメなようです。
画像を回転させるために仮Imageを作って
それに画像を描画してそのImageを回転させる
という風に考えていたのですが他の方法を考えます。

77 名前:名前は開発中のものです。 mailto:sage [2005/12/06(火) 19:04:14 ID:m90gA8zy]
画像の回転するのになんで1回かますの?

78 名前:名前は開発中のものです。 mailto:sage [2005/12/06(火) 19:42:22 ID:vSoUCqBN]
Graphics2D tmp = (Graphics2D)chara.getGraphics();
tmp.lotate(chara,characenter.x,characenter.y);
g.drawImage(chara,null,charagx,charagy);

てな感じにやってたんですけど、なぜか全く回転しなかったので
仮画像を作ってそれを回転させるという風にしました。



79 名前:名前は開発中のものです。 mailto:sage [2005/12/06(火) 20:43:53 ID:m90gA8zy]
回転をセットするのは描画先のほうだよ?
すでに描画されてるのはどうしようもない


80 名前:名前は開発中のものです。 mailto:sage [2005/12/06(火) 20:51:15 ID:57K4+g+R]
Graphics2Dオブジェクトにアフィン変換かけてさらに
Graphics2Dオブジェクトに描画でできんのかな

81 名前:名前は開発中のものです。 mailto:sage [2005/12/07(水) 00:29:46 ID:R+Rh6YVG]
すみません。自分の日本語読解力が足りないことにより
皆様から頂いた助言を活かすことができません。
少し、具体例を用いて説明して頂けいませんか?

82 名前:名前は開発中のものです。 mailto:sage [2005/12/07(水) 00:59:31 ID:xiUT9nsP]
1・画像をロードします
2・描画先を回転させます
3・ロードした画像を描画します

83 名前:名前は開発中のものです。 mailto:sage [2005/12/07(水) 01:56:14 ID:SEfUp1TO]
落ちものゲームで受け手(キャンバス)を上手く回転させて
指定された絵を完成させるゲームをイメージしてみるとか。

84 名前:名前は開発中のものです。 mailto:sage [2005/12/07(水) 06:51:27 ID:R+Rh6YVG]
>>82-83
つまり、描画先を回転させて
そこに描画して、回転させた分
逆回転させて他はもと通り、と解釈して実行し
成功致しました。ありがとうございます。
しかし、これは斜めになったとき
四角の余白が黒くなってしまいます。
これの解決方法はどうすればよいのでしょう?
背景を再び描画も考えましたが
回転させたものが塗り潰されてしまいます。

85 名前:名前は開発中のものです。 mailto:sage [2005/12/07(水) 09:35:30 ID:hZztkAcv]
そこまで出来てるのに、なんで画像描画前に背景を
先に塗り潰すという発想がでてこんのだ。

86 名前:名前は開発中のものです。 mailto:sage [2005/12/07(水) 19:03:18 ID:R+Rh6YVG]
背景を描画して、回転したものを描画とやってるんですけど
  ______
 |■/  \■|
    ↑回転した画像

て感じにうえの部分に黒い部分ができてしまうんです。
さて、どうしたものか?

87 名前:名前は開発中のものです。 mailto:sage [2005/12/07(水) 19:17:03 ID:ruXn40F6]
ソース晒した方が早そうだな

88 名前:名前は開発中のものです。 mailto:sage [2005/12/08(木) 14:23:17 ID:wcnvECNE]
g.fillRect(0,0,600,600);
g.rotate(time*PI/,characenter.x,characenter.y);
g.drawImage(chara,null,gx,gy);
g.rotate(-time*PI/,characenter.x,characenter.y);
time++;

これでいいんですよね?



89 名前:名前は開発中のものです。 mailto:sage [2005/12/08(木) 15:51:44 ID:Voeburfj]
time*PI/, て何だよコンパイル通るのかよ


protected BufferedImage image = 知らん;
protected Point2D center = 知らん;
protected AffineTransform rot = new AffineTransform();
protected double rpf = 0.1; //回転の量

protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;

// ... ここで背景描画する

// rpfの量だけ回転させて描画
rot.rotate(rpf, center.getX(), center.getY());
g2.drawImage(image, rot, null);
}

2D じゃない方の Graphics の使い方はわすれた。


90 名前:名前は開発中のものです。 mailto:sage [2005/12/08(木) 16:27:30 ID:+Z+rNNsb]
>>88
背景黒く塗ってるっぽいから黒くなるのは正しい動作だとみたが?


91 名前:88 mailto:sage [2005/12/08(木) 20:08:36 ID:wcnvECNE]
自分は色々説明がたりなかったよう。
>>89
すみません。このコードの前に
int time=1;
double PI = Math.PI;
ってあって
time*PI/は
time*PI/180の間違いです。
そしてそのコードを実行した結果
見事指定した座標を中心にぐるぐると
私がしたいのはその場を動かずに回ることだったのですが。
というかこれでも黒い部分でてきました。すみません。
>>90
g.setColor(Color.GREEN);
って事前にやってたんです。

92 名前:名前は開発中のものです。 mailto:sage [2005/12/08(木) 20:58:51 ID:+Z+rNNsb]
情報の小出しされてもわからん
該当部分のソースを最小限にしてコンパイルできるものを出したほうがいいんじゃね?


93 名前:名前は開発中のものです。 mailto:sage [2005/12/08(木) 21:03:25 ID:HtN2IVya]
ttps://genuts.dev.java.net/servlets/ProjectDocumentList?folderID=0&expandFolder=0&folderID=2287
プロジェクト > games > games-middleware > genuts

ttp://www.genuts.com/
Genuts Cheese Indigestion Puzzle
オモシロスwww

94 名前:名前は開発中のものです。 mailto:sage [2005/12/09(金) 01:58:21 ID:DR3+EYk2]
テキストリソース(RPGの会話文など)ってどう扱うべきでしょうか?
XML? properties?

95 名前:名前は開発中のものです。 mailto:sage [2005/12/09(金) 02:29:57 ID:HsQzl6B+]
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/ObjectOutputStream.html

96 名前:名前は開発中のものです。 mailto:sage [2005/12/09(金) 12:27:40 ID:wi5fEo9o]
自分が扱いやすいものでいいかと

修正もこまめに入ると思うし、文字だけじゃなくてたのパラメータも必要になると思うから
XMLが汎用性では一番かと


97 名前:名前は開発中のものです。 mailto:sage [2005/12/09(金) 17:53:50 ID:3zLl7jhn]
いいの見つけたお^^;
ttp://fivedots.coe.psu.ac.th/~ad/jg/ch1/index.html

98 名前:名前は開発中のものです。 mailto:sage [2005/12/09(金) 23:37:39 ID:6Nnex+8J]
XMLパーサってあったっけ



99 名前:名前は開発中のものです。 mailto:sage [2005/12/09(金) 23:40:17 ID:HsQzl6B+]
あるよ。DOMよりSAXのが個人的には好き。

100 名前:名前は開発中のものです。 mailto:sage [2005/12/10(土) 00:04:18 ID:KuqpST++]
ゲームで使うとなるとSAXはファイル読み込みだけだろうな
内部ではElementでつかうのがいい


101 名前:97 mailto:sage [2005/12/10(土) 21:23:28 ID:h8wANggU]
画像回転のサンプルがここに載ってるお^^;
ttp://fivedots.coe.psu.ac.th/~ad/jg/ch04/index.html

Graphics2Dは知らないお^^;

102 名前:名前は開発中のものです。 mailto:sage [2005/12/10(土) 22:25:02 ID:KuqpST++]
いや、普通にJava2D楽だぞ

ただ、普段以上にメモリ使用量は把握していかないと駄目
GCがかなり増えるから

速度が必要な場合あらかじめ回転させておくとかが必要になるね
アクセラレーションきかないから

103 名前:名前は開発中のものです。 mailto:sage [2005/12/10(土) 22:27:15 ID:MpQxaKQL]
BufferdImageの効果が消滅するの?<回転

104 名前:名前は開発中のものです。 mailto:sage [2005/12/10(土) 22:35:58 ID:KuqpST++]
効果は消えるなんてことはないけど、速度が差が出る
Java2Dって高級すぎるAPIなんでどれがアクセラレーションきいて、どれがきかないのか
チェックするのが大事

基本的に速度は1.4.2と5.0でかわってないよ
アクセラレーションがきけば秒間にスプライトが万単位で描画できるはずだが
やることをかえるとこれが一気に1/100以下に下がったりする

105 名前:名前は開発中のものです。 mailto:sage [2005/12/10(土) 23:04:18 ID:MpQxaKQL]
うへ・・・回転拡大はご法度なのかな。
昔ながらのアナログ手法にしとくか

106 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 01:01:17 ID:xyghd8DO]
速度を求めないのと回転オブジェクトがいくつあるかによる

60fpsで128*128の回転スプライトが1000個は無理だと思う



107 名前:94 mailto:sage [2005/12/11(日) 12:16:09 ID:hWRTdhf0]
>>96
>>100
XMLの方が柔軟性があって良いということですね。
propertiesは簡単な設定の保存程度にしておいた方が良いのかもしれませんね。
ありがとうございます。


108 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 14:37:45 ID:ohNVp0t4]
>>106
400MHz、64MB、VRAM8Mでどこまで出来るかがポイントだな。
まあ回転なんてギャラガとか作ろうと思わなければ使わないけど。



109 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 15:20:14 ID:xyghd8DO]
ギャラガくらいなら余裕
VRAM8MってことはTNTとかあのあたりかな
ならアクセラレーションの速度も問題にならない

メインメモリ64Mが一番のネックかと
GCの調整はプロファイラとにらめっこになるね
ヒープサイズ自体を24M以下に抑えてももVM方面で厳しい
1.4.2のほうがメモリ消費は少ないからそっちのほうがオススメか

Pen3/1GHz+統合ビデオでテストしてみたけど
上で上がってた2DSTGは60fpsでサクサク動いた

110 名前:名前は開発中のものです。 mailto:??? [2005/12/11(日) 17:02:52 ID:5bLTV7mU]
>>75

遅レスだが、これいいよ
ttp://www.oreilly.com/catalog/java2d/



111 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 17:06:21 ID:xyghd8DO]
日本語訳がないんじゃさすがにここで質問する初心者にはすすめれんが

112 名前:名前は開発中のものです。 [2005/12/11(日) 17:43:34 ID:FJ8u3O2A]
1999年ってやけに古いけど大丈夫なのか・・・

113 名前:110 mailto:??? [2005/12/11(日) 18:11:19 ID:45Ys85hP]
個人的には、Graphics2Dでの描画にくわえて、
BufferedImageの細かい解説とか画像処理関連のことがら
についておさえて書かれているところがおすすめ

>>1999年ってやけに古いけど大丈夫なのか・・・

Graphics2Dの基本についてはそんな変わってないはず。
5.0以降どうなったかは知らんが。
あーでも画像ファイル読み込みでImageIO使う解説とかはなかったような。。
ま、そのあたりはWebの情報その他で補うとして、Java2D本体の包括的な
解説書としてはこれけっこういいと思う。

>>日本語訳がないんじゃさすがにここで質問する初心者にはすすめれんが
これについては「がんばって読めや」といいたいが、それもなあ。。。
画像処理とかについては書いてないけど、
Graphics2Dでのprimitiveの描画ひととおり+基本的な変換(Affine変換とか)だけなら、
ttp://www.iamas.ac.jp/~furu/book/motion/
とかもいいかも。
でも、これらとかは本なんか見んでもWebに情報ころがってるな。


114 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 19:59:25 ID:xyghd8DO]
ほとんどの場合ゲームで重要なのはGraphics2Dでどう描画できるかというより、
Graphics程度の低レベルAPIでもいいからどれがアクセラレーションきくかどうか、
速度的なものやメモリ使用量把握だからねぇ

ところでGraphics2Dでそろそろ加算合成実装して欲しいんだがすばらしく放置だよな

そもそも基本についてはSunのマニュアルで代替分かると思う


115 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 20:35:51 ID:CGEh3W0j]
Java2Dに関して言えば、VolatileImageは、まだほとんどの環境で
透明、半透明が使えないので、事実上まともなゲーム制作には使えない。。。
createCompatibleVolatileImageメソッドでTransparency引数が
指定できるが、定義だけでまだ実装されてない。。。
つまり、BufferedImageを使うしかない。これへの描画メソッドに
アクセラレーションが効いてるのはない。。。

116 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 20:40:29 ID:xyghd8DO]
>>115
5.0からつかえるようになったけど?

117 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 20:43:08 ID:ohNVp0t4]
VolatileImageからVolatileImageへ上書きすると透明じゃなくなるバグって無かったっけ?

118 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 20:45:55 ID:xyghd8DO]
それは1.4.2まで



119 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 20:48:17 ID:xyghd8DO]
あと描画元がBufferedImageでピクセルフォーマットが同じ場合
あるスレッショルドを超えると内部でVolatileImageにして転送してくれる
この設定値を0にするのがまず基本

5.0からはこの動作範囲が広いようだ
つまり、最適化されてないアプリだと高速化する可能性あり
1.4.2までにチューニングしてると速度向上は一切なし

5.0で画像周りの速度が速くなったというやつは大概設定ミス

120 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 21:36:17 ID:CGEh3W0j]
>>116
使えない。5.0でも使えない。
どの環境(OS)で使えたのか教えてくだされ。

121 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 21:40:12 ID:CGEh3W0j]
>>119
この設定値を0にするのがまず基本、とは?
設定値とは何を指してるのか?
具体的に教えてくだされ

122 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 21:56:41 ID:xyghd8DO]
まずVolatileImage>VolatileImageでの透過転送は可能
1.4.2まではムリ
5.0から追加されてるメソッド使うからね
Windowsで確認済み

スレッショルド指定はSunのドキュメントにも書いてある

これをメインクラスのstatic初期化にいれておけ
System.setProperty("sun.java2d.accthreshold","0");
標準出力に出るので、それを設定してあるアプリかどうかはすぐに分かる

ちなみに0とは描画回数が0という意味
画像をBufferedImageにロードした段階でVRAMにも転送することを現す
1なら最初に描画しようとしたときにまずVRAMへ転送、そしてVRAM>VRAMを処理する

この辺はすべてSunの日本語資料にある

123 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 22:10:48 ID:CGEh3W0j]
>>122
自分もWindowsXpなのだけど、VolatileImage を使うと
アルファ値0のピクセルが真っ白になってしまう。。。
列挙された全GraphicDeviceの全GraphicConfigurationから得る
VolatileImageのTransparencyタイプが、全てOpaqueになってる。。。

本当にWindowsでValatileImageの透明機能が使えたのですか?

124 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 22:44:05 ID:xyghd8DO]
そのだめだったコードかいてみそ

125 名前:名前は開発中のものです。 mailto:sage [2005/12/11(日) 22:51:58 ID:CGEh3W0j]
>>124
GraphicEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gd.getDefaultConfiguration();
VolatileImage image = createCompatibleVolatileImage(640, 480, Transparency.TRANSLUCENT);

これで得る image は、半透明でないのです。。。
gd、gc を列挙させて、その全てから得るimageも半透明でないです。。。


126 名前:名前は開発中のものです。 mailto:sage [2005/12/12(月) 00:52:54 ID:5lGPHviO]
Transparency.TRANSLUCENTはDirec3Dを有効にしないと駄目だったはず
BITMASKでの透過ならいける


127 名前:名前は開発中のものです。 mailto:sage [2005/12/12(月) 00:53:29 ID:5lGPHviO]
そもそも半透明はアクセラレーションきかないので注意ね

128 名前:名前は開発中のものです。 mailto:sage [2005/12/12(月) 01:05:16 ID:5lGPHviO]
ってやってみたらアルファブレンドが有効でちゃんと描画された

たぶんロードのところミスってると思うよ




129 名前:名前は開発中のものです。 mailto:sage [2005/12/12(月) 01:12:31 ID:5lGPHviO]
ちなみに
ImageIOでロードしたアルファつき画像をそのまま128個描画

 8fps

ちゃんと設定したVolatileImageとBufferedImageが同じで

 50fps

となった

アルファつきならVolatileImageにおく必要はないね


130 名前:名前は開発中のものです。 mailto:sage [2005/12/12(月) 01:17:38 ID:4tfiFb5f]
System.setProperty("sun.java2d.accthreshold","0");
としておけば普通にBufferedImageでOKってこと?

131 名前:名前は開発中のものです。 mailto:sage [2005/12/12(月) 01:26:16 ID:5lGPHviO]
ついでなんで
単なる透過を描画した場合

フルスクリーンモードならTRANSLUCENTでもBITMASKでも
スプライト2048個描画で60fps維持

スプライトサイズは64*64で
画面モードは640*480にしたときの場合ね

オンボードビデオでこれなのでnVIDIAとかATIとかのそれなりのつめば余裕で超えるかと
通常モードはDirectDrawのラッパだと考えればどれが速いかとか分かりやすいと思う


132 名前:名前は開発中のものです。 mailto:sage [2005/12/12(月) 01:28:24 ID:5lGPHviO]
>>130
ほとんどの場合はそういうこと

あくまでも描画先をVolatileImageで描画元はBufferedImageで
VRAMにおくかどうかはインテリジェントに任せるというのがJavaらしいかな
VRAMにおく優先順位とかもあるので頻繁に描画しないやつはそれを抑えておくといい

この方法ならVRAM容量が多ければ加速しやすいとかそういう感じ
昔AGP登場時の思想にあったやつね


133 名前:名前は開発中のものです。 mailto:sage [2005/12/12(月) 16:21:39 ID:xzlsw/bc]
Javaでゲームを作れという課題がでたんですが、どんなのが簡単だとおもいます?
行数は400以上&対戦ゲーム&Swingというのが条件です。
既存のゲームでなるべく参考資料が沢山あるものが良いのですが・・・

アイデアゲームは自分のスキルや時間的制約から作る自信が無いですorz

134 名前:名前は開発中のものです。 mailto:sage [2005/12/12(月) 16:57:06 ID:5lGPHviO]
ブロック崩しやインベーダーのようなSTGとか

Swingを使えという時点でたぶんそんなレベルじゃない気がする
マルバツゲームとかもっと単純なの

最低自分が何を作りたいかだけはきめてください

135 名前:名前は開発中のものです。 mailto:sage [2005/12/12(月) 17:05:04 ID:6Xf+w43J]
>>133
その条件なら特に苦にならんだろう
テンプレあたりに行って資料が多そうなの探せばいんじゃね?

136 名前:名前は開発中のものです。 mailto:sage [2005/12/13(火) 07:26:14 ID:lGjUBPOJ]
>>134
12月末までという期限付きなので力量に合わないのに手を出したら怖いなと。
そのためそこそこボリュームがあって簡単に作れるゲームをきいてみたいと思ったわけです。
ちなみにブロック崩しモドキ(ボールをブロックに当てたら壊れる)や
シューティングモドキ(たまを発射させ物に当たったら壊せる)ぐらいは作った事ありますが、
昨日調べた結果によるとリアルタイムで進行させるものは対戦にするのは難しいとか。
それよりターン製のゲームの方が比較的楽でイイヨって書いてありました。。

>>135
つらつらとネットサーフィンしてみましたが400行足らずでも結構うまく作れるものですね、
どんだけのゲーム作れば良いのかと何か不安になってきましたorz

137 名前:名前は開発中のものです。 mailto:sage [2005/12/13(火) 12:23:28 ID:SA14+LJ/]
リアルタイムのほうが難しいかどうかは設計しだいかと
12月末ではあと2週間ですか
STGだと1面だけ開発するのも難しそうだ

138 名前:名前は開発中のものです。 mailto:sage [2005/12/13(火) 14:25:19 ID:ULQaYiRM]
>>136
とりあえずとっとと着手しろって
ブロック崩しに対戦要素混ぜるとかでいいじゃん。
上下にバー作るとか。
ちょっと工夫するなら、画面半分に分けて上下にバー作って、
1P側の操作で左の下側バーと右の上側バーが同時に動き、
2P側の操作だとその逆。勝利条件をちょっと考えれば
これで十分対戦になるじゃんよ?



139 名前:名前は開発中のものです。 mailto:sage [2005/12/13(火) 18:22:53 ID:lGjUBPOJ]
2日で終わらせた人がいたもので、自分でも2週間あればと思っていたのですが・・
なんにせよ選ぶのは程ほどにし、
皆さんの意見を参考にしつつ今から寝ずに頑張ってきます。
他のレポートもあるのでつきっきりになるわけにはいきませんがorz
Thank you.




140 名前:名前は開発中のものです。 mailto:sage [2005/12/13(火) 18:25:21 ID:SA14+LJ/]
がんがれ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<296KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef