2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Javaでゲーム作成 2本目

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

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

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

2 :名前は開発中のものです。:2005/10/27(木) 09:45:06 ID:dzSvRQXE
板内関連スレ
Javaでゲーム作る話してるキチガイがいるよ(藁
ttp://pc8.2ch.net/test/read.cgi/gamedev/1013953851/
JAVAアプリでゲーム
ttp://pc8.2ch.net/test/read.cgi/gamedev/1033926010/
【JAVA】2Dアクションゲームを作る【初級】
ttp://pc8.2ch.net/test/read.cgi/gamedev/1094602659/

Javaテクノロジ
ttp://jp.sun.com/java/
ttp://java.sun.com/j2se/1.5.0/ja/download.html (Ver5.0のJDK入手はここから)
ttp://java.sun.com/j2se/1.4.2/ja/download.html (Ver1.4.2)

EclipseWiki (開発環境Eclipseについて)
ttp://eclipsewiki.net/eclipse/
Javaでゲーム作りますが何か?
ttp://javagame.main.jp/

3 :名前は開発中のものです。:2005/10/27(木) 09:46:29 ID:dzSvRQXE
関連スレ補完
JAVA シューティング作成委員会
ttp://pc8.2ch.net/test/read.cgi/tech/1062310183/

【徹底討論】Java3Dの可能性について考える
ttp://pc8.2ch.net/test/read.cgi/tech/1033703640/

[立方体]  JAVA3D  [直方体]
ttp://pc8.2ch.net/test/read.cgi/tech/1092155318/

【質問】Java3D【相談】
ttp://pc8.2ch.net/test/read.cgi/tech/1120101050/

JavaでVCバリのゲーム開発可能?
ttp://pc8.2ch.net/test/read.cgi/tech/1068370977/

【Java】EZアプリ勉強しつつ作っていく
ttp://hobby7.2ch.net/test/read.cgi/appli/1075443374/

4 :名前は開発中のものです。:2005/10/27(木) 11:27:47 ID:ZZ7nMv5G
しばらく見ないと思ったら、落ちてたのか
1乙

5 :名前は開発中のものです。:2005/10/27(木) 16:01:39 ID:7S6We+lN
>1おつ。

これだけだとアレなんでPureJavaでゲームを開発する場合チェックすべきもの。

・描画の基本となるJava2D全般
・音楽のすべてはJavaSound
・描画のベースとなるGraphicsConfigurationとかJFrameとかBufferStrategy
・画像ロードにImageI/O
・入力のKeyEventやらListenerまわり
・時間管理にTimer方面
・ゲームに限らないが便利なコレクション関係。特にJ2SE5.0からは面白いものが追加されてるのでチェック
・J2SE5.0以上なら高速で高機能な排他制御にLock方面
・ハイスコアやリプレイ保存、データ読み込みなどにストリームのI/O方面。XMLも5.0からはXPathが標準ライブラリに入ったので便利


6 :ooo:2005/10/27(木) 16:30:12 ID:Wsa915hK
よぉ
ああああああああああああああああああああああああああああああああああ

7 :名前は開発中のものです。:2005/10/27(木) 16:38:06 ID:MMxzgP3l
Processing 1.0 (BETA)
http://processing.org/
でゲーム作りを始めてみましたが、面白いですよ。
JAVAについては何も知りませんでしたけど、簡単に作れました。
(Processing is an open source programming languageとか云ってますが、実体はJAVAなので問題無いですよね?)

ただ、BETAだとEclipseから利用する方法が分からなかったので、
あえてALPHAを使っています。
あと、音周りが工夫しないとダメですね。

SpringTower : Built with Processing
http://akimasa.s96.xrea.com/game/SpringTower/index.html
僕が作ったのはこんなモンですが、
ABA Games
http://www.asahi-net.or.jp/~cs8k-cyu/
(のProce55ingの項)
がとても参考になりました。

製作者側もお手軽で、遊ぶ側もお手軽で、アマチュアには良いんじゃないですかね。

8 :名前は開発中のものです。:2005/10/27(木) 18:31:56 ID:7S6We+lN
>>7
たしか出来上がるものはjavaのクラスファイルだが、言語そのものは違う

という微妙なラインだな

でもBASIC感覚ならProce55ingよりもっとわかりやすいライブラリが前スレで見た気がする

9 :名前は開発中のものです。:2005/10/27(木) 19:33:52 ID:Ng3zF12F
各種ラッパーライブラリ

JOGL(OpenGL) https://jogl.dev.java.net/
  JSR-231 beta 01 https://jogl.dev.java.net/servlets/ProjectDocumentList?folderID=4295&expandFolder=4295&folderID=2771

Lightweight Java Game Library(OpenGL, OpenAL) http://www.lwjgl.org/
sdljava(SDL) http://sdljava.sourceforge.net/

10 :名前は開発中のものです。:2005/10/27(木) 22:35:20 ID:w+M8OxUU
>>8
Proce55ingはJava Appletの一部を隠蔽しているだけだから
言語も同じと考えていいかと。
EclipseでPAppletを継承して作っているとなおさら。

11 :名前は開発中のものです。:2005/10/27(木) 23:10:51 ID:7S6We+lN
でも細かいこと出来ないし、ゲーム用ってのは無理があるかと
まだベータだったような気もする

それくらいだったらstatic importを前提とした
http://shin.cside.com/product/shingl3/index.htm
のほうが楽だね

まだstatic importで使える命令は少ないけど、
ページフリッピングとイメージ描画、BGM、SE、入力がBASICと同じように使えるし、
Proce55ingの時間管理のように最初にフレームレート指定するだけで全自動

だらだらと
PUTSPRITE( image, x, y, w, h);
FILL( x, y, w, h, color) ;

とかBASICと同じように可能

J2SE5.0の新機能を割り切って使ったというのは面白い


12 :名前は開発中のものです。:2005/10/31(月) 23:39:48 ID:u6e5CoZ+
質問です。
ある画像image1を90度回転させてimage2に保存するにはどうしたらよいでしょうか?

13 :名前は開発中のものです。:2005/10/31(月) 23:56:08 ID:imBdURi1
ム板で質問した人?

基本的な考え方としては、新しい BufferedImage を作成して
そこから createGraphics()で Graphics2D コンテクストを取得する。
そこにオリジナル画像を AffineTransform で90度回転して描画、
んでファイル書き出し。

14 :名前は開発中のものです。:2005/11/01(火) 00:30:00 ID:9pR/2Iza
ここまで想像力のない質問を見るとさすがにムカつく

15 :名前は開発中のものです。:2005/11/02(水) 22:39:55 ID:l4YhQp0J
想像力と言うか知識があるかないかだと思う。要は知ってるか知らないか。

16 :名前は開発中のものです。:2005/11/02(水) 23:48:22 ID:DUZczgaE
>>15
業務系ではなくゲームの場合、少ない知識の組み合わせで目的の結果を得る想像力は大事だと思う。

17 :名前は開発中のものです。:2005/11/03(木) 02:58:58 ID:urWJhpS3
90度単位だったら普通は関数しらなくてもピクセル単位で回転できるよなぁ

18 :名前は開発中のものです。:2005/11/03(木) 06:40:04 ID:9Sm6/yeX
> ピクセル単位
Javaを覚え始めた頃、
Toolkit.getImage → PixelGrabber → MemoryImageSource
の流れはあまり簡単には思えなかった。catch しなきゃならない例外もあるしね。

WindowsでもDIB関係に戸惑ったし、ロジックはわかってるのに肝心な入出力
がらみのライブラリが未修得でイライラすることが良くある。

19 :名前は開発中のものです。:2005/11/03(木) 13:46:35 ID:urWJhpS3
昔はともかく今ならBufferedImageあるんで楽チンだと思うが
素でDIBつかうよりインテリジェントにラッピングしてくれる

20 :名前は開発中のものです。:2005/11/03(木) 14:05:31 ID:WOWA/OPZ
java・・・・と言うかプログラミング自体を勉強し始めた者なんですけど
javaで人工知能(チャットでよくある人口無能みたいなやつで入力
した単語に返答してくれるみたいな」)っぽいのつくれますか?
せっかく高校で習っているので勉強だけじゃなくてなにか役立てたいのですが・・・・

21 :名前は開発中のものです。:2005/11/03(木) 14:09:06 ID:urWJhpS3
アルゴリズムがしっかり自分で作れるなら作れる


22 :名前は開発中のものです。:2005/11/03(木) 14:16:55 ID:WOWA/OPZ
>>21
レスさんくすです。
ALは2次元配列までしか理解していませんが頑張って見ます

23 :名前は開発中のものです。:2005/11/03(木) 14:51:49 ID:yzYzVhNJ
2次元配列ってアルゴリズムなのか?

24 :名前は開発中のものです。:2005/11/03(木) 15:25:40 ID:rL8Q+mgG
データ構造だろ

25 :名前は開発中のものです。:2005/11/03(木) 15:30:20 ID:rL8Q+mgG
>>20
人工知能と人口無能じゃ大違いだが、とりあえず
Javaだから作れる、とか作れない、とかはない。
自然言語処理等の勉強をすれば色々な言語で作れる。


26 :名前は開発中のものです。:2005/11/03(木) 17:22:53 ID:MCCIxjg4
>>20
ttp://javagame.main.jp/index.html#minigame
にJavaで作ったサンプル例がある。

でもテキスト扱うのはPerlとかRubyの方が簡単だろうな。Javaだと無駄に難しそう。

27 :名前は開発中のものです。:2005/11/03(木) 17:27:23 ID:urWJhpS3
どの変が難しそうなんだろう・・・

28 :名前は開発中のものです。:2005/11/03(木) 17:27:41 ID:mPH84WWP
>>20
MyJxtaのソースの一部にEliza(人工無脳っぽいプログラム)
の機能があったと思う

Ruby向けだけど
ttp://book.mycom.co.jp/book/4-8399-1729-9/4-8399-1729-9.shtml

人工無脳ではないけどJava向け
ttp://www.amazon.co.jp/exec/obidos/ASIN/4339023876/249-1065135-4693961

29 :名前は開発中のものです。:2005/11/03(木) 17:56:04 ID:MCCIxjg4
>>27
正規表現の使い方がJavaだと面倒くさい

30 :名前は開発中のものです。:2005/11/03(木) 19:20:15 ID:urWJhpS3
面倒なことないやん


31 :名前は開発中のものです。:2005/11/04(金) 22:15:45 ID:Kyfrg/8g
オブジェクト作ったりしないといけないしPerlの方が楽だと思うけど

32 :名前は開発中のものです。:2005/11/04(金) 22:28:24 ID:SFh7BoY4
確かにちょいちょいした作業ならperlも便利だが
ちょっと大きなプログラムになるとデバッグ時間が指数関数的に増えるし
半年も経つと自分で書いたソースでも完全意味不明に見えるのは困るな

33 :名前は開発中のものです。:2005/11/04(金) 22:52:05 ID:qJSgT1NL
昔のWebアプリはPerlが主流だったが、掲示板やチャット程度ならともかく、
業務アプリみたいな巨大な物をメンテナンスすると死にそうになる。
最近のPerlは知らんが。

34 :名前は開発中のものです。:2005/11/04(金) 23:16:25 ID:BPGzYPZF
しかし、Javaはあとからあとから新しいWebアプリフレームワークだの
なんだの、いろいろ出しすぎw

35 :名前は開発中のものです。:2005/11/04(金) 23:20:17 ID:ukNdIpNn
ライブラリなんて必要とする携帯にあわせて選択すればいいだけだろ。
得意不得意はそれぞれあるし、目標とするものが違うからな。


36 :名前は開発中のものです。:2005/11/05(土) 08:59:55 ID:nyk5I5ZL
>>34
Javaは最先端の実験言語みたいだな。大学の研究でよく使われるからかも。

37 :名前は開発中のものです。:2005/11/05(土) 13:00:36 ID:3XtwtUcI
>>36
大学の研究でよく使われるのもあるけど、
Apacheを筆頭に無数のオープンソース開発者がいるからだと思うぞ。

38 :名前は開発中のものです。:2005/11/05(土) 14:22:37 ID:bFW/1MqR
Apacheのプロジェクト数は異常なくらいだな

問題はこのスレに関係があるライブラリはなさそうなことくらいか

まぁApache XML-RPCは目的によっては使えるか

39 :名前は開発中のものです。:2005/11/05(土) 15:12:24 ID:JuIHCGWg
みんなどのくらい非ネーチブパッケージ使ってるのかな。
シミュレーションとかちまちましたデータ中心ならXMLデータバイディングとか
かなり使えそうとか思うけど。

自分の場合はついついインタプリタ仕込む癖がある。

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

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


41 :名前は開発中のものです。: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 :名前は開発中のものです。:2005/11/15(火) 23:33:03 ID:Wrh6FbhN
>>42

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


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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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



64 :名前は開発中のものです。: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 :名前は開発中のものです。:2005/11/26(土) 23:04:49 ID:wK3zX5BN
>>63
最初はCっぽくなるかも知れないけどやってみる。

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

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

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


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

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

78 :名前は開発中のものです。: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 :名前は開発中のものです。:2005/12/06(火) 20:43:53 ID:m90gA8zy
回転をセットするのは描画先のほうだよ?
すでに描画されてるのはどうしようもない


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

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

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

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

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

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

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

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

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

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


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


93 :名前は開発中のものです。: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 :名前は開発中のものです。:2005/12/09(金) 01:58:21 ID:DR3+EYk2
テキストリソース(RPGの会話文など)ってどう扱うべきでしょうか?
XML? properties?

95 :名前は開発中のものです。: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 :名前は開発中のものです。:2005/12/09(金) 12:27:40 ID:wi5fEo9o
自分が扱いやすいものでいいかと

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


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

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

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

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


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

Graphics2Dは知らないお^^;

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

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

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

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

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

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

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

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

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



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


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

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

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

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

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

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



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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

125 :名前は開発中のものです。: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 :名前は開発中のものです。:2005/12/12(月) 00:52:54 ID:5lGPHviO
Transparency.TRANSLUCENTはDirec3Dを有効にしないと駄目だったはず
BITMASKでの透過ならいける


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

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

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


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

 8fps

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

 50fps

となった

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


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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

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

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




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

141 :名前は開発中のものです。:2005/12/13(火) 23:40:37 ID:/KZUefCp
ジョイスティックを扱うには、
JNIとJavaCommunicationAPI、どっちが良いのでしょうか?
前者は高級な機能を使えるけど環境依存、
後者は低級な所からくみ上げる必要があるけど、WinとSunで動く、
という感じなのでしょうか?

142 :名前は開発中のものです。:2005/12/13(火) 23:43:17 ID:msXDQ5aj
>>141
https://jinput.dev.java.net/はどう?

143 :名前は開発中のものです。:2005/12/13(火) 23:48:38 ID:Ngny3SWu
400行のゲームなら、その先生が期待してるのはテトリスあたりかな。
対戦要素を考えるならボンブリスとかか、俺ならそこらへん狙う。と遅レス。

144 :名前は開発中のものです。:2005/12/14(水) 00:08:34 ID:8d4z5wIB
>>142
コミュニティ開発のAPIですか。
まだライセンスを確認してないけど、
頒布の問題が発生しなければいいかもですね。

145 :名前は開発中のものです。:2005/12/14(水) 00:52:23 ID:P5dHJreb
どのライブラリにしろJNIで組まれてる

146 :名前は開発中のものです。:2005/12/18(日) 01:18:18 ID:ART67WNv
フルスクリーンにしようと思うのですが、環境はどんなのが良いのでしょうか?
640x480の16bitでいいかなと思うのですが、Win高級機以外でも32bitって使えますか?

147 :名前は開発中のものです。:2005/12/18(日) 01:43:27 ID:9q2jSVUj
つーか、Win以外は解像度変更あきらめたほうがいいかと
そしてWinでも32bpp出せない環境はある


148 :名前は開発中のものです。:2005/12/18(日) 01:59:42 ID:ART67WNv
>>147
Win以外では無視されるといことでしょうか?
では16bpp(bit per pixel?)にしておけば不具合が起きることもなさそうです。

BIT_DEPTH_MULTIというのもあるのですがこれは使えますか?
スクリーン版JISAutoDetectみたいなものなのかとJavaDocを見て思ったのですが
これといった情報がネットにありませんでした。

149 :名前は開発中のものです。:2005/12/18(日) 02:03:11 ID:9q2jSVUj
指定なしという感じでは?
Linuxでやったときは画面サイズ変更が不可能だったし、ウインドウモードとフルスクリーンモードと作ったよ

内部描画と出力描画を分けるとかが吉かも
速度大幅に低下するけど

あと使用可能な画面をリストアップして処理するのが一番だね

150 :名前は開発中のものです。:2005/12/18(日) 02:14:24 ID:ART67WNv
> 使用可能な画面をリストアップして処理する
ここをもう少し詳しく教えていただけないでしょうか?
device.getDisplayModes();で最高値のモードを探す感じですか?

151 :名前は開発中のものです。:2005/12/18(日) 13:02:30 ID:9q2jSVUj
最高というか自分がやろうとしているモードに最も近いのを探すといった感じかな

152 :名前は開発中のものです。:2005/12/19(月) 20:35:40 ID:o8rpM/SY
グラフィックなどは置いといて、
タクティクスオウガみたいなSLGのシステム作るのに
おまいらだったらどれくらいかかるもんですか?

153 :名前は開発中のものです。:2005/12/19(月) 20:49:21 ID:Xlt1mg4V
時間がかかりそうなものは最初に作ろうとしない
自分がまず完成できるものを選ぶ

のが普通では?
最初から風呂敷広げて崩壊していくのを何度見たことか

たいしたことのないものであってもちゃんと快適動作してバグもないように完成させる、
というのはそれなりに大変なもの

154 :名前は開発中のものです。:2005/12/19(月) 22:23:05 ID:GbGeAi3t
フルスクリーンでゲームをつくってきたんですが、
デバッグがあまりに手間でウィンドウモードに変えたくなってきました。

public Graphics2D getGraphics()
のようにして、
スクリーンマネージャが
getFullScreenWindowからえたWindowから、
BufferStrategyを返して、
それから、Graphics2Dを返して描画するようにしているんですが、
ここから楽にウィンドウモードに切り替えるすべはありますか?

155 :名前は開発中のものです。:2005/12/19(月) 22:52:44 ID:Xlt1mg4V
ウインドウモードでなんでgetFullScreenWindowがでてくるんだ?



156 :名前は開発中のものです。:2005/12/19(月) 23:30:01 ID:vG/cR0LR
いろいろ悩んだ結果たどり着いたのはStrutsだった。
なるほど、これならMVCになる。この感動は衝撃的だった。
おわり。

157 :名前は開発中のものです。:2005/12/20(火) 00:07:37 ID:pKpEoU3U
Strutsでゲームつくったのか?

158 :名前は開発中のものです。:2005/12/20(火) 00:29:32 ID:WpmlUq/X
画面切り替えの仕様がぜんぜんかっこよくならなくて悩んでいたら
Strutsの例のfowerdが頭に浮かんだ。そんだけ。
メインルーチンの戻り値がまさかシーンだったとは・・・みたいな。

159 :名前は開発中のものです。:2005/12/20(火) 02:15:06 ID:FfJ0Icl6
それゲーム内での遷移のスクリプトの話なだけだろ
AVGとかきまったものでしかつかえんよね


160 :名前は開発中のものです。:2005/12/20(火) 23:06:36 ID:WpmlUq/X
うんにゃ、RPGパートからシューティングパートに切り替えるにしてもこの手法でいけるよ。


161 :名前は開発中のものです。:2005/12/20(火) 23:12:27 ID:FfJ0Icl6
その程度のシーン切り替え・・・

162 :名前は開発中のものです。:2005/12/20(火) 23:19:12 ID:WpmlUq/X
ん?流しっぱなのかスタックなのかの指定もこの方法なら簡単なんだけど・・・

163 :名前は開発中のものです。:2005/12/21(水) 00:10:55 ID:38cOblp2
>>153
たいしたことのないものは、そこら辺にソースが転がってるから、
作る気が起きないんだよね。
かといって、ちょっとレベルや規模を広げると、1人じゃお手上げになるし。


164 :名前は開発中のものです。:2005/12/21(水) 00:12:34 ID:2Odzg4dt
たとえばぷよぷよとかテトリス、コラムスなんて作るのは簡単

でも、しっかり音出したり演出出したりバランス取りしてちゃんとしたものを作る
という段階まではなかなか難しい

165 :名前は開発中のものです。:2005/12/21(水) 20:44:15 ID:+HySSU2I
そこそこできたら飽きてしまって次の作りたくなる

166 :名前は開発中のものです。:2005/12/21(水) 21:12:53 ID:2Odzg4dt
その差が途中で投げ出すやつか、それとも同人屋やソフト屋としてちゃんとやっていけるかどうかの差

167 :名前は開発中のものです。:2005/12/23(金) 20:23:05 ID:3FOPkpSW
Javaで作ったRPGでソース公開してるサイトありますか?
もしくはセリフの表示のやり方の紹介とか

168 :名前は開発中のものです。:2005/12/23(金) 20:57:04 ID:/tlDw98+
それ難しくはないだろ

どの変が難しいと思うんだ?


169 :名前は開発中のものです。:2005/12/23(金) 21:11:56 ID:PPOyiaLP
>>167
テンプレ

170 :名前は開発中のものです。:2005/12/24(土) 11:52:15 ID:iqSdFGcF
だれかJava3Dでゲーム作ってる人いない?

171 :名前は開発中のものです。:2005/12/24(土) 12:56:39 ID:gnp/5lgI
1年位前に触ったときJOGLならともかくJava3Dものすごく遅くてお話にならなかったけど
DirectXの実装のほうでね



172 :名前は開発中のものです。:2005/12/24(土) 16:05:43 ID:twljoP+/
>>168-169 レスサンクス
ドラクエみたいに新しい行が挿入されたら
既に表示されてた行が上にずれて1番上の行が消えるとか

主人公の名前を変えられるゲームにおいて
メッセージ中で表示するときはどうしたらいいかとか

ファイルからセリフを読み込むにはとか

テンプレ見て勉強します

173 :名前は開発中のものです。:2005/12/24(土) 16:31:00 ID:Al8Kj3xL
>>172
> 既に表示されてた行が上にずれて1番上の行が消えるとか
Clipが神だと分かったあの日の夜

174 :名前は開発中のものです。:2005/12/24(土) 16:37:56 ID:gnp/5lgI
それ文字列をスクロールさせるのではなくて
BufferedImageで文字列のバッファ用意して毎フレームブリットしたほうが楽


175 :名前は開発中のものです。:2005/12/26(月) 08:43:49 ID:zSwx4yvQ
>>174
勉強になります
dd

176 :名前は開発中のものです。:2006/01/07(土) 15:15:38 ID:EFX7v943
Javaでタスクシステムって作れる?

177 :名前は開発中のものです。:2006/01/07(土) 18:00:27 ID:yOZ6b1cq
オブジェクト指向なんだから普通はポルモルフィズム(多態性)でOK

178 :名前は開発中のものです。:2006/01/15(日) 10:23:57 ID:53jl8YVS
SWTのImageとGCをつかってスプライトを描画しているんですが、
左右反転、上下反転をする際に、
setTransform(...)
で、trans.scale(-1,1);
などとすると複数のスプライトを描く際に実用に耐えられないくらい重いです。
AWTのdrawImageみたいに、それだけで左右、上下反転できないのでしょうか?
srcX,destXを反転させれば良かったAWTにたいし、
SWTだとwith,height指定なので引数に負数を渡すと実行時エラーになってしまい、それだけではできないようにみえます。
ご存じの方、おられましたら宜しくお願いいたします。

179 :名前は開発中のものです。:2006/01/15(日) 11:12:29 ID:aMKMqoWr
SWTはEclipse以外では使わないこと
が正しいと思う

PureJavaのほうがまともな実装ってどういうことさ
って場面がよくある


180 :名前は開発中のものです。:2006/01/15(日) 20:09:28 ID:Vrds102b
SwingでJava2D使おうぜ

181 :178:2006/01/15(日) 22:49:28 ID:53jl8YVS
>>178,>>179
なるほど、ありがとうございます。
SWTをつかってアニメーションエディタとゲーム自体を一緒に作っていたのですが、
考え直した方が良いみたいですね。


182 :名前は開発中のものです。:2006/01/15(日) 22:52:15 ID:53jl8YVS
う、間違えました。
>>180
Swingの方がやはりいいんですね。SWT自体は割と扱いやすいとは感じているのですが、
最近は情報も出てこず考え直したりもしています。
SWTを使うと局所的なところでWin32APIなどを呼べるのも魅力なのですが。
思想には反しますけれど。

183 :名前は開発中のものです。:2006/01/16(月) 00:14:43 ID:DTLttG/1
PureJavaとはいえJava2DってDirectX使われてるの知ってる?
情報量は多いしものによっては速度面でも結構いける

1フレームあたり1000個のスプライトとか余裕


184 :名前は開発中のものです。:2006/01/17(火) 03:10:21 ID:9917DXoA
JAVAでカードゲームを作ろうと思っているのですが、
某サイトに開発ツールJAVA2 SDK 1.3と書いてあるのですが、
このスレのテンプレには(Ver5.0のJDKとVer1.4.2) しかなく
どれをDLすればいいのか分かりません
どなたか教えてもらえないでしょうか?


185 :名前は開発中のものです。:2006/01/17(火) 06:08:31 ID:Om3jnpEH
>>184
ハァ?
質問の意味が読めん

186 :名前は開発中のものです。:2006/01/17(火) 06:37:28 ID:1vDzG9rV
>184-185
エスパーちからを発揮してみると、参考にしようと思ったサイトが
1.3だったので、1.3が良いと思ったのではなかろうかと。
1.4か5.0でやってみたら?ほとんどの場合、動くと思うよ。>184

187 :名前は開発中のものです。:2006/01/17(火) 14:12:13 ID:jNVA85J7
>>185-186
日本語がおかしくてすみません
参考にしようと思ってるサイトでは1.3と書いていて
1.3を探したけど、1.4か5.0しかなくて困ってます。
それから1.4と5.0の違いが分からなくて
どっちをDLしていいのか分かりません
違いを教えてもらえないでしょうか?
ちなみにiアプリのゲームを作ろうと思ってます

188 :名前は開発中のものです。:2006/01/17(火) 14:22:08 ID:4NyPfQ7d
ここではJava2SEの話題がメインなので
J2MEの話題はプログラム技術板に専用スレがあったと思うのでそちらのほうがいいかと。

そして動作保障している1.3を使うのが吉。
互換性は細かいタイミングが必要なところではチューニングすればするほど問題が出やすいし。

J2MEといってもiアプリは独自の層があついのでいわゆるJavaという豊富な標準API
を使って開発するという感じはないと思われ。

189 :名前は開発中のものです。:2006/01/17(火) 17:16:07 ID:jNVA85J7
おお!?
そうなのですか
全然知りませんでした^^:
すみませんでした
そっちに行きます

190 :名前は開発中のものです。:2006/01/18(水) 06:35:27 ID:kAS6/zeP
すみませんCPad for Javaについて質問です

CPad for Java 2.31
にてAntが使えるというので、以下のページのやり方で設定してみました
ttp://javacafebreak.tripod.com/document/cpad_tips/cpad_ant.html

このページには「CPadで、Antを実行するには、『F6』キーを押すか、メインメニューの『実行』→『Ant』を選択します」
とかかれているのですが、『F6』キーを押しても何も起こらないし、
「メインメニューの『実行』→『Ant』」などというメニュ項目も見当たりません

CPadで、Antを実行して、さらにエラーメッセージをCPad上のメッセージウィンドウで表示させている人たちは
どうやっているんでしょう
(DOS窓でAntの実行を単独実行するやり方はわかっているのですが、それだとCPadのメッセージウィンドウに表示できないので不便なんです)
環境はWindows2000 JDK1.5.0_06 です

191 :名前は開発中のものです。:2006/01/18(水) 10:53:20 ID:c2N1wZsa
もしかして普通のJavaスレと勘違いしてる?

192 :名前は開発中のものです。:2006/01/23(月) 17:40:02 ID:kW9KAIGh
サーブレットとかJSPでゲームを作るのは無理ですか?

193 :名前は開発中のものです。:2006/01/23(月) 17:48:15 ID:yJIlIQCh
WEBアプリのゲームはあるから無理ではないけど
別にたいした仕組みが必要になるわけでもないと思われ

194 :名前は開発中のものです。:2006/01/23(月) 22:17:38 ID:/EcVc25a
シューティングでインタープリターをつくろうと思ったのですが
文法をどうやって決めればいいのか、どう実行させればいいのか
いまいち想像できません。
敵の出現まではできそうですが、敵の弾の設定(どんな弾を、いつだすか)を
インタープリターでどう表現したらいいのでしょうか?

195 :名前は開発中のものです。:2006/01/23(月) 22:27:55 ID:I0QlWZ4d
>>192
WEBブラウザで行うCGIゲームライクなものなら当然可能。
というか、漏れ自身が現在進行形で作成中。

196 :名前は開発中のものです。:2006/01/23(月) 22:46:33 ID:tL3TpBsR
>>194
なんか設計に悩んでるっぽいことはわかった。
その調子でがんばれ。

197 :名前は開発中のものです。:2006/01/23(月) 22:49:50 ID:yJIlIQCh
>>194
まずは敵のクラス内で処理してみれば?
それを外に出したほうがいいか、ださないほうがいいかは案件しだい

198 :名前は開発中のものです。:2006/01/24(火) 14:41:32 ID:vo2dZIRF
インタープリターよりも簡単なコードジェネレータの方がいいんじゃない?

199 :名前は開発中のものです。:2006/01/26(木) 15:59:14 ID:Pd3Qgsdn
格ゲーで斜めジャンプをさせたいんだけど、上キー+右キーでやらせるにはどうしたら良い?

以下制作中のソース。
public void keyPressed(KeyEvent e){
 int K = e.getKeyCode();
 if(K==KeyEvent.VK_UP) {
  st = 8;
  KeyAction();
 }else if(K==KeyEvent.VK_DOWN){
  st = 2;
  KeyAction();
 }else if(K==KeyEvent.VK_RIGHT){
  st = 6;
  KeyAction();
 }else if(K==KeyEvent.VK_LEFT){
  st = 4;
  KeyAction();
 }
 repaint();
}

200 :名前は開発中のものです。:2006/01/26(木) 16:52:43 ID:ITPJnSj3
>>199
まず根本的なことからなおしましょう

キーのイベントで処理は入れないように

メインループでのみ処理するようにしてください
イベントではフラグの上げ下げのみで

201 :199:2006/01/26(木) 23:31:16 ID:Pd3Qgsdn
>>200
サンクス。できるようになりました。

202 :まほろば ◆BmUbLWewsM :2006/01/28(土) 18:36:32 ID:K+4gOIY6
いやーこのスレは役にたつなー。。
ところで、classファイルからソースコードを盗まれないようにするにはどうしたらいいんでしょ。。


203 :名前は開発中のものです。:2006/01/28(土) 18:42:43 ID:u3ZzJuZS
正直それはあきらめろ

クラスローダ自作したところで実行中のメモリのぞかれれば意味なし
nproではじくとかやると誰も使うやつはいなくなるぞ

ネイティブバイナリでもコンパイラの癖とあたりつければそれなりに追えるんだし・・・とわりきれ
その分開発効率がいいんだからガンガンものづくりに専念しなさいといいたい

オンラインゲーなら毎日こまめにクラスを再配布していれば大丈夫かと


204 :まほろば ◆BmUbLWewsM :2006/01/28(土) 21:29:17 ID:K+4gOIY6
>>203
実行中のメモリのぞかれれば意味なし
そんな事出きるの?ソースは?
やろうと思えばできるとか妄想でつか?

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

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

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

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

208 :まほろば ◆BmUbLWewsM :2006/01/28(土) 23:57:58 ID:K+4gOIY6
>>207

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

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

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

212 :まほろば ◆BmUbLWewsM :2006/01/29(日) 13:24:43 ID:LX0lKjST
まったくだなww

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

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

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

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


216 :名前は開発中のものです。:2006/01/29(日) 17:57:12 ID: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 :名前は開発中のものです。:2006/01/29(日) 21:48:41 ID:qPM3IQVC
正男ってjava?

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

219 :名前は開発中のものです。:2006/02/05(日) 00:25:12 ID: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 :名前は開発中のものです。:2006/02/05(日) 00:52:34 ID:NFbwVJ0F
フルスクリーン使ってるならSwingのイベントモデルにはこだわらないのが普通
BufferStrategyってのをしらべてごらん

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

231 :名前は開発中のものです。:2006/02/05(日) 17:31:23 ID:XoC15JKP

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

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

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

うううーーーん

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

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

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

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

233 :名前は開発中のものです。:2006/02/05(日) 19:35:20 ID:XoC15JKP

>>232

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

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

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



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

使い方がおかしいかと

235 :名前は開発中のものです。:2006/02/05(日) 19:48:54 ID:XoC15JKP

>>234

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

249 :名前は開発中のものです。:2006/03/15(水) 01:15:11 ID:cXOEjtfT
保守

250 :名前は開発中のものです。:2006/03/18(土) 15:46:10 ID:bpOUjL+k

良スレですね。


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



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

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

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

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

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

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


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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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


285 :名前は開発中のものです。:2006/05/07(日) 00:14:23 ID: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:2006/05/07(日) 00:27:33 ID:W2WiM6Ar
書き忘れていました。
1)では決まったフレームをフルスクリーン指定してます。

device.setFullScreenWindow(frame);



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

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

288 :285:2006/05/07(日) 02:57:40 ID:W2WiM6Ar
>287

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

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

>1>2>1ってこと?

そうです。

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

290 :285:2006/05/07(日) 14:11:36 ID:W2WiM6Ar
>289

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

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

291 :名前は開発中のものです。:2006/05/07(日) 14:15:43 ID: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 :名前は開発中のものです。:2006/05/07(日) 14:17:41 ID:5a9PuC3k
注意事項としてウインドウモードとフルスクリーンモードで
色深度が違う場合テクスチャキャッシュとか全部作り直してね

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

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

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

295 :285:2006/05/07(日) 15:33:08 ID: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 :名前は開発中のものです。:2006/05/07(日) 16:01:17 ID:5a9PuC3k
>このフレームの装飾の有効化と無効化を切り替えます。
>フレームが表示されていない時にだけ呼び出すことができます。

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

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


297 :名前は開発中のものです。:2006/05/07(日) 16:03:32 ID: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 :名前は開発中のものです。:2006/05/07(日) 16:06:27 ID:5a9PuC3k
あ、最後フルスクリーンモードで終わってるんでALT+F4な


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

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


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

としてごらん

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


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

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

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

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


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

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

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

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

それだけだよ


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

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

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

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


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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

これでおけ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

別に大変じゃないし


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

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

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

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

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

>>351
うん

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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

390 :名前は開発中のものです。:2006/06/27(火) 00:54:30 ID: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 :名前は開発中のものです。:2006/06/27(火) 10:22:35 ID:GJGczP/s
検索結果が多いということはわからないからネタにしているのかその逆なのか判断は難しいな
あとJava2Dはピクセル単位での処理だけじゃないから割と面倒だよ

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

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

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

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

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

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


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

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

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

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


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

397 :名前は開発中のものです。:2006/07/21(金) 19:29:07 ID:rgZqd6WV
>MIDIで音が変
サウンドバンクのせいじゃね?
http://www.new-arrow.com/~pc/game/soundbank/soundbank.html


398 :名前は開発中のものです。:2006/08/05(土) 23:05:31 ID: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 :名前は開発中のものです。:2006/08/06(日) 01:44:54 ID:kmAOB+5B
jwsのdemoみてみたけどfps表示されないね
昔見たような気がしたけど

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

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

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

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

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

ソース読んでないけど

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

GLCanvasの方使っときます。

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

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

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


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

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

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

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

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

BufferStrategyではなくて?

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

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

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

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


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

412 :名前は開発中のものです。:2006/10/05(木) 14:34:39 ID:6n2qO2al
ttp://gamdev.org/up/img/7757.lzh
15パズルを作ろうとしているんですが・・・
型の開始が不正と言われるんです・・・。

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

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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


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

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


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


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

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


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

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

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

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

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

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

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

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

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

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

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



448 :444:2006/10/13(金) 16:45:36 ID:vmtvD3zz
>445>446>447
そうします。ありがd

449 :440:2006/10/13(金) 20:32:45 ID:/GHVYosk
OSXのJava5.0って完成度高い?

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

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


452 :名前は開発中のものです。:2006/10/14(土) 00:08:50 ID:NtWi6K2U
これからはdirectxじゃなくてjoglやろうぜ
ttp://61.215.215.33/news.php?url=/weekly/kaito/097/kaito_097.shtml

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


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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

468 :名前は開発中のものです。:2006/10/27(金) 08:40:24 ID:xDAg32vR
こんな会社があったんですね。。。
ttp://www.cyberstep.com/recruit/story_1.html

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

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

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

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

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

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

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

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

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

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

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

477 :名前は開発中のものです。:2006/11/08(水) 22:10:52 ID:nrOch+Qr
http://www.youtube.com/watch?v=p9ytsfaGWts
これJavaでできてんの!?すごい

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

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

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

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


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

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

人柱キボン


481 :名前は開発中のものです。:2006/11/11(土) 11:19:53 ID:C9CXGr4F
ttp://www.puppygames.net
ttp://www.imilabs.com
ttp://www.agency9.com
ttp://www.mycgiserver.com/~movegaga/cosmictrip.html
ttp://www.chromethegame.com
ttp://www.hockeychallenge.se
ttp://home.halden.net/tombr/squareheads/squareheads.html
GroundFX
ttp://www.javagaming.org/forums/index.php?PHPSESSID=a66e7a361ddd1ea4a78a07a6d446a573&topic=4832.msg44039
ttp://www.oddlabs.com
ttp://www.ch-ee-ky.com/gr/index.html
ttp://www.jpct.net/paradroidz
ttp://www.jmonkeyengine.com
ttp://www.datadino.com/games/mightybubbles/
ホッケーのゲーム
ttp://www.wurmonline.com
ttp://www.gutenachtkopf.de
ttp://www.crystalsquid.com
ttp://www.runescape.com
ttp://www.puzzlepirates.com

482 :名前は開発中のものです。:2006/11/11(土) 11:45:18 ID:C9CXGr4F
>>481>>477に出てくるゲームのURLね
このうち、開発に役立ちそうなのは多分
http://www.imilabs.com
http://www.agency9.com
http://www.javagaming.org/forums/index.php
http://www.jmonkeyengine.com
http://www.gutenachtkopf.de

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

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

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

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

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

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

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

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

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

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

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

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

492 :名前は開発中のものです。:2006/11/12(日) 10:16:17 ID:5sSMIo0r
増えてきた本格派JAVAゲーム
http://61.215.215.33/news.php?url=/weekly/kaito/097/kaito_097.shtml

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

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

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




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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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


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

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

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

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

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

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

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

>>514
それだけじゃないけどね。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/2d/index.html

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


529 :名前は開発中のものです。:2006/11/18(土) 00:24:13 ID: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:2006/11/18(土) 16:22:37 ID:09nqBb7g
言われたところは大体やりました。ただTimer系がまだいまいちわかりません
サクっとでいいんで説明してもらえたら助かります。
あとJAVA2Dなら画像のパレット替えやフィルタリングもできるんですよね?

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

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

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

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

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

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

参考
ttp://www.nextindex.net/java/thread/waitnotify.html

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

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


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

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

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


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

537 :名前は開発中のものです。:2006/11/19(日) 13:54:05 ID: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 :名前は開発中のものです。:2006/11/19(日) 20:11:00 ID:8MYA5LfB
>>536
ttp://www.y-adagio.com/public/standards/tr_javalang2/jTOC.doc.html


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

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

以上

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

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

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

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

544 :名前は開発中のものです。:2006/11/26(日) 21:31:48 ID:vp/Awfnk
話題が無いがage
無限にステージが生成されるマリオっぽいゲーム「Infinite Mario Bros」
http://gigazine.net/index.php?/news/comments/20061126_infinite_mario/

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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


556 :名前は開発中のものです。:2006/11/29(水) 12:28:42 ID:E1GsFmbf
>>555
ラスター使うから同じじゃね?

557 :名前は開発中のものです。:2006/11/29(水) 13:28:43 ID:SF7yfmPu
>>556
ラスターは邪魔だよな……。
BufferedImageのような各種変換機能付きImageを作るなら、まず単純なフレームバッファ用意してその上位版という位置づけにして欲しかった。
BufferedImageも内部には直接画面に転送する32ビット配列(Win版は32ビットDIBSection+独自のアルファ処理?)持っているんだろうし。


558 :名前は開発中のものです。:2006/11/29(水) 13:56:50 ID:E1GsFmbf
ピクセルフォーマットが同じだとDDBで転送するだろうから速度は速いはず。
MemoryImageSourcreは任意のピクセルフォーマットで扱うとき大変じゃない?

559 :名前は開発中のものです。:2006/11/29(水) 16:21:44 ID:SF7yfmPu
>>558
いや、BufferedImageはWinではDIBSectionじゃないの。
一応「バッファ」もっているし、アルファ処理対応だから。
ラスター要求されたときのためにもメモリ上にフレームバッファが必要なはず。

そういえば、もう何年もWin32APIにしろJavaにしろフルカラー32ビットフレームバッファ(DIB/DIBSection/MemoryImageSource)の速度的な不満は感じたことないな。
ピクセル単位の処理はフルカラー32ビットで行うのが一番楽(1ピクセル1DWORD)だし描画時の性能も十分。


560 :名前は開発中のものです。:2006/11/29(水) 22:03:00 ID:r/0kDPlo
BITMASK指定でバッファ作ればDIBと思われる動作速度じゃないよ。

561 :名前は開発中のものです。:2006/11/29(水) 22:06:29 ID:r/0kDPlo
32bit単位でのアクセスは非常に遅い。

IntelCore等最新のCPU使っていてもVGAクラスになると処理速度が間に合わない。
2次キャッシュのサイズ等を考慮してぎりぎりといったところか。
QVGAなら32bitカラーはぎりぎりいけるかな。

PentiumM1GHz/Pentium42GHzクラスのマシンを動作対象にしようとすると
QVGA-16bppくらいしか選択肢はない。


562 :名前は開発中のものです。:2006/11/30(木) 17:09:31 ID:TUwNRJc1
>>559
そんな馬鹿な。2Dの画像転送速度で比較すると

BitBlt(WinGDI) > TransparentBlt(WinGDI) > AlphaBlend(WinGDI)
>> copyArea(Java2D) >> drawImage(Java2D)

なのですが。確かに小さい画面サイズならそれだけ差はなくなるけど
まともなゲームの画面サイズにすると、その遅さが浮き彫りに

563 :名前は開発中のものです。:2006/11/30(木) 17:14:30 ID:TUwNRJc1
>>559
失礼。フレームバッファの単語を読み飛ばしてました

564 :名前は開発中のものです。:2006/11/30(木) 18:04:42 ID:NwbsHHlf
Java2DアクセラレーションはDirectXも使っていたり複雑だけど
通常の矩形転送以外はアクセラレーションきかねぇんだよな
しかも頻繁にGCがおきやがる

JOGLアクセラレーションに期待
5.0だとDirect3Dモードはひどいし、OpenGLモードはもっとひどいし

565 :名前は開発中のものです。:2006/12/01(金) 10:00:02 ID:A/U7d6+m
JAVAって画像ファイル形式にGIFしか使えないってマジですか?

566 :名前は開発中のものです。:2006/12/01(金) 10:14:43 ID:LDltEBVY
マジではありません

どんな画像ファイル形式でも使えますよ

567 :名前は開発中のものです。:2006/12/01(金) 11:37:19 ID:LC+/aYM5
Java素人なのですがなんとなく作ってみました!
未だにアプレットの作り方すらよーわからんです。(^^ゞ
ttp://perfect-logic.net/SampleAction/


568 :名前は開発中のものです。:2006/12/01(金) 17:10:48 ID:IDdYaP0u
結構作りこんでありますねぇ。
某ゲームを彷彿させて萌えましたw
ところでシステムがアーケードっぽいのはなぜなんでしょう?

569 :名前は開発中のものです。:2006/12/01(金) 17:16:25 ID:LC+/aYM5
感想ありがとうございます〜。
アーケードっぽいのは私がアーケードゲーム好きだったので、なんとなくそれっぽくしただけなんです。(^^ゞ

570 :名前は開発中のものです。:2006/12/01(金) 23:36:55 ID:o1acqxN9
>>567
ちょっ
これで素人とは言わせないぞ
どこのプロだ?

571 :名前は開発中のものです。:2006/12/02(土) 00:01:56 ID:WxTjtQSm
>>570
こんばんわ。
ホントにJavaでものを作って公開するのは初めてですよ〜。
一度くらい仕事でJavaってみたいです。(^-^)
ちなみにゲーム歴は結構長いです。インベーダー時代からやってます♪

572 :名前は開発中のものです。:2006/12/02(土) 05:50:16 ID:8WxMFuvR
適当な推理だけど、
中堅ソフトメーカーの社員で、30代半ばから40台。
開発現場から管理職に昇進したものの、なんか以前より暇でムズムズしてる人。
最近のゲームは、はっきりいってぬるぽ杉て殺意すら覚えている。
乗り越える壁があってこそ面白いゲームと考えてる。
マーケティングにその事をこぼした際今時流行らないと一蹴され、このゲームを
作り始める直接のきっかけになった。


なんてね。

573 :名前は開発中のものです。:2006/12/02(土) 09:32:54 ID:wBc7JJHR
>>572
36〜40の割には顔文字やら音符やらずいぶん軽いな
そんなもんなのかね

574 :名前は開発中のものです。:2006/12/02(土) 10:03:44 ID:YSW2q7Ho
>>572

>乗り越える壁があってこそ面白いゲームと考えてる
は当たっているかもしれません。
後は…ちょっと違うかな。(^^;
最近のゲームは普通にやりますし、プログラム技術も見てますよ〜。
(素晴らしいの一言です。とても一人では作れるわけ無いですね)

このゲームを作ったきっかけは、昔ナムコの某塔を登るゲームの
二作目(ただ飛ぶだけのヤツ)にガッカリして、自分ならこう作る
かなぁとずっと思ってて、Javaでなんかグラフィックをいじる
ソフトを作ってみるかと思ったキッカケがあったときに
それを実行移した感じですね。
年々仕事がハードになるので、息抜きに作った感じです。(^^;

575 :名前は開発中のものです。:2006/12/02(土) 10:09:23 ID:OMk/eHpK
(^-^)とか(^-^)/とか(^-^)/~は30台でも使う人いるな


576 :名前は開発中のものです。:2006/12/02(土) 10:37:29 ID:TVj7JnE/
>>567
URL見てスルーしてたが結構凄いじゃん

577 :名前は開発中のものです。:2006/12/02(土) 11:10:40 ID:YSW2q7Ho
>>576
ありがとうございます〜。
周りにJavaのグラフィックやゲームフレームワークについて
お話できる人がいない上に、プレーしてもらえるゲーマーが
殆どいない状況だったので、ここに晒してみた感じです。w

578 :名前は開発中のものです。:2006/12/02(土) 13:20:11 ID:A/80wyG1
俺もURLみただけでアプレットかなんかかとおもってスルーしてた

単純でもDEMOがあるのがすばらしいな
結構DEMO作るの面倒なんだよな

579 :名前は開発中のものです。:2006/12/02(土) 16:34:43 ID:Q74I213y
>>567
初期化時の画面のこだわりは恐ろしいものがありますな。
ゲーム自体もかなり作りこんであるので、ちとびっくりしました。

>>574
「飛ぶだけのやつ」はシリーズでいうと3作目ではないかと。
2作目は「塔を降りる」やつではないかと。
スレ違い失礼。

580 :名前は開発中のものです。:2006/12/02(土) 16:49:36 ID:YSW2q7Ho
>>578
DEMOがあるとなんか昔のアーケードっぽくていいかな?
と思いました。(^^)
あと、最初の方の面は宝の出し方が故意にノーヒントにしてあるので、
デモプレーで分かるようにしてみました。

>>579
感想ありがとうございます♪

二作目はイシターでしたね。三作目が正解です。www
書き込んだ後に思い出して反省していました。(^^ゞ

581 :名前は開発中のものです。:2006/12/02(土) 17:06:52 ID:w9uTYl/6
>>567
JAVAなのにブラウザから直接はじめられないの?

582 :名前は開発中のものです。:2006/12/02(土) 17:12:22 ID:YSW2q7Ho
>>567
Javaの素人なのでアプレットの作り方とか知らないんです。
エントリポイントが違うくらいの違いであれば作ることができそうですが、
ちゃんと作る気力が無くて...orz

583 :名前は開発中のものです。:2006/12/02(土) 17:46:49 ID:w9uTYl/6
embedとかで埋め込めなかったっけ?
普通に作りこんであるだけに起動が面倒なのは惜しい。

584 :名前は開発中のものです。:2006/12/02(土) 17:50:35 ID:YSW2q7Ho
ほほぉ。そんなのがあるんですね。φ(.. )メモメモ
今度勉強してみようかな。

585 :名前は開発中のものです。:2006/12/02(土) 20:54:16 ID:A5BBW3gR
>>582
つゲームのパネル化&AppletとFrameへの貼り付け


586 :名前は開発中のものです。:2006/12/02(土) 21:53:27 ID:NlWQrbtL
マニフェストでMain-Classを指定してるみたいだからjarアーカイブの関連づけをjavaかjavawに関連づけてたらダブルクリックで実行できるだろ。

>>567
起動〜リソースの読み込み〜タイトル画面移行に掛かった時間を標準出力に吐いてくれたらうれしい


587 :名前は開発中のものです。:2006/12/02(土) 22:03:33 ID:g+e0ZUOZ
>>567
連投スマン
これってAWT?
-Dswing.aatext=true
でアンチエイリアスが効いてないような気がするんだけど・・・

588 :名前は開発中のものです。:2006/12/02(土) 22:23:32 ID:YSW2q7Ho
みなさんありがとうございます〜。
アプレットにも対応してみようかと、mainのクラス(ActionGame extends JFrame)
とは別にAppletのクラス(ActionGameApplet extends JApplet)を作って、
appletviewer使って実験してみたのですが、私のスキルが足りなくて、
途中で画像の読み込みとか(?)でヌルポになってしまいました…
(トレースは表示されましたが、時間が無くて具体的にどの辺りかが
あんまり分かっていません。あと内部でJPanel(JFrameに貼りついている
MainScreen)を作っているのですが、
これがアプレットに貼り付かないみたいで別ウィンドウが出て
しまいました...)
なものでアプレット化は当分無理そうです。ごめんなさい〜。m(_ _)m

>>586
これ位は私でもできるような気がしますが、必要な理由に興味が
あります。何故でしょう?(^^ゞ

開発環境はbash, vi, antで開発していたので、
シェルで普通にパラメータを指定して起動みたいな感じで、
ダブルクリックとかあまりやっていませんでした。
(Windows XPとかだと、jar=ZIPファイルで中を展開ってイメージが
あったもんで...)

589 :名前は開発中のものです。:2006/12/02(土) 22:53:32 ID:m+FwCpVx
アフォな解凍ソフトが jar まで解凍拡張子として関連付けしている
場合があるから、Windows向けに下記のランチャーソフトをお勧め

ttp://launch4j.sourceforge.net/
ttp://www.ne.jp/asahi/web/ryo/exewrap/

590 :名前は開発中のものです。:2006/12/02(土) 23:02:38 ID:lFDLhCqW
jarはダブルクリックで実行がデフォ
あふぉなアーカイバは無視しておけ

591 :名前は開発中のものです。:2006/12/02(土) 23:04:51 ID:lFDLhCqW
>>588
画像読込部分はりソース読み込みならおかしくなるとは思えないけどどういうコード使ってるの?

592 :名前は開発中のものです。:2006/12/02(土) 23:08:50 ID:YSW2q7Ho
>>591
読み込みよりもダブルバッファのイメージ生成でコケてました。(^^;
Component.createImage APIです。
…トレースを見ていたら、

[Action game start]
Game initializing...
Image create error.
Framework initialize failed. error(-1)
java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
at java.security.AccessController.checkPermission(AccessController.java:427)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.SecurityManager.checkExit(SecurityManager.java:744)
at java.lang.Runtime.exit(Runtime.java:88)
at java.lang.System.exit(System.java:868)
at ActionGameApplet.init(Unknown Source)
at sun.applet.AppletPanel.run(AppletPanel.java:378)
at java.lang.Thread.run(Thread.java:595)

とかなっていたので、もっと根本的におかしいのかも知れないです。
(HTMLの書き方とかからしてとか)
嗚呼、スキルの無い悲しみ…orz

593 :586:2006/12/02(土) 23:31:14 ID:g+e0ZUOZ
IDが変わってるだろうがプロバイダの仕業だから気にしないでくれ

>>588
レス早いねありがと。
javaはVM向けのオプションをいじり倒すとかなり最適化出来るんだがマシン構成やらプログラム側のGCの発生頻度やらその他諸々の癖で結構指定するオプションを見極める必要がある。

んで効果を手軽に確認するのに初期化処理とかリソースの読み込みに掛かった時間が分かるとめあすになるかと思って。


あと思ったんだがJavaVMじゃなくてJavaアプリケーション側の実行時引数って普通-Dオプションで渡さない?swingだけだろうか?


ダブルクリックでjar実行なら最近のGUIOSならJavaVMに関連づけがデフォだからwinやMacOSXならいじる必要ないと思う。

linuxとかCUI混在は知らん。
上で言われてる通りバカなアーカイバがjarをZipとして云々はデフォ設定に直せばおk

winでjar=zipとして解凍って思い込みはIEがHTTPからダウンロードする時MIME-TYPE見てないせいで云々に関係するからOSがバカなだけ。

ド素人ならJarを何も考えずにクリックして見るのが普通と思う。解凍は意図的にする。

長かったな参考になっただろうか

594 :名前は開発中のものです。:2006/12/02(土) 23:49:58 ID:lFDLhCqW
>>592
System.exitがどっかにかいてあるとか?
あれはアプレットだとセキュリティ違反


>>593
GCはインクリメンタルGCnにするとフルGCが大体消えて快適になる
5.0ならパラレルGCなので大丈夫

-Dはパラメータ用ではない。用途が違う



595 :名前は開発中のものです。:2006/12/02(土) 23:55:17 ID:YSW2q7Ho
>>593
どうもです。(^^)

>んで効果を手軽に確認するのに初期化処理とかリソースの読み込みに掛かった時間が分かるとめあすになるかと思って。
参考になりました。φ(^^ )メモメモ
ということで時間を見つけて入れてみますね。
エンディングまで行った時にもTotal Play時間も入れておこうかな。

-Dswing.aatext=true パラメータは知らなかったのでググッてみたのですが、
これはテキストにアンチエイリアスがかかるとか紹介されていました。
ビットマップの転送にもアンチエイリアスがかかるのかも知れないのですが、
私も試したらNGでした。ちなみにゲーム中に表示される文字は全て
ビットマップです。

596 :名前は開発中のものです。:2006/12/02(土) 23:58:03 ID:YSW2q7Ho
>>594
System.exit書いてあります!
アプレットの時はコレが書いてあるだけでNGなんですね。φ(^^ )メモメモ

597 :名前は開発中のものです。:2006/12/03(日) 00:11:31 ID:Weooalfd
ブラウザでプレイできるようにしてくれ〜

598 :名前は開発中のものです。:2006/12/03(日) 00:19:26 ID:7tbgDbUF
>>597
すみません〜。スキルがなくて…orz

System.exit止めたらExceptionが消えましたが、Component.createImage(w,h) API
でイメージが生成できないのは解消できずです。orz
newしたJPanel(Component)はヌルポでは無いのに…

599 :名前は開発中のものです。:2006/12/03(日) 00:28:03 ID:JGG55Wof
>>597
アプレットはずっと動き続けるものだからね
破棄はブラウザ閉じたりページ移動したりユーザーの意思によってのみされるわけだ

>>598
エラーメッセージは?


600 :名前は開発中のものです。:2006/12/03(日) 00:36:40 ID:7tbgDbUF
>>599
598で述べたJPanelは私のチョンボでした。
アプリケーションのmain関数でインスタンス生成するのと同じように、
アプレットのInitの中でActionGameAppletをインスタンス生成していました。
(インスタンスが二重になってしまっていて、おかしくなっていました)

今はjar内のイメージ(最初にフォントを読み込みます)の読み込みエラーになり始めました。

Image load error. (/images/text_font.png)
java.lang.NullPointerException
at TextScreen.initialize(Unknown Source)
at God.initialize(Unknown Source)
at ActionGameApplet.init(Unknown Source)
at sun.applet.AppletPanel.run(AppletPanel.java:378)
at java.lang.Thread.run(Thread.java:595)

コードはこんな感じです。

 // イメージを読み込みます
 Toolkit toolkit = Toolkit.getDefaultToolkit();
 Image srcImage = null;
 URL url = God.getURL(fileName);
 if(url != null) {
  srcImage = toolkit.getImage(url);
 }
 if(srcImage == null) {
  System.out.printf("Image load error. (%s)\n", fileName);
  return null;
 }

filenameがjar内の/images/text_font.pngにあたります。

601 :名前は開発中のものです。:2006/12/03(日) 00:37:20 ID:JGG55Wof
しかしアプレットだとVMにたいして細かい制御ができないしパフォーマンスも下がるし制限多いんだが
アプレットにこだわるのはどういうことだろうね

WebStartアプレットならまだましか

602 :名前は開発中のものです。:2006/12/03(日) 00:44:09 ID:JGG55Wof
>>602
肝心の例外が出てる行はどこ?
ツールキットでのロードってことは読込完了するまでまってる?
画像ロードはImageIO使ったほうが楽だと思うよ
リソースのストリームから呼び出すようにね

あとソースファイルが多いので1つのディレクトリに全部展開するよりは階層構造にしたほうがいい
viとかでは管理できないレベルかと

リファクタリング使えるIDEつかえばドラッグアンドドロップで自動的にクラスの移動ができる
もちろん使われている場所も全部問題なく変更される

ここまでの規模になるとたいしたことなくともIDE必要だと思うよ
antも全部自動生成してくれるし

603 :名前は開発中のものです。:2006/12/03(日) 00:52:36 ID:aNPfAlfu
>>594
-Dはシステムプロパティの方だった・・・orz

ユーザープロパティはProperties#loadで自分でプロパティファイル毎拾わないといけないんだったな。

>インクリメンタルGC〜
それは言えてる。けどインクリメンタルGCはフルGCのコストとは比べ物にならなくても常に少しのCPUパワー消費が増してるからハードウェアアクセラレーションが効かない現状だと貧弱PCだと辛いかと思ってさ。

あとメモリ使用量とかも調節したいし。


CPUが2つ見えてればサーバーVM使いたいんだけど・・・(°ω°)

>>595
-Dswing.aatextは将来のDeskTopJavaのサポートを強化するためにSE5.0で先行実装された非公開のオプション。アプリケーションレベルでテキストをアンチエイリアスしてくれる。com.sun.java.swing.SwingUtikities2のソースを読むと幸せになれるかもしれない。

だが、知らないなら余り触れない方が良い。


文字はビットマップなのか。それならJava2Dの仕事。SDK5.0の「java2Dのグラフィックスとイメージング-J2SE5.0でのJava2Dの新機能 or Java2Dテクノロジのシステムプロパティ」が参考になるが現段階では充てにならん。SE6〜7辺りに期待。

>>596
ブラウザにプラグインされてるVMを勝手に終了させられたらブラウザは迷惑だと思うw



604 :名前は開発中のものです。:2006/12/03(日) 00:53:47 ID:7tbgDbUF
>>602
根源は
URL url = God.getURL(fileName);
というところでした。
この関数は、sun.applet.AppletClassLoader.getResource(filename)
としていて、ここでNULLになっているみたいです。
(結果、if(srcImage == null)がnullになるという感じです)

ImageIOというのもあるんですね。ためになります〜。
EclipseとかカッコイイIDEを使いたいというのもあったのですが、
何分勉強する時間が無くて、最初はHello Worldから始めて、
グラフィックをちょっと描いてみる→ここまでに至りました。
この辺、言語や開発の仕方を覚えていく過程としてはかなりいい加減です。
(この言語が本職で無いからどーでもイイヤみたいな感じだったとでも
いいましょうか...(^^ゞ)

605 :名前は開発中のものです。:2006/12/03(日) 00:57:25 ID:JGG55Wof
>>603
サーバーVMはスループットはよくなるけどレスポンス悪化するのでゲームじゃ今のところ使えない
クラスロード時にコンパイルが出来るなら別だがそういうVMはないはず

それにインクリメンタルGCは5.0でトレインGCからパラレルGCに変更になったので大丈夫だよ
トレインアルゴリズムは非常の遅くて1GHzくらいでも60fps維持は結構きつかった
一応隠しオプションでトレインにかえれるけどだれもつかわないね、あれは


606 :名前は開発中のものです。:2006/12/03(日) 01:01:12 ID:JGG55Wof
>>604
リソース読むときコードにクラスローダ直書きってこと?

IDEはわからないのであればNetBeansお勧め
セットアップしてすぐに使えることと覚えることが少ないのがぐー
新規にプロジェクト作ったらsrcフォルダにそのままソースをぶっこむだけでおわる

それに補完等があるからIDEは便利だよ
コンパイルしなくても構文にエラーがあればリアルタイムに表示してくれるし

607 :名前は開発中のものです。:2006/12/03(日) 01:06:14 ID:7tbgDbUF
>>606
>リソース読むときコードにクラスローダ直書きってこと?

いえ、最初にgetClass().getClassLoader().getClass()してます。(^^ゞ
アプレットの時は"sun.applet.AppletClassLoader"で、
アプリケーションの時はお詳しいと思うのでご存知のように、
"sun.misc.Launcher$AppClassLoader"
みたいになりました。

IDEはもう少し時間が取れたら試してみようかな…

608 :名前は開発中のものです。:2006/12/03(日) 01:20:39 ID:aNPfAlfu
>>605
パラレルアルゴリズムってそんなにパフォーマンス改善されてるのか。

>>サーバーVM〜
そういやこれアクションゲーだったな。
俺ADVエンジンしか作れないからレスポンスいらねw

でもlinuxだとデフォでサーバーVMが起動するからゲームのパフォーマンスさげてるって事か。


ところでswingで書けばアプレットでもアプリケーションでもどっちでも起動できるが>>604がdemoのSwingSet2のソースを理解出来るかどうか。

swingサポートしない古いMSVMはセキュリティの面からも切り捨てでw

#MSVMはJITだけが取り柄だな

609 :名前は開発中のものです。:2006/12/03(日) 01:41:17 ID:JGG55Wof
>>607
リソース周り少し調べればたぶん解決すると思う
ストリームのほうつかってみたら?

あとファイルをjarの外に出すという方法もあるね
あとでパッチ当てるの楽になるし開発中のときはデバッグに楽かも

まぁリソースは別のjarとかにしておくのが正解か
WebStart等とかんがえるならね

>>608
あとGC自体1.4から5.0で見える範囲でパフォーマンスアップしている

Swingかどうかって関係ないのでは?
awtでもアプレットとアプリは併用可能

フルスクリーン等実装してることから1.4以上が必須なわけだし
あとはOggあたりをループ再生していればいいね

linuxは32bitならサーバークラスマシン検出しないとデフォはクライアントだと思うんだけど
64bitはクライアント版はなし

610 :名前は開発中のものです。:2006/12/03(日) 01:54:36 ID:7tbgDbUF
>>609
色々と調べたら、アプレットでのjar内のリソースの読み込みは
セキュリティポリシーの問題で難しそうに感じました。
(それで合っているのか分かりませんが...)

本来は提案で言われたとおり、jarを外に出すとかWebStart等が
いいのかと思いますが、流石にそのパワーが無いので、
一旦これで凍結にしようかと思います。
(所詮適当に作ったサンデープログラムプロゲームですしね。www)

----
本来はオフラインで周りに聴ける人とかいれば、色々と相談したい
ものなのですが、残念なことにJavaエンジニアが側に一人も居ないので、
なんかきっかけがあったらまたゴソゴソとトライしてみようかと
思います。

スレの流れを見ていると、上級Javaエンジニアの方が二人程
私の相手して頂いたように見受けられます。
色々とテクニカルなキーワードを教えてもらって、
かなりタメになりました。ありがとうございます!( ´▽`)ノ

>>皆様
クソゲーではありますが、純粋にレトロ風なアクションゲームを
楽しんでいただけると幸いです。(^^)
ttp://perfect-logic.net/SampleAction/

611 :名前は開発中のものです。:2006/12/03(日) 03:06:12 ID:YF8PnGLn
自分が書いたJar内のリソース読み込みプログラム
アプレットでも大丈夫
/resourceフォルダ以下にこれとリソースを入れておけば良し


package resource;
import java.io.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;

public class ContentsReader {
  public InputStream getInputStream(String fileName){
    return getClass().getResourceAsStream();
  }
  public BufferedImage getImage(String imageName){
    BufferedImage image;
    try{
      image = ImageIO.read(getInputStream(imageName));
      return image;
    }
    catch(IOException e){
      e.printStackTrace(System.err);
    }
    return null;
  }
}

612 :名前は開発中のものです。:2006/12/03(日) 03:16:48 ID:fVWUDxZS
確か、Jar関連のプログラミングは、
ClassLoader#getResource
Thread#setContextClassLoader
辺りを使えば大体何とかなったな

613 :名前は開発中のものです。:2006/12/03(日) 12:38:36 ID:YF8PnGLn
>>611のコードが間違っているが見なかったことにする

614 :名前は開発中のものです。:2006/12/03(日) 12:49:00 ID:SWYB2VRJ
>>610
楽しんで作ってるうちが一番だと思うよ
だからアプリケーションでのみだが問題ない

仕事で作るとなるとそれはそれは・・・

とりあえずこのスレを1から読んでみることをオススメする

615 :名前は開発中のものです。:2006/12/03(日) 21:46:13 ID:7tbgDbUF
>>614
斜め読みですがこのスレを一通り見てみました。(^^)
私がコーディングしていて通ったような悩みを他の人も
遭遇していたりして、もっと早くこのスレに来ていればなぁと
思いました。

本職はWin,LinuxのC++/Asm系なので、この言語の高級感
(というかライブラリの充実度)は萌えだったのですが、
仕事となると色々と知らないといけないガイドラインが多そうで
大変なんだろうなぁとシミジミです。

616 :名前は開発中のものです。:2006/12/03(日) 21:55:02 ID:/gdh39Xl
前スレのほうが中身はあったようなきがしたけどまぁ出来上がってるから関係ないね
あとは音楽でもはいっていれば十分かと

できればジョイパッド対応ってところだけどJNIはいるからめんどくせーかな
まぁC本職なら十分楽だろうけど

Javaはネット周りが楽なのでネトゲの鯖から採用され始めてきて最近はクライアントにもきてるみたい
ネトゲは運用がはいるからパッケージと違って保守性って大事だからね

617 :名前は開発中のものです。:2006/12/03(日) 22:29:48 ID:7tbgDbUF
>>616
>あとは音楽でもはいっていれば十分かと
そうなんですよねぇ… ちょっとMIDIで作ったのですが、
プログラムや絵よりも難産で当分無理かなぁという状況です。
(外部ファイルで設定できるとはいえ、開発者の作曲のスキルが…orz)

>できればジョイパッド対応(ry
最初Windows上にcygwin入れて、JNIをサンプルで作ってみて、
エントリポイント関数ができたので、さて作ってみるかと思ったのですが、
その直後「JoyToKey」という素晴らしいソフトを見つけてしまったので、
作成意欲がゼロになりました。
(私は"PCで遊ぶゲームはキーボード"で育ったので、自作ゲームは
キーボードでクリアする方が簡単となってしまい、この辺があんま考慮
されてなかったりします。m(_ _)m)

昔、日経Linuxとかで携帯ゲーム開発のコストの記事かなんかを
みたことあるのですが、技術者のスキルに比べて開発費用が激安で
回収が厳しいとか書いてありました。Javaで簡単に作れる時代になった
とはいえ、これで保守/運用とかあると厳しいんだろうなぁと感じました。

618 :名前は開発中のものです。:2006/12/04(月) 00:23:03 ID:TAJliEjW
キーボードでもいいんだけど、同時入力が出来ない場合が多いからね
しかもこのキーとこのキーが同時に入力できないってのはキーボードによって違う
アクション系では致命的

619 :名前は開発中のものです。:2006/12/04(月) 00:50:11 ID:rOxIjnLZ
>>618
>キーボードでもいいんだけど、同時入力が出来ない場合が多いからね
>しかもこのキーとこのキーが同時に入力できないってのはキーボードによって違う
φ(.. )メモメモ
これって、キーボード的(ハードウェア的)にですか?
OSのキーボードデバイスドライバ的ですか?('=,VMのイベント的ですか?)
(恐らく後者とは思っていますが...)

自作のゲームはサンプルなので、左右とジャンプしか行わないためか、
幾つかのPCでキーボードプレーしても、このような感覚に出会った事が
なかったです。

とても勉強になります。

620 :名前は開発中のものです。:2006/12/04(月) 02:19:17 ID:oYP8msvX
ttp://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89#.E3.83.AD.E3.83.BC.E3.83.AB.E3.82.AA.E3.83.BC.E3.83.90.E3.83.BC

621 :名前は開発中のものです。:2006/12/04(月) 03:05:27 ID:rOxIjnLZ
あー、ハードウェア的でしたか…(^^;
JoyToKeyのようなソフトウェアはキーイベントをOSに発行するから、
こーいう問題はないのかもなぁ…

622 :520:2006/12/04(月) 04:42:32 ID:8QL/yjCh
キーボードのタイプにもよるだろうけど左上+スペースが反応しないね。


623 :名前は開発中のものです。:2006/12/04(月) 04:43:21 ID:8QL/yjCh
そしてミス、漏れはこのスレの520じゃない

624 :名前は開発中のものです。:2006/12/13(水) 12:04:19 ID:nFrd+DMR
JavaSE6がでたが、単純に高速化してるなー

625 :名前は開発中のものです。:2006/12/13(水) 16:07:46 ID:tbX8caYj
ニューラルネットワークの学習に使ってるけど
同じことさせて11.701sec→9.815secで速くなってた。
処理の内容はほとんどが浮動小数点演算だけどGUI周りはどうなんだろ?


626 :名前は開発中のものです。:2006/12/13(水) 19:05:49 ID:nFrd+DMR
GUIもはやいっぽい。
特に今までアクセラレーションがなかったWindows以外の環境でもアクセラレーションきくようになったのは大きいかと。

627 :名前は開発中のものです。:2006/12/14(木) 08:23:31 ID:U6gTfVOR
windowsだけど1600x1200のタイル描画で普通に60fpsがだせるようになった
5.0で同じことやっても10fpsいかなかったし、
6.0はjavaゲームの本当のスタート地点になるかも

628 :名前は開発中のものです。:2006/12/15(金) 18:08:34 ID:Ihq+GcpE
まじか
じゃあ俺もこれからアプレットのゲームつくってみよ

629 :名前は開発中のものです。:2006/12/15(金) 23:17:44 ID:e9fBCpQh
デスクトップ環境の強化ってどういう意味?
Javaアプリケーションが高速ってこと?

630 :名前は開発中のものです。:2006/12/16(土) 16:06:00 ID:p9tzPmLY
>>627
2Dの事?
今までが遅すぎただけ。アルファブレンド固定なせいもあるけど
しかし、今頃になってようやくって感じだな。

ロジックの速度も上がってるけど、コレクションクラス群はどう?
JavaがC++で劣るのはGCのみ、と言ってる人がいるけど
ロジックのコアとなるCollectionAPIの遅さを考慮してないから話にならん。
STLは、ヘボ設計だけど速度はあるからそれだけ実用に足りるがね。

631 :名前は開発中のものです。:2006/12/17(日) 00:02:03 ID:SYIGKUNN
>>627が何の描画で早くなったのか知りたいな

今回JREにServerVMが付属してないからJDKのJREほうでやってみたら
ServerVMのほうがコンパイルに時間がかかってかくかくになるくせに
ClientVMと同じ性能しか出てない

これはClientVMがServerVMにスループットでも追いついたということか


632 :名前は開発中のものです。:2006/12/17(日) 14:55:12 ID:iXhkS4tF
へーマジか

633 :名前は開発中のものです。:2006/12/17(日) 15:17:19 ID:hjNOU8u3
新しいJava2DレンダリングエンジンとJOGLの統合
http://journal.mycom.co.jp/news/2005/09/15/021.html
http://weblogs.java.net/blog/campbell/archive/2005/03/strcrazy_improv_1.html

とか

ClientVMのレジスタ割り当てアルゴリズムが変更された
http://weblogs.java.net/blog/opinali/archive/2005/11/mustangs_hotspo_1.html

あたりが影響している感じ

634 :628:2006/12/17(日) 15:47:07 ID:EcLAzrob
速さがよく分からなかった。
パソコン買い替えるか・・・

635 :名前は開発中のものです。:2006/12/17(日) 20:16:45 ID:+LUNIpol
流れ読まずに質問するが、vjpってどう扱えば良いのだろうか?
さっきS!アプリの開発環境を落として来て動作テストを行なおうとしたら、jadを直接読み込めないんだよ。
焦ったぜ……
このテストさえクリアすればようやく公開だってのに……

636 :名前は開発中のものです。:2006/12/17(日) 20:23:17 ID:+LUNIpol
おお、ありがとう。
そうか、疑似端末でインストールして動かすのか……
盲点だったぜ。

637 :名前は開発中のものです。:2006/12/17(日) 20:58:57 ID:Lz0Pt1eB
これはどういう流れなのだ・・・

638 :名前は開発中のものです。:2006/12/17(日) 22:19:40 ID:zMoxVD1I
俺も新型エミュにはあれ? と思ったよ
何しろexeだったし…
つーかバッドバージョンインフォメーションてなんだよ。1.5だからか?

639 :名前は開発中のものです。:2006/12/17(日) 23:17:36 ID:+LUNIpol
>>673
ん? 君には見えないのか。
アドバイスをくれたあの人が……

いや、どうやら俺にだけ見えるらしい……忘れてくれ……


ところで、初心に帰ってゲーム制作を1から学び直せるサイトってどこかないだろうか。
出来たものが何故かバグだらけで非常にむかついたんだ。
自分でもぐぐって探してみたんだが、どうにもPC用講座ばかり引っ掛かる……
というかサウンドノベルでバグ出す自分って一体……orz

640 :名前は開発中のものです。:2006/12/17(日) 23:52:05 ID:+BHAw/PJ
Developing Games in Java
http://www.amazon.co.jp/dp/1592730051/

641 :名前は開発中のものです。:2006/12/17(日) 23:59:57 ID:Lz0Pt1eB
>>639
最初から大掛かりなの作ろうとしてないか?

昔のBASIC時代と同じく手軽に作れる小粒のアクション系つくってみたら?

642 :名前は開発中のものです。:2006/12/27(水) 23:40:47 ID:L0eM1Y3J
>>567
[Action game start] (Start time:略)
Game initializing...
MIDI sequencer device open error...
Framework initialize failed. error(-5)

あら・・・動かない。

643 :名前は開発中のものです。:2006/12/28(木) 00:49:15 ID:0S10EeXq
>>642

こんばんわ、567の作者です。

初めてみる症状です…
JavaのMidiSystem.getSequencer()にて例外が起きているみたいです。
PCのサウンドシステムにMIDI環境は揃っているでしょうか…?

644 :名前は開発中のものです。:2006/12/29(金) 00:25:15 ID:9nXP6CjO
サウンドバンクはこのプログラムには入ってるの?
JDKはサウンドバンクの一番小さいやつははいってくるけど、JREには1.4以降はいってないはずだよ
それを読み込むプログラムはどうしてるの?

それがないとすれば動かないのが普通
一部環境(JDK入れた人)では動く、が正解

645 :名前は開発中のものです。:2006/12/29(金) 02:30:52 ID:0wIkKd8m
>>644

すみません。サウンドバンクという概念自体を理解してないでAPI使っています。(^^ゞ
なので、回答としては「恐らくプログラムには入っていない」ような気がします。

以前、インスコしたばかりのWindows 2000上にJRE5.0を入れて動いたのを
確認したことはあったのですが、もしもJRE1.4以降にそれが入っていないと、

 Sequencer midiSequencer = MidiSystem.getSequencer();
 midiSequencer.open();

みたいなことができないようであれば、JDKもついでにインスコしていた
のかもしれません。
(他の開発環境ではないマシンはネットカフェでJDKが入っていないと
思われるXPマシンで動かしたことがある程度です)

とりあえず642さんに動かして遊んでもらいたいところではあるので、
どうしたらよいもんやら...

646 :名前は開発中のものです。:2006/12/29(金) 10:23:30 ID:M9cmQJF8
>>645
JDK入ってても現象でてます。

647 :名前は開発中のものです。:2006/12/29(金) 14:03:17 ID:0wIkKd8m
>>646

こんにちわ。

う〜ん。ちょっと環境の詳細が分からないとちょっと対応が難しそうですね。
(OS、サウンド環境、Java環境、etc...)
こちらで現象が確認できない(同一環境が揃わない)と、どうやって
対処して良いものか...

あと、他の方が作成したMIDIを鳴らすサンプルプログラムとかで、
発声するかとか知りたいところです。
それでも同じような例外が発生するようでればPC(Java)環境、
そうでなければ私のプログラムが問題ということになりますね。
(私がJavaの素人なので後者とは思いますが...)

なんか他の良いMIDIサンプルないですかねぇ。
(MidiSystem.getSequencer().open();してそうなやつ)

648 :名前は開発中のものです。:2006/12/29(金) 14:26:02 ID:M9cmQJF8
>>647
実行したら死んだ。
Sequencer midiSequencer = MidiSystem.getSequencer();
midiSequencer.open();

javax.sound.midi.MidiUnavailableException: MIDI OUT transmitter not available
at com.sun.media.sound.AbstractMidiDevice.createTransmitter(Unknown Source)
at com.sun.media.sound.AbstractMidiDevice.getTransmitter(Unknown Source)
at javax.sound.midi.MidiSystem.getSequencer(Unknown Source)
at javax.sound.midi.MidiSystem.getSequencer(Unknown Source)
at midi.MidiTest.<init>(MidiTest.java:21)
at midi.MidiTest.main(MidiTest.java:14)

諦めます。

649 :名前は開発中のものです。:2006/12/29(金) 15:15:29 ID:aT7rJMam
とりあえず僕がBGMの再生用に使ってるクラスはこんな感じ。
ttp://www.vipper.org/vip410441.txt.html
BGMBundleにシーケンス一式溜め込んでおいてランダムに再生するだけの物です。
手元にWindowsとLinuxの両方の環境あるけどどっちでも動いてます。


650 :648:2006/12/29(金) 15:59:11 ID:M9cmQJF8
>>649
やっぱり
this.sequencer = MidiSystem.getSequencer();
の部分で死ぬ

どうやら俺の環境に問題があるらしい。
何かにデバイス横取りされてるのかな。
Java Media Framework関係は普通に鳴ってる・・・。

651 :648:2006/12/29(金) 18:23:49 ID:M9cmQJF8
AudioClip play()も問題なし・・・。
こんな現象もあるんだ〜と感心。
今後の参考にします。

652 :名前は開発中のものです。:2006/12/29(金) 18:41:28 ID:0wIkKd8m
>>648

オアー。環境スか...(´д`;
そのうち環境が整ったらプレーしてみてください。m(_ _)m
(ステージも結構あるので、80'sのアクションゲーム好きでしたら
楽しめると思います)

でわ。

653 :名前は開発中のものです。:2006/12/29(金) 20:26:04 ID:aT7rJMam
ttp://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=cdd3f2d858bc6fffffffffa08e9d7dbe34c4:YfiG?bug_id=6483856
これかな?
Evaluationの部分を適当に訳してみる:
>指定されたサウンドカード(SoundMAX Digital Audio)はハードウェアMIDIポートを持っていないので
>Javaのソフトウェアシンセサイザーを使うことになります。
>標準ではJavaSE JREはソフトウェアシンセサイザーのサウンドバンクをインストールしませんが、
>しかしサウンドバンクが利用可能でなければシーケンサはソフトウェアシンセを使用しません。
>このためシーケンサは使用可能なアウトプットデバイスを見つけることが出来ないので失敗します。
>したがって新しいJavaSoundDemoのためにRFEの写しとしてCRを閉じて、
>それらのケースを詳細に取り扱うべきです。

最後の一文がよくわからんかったけど
JRE普通にインストールしただけじゃ
Java付属のサウンドバンクが入らないから入れろってことだね。
ただWindows側でソフトウェアシンセって持ってなかったっけ?


654 :名前は開発中のものです。:2006/12/29(金) 23:56:59 ID:J80FO9qV
>>648
がうごかないっていうのはライブラリの問題だと思う
マルチコアだと動かないとかよくあるから環境を書いたほうがいいと思う

197 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)