1 :
名前は開発中のものです。 :
2005/10/27(木) 09:43:50 ID:dzSvRQXE
2 :
名前は開発中のものです。 :2005/10/27(木) 09:45:06 ID:dzSvRQXE
3 :
名前は開発中のものです。 :2005/10/27(木) 09:46:29 ID:dzSvRQXE
4 :
名前は開発中のものです。 :2005/10/27(木) 11:27:47 ID:ZZ7nMv5G
しばらく見ないと思ったら、落ちてたのか 1乙
>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
>>7 たしか出来上がるものはjavaのクラスファイルだが、言語そのものは違う
という微妙なラインだな
でもBASIC感覚ならProce55ingよりもっとわかりやすいライブラリが前スレで見た気がする
>>8 Proce55ingはJava Appletの一部を隠蔽しているだけだから
言語も同じと考えていいかと。
EclipseでPAppletを継承して作っているとなおさら。
でも細かいこと出来ないし、ゲーム用ってのは無理があるかと
まだベータだったような気もする
それくらいだったら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に保存するにはどうしたらよいでしょうか?
ム板で質問した人? 基本的な考え方としては、新しい BufferedImage を作成して そこから createGraphics()で Graphics2D コンテクストを取得する。 そこにオリジナル画像を AffineTransform で90度回転して描画、 んでファイル書き出し。
ここまで想像力のない質問を見るとさすがにムカつく
15 :
名前は開発中のものです。 :2005/11/02(水) 22:39:55 ID:l4YhQp0J
想像力と言うか知識があるかないかだと思う。要は知ってるか知らないか。
>>15 業務系ではなくゲームの場合、少ない知識の組み合わせで目的の結果を得る想像力は大事だと思う。
90度単位だったら普通は関数しらなくてもピクセル単位で回転できるよなぁ
> ピクセル単位 Javaを覚え始めた頃、 Toolkit.getImage → PixelGrabber → MemoryImageSource の流れはあまり簡単には思えなかった。catch しなきゃならない例外もあるしね。 WindowsでもDIB関係に戸惑ったし、ロジックはわかってるのに肝心な入出力 がらみのライブラリが未修得でイライラすることが良くある。
昔はともかく今ならBufferedImageあるんで楽チンだと思うが 素でDIBつかうよりインテリジェントにラッピングしてくれる
java・・・・と言うかプログラミング自体を勉強し始めた者なんですけど javaで人工知能(チャットでよくある人口無能みたいなやつで入力 した単語に返答してくれるみたいな」)っぽいのつくれますか? せっかく高校で習っているので勉強だけじゃなくてなにか役立てたいのですが・・・・
アルゴリズムがしっかり自分で作れるなら作れる
>>21 レスさんくすです。
ALは2次元配列までしか理解していませんが頑張って見ます
23 :
名前は開発中のものです。 :2005/11/03(木) 14:51:49 ID:yzYzVhNJ
2次元配列ってアルゴリズムなのか?
データ構造だろ
>>20 人工知能と人口無能じゃ大違いだが、とりあえず
Javaだから作れる、とか作れない、とかはない。
自然言語処理等の勉強をすれば色々な言語で作れる。
どの変が難しそうなんだろう・・・
29 :
名前は開発中のものです。 :2005/11/03(木) 17:56:04 ID:MCCIxjg4
>>27 正規表現の使い方がJavaだと面倒くさい
面倒なことないやん
31 :
名前は開発中のものです。 :2005/11/04(金) 22:15:45 ID:Kyfrg/8g
オブジェクト作ったりしないといけないしPerlの方が楽だと思うけど
確かにちょいちょいした作業ならperlも便利だが ちょっと大きなプログラムになるとデバッグ時間が指数関数的に増えるし 半年も経つと自分で書いたソースでも完全意味不明に見えるのは困るな
昔のWebアプリはPerlが主流だったが、掲示板やチャット程度ならともかく、 業務アプリみたいな巨大な物をメンテナンスすると死にそうになる。 最近のPerlは知らんが。
しかし、Javaはあとからあとから新しいWebアプリフレームワークだの なんだの、いろいろ出しすぎw
ライブラリなんて必要とする携帯にあわせて選択すればいいだけだろ。 得意不得意はそれぞれあるし、目標とするものが違うからな。
36 :
名前は開発中のものです。 :2005/11/05(土) 08:59:55 ID:nyk5I5ZL
>>34 Javaは最先端の実験言語みたいだな。大学の研究でよく使われるからかも。
>>36 大学の研究でよく使われるのもあるけど、
Apacheを筆頭に無数のオープンソース開発者がいるからだと思うぞ。
Apacheのプロジェクト数は異常なくらいだな 問題はこのスレに関係があるライブラリはなさそうなことくらいか まぁApache XML-RPCは目的によっては使えるか
みんなどのくらい非ネーチブパッケージ使ってるのかな。 シミュレーションとかちまちましたデータ中心ならXMLデータバイディングとか かなり使えそうとか思うけど。 自分の場合はついついインタプリタ仕込む癖がある。
標準でXPath使えるようになったから大分楽になったけどね ゲームつくろうって人間は自前で実装が多いと思われ なんせ、ばらす必要はなくてたとえばList<Element>でもっていけば、 Beansとちがって仕様変更に強かったり、例外処理がしやすかったりする
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への負荷が高いそうなのですが、実用レベルなのですか?
フルスクリーンから device.setFullScreenWindow(null); System.exit(0); とやって終わらせると画面真っ黒になって操作不能になることが あるのですが、なる理由がわかりません。 あと、フルスクリーンにするときそこで処理が止まってctlALTDelで終わるしかない ときもあるのですがどうすればよいのですか? 1_4_2です。
System.exit()すればすべて開放するから 問題はないはずだけど ベータのときはnullわたしたやつはダメだったけどね 今は大丈夫だったと思ったけど あとはチップとビデオドライバによるかも 安定してDirectX動いてる?
それを確認するにはどうしたらいいんですか? PC初心者板逝きですか?
>device.setFullScreenWindow(null); これをコメント化してみたら? あとは他のJavaのフルスクリーンのゲーム試してみるとかどうかな
50 :
46 :2005/11/18(金) 20:45:39 ID:Jjzsx+o7
フルスクリーンで操作不能になったりする理由はわかりませんでしたが とりあえず動くのでよしとすることにしました。 ですが背景を付けてみると ぱちぱちしてとても目に悪いことこの上ないという状況になりました。 これがちらつきというのでしょうか? BufferStrategyは使っているのですがどうすれば改善するのでしょうか?
BufferStrategyでページフリッピングしてれば大概の環境で垂直同期取るはずなので ちらつくことはないと思うんだが、他のアプリでもちらついてるの?
フルスクリーンじゃなくても垂直同期とるんだっけ?
フルスクリーンのみな ウインドウモードはフリッピングのフラグが降りてブリットのフラグがたってるはずだろ
54 :
46 :2005/11/18(金) 22:02:38 ID:Jjzsx+o7
もしや、自分の環境が大概の外にあるということでしょうか。 他にはコマンドプロンプトしか動かしてません。 ちらつくときとちらつかないときがあるのですが 背景を付けると100%ちらつくこの状況。 フルスクリーンを諦めるしかないのか
だからフルスクリーン対応のアプリ立ち上げてみればわかるっしょ
56 :
46 :2005/11/19(土) 06:56:25 ID:59ba+Epe
東方、どっかで拾ったフルスクリーンにボールが増えていく もの(Java)、百本ゲームのゲームは問題なく動きます。
なら自分のコードがわるいってことかと
58 :
46 :2005/11/19(土) 13:40:21 ID:59ba+Epe
背景の描画オブジェクトにフレームのを 渡していたことが発覚。 正直すみませんでした。 ちらつきは直りましたが、それ以前の操作不能になること がある時があるのはわからない。 これもどこか自分のが悪いのだろうか。
>>46 =58
一言アドバイス
発覚したってことは他も可能性アリ
煮詰まってそうだけど、連レスしてないで
とりあえずもちつけ
で、もっかいソースとにらめっこしてみようぜ!
60 :
名前は開発中のものです。 :2005/11/26(土) 22:10:42 ID:wK3zX5BN
Javaのパワーを生かしてツクールやFlashみたいなエンジン作ろうよ 馴らしたSEの人が設計してくれるならコードは手伝うよ
まず自分でたたき台を作るくらいが必要と思われ
ツクールにしてもダンテのようにフラグだけでいいのか、スクリプトでいいのか
スクリプトなら次期バージョンで標準実装だとか
出だしはコードと設計は同一者でひっぱっていくくらいじゃないと
オープンソースなプロジェクトは成功しないと思われ
SEだ、プログラマだといったすみわけはいらない
まず、
>>60 がJavaでスタンドアロンのゲームを作れるかどうかという点がポイントになる
>>61 すまん。実は業務系でSwingは勉強中なんだ。
いや、誤る必要ないよ 業務系でJavaさわってるならまず言語の基本は問題ないとして Java2Dを筆頭にフルスクリーンとか時間管理、JavaSoundあたりが触れるようになるといいね
画像を回転させようと思って AffineTransform form = new AffineTransform(); draw(){ form.rotate(x*Math.PI/180,画像の幅/2,画像の高さ/2); 画像イメージの描画オブジェクト.drawRenderedImage(画像イメージ,form); 描画先の描画オブジェクト.drawImage(画像イメージ,null,gx,gy); } というふうにすると、背景が透明なでただ↓と描かれている画像を使うと背景が黒くなり矢印が見えなくなります。 また、横長い画像をつかって見ると画像の中心に 画像の高さを直径に丸くなって回転をし その丸以外の部分が白くなってしまうんです。 ただ画像をその場で回転させて 表示させたいんですがどうすればいいんでしょうか?
>>63 最初はCっぽくなるかも知れないけどやってみる。
>>64 もちつけ
なんか日本語が分かりにくいぞ
まずGraphics2Dのrotateメソッドを使ってみて描画してもおかしいかチェック
それに画像イメージってやつをを上書きしてしまってるように見える
>>60-63 Flash やツクールみたいのはゲームどうこうより、
アプリとしての設計の方が100倍重要だと思うけどなー
エンドユーザ的意見としては、時間制御 UI は Flash じゃなくて
AfteEffects を参考にして欲しいと願う。
Shape エディタがあったら超便利なのにと思う事は多々あるので
正直これはかなり興味ある。
そのうち Sun が出すんじゃねーかとか思ってたけど全然だし。
このへんは現状だと SVG (Illustrator -> Batik) とかになるんだろうけど
こっち方面は面倒すぎて手が出せん。
まず最低限ゲームが作れないとどういう設計したらいいかわからんのでは?
>>69 すごいね。いい勉強になりそう。
TimerとGraphics2Dでアニメくらいは出きるからちょこちょこ学んでみるよ。
>>68 それは多分作ってほしいと思うもの違いがあるのかも。
オレが想像したのは、エンジンはメタなインターフェイスを提供して
ゲーム的なエッセンスはエンドユーザが作るって形のものだから。
んで実際の所、描画の最適化とか絶対に必要になるけど、
それがゲームに限った話かと言われると微妙な気がするのよ。
むかーし似たようなモン作ろうとしたけど (作りかけたま放置)
必要としたゲーム的な知識ってタイマーの使い方くらいだった。
>>70 とりあえずガンガレ!
>>70 スレッドプールとか5.0で標準で実装されてるのもあるし注意な
とくにJavaSoundのストリームと偽ったところはなめてる感じ
gifなどの透過画像をImage等に描画して そのImageのなにも描いてない部分を透過させるにはどうしたらよいのですか?
>>73 BufferedImage(int, int, int)で
3番目の引数にBufferedImage.TYPE_4BYTE_ABGR指定で透明になるかな?
Java2Dの基本なんだけど、Java2Dをちゃんと説明してる書籍ってまったくないな
>>74 うまくいきました。ありがとうございます。
しかしcIearRectするとダメなようです。
画像を回転させるために仮Imageを作って
それに画像を描画してそのImageを回転させる
という風に考えていたのですが他の方法を考えます。
画像の回転するのになんで1回かますの?
Graphics2D tmp = (Graphics2D)chara.getGraphics(); tmp.lotate(chara,characenter.x,characenter.y); g.drawImage(chara,null,charagx,charagy); てな感じにやってたんですけど、なぜか全く回転しなかったので 仮画像を作ってそれを回転させるという風にしました。
回転をセットするのは描画先のほうだよ? すでに描画されてるのはどうしようもない
Graphics2Dオブジェクトにアフィン変換かけてさらに Graphics2Dオブジェクトに描画でできんのかな
すみません。自分の日本語読解力が足りないことにより 皆様から頂いた助言を活かすことができません。 少し、具体例を用いて説明して頂けいませんか?
1・画像をロードします 2・描画先を回転させます 3・ロードした画像を描画します
落ちものゲームで受け手(キャンバス)を上手く回転させて 指定された絵を完成させるゲームをイメージしてみるとか。
>>82-83 つまり、描画先を回転させて
そこに描画して、回転させた分
逆回転させて他はもと通り、と解釈して実行し
成功致しました。ありがとうございます。
しかし、これは斜めになったとき
四角の余白が黒くなってしまいます。
これの解決方法はどうすればよいのでしょう?
背景を再び描画も考えましたが
回転させたものが塗り潰されてしまいます。
そこまで出来てるのに、なんで画像描画前に背景を 先に塗り潰すという発想がでてこんのだ。
背景を描画して、回転したものを描画とやってるんですけど ______ |■/ \■| ↑回転した画像 て感じにうえの部分に黒い部分ができてしまうんです。 さて、どうしたものか?
ソース晒した方が早そうだな
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++; これでいいんですよね?
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 の使い方はわすれた。
>>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);
って事前にやってたんです。
情報の小出しされてもわからん 該当部分のソースを最小限にしてコンパイルできるものを出したほうがいいんじゃね?
テキストリソース(RPGの会話文など)ってどう扱うべきでしょうか? XML? properties?
自分が扱いやすいものでいいかと 修正もこまめに入ると思うし、文字だけじゃなくてたのパラメータも必要になると思うから XMLが汎用性では一番かと
XMLパーサってあったっけ
あるよ。DOMよりSAXのが個人的には好き。
ゲームで使うとなるとSAXはファイル読み込みだけだろうな 内部ではElementでつかうのがいい
101 :
97 :2005/12/10(土) 21:23:28 ID:h8wANggU
いや、普通にJava2D楽だぞ ただ、普段以上にメモリ使用量は把握していかないと駄目 GCがかなり増えるから 速度が必要な場合あらかじめ回転させておくとかが必要になるね アクセラレーションきかないから
BufferdImageの効果が消滅するの?<回転
効果は消えるなんてことはないけど、速度が差が出る Java2Dって高級すぎるAPIなんでどれがアクセラレーションきいて、どれがきかないのか チェックするのが大事 基本的に速度は1.4.2と5.0でかわってないよ アクセラレーションがきけば秒間にスプライトが万単位で描画できるはずだが やることをかえるとこれが一気に1/100以下に下がったりする
うへ・・・回転拡大はご法度なのかな。 昔ながらのアナログ手法にしとくか
速度を求めないのと回転オブジェクトがいくつあるかによる 60fpsで128*128の回転スプライトが1000個は無理だと思う
107 :
94 :2005/12/11(日) 12:16:09 ID:hWRTdhf0
>>96 >>100 XMLの方が柔軟性があって良いということですね。
propertiesは簡単な設定の保存程度にしておいた方が良いのかもしれませんね。
ありがとうございます。
>>106 400MHz、64MB、VRAM8Mでどこまで出来るかがポイントだな。
まあ回転なんてギャラガとか作ろうと思わなければ使わないけど。
ギャラガくらいなら余裕 VRAM8MってことはTNTとかあのあたりかな ならアクセラレーションの速度も問題にならない メインメモリ64Mが一番のネックかと GCの調整はプロファイラとにらめっこになるね ヒープサイズ自体を24M以下に抑えてももVM方面で厳しい 1.4.2のほうがメモリ消費は少ないからそっちのほうがオススメか Pen3/1GHz+統合ビデオでテストしてみたけど 上で上がってた2DSTGは60fpsでサクサク動いた
日本語訳がないんじゃさすがにここで質問する初心者にはすすめれんが
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に情報ころがってるな。
ほとんどの場合ゲームで重要なのはGraphics2Dでどう描画できるかというより、 Graphics程度の低レベルAPIでもいいからどれがアクセラレーションきくかどうか、 速度的なものやメモリ使用量把握だからねぇ ところでGraphics2Dでそろそろ加算合成実装して欲しいんだがすばらしく放置だよな そもそも基本についてはSunのマニュアルで代替分かると思う
Java2Dに関して言えば、VolatileImageは、まだほとんどの環境で 透明、半透明が使えないので、事実上まともなゲーム制作には使えない。。。 createCompatibleVolatileImageメソッドでTransparency引数が 指定できるが、定義だけでまだ実装されてない。。。 つまり、BufferedImageを使うしかない。これへの描画メソッドに アクセラレーションが効いてるのはない。。。
VolatileImageからVolatileImageへ上書きすると透明じゃなくなるバグって無かったっけ?
それは1.4.2まで
あと描画元がBufferedImageでピクセルフォーマットが同じ場合 あるスレッショルドを超えると内部でVolatileImageにして転送してくれる この設定値を0にするのがまず基本 5.0からはこの動作範囲が広いようだ つまり、最適化されてないアプリだと高速化する可能性あり 1.4.2までにチューニングしてると速度向上は一切なし 5.0で画像周りの速度が速くなったというやつは大概設定ミス
>>116 使えない。5.0でも使えない。
どの環境(OS)で使えたのか教えてくだされ。
>>119 この設定値を0にするのがまず基本、とは?
設定値とは何を指してるのか?
具体的に教えてくだされ
まず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の日本語資料にある
>>122 自分もWindowsXpなのだけど、VolatileImage を使うと
アルファ値0のピクセルが真っ白になってしまう。。。
列挙された全GraphicDeviceの全GraphicConfigurationから得る
VolatileImageのTransparencyタイプが、全てOpaqueになってる。。。
本当にWindowsでValatileImageの透明機能が使えたのですか?
そのだめだったコードかいてみそ
>>124 GraphicEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gd.getDefaultConfiguration();
VolatileImage image = createCompatibleVolatileImage(640, 480, Transparency.TRANSLUCENT);
これで得る image は、半透明でないのです。。。
gd、gc を列挙させて、その全てから得るimageも半透明でないです。。。
Transparency.TRANSLUCENTはDirec3Dを有効にしないと駄目だったはず BITMASKでの透過ならいける
そもそも半透明はアクセラレーションきかないので注意ね
ってやってみたらアルファブレンドが有効でちゃんと描画された たぶんロードのところミスってると思うよ
ちなみに ImageIOでロードしたアルファつき画像をそのまま128個描画 8fps ちゃんと設定したVolatileImageとBufferedImageが同じで 50fps となった アルファつきならVolatileImageにおく必要はないね
System.setProperty("sun.java2d.accthreshold","0"); としておけば普通にBufferedImageでOKってこと?
ついでなんで 単なる透過を描画した場合 フルスクリーンモードならTRANSLUCENTでもBITMASKでも スプライト2048個描画で60fps維持 スプライトサイズは64*64で 画面モードは640*480にしたときの場合ね オンボードビデオでこれなのでnVIDIAとかATIとかのそれなりのつめば余裕で超えるかと 通常モードはDirectDrawのラッパだと考えればどれが速いかとか分かりやすいと思う
>>130 ほとんどの場合はそういうこと
あくまでも描画先をVolatileImageで描画元はBufferedImageで
VRAMにおくかどうかはインテリジェントに任せるというのがJavaらしいかな
VRAMにおく優先順位とかもあるので頻繁に描画しないやつはそれを抑えておくといい
この方法ならVRAM容量が多ければ加速しやすいとかそういう感じ
昔AGP登場時の思想にあったやつね
Javaでゲームを作れという課題がでたんですが、どんなのが簡単だとおもいます? 行数は400以上&対戦ゲーム&Swingというのが条件です。 既存のゲームでなるべく参考資料が沢山あるものが良いのですが・・・ アイデアゲームは自分のスキルや時間的制約から作る自信が無いですorz
ブロック崩しやインベーダーのようなSTGとか Swingを使えという時点でたぶんそんなレベルじゃない気がする マルバツゲームとかもっと単純なの 最低自分が何を作りたいかだけはきめてください
>>133 その条件なら特に苦にならんだろう
テンプレあたりに行って資料が多そうなの探せばいんじゃね?
>>134 12月末までという期限付きなので力量に合わないのに手を出したら怖いなと。
そのためそこそこボリュームがあって簡単に作れるゲームをきいてみたいと思ったわけです。
ちなみにブロック崩しモドキ(ボールをブロックに当てたら壊れる)や
シューティングモドキ(たまを発射させ物に当たったら壊せる)ぐらいは作った事ありますが、
昨日調べた結果によるとリアルタイムで進行させるものは対戦にするのは難しいとか。
それよりターン製のゲームの方が比較的楽でイイヨって書いてありました。。
>>135 つらつらとネットサーフィンしてみましたが400行足らずでも結構うまく作れるものですね、
どんだけのゲーム作れば良いのかと何か不安になってきましたorz
リアルタイムのほうが難しいかどうかは設計しだいかと 12月末ではあと2週間ですか STGだと1面だけ開発するのも難しそうだ
>>136 とりあえずとっとと着手しろって
ブロック崩しに対戦要素混ぜるとかでいいじゃん。
上下にバー作るとか。
ちょっと工夫するなら、画面半分に分けて上下にバー作って、
1P側の操作で左の下側バーと右の上側バーが同時に動き、
2P側の操作だとその逆。勝利条件をちょっと考えれば
これで十分対戦になるじゃんよ?
2日で終わらせた人がいたもので、自分でも2週間あればと思っていたのですが・・ なんにせよ選ぶのは程ほどにし、 皆さんの意見を参考にしつつ今から寝ずに頑張ってきます。 他のレポートもあるのでつきっきりになるわけにはいきませんがorz Thank you.
がんがれ
ジョイスティックを扱うには、 JNIとJavaCommunicationAPI、どっちが良いのでしょうか? 前者は高級な機能を使えるけど環境依存、 後者は低級な所からくみ上げる必要があるけど、WinとSunで動く、 という感じなのでしょうか?
400行のゲームなら、その先生が期待してるのはテトリスあたりかな。 対戦要素を考えるならボンブリスとかか、俺ならそこらへん狙う。と遅レス。
>>142 コミュニティ開発のAPIですか。
まだライセンスを確認してないけど、
頒布の問題が発生しなければいいかもですね。
どのライブラリにしろJNIで組まれてる
フルスクリーンにしようと思うのですが、環境はどんなのが良いのでしょうか? 640x480の16bitでいいかなと思うのですが、Win高級機以外でも32bitって使えますか?
つーか、Win以外は解像度変更あきらめたほうがいいかと そしてWinでも32bpp出せない環境はある
>>147 Win以外では無視されるといことでしょうか?
では16bpp(bit per pixel?)にしておけば不具合が起きることもなさそうです。
BIT_DEPTH_MULTIというのもあるのですがこれは使えますか?
スクリーン版JISAutoDetectみたいなものなのかとJavaDocを見て思ったのですが
これといった情報がネットにありませんでした。
指定なしという感じでは? Linuxでやったときは画面サイズ変更が不可能だったし、ウインドウモードとフルスクリーンモードと作ったよ 内部描画と出力描画を分けるとかが吉かも 速度大幅に低下するけど あと使用可能な画面をリストアップして処理するのが一番だね
> 使用可能な画面をリストアップして処理する ここをもう少し詳しく教えていただけないでしょうか? device.getDisplayModes();で最高値のモードを探す感じですか?
最高というか自分がやろうとしているモードに最も近いのを探すといった感じかな
グラフィックなどは置いといて、 タクティクスオウガみたいなSLGのシステム作るのに おまいらだったらどれくらいかかるもんですか?
時間がかかりそうなものは最初に作ろうとしない 自分がまず完成できるものを選ぶ のが普通では? 最初から風呂敷広げて崩壊していくのを何度見たことか たいしたことのないものであってもちゃんと快適動作してバグもないように完成させる、 というのはそれなりに大変なもの
154 :
名前は開発中のものです。 :2005/12/19(月) 22:23:05 ID:GbGeAi3t
フルスクリーンでゲームをつくってきたんですが、 デバッグがあまりに手間でウィンドウモードに変えたくなってきました。 public Graphics2D getGraphics() のようにして、 スクリーンマネージャが getFullScreenWindowからえたWindowから、 BufferStrategyを返して、 それから、Graphics2Dを返して描画するようにしているんですが、 ここから楽にウィンドウモードに切り替えるすべはありますか?
ウインドウモードでなんでgetFullScreenWindowがでてくるんだ?
いろいろ悩んだ結果たどり着いたのはStrutsだった。 なるほど、これならMVCになる。この感動は衝撃的だった。 おわり。
Strutsでゲームつくったのか?
画面切り替えの仕様がぜんぜんかっこよくならなくて悩んでいたら Strutsの例のfowerdが頭に浮かんだ。そんだけ。 メインルーチンの戻り値がまさかシーンだったとは・・・みたいな。
それゲーム内での遷移のスクリプトの話なだけだろ AVGとかきまったものでしかつかえんよね
うんにゃ、RPGパートからシューティングパートに切り替えるにしてもこの手法でいけるよ。
その程度のシーン切り替え・・・
ん?流しっぱなのかスタックなのかの指定もこの方法なら簡単なんだけど・・・
163 :
名前は開発中のものです。 :2005/12/21(水) 00:10:55 ID:38cOblp2
>>153 たいしたことのないものは、そこら辺にソースが転がってるから、
作る気が起きないんだよね。
かといって、ちょっとレベルや規模を広げると、1人じゃお手上げになるし。
たとえばぷよぷよとかテトリス、コラムスなんて作るのは簡単 でも、しっかり音出したり演出出したりバランス取りしてちゃんとしたものを作る という段階まではなかなか難しい
165 :
名前は開発中のものです。 :2005/12/21(水) 20:44:15 ID:+HySSU2I
そこそこできたら飽きてしまって次の作りたくなる
その差が途中で投げ出すやつか、それとも同人屋やソフト屋としてちゃんとやっていけるかどうかの差
Javaで作ったRPGでソース公開してるサイトありますか? もしくはセリフの表示のやり方の紹介とか
それ難しくはないだろ どの変が難しいと思うんだ?
169 :
名前は開発中のものです。 :2005/12/23(金) 21:11:56 ID:PPOyiaLP
170 :
名前は開発中のものです。 :2005/12/24(土) 11:52:15 ID:iqSdFGcF
だれかJava3Dでゲーム作ってる人いない?
1年位前に触ったときJOGLならともかくJava3Dものすごく遅くてお話にならなかったけど DirectXの実装のほうでね
>>168-169 レスサンクス
ドラクエみたいに新しい行が挿入されたら
既に表示されてた行が上にずれて1番上の行が消えるとか
主人公の名前を変えられるゲームにおいて
メッセージ中で表示するときはどうしたらいいかとか
ファイルからセリフを読み込むにはとか
テンプレ見て勉強します
>>172 > 既に表示されてた行が上にずれて1番上の行が消えるとか
Clipが神だと分かったあの日の夜
それ文字列をスクロールさせるのではなくて BufferedImageで文字列のバッファ用意して毎フレームブリットしたほうが楽
176 :
名前は開発中のものです。 :2006/01/07(土) 15:15:38 ID:EFX7v943
Javaでタスクシステムって作れる?
オブジェクト指向なんだから普通はポルモルフィズム(多態性)で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指定なので引数に負数を渡すと実行時エラーになってしまい、それだけではできないようにみえます。 ご存じの方、おられましたら宜しくお願いいたします。
SWTはEclipse以外では使わないこと が正しいと思う PureJavaのほうがまともな実装ってどういうことさ って場面がよくある
SwingでJava2D使おうぜ
181 :
178 :2006/01/15(日) 22:49:28 ID:53jl8YVS
>>178 ,
>>179 なるほど、ありがとうございます。
SWTをつかってアニメーションエディタとゲーム自体を一緒に作っていたのですが、
考え直した方が良いみたいですね。
う、間違えました。
>>180 Swingの方がやはりいいんですね。SWT自体は割と扱いやすいとは感じているのですが、
最近は情報も出てこず考え直したりもしています。
SWTを使うと局所的なところでWin32APIなどを呼べるのも魅力なのですが。
思想には反しますけれど。
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すればいいのか分かりません どなたか教えてもらえないでしょうか?
>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アプリのゲームを作ろうと思ってます
ここではJava2SEの話題がメインなので J2MEの話題はプログラム技術板に専用スレがあったと思うのでそちらのほうがいいかと。 そして動作保障している1.3を使うのが吉。 互換性は細かいタイミングが必要なところではチューニングすればするほど問題が出やすいし。 J2MEといってもiアプリは独自の層があついのでいわゆるJavaという豊富な標準API を使って開発するという感じはないと思われ。
189 :
名前は開発中のものです。 :2006/01/17(火) 17:16:07 ID:jNVA85J7
おお!? そうなのですか 全然知りませんでした^^: すみませんでした そっちに行きます
すみません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 です
もしかして普通のJavaスレと勘違いしてる?
192 :
名前は開発中のものです。 :2006/01/23(月) 17:40:02 ID:kW9KAIGh
サーブレットとかJSPでゲームを作るのは無理ですか?
WEBアプリのゲームはあるから無理ではないけど 別にたいした仕組みが必要になるわけでもないと思われ
シューティングでインタープリターをつくろうと思ったのですが 文法をどうやって決めればいいのか、どう実行させればいいのか いまいち想像できません。 敵の出現まではできそうですが、敵の弾の設定(どんな弾を、いつだすか)を インタープリターでどう表現したらいいのでしょうか?
>>192 WEBブラウザで行うCGIゲームライクなものなら当然可能。
というか、漏れ自身が現在進行形で作成中。
>>194 なんか設計に悩んでるっぽいことはわかった。
その調子でがんばれ。
>>194 まずは敵のクラス内で処理してみれば?
それを外に出したほうがいいか、ださないほうがいいかは案件しだい
インタープリターよりも簡単なコードジェネレータの方がいいんじゃない?
格ゲーで斜めジャンプをさせたいんだけど、上キー+右キーでやらせるにはどうしたら良い? 以下制作中のソース。 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(); }
>>199 まず根本的なことからなおしましょう
キーのイベントで処理は入れないように
メインループでのみ処理するようにしてください
イベントではフラグの上げ下げのみで
201 :
199 :2006/01/26(木) 23:31:16 ID:Pd3Qgsdn
いやーこのスレは役にたつなー。。 ところで、classファイルからソースコードを盗まれないようにするにはどうしたらいいんでしょ。。
正直それはあきらめろ クラスローダ自作したところで実行中のメモリのぞかれれば意味なし nproではじくとかやると誰も使うやつはいなくなるぞ ネイティブバイナリでもコンパイラの癖とあたりつければそれなりに追えるんだし・・・とわりきれ その分開発効率がいいんだからガンガンものづくりに専念しなさいといいたい オンラインゲーなら毎日こまめにクラスを再配布していれば大丈夫かと
>>203 実行中のメモリのぞかれれば意味なし
そんな事出きるの?ソースは?
やろうと思えばできるとか妄想でつか?
>>204 メモリ覗くだけならWindows上で実行しちゃえば簡単だろうけど、
手軽に解析って話は俺も聞いたこと無いな。
うちの会社はDashOとかいうバカ高い難読化ツールを買った。
そんな必要無ぇって主張は通らなかった。
読みやすくしてくれるツールはありませんか。
>>204 多少は調べろ
クラスロードした後はざる
208 :
まほろば ◆BmUbLWewsM :2006/01/28(土) 23:57:58 ID:K+4gOIY6
結局いいスレだったのをコテハンが壊したってことか。
もう大学生は春休みか…… いいご身分だなぁ。
低脳だから卒業後ニート行きで さらに良いご身分だな
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見りゃ分かるじゃん。。
>>213 そういうときは大きいバッファを持つことで回避する
320*240の画像を0.5単位で扱いたいときは640*480とかね
drawRenderedImageとかtranslateを使う方法もあるが
用途がゲームなら使わないほうがすっきりしていいと思われ
>>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 で処理するのが現実的だと思う。
正男って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()が呼ばれるにはどう修正すればよいでしょうか。
フルスクリーン使ってるなら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オブジェクト); とやってフルスクリーン上にパネルを置いています。 こうするとパネルがちらついてしまうのですが対策はあるでしょうか。
まずパネルをおく必要はない ウインドウ全体を使って描画してるから
224 :
219 :2006/02/05(日) 09:38:19 ID:LCSDYznu
コマンド選択パネルみたいに使っているんですが。 フルスクリーン上でスペース押すと右上にパネルが表示されます。 KeyboardListenerを実装してるのでキー入力はそのパネルが奪い パネルを消すともとのフルスクリーン上にキー入力がいくという感じです。 パネルじゃなくてCanvasでもいいんですがどうもちらつきます・・・ パネルで何も描画しなくてもちらつくということはフルスクリーンにしてる JFrame上にコンテナは置いちゃだめということでしょうか。
おいてはいけないということはないが、BufferStrategyはつかえんぞ
226 :
219 :2006/02/05(日) 13:00:29 ID:LCSDYznu
そうですか・・・ボタンやらも全部だめだったのでBufferStrategyの描画領域にコンポーネントは配置してもちらついてしまうみたいですね。 あきらめてパネル風のウィンドウを描画することにします。
ゲーム目的ならコンポーネントの描画は避けるべきだな すべて自前で描画しないとリフレッシュとかのタイミングがコントロールできん
便乗だけど、フルスクリーンで文字の入力はどうすればいいの? 英語だけなら楽勝かもしれないけど、漢字変換とかどうすればいいのかさぱーり。 以前コンポーネント埋め込んだら酷いことになって諦めてた
229 :
名前は開発中のものです。 :2006/02/05(日) 14:40:46 ID:LCSDYznu
MMORPGの市販ゲームとかできてるからやり方あるんだろうけど。Javaだとどうなるんだろ。自分も知りたい。
MMORPGの場合フルスクリーンでもただすべての画面を占有するだけ といった作りかたしてると思われ JavaでやろうとするならBufferStrategyをあきらめるほうがいいだろうね JPanelに画面部分を描画、paintComponentでバックバッファから自前で転送
LWJGLやJOGLで日本語文字を画面に表示するにはどうしたらいいんでしょうか。 LWJGLにAWTGLCanvasっていうのがあって、これを使えばできそうなんですが、 サンプルがなく使い方がいまいち分かりません。 みんなはどうやっているんだろう。 以前Graphics2Dでゲーム作ろうと思ったけど、アルファブレンド処理がソフトウェア描画に なったので、LWJGLに移ったんですが。 うううーーーん
基本はDirectDrawだからな 一応オプションでDirect3Dで動作させればアルファブレンドもハードウェアになるが レンダリング品質の問題とか通常一番使うブリットが遅いとかJava2Dベースでは 通常合成しか出来ないとかが問題になるからな LWJGLはまったくさわったことがないのでわからん JOGLはOpenGLそのままだね 俺が触ったときはSDLとのリンクが未実装だったので対象には上がらなかったが Java3Dは高級すぎてゲーム用途にはまったく使えないという感じだった 速度がまったくでないことやピクセル単位の処理という感じではなかった ただ、軽く触っただけなのでなんともいえない 2Dゲームならソフトウェアによるアルファブレンドが問題になるほど遅い場面は少ないとは思う
>>232 640x480の画面に32x32のマップをひきつめただけですでに40FPSだったんですよね
Graphics2D。。。
やっぱりC++の方がゲーム開発はいいのかなぁ・・・
開発効率はJavaの方がはるかにいいんですけどね
何かJOGLやLWJGLに近い速度がでるゲーム用ライブラリって
ないんでしょうか
アルファブレンドでしきつめたらそれくらいにはなりそうだが 通常転送ならそこまで遅くなることはあるまい 使い方がおかしいかと
>>234 アルファブレンドで描画したときです。
正直なきたくなりました。
同様の処理でDirectXの場合は余裕を持たせてもFPS500ぐらいでした。
デフォはDirectDrawベースだから当たり前 PureJavaベースのゲームなら少し前のコンシューマの2Dベースにしておくべき アルファブレンドが多い場合は自前のエンジンを使ったほうがいい Java2Dのアルファブレンドは機能が多すぎて高級すぎる 回転とかも同様 あとメモリアクセスを減らすために解像度を下げるとか 今後を考えてレンダリングエンジンはマルチコアに対応させる 現状を考えると320*240-16bppが2DでJavaでの安定動作の限界だと思うよ それを2倍拡大して描画するのがベストか Sunはデスクトップ部分に5.0は力を入れるといいつつ 1.4.2とほとんど変わらなかった前科があるから6にも期待薄だな
-serverを指定するだけ多少は速くなるし、メモリ次第かなぁ
serverはゲームではオススメしない 強度の最適化のために滑らかに動かない
BufferStrategyとpaintComponentを切り替えられるようにすれば RPGツクールでキーボード名前入力を可能にした感じのゲームも可能なのかな。 でもそんなことしてたらMMORPGなんて作れない気もする。 -serverの件もそうだけど、なんかもどかしい
一応BufferStrategyはCanvasでも使える AWTなのであまり込み入った使い方しないように
おお、ホントだ。BufferStrategyは埋め込み可能だったのか。 ゲーム画面上に透明チャット窓とかしようとするのも可能そうだね。 BufferStrategyならAWTとSwingの差分なんてあってないようなものだろうし。 ちょっと希望が湧いてきました。
5.0からAWTにZOrderが追加される。かゆいところに手が届いてら。
Swingでrepaintをした場合ってイベントキューで処理されるの? Timerのタイミングできちんと描画スレッドに渡せますか?
何を言いたいのかわからんがSwingは普通のSUIのイベント処理だぞ リペイントわたしてもリペイント範囲のaddされるだけ 連続でrepaint複数渡しても1回しかリペイントされないとかよくあること これはSwingに限ったことではない Windowシステムは全部そう だからTimerでrepaintわたしたからすぐに描画されるわけではない 正確なタイミングでやるならAWTイベントでのリペイントは辞めるべき BufferStrategyを使うのが正しい これは内部でDirectXとか使われてるイベントモデルではなく、いわゆる直書きだ
>>244 どうもです。
FPS管理するからrepaintのままでやります。
描画に失敗したら致命的というわけでもありませんし。
FPS管理って普通にみんなBufferStrategyでしてると思うぞ なんか勘違いしてないか?
いやJComponentもバリバリ使いたいので。
Swingコンポーネントベースのゲームってめずらしいな ダブルバッファリングをライブラリに任せるのは割ときついからな
保守
良スレですね。 6年ぶりぐらいにJava触って驚いた~。 趣味の遊びには最適ですね。
exewrapがJavaゲームの必須アイテムになるのかな? ヒープサイズをjrockitと同じ物理メモリの75%とかに指定したいんだけど exewrapにはそういう指定は出来ないんだろうか 128m版と256m版の2つ用意したほうがいいかな・・・うーむ
鯖アプリじゃないんだから物理メモリの割合は意味がないぞ メモリ増えればGCにかかる時間は増えるわけで、ゲームで使用するメモリ量とかちゃんと計算してないの? それだとGCとかでかたつかないか?
単位時間に対するGC率が増えるのって操作性に影響でないの?
100秒ごとに1秒とまるGCと1秒ごとに0.01秒とまるGCとどっちがゲーム向きかということだ それにわりあいでやられたら世代の調整とかおわっとる GCのアルゴリズムの種類だって調整するのは常識なんだし アプリごとに最適な値は大きくことなる
Mapにキャッシュするサイズ+演算用のサイズで考えればいいんだよね? 最適値というのは演算分のヒープサイズがどのくらいのものなの?
GCの頻度とか使用量とかチェックしてないの? -verbose:gcオプションいれてごらん もっと詳しく見たいのならプロファイラで見るのが一番だが まずはGC部分に注力するならこれが見やすいだろうね
当方、子供の頃にZ80アセンブラやBASICでゲームプログラムして遊んでいました。 まぁアルゴリズムとかは結構わかります。 今頃になって、再びプログラムを趣味にしてみようと思いJavaを選択しました。 シンタックスやOOPの基本的なことは大丈夫そうです。 Eclipseインストールしてちょっと感激。 で、問題なのはすこしでもDirectDrawとかFPS管理とか、ちょっとでもシステム寄りの 部分になると全然わからないのです。 いくつかソースを読んでみますと、各人でわりと実装が違うようですね。 Java5ではどんな方法がよいのかなど、参考になるものは無いでしょうか。
>>258 そういう人かなりいるよね
ゲームは問題なく作れるけどウインドウアプリになるとmainからはじまらないので
わけがわからない、と
Javaは一応mainから常に始まるしまだ楽なほう
>>1-11 あたりはまずよんでみた?
3/32 記念パピコ
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)で表示すると確かに重くなるが
上の奴はこれと同じ状況なのだろうか?
アルファブレンドだと重いけどただの色抜きなら重くはないよ 5.0ではBufferedImageのままなにもしなくてもそれなりにきくようになってるし 5fpsってありえんね そもそもソフトウェア描画でもVGAで30fpsはでそうだが
263 :
名前は開発中のものです。 :2006/04/06(木) 12:59:32 ID:kzyZx0iO
iアプリを作ろうと思って勉強してるんですが、画像表示で躓いています。 サンプルではちゃんと表示されるんですが、画像を自作のものと入れ替えるとIO.connectionexception ってのがでるんです。サンプルと同じGIFでサイズも同じにしてあるんですが。自作画像の方に問題が あるんでしょうか。
>>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さんありがとうございます。
何回かやったらってありえね ビルドしてないとか
俺の場合、PCを再起動してみたら正常に動いたってことはたまにある。 メモリが不足してたのかな?
270 :
263 :2006/04/09(日) 23:11:53 ID:TOyrHTNi
原因はわからないです。さんぷるの画像の内、一枚だけ入れ替えたらうまくいったんで、 一枚ずつ入れ替えていったらエラーがでなくなりました。言われてみれば一回電源切った あとかも
272 :
名前は開発中のものです。 :2006/04/15(土) 01:23:46 ID:sf5nUDiw
273 :
名前は開発中のものです。 :2006/04/15(土) 10:51:05 ID:0dEqMUag
この板寂しいからレスしてくれよ・・・ 書き込みがあるとわくわくする
最近アプレットは流行らないよな。 このスレはJavaアプリのこと?アプレットのこと? サーバ側の話?J2MEのこと? なんでもあり? それよりなにより、漏れは女とJavaTea飲みたい。
MEは実装依存度が高すぎるからそちらのスレで 基本はJavaアプリだろうね アプレットは社内用リッチクライアント用途ではかなりいいけど アプリと違って起動時のパラメータとかチューニングが限界がある アプリによってメモリやGC等の設定は細かくかえるのが普通だから ゲーム用ではさほど・・ フルスクリーンとかファイルアクセスとか限界もあるしね 手軽に配布ということでフラッシュ程度でいいのならフラッシュで作ればいいし JavaでやりたいのならWebStartにしたほうがまし JRE同梱してアプリにしたほうがいいよ
某スレに幾つかアプレットの2Dゲームが上がってるけど、 速度的には全然遜色ないな。 アプレットでも結構作れる事は作れるけど、開発環境などその他諸々の点で フラッシュの方が断然上。 アプレットでゲームを作るメリットは何もないよ。
無料でまともなFlash開発環境があればいいんだけどな
ActionScript経由でFlashの機能は全部表現できるんだよね? だったらActionScript3.0がパブリッシュ(コンパイルの意)出来る環境があれば あとはAPIリファレンスを手に入れるだけで何とかなりそう
>>276 配布を考えればの間違いでは?
開発環境はアプレットのほうがどこをどう考えても上
アクションスクリプトきっついよ
>>276 ASの開発しづらさを知ってて言ってるのか?
マジキツイっての、アプレットと作り比べてみろよ。
281 :
名前は開発中のものです。 :2006/04/21(金) 18:53:51 ID:7zcsjMK6
Java使えればゲーム以外にも仕事で役立ちそう Flashは覚えても応用範囲が狭そう
>>281 俺はC→AS→Javaだったよ
ASだけは遊びで覚えたんだけど、OO開発の基礎は自然と身についた
MovieClipの仕様がいいんだろうな
みなさんゲーム作ったんですか? ここじゃ晒さないんですか?
フリーのは、ふりーむ!とベクターで公開してる。 有料のは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);
元々フルスクリーンと行き来するとリークが発生するから起動時に選択させるほうがいい ところで意味が分かりにくいのだが 1>2>1ってこと?
288 :
285 :2006/05/07(日) 02:57:40 ID:W2WiM6Ar
>287 >元々フルスクリーンと行き来するとリークが発生するから起動時に選択させるほうがいい ありがとうございます、その方向で考えてみます。 >1>2>1ってこと? そうです。
いまやってみたけど画面ちゃんと切り替わったよ
290 :
285 :2006/05/07(日) 14:11:36 ID:W2WiM6Ar
>289 j2re1.4.1_02では、繰り返し切り替えたときにちゃんと解像度も一緒に変わったのですが 1.5.0_06ではフルスクリーンにはなりましたが、二度目以降のフルスクリーン切り替えで 解像度が変わりませんでした。(一回目はちゃんと解像度が変わるようです。) もしうまく切り替わったのでしたらソース、上げていただけませんでしょうか?
こんなかんじ 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);
注意事項としてウインドウモードとフルスクリーンモードで 色深度が違う場合テクスチャキャッシュとか全部作り直してね 異なる色深度で転送を行うとすごく遅くなる
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);
>このフレームの装飾の有効化と無効化を切り替えます。 >フレームが表示されていない時にだけ呼び出すことができます。 マニュアルどおりだと思うんだが タイトルバーの表示、非表示はフレームが表示されているときは駄目 一度非表示にする必要があるよ
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); }
あ、最後フルスクリーンモードで終わってるんで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); としてみたのですが、今度はウィンドウモードの解像度が戻らなくなってしまいました。 これが一番最初の質問と同じ状態のようです。
ウインドウモードのタイミングが指定がおかしかった //ウインドウモード 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 がでてきました。最初におっしゃってたように、あまり頻繁に切り替えるもんじゃないって事なんですね。
ソース見直してたらstaticでいいのにインスタンス生成してる部分が結構あった インスタンス生成よりstaticの方が軽い、速いかな?
Java的にはstaticはできるだけ使わないほうがいいらしいけど
オブジェクトはプールしないで積極的に生成破棄してくれ 世代別GCとの相性を考えるとこれ
>>303 実装するにあたって、static変数が必要なデザインパターンもあったんじゃね。
>>303 そういう覚え方はよくないよ。勉強しなおしたほうがいい。
ドラクエってさ、コマンド選ぶと前のコマンドがバックに表示されたまま 次のコマンドが出るじゃん それでキャンセルで現在のウィンドウが消えて 前のコマンドに参照が戻るよね あれってそれぞれにバッファ用意してやるしかないかな? たとえば道具→使う→誰に なら 道具を表示するバッファ 道具、使うを表示するバッファ 道具、使う、誰にを表示するバッファ みたいに
ファミコン時代にバッファがあったと思うか? ひたすら上書き ウインドウが消えたらアクティブになったウインドウの描画 それだけだよ
一応レイヤーという考え方もありだが、いまだとそっちのほうが楽だろ それぞれウインドウ内のみの描画管理 画面全体の描画でそれらを適切に呼び出す
>>308-309 遅くなったけどサンクス
なんとなく分かってきた
キャラやアイテムのリスト作るのが面倒臭いな・・・
存在してるキャラ、所持してるアイテムを調べてリストにして
多ければウィンドウをスクロールさせなきゃならぬ
面倒だけどがんばるか・・
面倒か? わからなければ先にUMLでもなんでもいいけど処理の手順を書いたほうがいい
処理を考えるのが一番面倒だ きちんと順序立ててやってみるよ・・
俺はデータモデルの設計が一番面倒だなぁ。 変更や拡張に強く、ネットワーク越しの同期の取りやすいデータモデルをとか考え出すとはまり込む。
314 :
507 :2006/05/22(月) 19:16:41 ID:KUql4eEY
Javaを最近勉強しはじました。 とりあえず簡単なゲームを作りたいと思っているのですがどれ位勉強すればいいですか?
ゲーム作りで勉強すれば そういう本最近多いし
if else で100近く分岐しそう・・ 激重かな
100こくらいのifでおもくなるって10MHz切ってるマシンの人かな
>>317 たとえばさ、魔法クラスがあって、そのメソッドに魔法No.をわたして
そのメソッド内で渡されたNo.によってswitchで分岐させるとか
話がswitchになっちゃったけどswitchは数しかつかえないんだよね、たしか
それ以外で識別したいならif elseしかないと思って
あと、変数は少ないけどメソッドがたくさんあるクラスのインスタンスを
100個くらいつくるとメモリがやばかったりするかな?
class Magic {
321 :
320はミス :2006/05/23(火) 22:57:01 ID:wlFUtSp+
abstract class Magic{ public abstract void perform(); } みたいにして、個別の魔法はこれを継承するようにするとJavaらしくなるよね 実際にゲームを完成させる気ならこんなことしないだろうけど メソッドはたくさんあっても問題なし
デザインパターン立ち読みでもいいからおぼえとくといいぞ 制御とデータをわけるという考え方は Cとか構造化言語までのものだ
>>321 いや、ゲームでも普通はそういうプログラムを書く
それと識別させたいのならenumを使え
switchもつかえるし
レスサンクス
おかげで設計ができてきた
enumすか・・あまり馴染みがないから学ぶよ
ところで
>>321 の4,5行目が素でわからない
アフォですまぬ
教えてもらっていい?
ポリモーフィズムとかStateパターンとか そのへんしらべてみるとわかるよ
おk、ゲーム作りながら勉強する いろいろサンクス
VectorにStringとInteger入れて、取り出すときに Integerの要素をStringでキャスト、変換したり Stringの要素をIntegerでキャスト、変換したら エラー出るかな 面倒くさいんでInteger、Stringで統一してるんだが 勉強すればわかることだけどもしよければレスちょうだい
それぞれIntegerとStringが対応してるんなら class (名前) { public String getString(); public Integer getInteger(); } みたいなクラスを作る 対応してないんだったら、String用のVectorとInteger用のVectorを別にする
キャストはかならずクラスの関連性がないと無理 かならず数字を含む文字列ということであれば格納前に返還すればいいだけの話だが この情報だけではどうしたいのかがわからない あとゲームということは多少パフォーマンス気にすることも多いのだろうから Swing部分使わないのならVectorよりはArrayListで シングルスレッドならパフォーマンスはまずかわらんけどな
即&わざわざレス感謝 ArrayListの方がパフォーマンスいいのか・・・ 大分Vector使ってコード組んじゃったから、今度からはそうしよう RPGだからスレッドはマップのキャラ動かすのとアニメーションくらいしか使わないと思う Vectorの指定された要素がIntegerかStringかで 変換、キャストしたのちifで分岐させて処理を分けたいと思ったんだけど やっぱり元々のVectorを別にした方がわかりやすかった 対応してないし 話変わるけど、コマンドの実装が面倒だ・・ 移動コマンド、アイテムコマンド、魔法コマンド、使用対象コマンド・・ それぞれにクラス作ってそのクラスのキーイベント処理メソッドを 現在のコマンドモードによって呼び分けなきゃならん いい方法ないかな
よくわからんがキーイベントにゴリゴリ書いてるのか? それならフレームワークの設計自体からやりなおしたほうがいいぞ
ゴリゴリ書いてる・・ とりあえず組んでみようとは思ったがマジで勉強が足りんらしい チラ裏スマソでした
キーイベントではキーの入力フラグを上げ下げするだけ そしてゲームのループ内でそのフラグを読み取る これでおけ
ゲームループ内だとkeyTypedメソッドが呼ばれてから 時間差があるかもと思ってkeyTypedメソッドから 直接各コマンドクラスのメソッドを現在のコマンドモードで分岐させて呼んでた ドラクエみたいなのを再現しようと思ってるんだがゲーム作りって難しいな 俺のゲーム作りが終わるまでJavaが生き残ってるといいんだけど・・ ここの住人はレベル高いね スレ汚しスマソでした
ループ内は60fpsとか固定でチェックするから問題ないよ というか、普通のゲームはイベントで処理するところはほとんどないから それを隠すためのフレームワークというかそんなもの まず言語的にJavaがどうのこうのというよりゲームプログラミングに対しての 技術がちょっと足りないかなぁという感じがする 10~20年前だったらゲーム作りとかいろんな本で毎月雑誌に載ってたんだけどな いまじゃ残ってるプログラム雑誌がなくなってるし、ユーザーが求めるものが 高すぎてギャップで苦しんでる人が多いのはつらい時代だな とにかくメインループで取得して状態に応じてswitchで戦闘時なのか移動時なのか キャンプコマンド中なのか分離するようにかけばおけ
ゲームの作り方か・・ 一から設計見直すよ マジで参考になった、ありがとう
337 :
名前は開発中のものです。 :2006/05/28(日) 16:35:03 ID:su6FTHmr
C++だとエフェクト(爆発とか)は加算合成を使うって書いてあるんですがJavaでも同じような方法で実装する手段ありますか?
338 :
名前は開発中のものです。 :2006/05/28(日) 17:06:46 ID:oT4lybEG
Java2Dには通常合成はあるが加算合成はない
自前で実装するかJOGLとかで3Dで描画するしかない
>>11 とかのライブラリに単純な合成がある模様
>316 ifをバイナリツリーみたいな構造にすれば log2(100)の回数の比較だけで済むんじゃないか?
mpeg2のような差分圧縮形式のシーケンシャルアニメーションって負荷高いですか? レイヤー可能でそれを実現できたらコンパクトになるなと思ったのですが
Javaの質問と関係ないな 効率がいい場合と効率が悪い場合があるっしょ
>>339 ポリモフィズムで解決という結論がとっくに出ていると思うのだが
みんなが配布物に同梱してるSPIってOGG Vorbisくらい? これが便利ってのがあったら教えてください。
だろうね OggVorbisさえ再生できればだいたいこまらん
Javaのゲームライブラリ作成中。Flashの1/2くらいの表現力、生産性が目標。 まぁ皆も半月くらいでライブラリは作って、オーサリング環境作るのに挫折するんだろうけどね。
普通に考えてFlashより表現力は上だし 生産性もFlashはスクリプトがおわっとるからまけないだろ
実行環境の普及率と人々のイメージ
FLASHと比べるんだからブラウザ上で動かすんだよな ・MIDIや圧縮音声を再生する ・BGMと映像を確実に同期させる ・表示サイズを変更するとそこそこのクオリティで拡縮表示する あたりが大変そうだ
・JavaSoundでmidiと圧縮音声は問題なく可能。すぐ上でOggの話が出てる。 ・BGMとの同期はそうつくればいいだけ。 ・拡大縮小時にアンチエイリアスをかけるかどうかの設定が可能。アルゴリズムも設定可能。 別に大変じゃないし
Flashは、例えばMovieClipの完成度の高さが大いに参考になる。 あれはComposite、Prototype、Flywightなどの パターンの組み合わせがかなり洗練されててしかも使いやすい。 なんかFlash8.5からはさらに高度なAPIを持つらしいし 実装の研究をする教材としてはかなり好奇心がくすぐられる。
351 :
名前は開発中のものです。 :2006/06/05(月) 07:16:50 ID:voSd2aR7
JavaでノベルゲームとかRPGって作れますか?
macromediaはずっとデザイナー偏向で作ってきたけど
adobeとの合併で技術者向けのAPIも良くなってくと思う
でもFlashの対抗馬である事に関して、Sunは殆ど興味ないみたいだな
5年前のJavaに今の速度があればいい勝負になってたかもしれんのに
>>351 うん
>>351 余裕
>>352 Flashの代替はのぞんでないだろ
今はアプリと鯖メインでは?
ただJAX-WSとかGroupLayout標準装備があるんで
企業向けではアプレットやWEBStartが今でも多少使われているのが
今後さらに加速するかも
個人的にはアプレットが一番好きだ Webで公開して気軽に遊んでもらえるし
1.1時代のアプレットだとまともにうごかんしな 1.2以上だと別途セットアップが必要 1.2時代のJREなら今のブロードバンド時代なら問題は少ないのだが 5.0のサイズはすげぇ 1.4がかわいく見えるくらい
356 :
名前は開発中のものです。 :2006/06/07(水) 21:23:04 ID:IghNSOPk
今はJavaくらいふつうに入れてない? メーカー製パソコンとかって入ってないの?
まあJREも楽勝でインスコできるからな
>>356 バージョンは買ったときのマシンでばらばらだしそれを期待するのはちときつい
ゲームなら新しいバージョンになればどんどんよくなってるのが敏感にわかる
>>354 JavaWebStartも良くない?
あれ対応のゲーム出てくると使う側としては楽チンなんだが。見ないね。
360 :
名前は開発中のものです。 :2006/06/14(水) 17:48:02 ID:Kbfca28q
Javaで簡単なゲーム作るにはどれ位勉強すればいいですか?
「簡単なゲーム」の定義と脳味噌の質によります
アプレットにしてもWebStartアプリケーションにしてもセキュリティの問題がつくからね
>>363 に横から追加
Java Web Startってサーバー側にmime-typeの追加が必要だから、
レンタル鯖じゃ動かない可能性あり。
MIME-TYPE:application/x-java-jnlp-file
>>364 そこは連鎖場屋の中の人にMIME-TYPEの使いを頼めばなんとかなる予感。
apacheなら個人でもなんとかなるが、運用次第だな
レンタルサーバーでJMSとか使えないかな ApacheのActiveMQとかで低負荷のCGI代わりに使いたい
1台丸ごと借りるならいけるけど 月1,2万かかるよ
それだと完全にASP側に回ってるのと変わらないね diceやtalkなどシンプルな機能をメッセージングできれば 使い方を決めるのは利用者側みたいなのイメージしてたんだが
DBにしてもレンタル鯖のは使い物にならないのと同じ
昨今のDIブームに乗ってアスペクト志向を取り入れようとして挫折気味 設計だけが楽しいみたいな状態に陥ってしまったw
ゲーム開発でアスペクトが生きるかどうかはデバッグ時以外では微妙だが DIはたぶん便利になる 俺も次のゲーム開発ではDIで開発するつもり
373 :
名前は開発中のものです。 :2006/06/17(土) 23:46:12 ID:2TpnxAFo
ゲーム開発でDIって例えばどんなの?
例えば以下の内容を記述した設定ファイルを用意する <resource id="hoge" path="rsrc/hoge.jpg" gen="org.hoge.SPIImageLoader"/> んで ImageLoader il = new ImageLoader(conf_path); BufferedImage img = (BufferedImage)il.getImage(id); これが基本形。こっからどうするかは腕次第。
サウンドにフェード(イン/アウト)、パン(レフト/ライト)の加工をしたいのですが ぐぐって見た限りではそれらしきところが見当たりませんでした。 これらは割りと基本的なものだと思っていたのですが、Javaにはない機能なのでしょうか?
あります
フェードはFloatControlで出来ると思うけど、パンってどうすればできるの? 2スピーカーなら2スピーカー分のFloatControlが必要になるよね?
あ、そういうことか。自己解決orz
MIDIのSequencerでループさせようとしても ループの開始時のgetTickPosition()が-2000とかなって余計な雑音が入る。 setLoopStartPoint(0)と設定しても効果なし。 現在はisRunning()でsleepはさむ方法でループさせているが気持ち悪い。 何かよい解決方法があれば教えてください。
MIDIに送り出す部分を自分で作ってるの? そうではなくMIDIファイルから単に流すだけならループ関係はどうしようもないよ 音源ドライバとか昔の8bit16bit時代ならいくらでも情報は手に入るから そのへんさがすしかないかな
Java2Dと違ってJavaSoundはちょい敷居が高めだね ogg対応かつ簡単なエフェクトが掛けられるAudioClipが登場してほすぃ 標準で。
AudioClipは使い物にならないから今の実装だとoggが再生できてもいらね
だからand条件つけてるやんw
エフェクトつけれたところでいらんだろ あんなバッファサイズ最大制限が小さくオンメモリ必須なClipは 実装上の問題で音楽にも効果音にも使えないし あとJava2DよりJavaSoundのほうが敷居は低いと思うよ 5.0以上ならだいぶ使いやすくなったJavaSoundにたいしていまだにアクセラレーションの聞く範囲がせまく アルファブレンドもほとんど使えないJava2Dよりはね
それは「敷居」とは関係ないのでは?
いやいや十分敷居は高いよ ゲーム用と出ないのならさほど意識することはないのだろうが、 ソフトウェア転送になると目も当てられない ム板ならともかくこの板ゲーム製作板だしね
アルファブレンドが敷居が高いとか馬鹿なこと言ってるし そもそも敷居の意味がわかってないようだな
アルファブレンドじゃなくてアクセラレーションがきかない描画ってのが敷居が高い。 JavaSoundは非常にシンプル。DirectSoundやってたならすぐにわかるだろうさ。 ようは2Dの知識がない人がJava2Dを扱うのが大変と感じるか Soundの知識がない人がJavaSoundを扱うのが大変と感じるかの違い。 まったく知識がない場合どちらも難しいだろうが、Java2Dのほうが範囲が広すぎて難しいと思われ。 JavaSoundのほうが難しいと感じるのならあなたは2Dの知識はそれなりにあって Soundのほうが苦手ということだろう。
所詮はビットマップなのに何が難しいんだか
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 秒) これで十分だろ、以降馬鹿レス禁止。
検索結果が多いということはわからないからネタにしているのかその逆なのか判断は難しいな あとJava2Dはピクセル単位での処理だけじゃないから割と面倒だよ
392 :
名前は開発中のものです。 :2006/07/09(日) 17:44:21 ID:O0aQTArO
今日書店寄ってきたが、3冊あったJavaゲーム本で JavaSoundに触れていた本は0冊だったw Javaでゲームなんて作ってんじゃねーよって感じなのだろうか
まず、MIDIが使えない。 JavaのMIDIデバイスは古いバージョンのままで、多くのファイルが 正常に演奏できない。音が変になる。 OSのMIDIデバイスを取得して、その出力ポートに切り替えるメソッドは どうやら中身が実装されておらず、事実上切り替えられない。 Waveは正常に演奏できるけど、そのショートカットであるAudioClipは、 短い曲だと何故かloopでしか演奏できない。さらに幾つインスタンスを作っても、 同じファイルデータだと勝手に一つのWaveハンドルに一本化してしまう様で、 同じWaveを複数同時に演奏できない。 陳腐な批評になるが、SUNのAPIは設計は最高なんだけど実装が・・・・
>393 Java 5.0あたりでは多くのMIDI問題は修正されているんじゃないの?
MIDIで音が変になるか? AudioClipはまともな実装にしてほしいのは同意 結局自分でソースライン書くしかないからね せめてバッファ長とか指定できねーのかな それでもDirectSoundくらべてかなり楽なのはいいけどね JavaSoundは本読むより実際にいじってみるほうが早いよ 難しくはないし、5.0以降でかなり楽になってる ただ、JavaSoundDemoが5.0で動かないとかがあふぉすぎ
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
jwsのdemoみてみたけどfps表示されないね 昔見たような気がしたけど
>>399 jwsのdemoにあるGaresはGLCanvas(AWT)使用の物です。
JRefractを起動してGaersを呼び出すか、
jogl-demos.jarを落としてJGaersを実行するかすれば、
fps表示有りのGaers(GLJPanel swing使用)が起動します。
さんきゅ JOGLなんて久しく触れてなかったから忘れてたよ 結果からいうとTransparentのチェックいれるとCPUパワー使い切って描画サイズ大きくすると 35fps前後まで下がるけど、これはずすとサイズに関係なく40fpsでCPU使用率は低い 自動リフレッシュはMAXが40fpsなのかな ウインドウを動かすとfpsが上がって滑らかになるところを考えるとたぶん余力はある・・・のか 描画をすべておぺnGLでやってる場合はアクセラレーションがきいていると考えてよさそうだ ソース読んでないけど
>>401 うちの環境(
>>398 )だと初期の描画サイズで35fps…
Transparentのチェックに関係なく、大きくしたらそれだけfpsが下がる。
やっぱオンボードビデオが貧弱かw
GLCanvasの方使っときます。
FPS指定のアニメータつかった? 確か今は新機能としてあったはず あとCPU使用率もみたほうがいい OpenGLもJ2SE5.0のOpenGLアクセラレーションのようにまともに実装されてないのかもね あっちは描画もおかしくなるから最悪だけど、nVidiaとATI以外はOpenGLが動く環境であっても はねられるというすばらしい実装 結局Win32環境でDirectXアクセラレーション使うしかまともな回答がない オンボードでも845GあたりからOpenGLはまともに動くようになってきたのにねぇ
>>403 CPU使用率はPentium4 3GHz(HTオン)で論理CPU一つがほぼ100%に…
GLCanvas使うと殆どCPU使わない
今2Dアクション作ってるんだが やっぱりグラフィック描画はJava2D使ったほうがいいのかな? 今のところpaintCompornent使って描いてて そこまで不満はないんだが
paintComponentはJava2D使って描画してるわけだが・・・
ああ、スマン Graphics2Dを使わないで描画してるって意味
Graphicsだけつかっていても実態はGraphics2Dだぞ BufferStrategyではなくて?
java初心者ですが、質問に答えてもらえませんか? for文を使うときに何か制限はありませんか? キャンバスクラスでfor を使うとエラーが出てきてしまって困っています。
そんなのありえん まずエラーは何なのか、どこでおきてるのか あとCanvasはいまはほとんどつかわん
柄フレーム付きでBufferStrategyを使うときくらいか。
>>412 Canvasクラスじゃなくてもエラーになって当たり前
メソッドの中に書け
今度はfor文に使う変数の型が不正と出てしまいました。 int型ではだめなのでしょうか?
その部分のソースがないとなんとも
import見て、「ああ、MEね。独特な癖でもあるのかなぁ」とか思ってたら クラスの内側を見た瞬間全てを理解した。 まずJavaの入門サイトを回ろう。質問はその後。OK?
分かりました。サイトめぐりしてきます。
Eclipseでカーリングゲーム作ってるんですがパワーメーターなどを組み込むのに手間取っています。 なにかオススメの参考書を教えてください。よろしくお願いします
まずそれはEclipseであるかどうかが関係するアプリなのかとききたい?
420 :
名前は開発中のものです。 :2006/10/06(金) 08:35:03 ID:79ZjkJYk
swtつかってんの?
失礼しました。書き方が悪かったです これから一から作りたいのでそれに見合う参考書を教えていただけませんか? できればゴルフかビリヤードのサンプルが載っている参考書がいいのですが・・・ よろしくお願いします
システムをどうしたいの? システムがわかってるならそのまま作るだけだと思うが
423 :
421 :2006/10/06(金) 22:59:44 ID:Mdom56kE
システムというとゲームの設定とかのことでしょうか? ゲームを作るのは初めてなのでこんな感じにしたいっていうのはあるのですが 技術がないので、自分のイメージに感じが似てるゴルフかビリヤードのサンプル見ながら、 少しづつ作ろうかなと思って質問しました。
ゲーム自体がはじめてだったのか まずはループ処理や入力まわり、描画、サウンドなどを一通り勉強しよう Javaに限った話じゃないがね、これらの機能を使った最低限の動く単純なゲームを作るといい
ゲーム開発で何度か相談されたことがあるが、 ゲーム開発初心者なのに最初からでかいゲーム作ろうとするやつ多いよな 規模が大きくなってもメモリ節約しなくてもインタプリタで余裕でさばけるマシンが手に入るようになったのはいいが サンプルプログラムとかも下手に大きくなりがちで役に立たないという感じ 昔は雑誌でコードがのるくらいだからあまり大きいのはのりにくいし、把握がしやすかった 1画面プログラムとかはテク満載で逆に覚えるのには向かなかったがね ベーマガとかM・ファンとかOh!シリーズとかほんの10年前は毎月雑誌で 数十本のゲームのコードが入手できたってのはよい時代だったのかな いまじゃハードとか違法関係ばかりで真っ当なソフト雑誌が残ってねぇ 危険すぎ
プログラミングの話をいまさら紙の上でやっても利点は皆無だから 白黒だし検索できないしコピペできないリンクもない
だがまったく資料がない現状よりましでは? ネットでまとまった資料やたくさんのコードはでてこねーし ようはゲーム開発の基礎ってすでに20年位前からある基礎なわけで いまさらネットでまとめようと思う人はまずいない
RMIはEJBだけで埋もれさせてはいけない低級APIな気がしてきた。
RMIはJava2SE5.0からは大幅に改善されたので普通に価値があると思うぞ
RMIよくしらないんだが、ゲームでつかうとしたらたとえばどんな例があるの? リアルタイムなものでもつかえそう? MMORPGみたいのものはどうなんかな?
おもいっきりはしょるとソケット通信の高級APIみたいなもんだから場合によるとしかいえん UDP使いまくらないといけない用途には使えないね 人数や設計しだいではMMORPGでも使えるかと RMIは引数をシリアライズしてリモートのメソッドを起動、戻り値をシリアライズすることができる もちろんコードはクライアントのコードとまったく同じでいける点が違う その特定のメソッドが実行される場所がサーバーってだけ オンラインゲームってローカルで計算される部分は少なく、入力を鯖に送って 結果を表示するだけのシステムだから設計だけしっかりしていればそんなに難しくはないかと
カードゲームとかターン制のゲームには向いてると思うんだ。 ただホストをプレイヤーのどちらかが行うとなると性善説ゲームになるけどね。
434 :
名前は開発中のものです。 :2006/10/08(日) 23:44:58 ID:vqXTr2Px
Google Web Toolkit (GWT)を使ってJavaで、 Ajaxなブラウザゲームを作成している人はおらんかね。。。
RMIはJavaの目玉である事実に間違いはないが、シビアなリアルタイムが 必要となるオンラインゲームに使う様なものじゃない。 重すぎる。
オンラインゲームだからすべてシビアなタイミングとは限らん
東風荘とかみてりゃ、まあそりゃそうだ
438 :
名前は開発中のものです。 :2006/10/10(火) 11:31:47 ID:aHfYBwCV
実際RMI使ったオンラインゲームとかあるの?
その前にJavaがフロントエンドのゲームなんてあるの?といったほうが早いのでは RMIは自前でプロトコル作るよりは重いけどWEBサービスに比べたらめちゃくちゃ早い 開発の容易さはRMIのほうが上
ぶっちゃけCGIより早ければ十分でしょ。
疑問なんだが第三者サーバを通さずに ランダム性のあるゲームを公正に運用することって可能?
両方のクラで同処理を行って結果に差異がないか互いにチェックするとか?
自分で言っといてなんだけど、公開鍵の応用でいいんだよね。 1.互いに乱数のハッシュを送りあう 2.乱数の実体とあるならば追加のコマンドを送りあう 3.実体とハッシュを照合する 4.互いの実体を合算したものを元に処理を進める 多少重そうだけどこれなら実際に通信があるのは1と2の送受信でよい。 でもまあランキング戦とかには使えないよなぁ。
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は抽象度たかすぎ。
マックでも動くなら
ゲーム用途ならJava3Dやめとけ あとでなくぞ JOGLにしとけ
448 :
444 :2006/10/13(金) 16:45:36 ID:vmtvD3zz
>445>446>447 そうします。ありが㌧
449 :
440 :2006/10/13(金) 20:32:45 ID:/GHVYosk
OSXのJava5.0って完成度高い?
おっと、何故か番コテが残ってた。てか復活した?w
さわってないけどおかしいという話は特に聞いてないな
Sun本気でゲームやるならジョイパッドいい加減対応してくれ
>>453 JOGL, JOAL, JInput と一通り用意されていたりする。
が、JInputの使い勝手と品質は、アレゲです(約1年前試用)。
JOGLにしてもそれらのライブラリぜんぶ標準じゃないし 基本的なヒューマンインターフェースデバイスは標準にしないと意味ないのに
OpenGLに関してはJava6で標準だろ 入力デバイスがアレなのは、Win以外がアレだからでしょ
>>449 1.4.2と比べて何が変わったのやらという感じ。
>>452 RuneScapeとかいうのは4.5億も売り上げがあるのか
そういやTibiaってのもグラはしょぼいが潤ってたらしいしな
>>456 VMが一部環境用にアクセラレーションとして使ってるだけで標準実装とはちがうはずだが
ところで JInputを使おうとするとArrayIndexOutOfBoundsExceptionが出るのは自分だけだろうか…
JInputの日本語資料ゼロか・・・こりゃ普及せんな
Input Method Frameworkの使い方がドキュメント読んでもいまいち良く分からないw BufferStrategyと日本語入力を組み合わせるならこれしかないと思うんだが。。。 Swingベースに切り替えようかな、Java6からJOGLがPanel化されるんでしょ。
BufferStrategytと日本語入力の問題はDirectXとかでも同じだからな Panelのは速度が遅いはずだが改善されたんか
>>462 自前描画している日本語入力対応エディタのソースを見てみると良いかもしれない。
CopyOnWriteArraySetなどの並行APIを試してみたけど 結局STGとかだとLinkedListで十分なんだと分かっただけだった。
マルチスレッドでつくってんの?
マルチコアへの自動的な最適化とか面白そうだなと思ってね。 でも並行APIはiteratorによるremoveにたいして適正の在るのがなくて辞め。
>>488 マルチプラットホーム化が容易とうたってる割にGetAmpedRもC21もWindowsのみ対応なんだな‥‥
2Dゲームで個人レベルで作れるものでマルチコアが生きる分野ってあんまりないかもね 超連射みたいにソフトレンダなら明らかに効果があるがそれはシステム構築を楽しむためくらいしか・・・
スタンドアロンなゲームは「余ったリソースは捨てるリソース」なんだなと思ったよw
JOGLって凄いんだな
ん?
だたのOpenGLのラッパ びっくりするくらいオブジェクト指向もくそもねぇ それだけに触ったことある人ならそのまま使える
Graphics2DオブジェクトそのものがGCの原因になるから フルGCの発生回数を特定シーンごとに0に押さえるみたいな方法って不可能?
Graphics2Dのものによるかな ゲーム用途なら基本はGraphicsだけで収まる範囲にすること アクセラレーションがきくタイプは負荷はたいしたことない あとフルGCやりたくないなら使用メモリを把握した上でコンカレントGCに変更することや シーンがはっきりと分けれていたりするなら切り替え時にFullGC入れてみるとか
477 :
名前は開発中のものです。 :2006/11/08(水) 22:10:52 ID:nrOch+Qr
ムービーからだとフレームレートとかようわからんし、 あちらの人は固定フレームレートにこだわらないからねぇ まずはパッドを標準ライブラリで使えるようにしないとね 表示もだ大事だけど入力がないとどうしようもない
479 :
名前は開発中のものです。 :2006/11/09(木) 01:22:54 ID:C3JWOVJ7
480 :
名前は開発中のものです。 :2006/11/09(木) 02:09:01 ID:yu7HeJLH
481 :
名前は開発中のものです。 :2006/11/11(土) 11:19:53 ID:C9CXGr4F
482 :
名前は開発中のものです。 :2006/11/11(土) 11:45:18 ID:C9CXGr4F
java, javax系でAudioClipより表現が豊かなサウンド用インタフェースってありませんか? AudioSystemやMidiSystemを上手くラップしたいんだけど、AudioClipじゃ物足りない印象
なんでAudioClipがでてくるんだよ JavaSoundカワイソス
君一行目しか読んでないでしょ
2行目が一致しないから仕方ないだろ JavaSoundがでてくるなら問題はないのに
正直、あちらさんのゲームを見せられて、すごい、すごいと言われても、も一つピンとこねえな。 あちらさんはアセンブラかましたりとか平気でやるからな。 日本人でJavaでFPSを作ってる人っていないの?
>>487 Javaでどうやってアセンブリ言語を使うのだ
JNIの事を言ってるんじゃ無いか?
ここにいる人だけど、その多くは、Javaで本格的にゲームを作った事が ない人だろう。 各種Docで知識は豊富だけど、ただ読んで覚えてるだけ。 ゲームの開発経験はないだろう。 Java実行コードのスピードは、部分部分で比較するとC++と大差なく 見えるけど、全体のアプリとして組み立てると、その漏れてた部分の遅さが 積み重なれて顕著となり、システム系ならば許容できるけど シビアなタイムが必要となるゲームじゃとても使えなくなる 上の洋ゲーも間違いなくそのコアにJNIをふんだんに使ってるよ。 そうなると、それはJavaであってもJavaの範囲外ってことだ
>>ただ読んで覚えてるだけ ってのは、その知識をもとに小規模なテストアプリを作成して その結果で判断する事も含まれてる
>>490 javaのPrduct系ゲーム開発経験者ですか?
それとも勘でいっている?
当方、確かに経験ないので今いちわからないんだけど
コード量が増えるとメモリリークが増えるから
PureJavaじゃ使いもににならないといいたいの?
>>490 > ここにいる人だけど、その多くは、Javaで本格的にゲームを作った事が
> ない人だろう。
で、おまいはJavaで本格的にゲームを作成したことがあるのか?
>その漏れてた部分の遅さが
>積み重なれて顕著となり、システム系ならば許容できるけど
>シビアなタイムが必要となるゲームじゃとても使えなくなる
VMのGC処理が良く問題になるだけであって、コード本体の実行スピードには問題ない
> 上の洋ゲーも間違いなくそのコアにJNIをふんだんに使ってるよ。
間違いなくとか勝手に推測で断定されても、完全な間違いなんだが。
RuneScapeはPureJavaで作成されている。
その他のゲームで利用されているJNIも、
OpenGLやDirectInputを直接呼び出すだけの利用。
デタラメも大概にしてくれ。
LWやメタセコで作ってXファイルで吐いた3DモデルをJava側で読み込むツールとか、キャラのモーションを登録してJavaで読み込ませるツールとか、どこかで公開してるのかな? そういうのがないと、素人には3Dゲームなんて、とても作れない。
お前がインタフェースベースな設計を知らないだけだろw
AudioClipってもっとも低機能で使い勝手の悪いものなんだが それをほしいといわれても困る
ローダつくろうと思ってるんだけど、どのローダ書くのがいいかな? 1.メタセコ 2.ブレンダ 3.Xファイル Xのローダ書いとけば一番無難? 自分、右手系でPG書いてるから変換が面倒くさそうだけど。 みんなはどんな感じ?
>>499 それより良いインタフェースはないかと聞いてるだけでは?
てか質問の意図を理解してない以前に設計知らないだけみたいだな
あれ質問の意図がわかるやつのほうが頭どうにかしてるとおもうぜ・・・ 本人ですか
Javaでゲーム作るとき 描画ってどうしてる?
2Dなら普通にJava2D+BufferStrategy フルスクリーン時は垂直同期取るのに対してウインドウモードは取らないという点に注意してね
初めてアクションゲーム作ってるんですが 画像を半透明にしたりパレットデータを換えるときどうしてますか? できればリアルタイムで処理させたいのですが いい方法が見つかりません。RGBImageFilterではImageを得るまでが面倒で動作も不安定でした。 PNG形式のbyte列を直で変更して毎フレームImageに変換も遅そう 助けてください
>java, javax系でAudioClipより表現が豊かなサウンド用インタフェースってありませんか? なぜAudioClipと比較したインターフェースにこだわる?Lineとかいってほしいということか? >AudioSystemやMidiSystemを上手くラップしたいんだけど、AudioClipじゃ物足りない印象 JavaSound理解しているならまったく問題ないし、そこでなぜAudioClipが出てくるか不明。 同じインターフェースにこだわりたいのならともかく音量調整も出来ないようでは使い道なし。 ~System系は5.0から大幅に使いやすくなったので迷うようなことはないと思うのだが。 普通に自分で好きなインターフェースで作りなさいとしかいえない。
>>506 Java2Dは使ってみた?通常合成なら大丈夫。
ハードウェアアクセラレーションはきかないからXGAで常時60fps維持したいとかだと厳しいけど。
「同じインターフェースにこだわりたい」んだろ、もういいよ
こだわるならこだわるでAudioClip実装すればいいだけなんだけど。
うざw そのインタフェースじゃ物足りないってんだからループするだけだろ 無いなら無いってだけなのに何引っ張ってんだか
Java6になっても非Winの透過アクセラレートは無しなのかな。 まあ非Winを切り捨てても何の問題もないが。
>>509 それってGraphics2Dのことですか?
時間ができたら調べてみます。
516 :
514 :2006/11/15(水) 23:56:59 ID:EhAiNbIT
>>515 バッファストラテジというのを導入してみたんですが、といってもほとんどコピペで理解してないんですが
Graphics2D.drawImage(Image,AffineTransform,Observer)でキャラを拡大したらGraphicsのdrawImageで描いた
ブロックの画像に縦縞ができてしまったんですが、どうすればいいでしょうか?必要ならできるだけ答えます
みなさんはバッファストラテジをどう使ってるのか教えていただけると助かります。
これDirectX使って描画するからビデオドライバに問題があると崩れる場合がある。真っ当な環境なら問題は出ない。 とはいえ、アクセラレーションが利く描画じゃないようなのでその影響があるとは考えにくい。 コードと環境と加工前の画像と加工後の画像をアップしてもらえばわかるかも。 Graphics::drawImageでの拡大だとどんなかんじ?
>>515 >だからこそあの質問が意味不明なのだ。
>1行目と2行目と一致しない。
お前日本語学校からやり直した方がいいぞw
519 :
514 :2006/11/16(木) 07:35:27 ID:DvgKUdTk
>>517 環境は何を書けばいいですか?今まで気にしてなかったもので…
>>519 そもそもWindowsなのか、フルスクリーンモードなのかウインドウモードなのか
ビデオチップやドライバ等
ところでGraphics::drawImageによる拡大は問題なさそうなの?それが先決か。
>>518 具体的な対応取らない荒しはかえれ
最近ずっとJava関係荒らしてるのお前だろ
AudioClipがinterfaceなのを知らないのか デザインパターンを知らないのか 日本語を知らないのかどれだい?
524 :
514 :2006/11/17(金) 18:00:42 ID:7Zpg5IH1
>>521 OS:Win98
ウィンドウモード
Graphics::drawImageでは縞はでませんでした。
バッファストラテジはそんなに効果があるんですか?
今一速くない気がします…
>>524 速度に関してはソフトウェア描画になる部分とアクセラレーションがきく描画と分かれる。
拡大縮小やαブレンドはソフトウェア描画になる。
Graphics::drawImageによる拡大描画は大丈夫なのか・・・。
画像のロードの仕方とかにも結構左右されるっぽいけど、そのへんどうなってるかな。
あと256色モードとか16bitカラーモードが原因になる可能性もある。
転送元imageはBufferedImage使ってると思うけど、そのカラーモードはフレームとあわせてある?
抜き色があるかとか細かいこともある。
フレームレート命のアクションゲームならできるだけアクセラレーションがきく描画を選択したほうがいいよ。
あとは画面サイズが大きすぎないこと。
まとめると
・画像のロードの仕方
・デスクトップの色数
・実際に問題の出るコードと画像
526 :
514 :2006/11/17(金) 19:08:46 ID:Lt0Wj0UY
まずぱっとみ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()したあとにインセットを取得して本来ほしいサイズにそれを足して処理する。
やってみました。
>>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なら画像のパレット替えやフィルタリングもできるんですよね?
タイマーはここみるといいよ。
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でのメモリの使われ方が良く分かって無いのでどこかで損してる気がします…
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
のコードをちょろっと書いて貰えないでしょうか?
ただ分岐は多くてもいいというのはホッとしました。丁寧なレスありがとうございます。
助かります(^^;。
基本中の基本だけにしらべればいくらでもサンプルコードが出てくると思うのだが。
536 :
514 :2006/11/19(日) 10:56:55 ID:1IKPzYYc
Timer/TimerTaskとwait/notifyを組み合わせられないんです。 どうやったらTimerTaskで周期的にnotifyできるのかとかSynchronizedを付けるべきところとか 探し方が悪いのかも知れないんですが
自分はこんな感じで実装しているが、間違っていても知らない 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(); } } }
539 :
520 :2006/11/19(日) 23:41:03 ID:yvfHZIx2
今頃鯖のポート解放忘れてるのに気がついた。 何がしたいんだよ俺・・・・orz
リアルタイムシミュレーションでネット対戦できるゲームをjavaで作りたいのですが、参考になるサイトありますかね? ちなみに自分は今までCで数値シミュレーションを生業としてきてGUI関係はよくわかっていません。 勉強できるサイトがあるとうれしいです。 よろしくお願いいたします。 以上
ものすごい初心者な質問なんだけど、 普通のゲームってソフトとかクライアントとかをダウンロードするじゃない? JAVAゲームの場合、ブラウザから直接開始するけど、 読み込み時間みたいのがかなりかかるんじゃないのかな? 音楽もいちいちMP3をダウンロードすることになるの?
>>541 Javaのプログラムってのはアプレットだけじゃないよ。
通常のアプリケーション等もあるし、一度ダウンロードしたらアプレットはキャッシュからとってくることも出来るし
WebStartはバージョン等が変わってなければすべてキャッシュファイルからとってくる。
そもそもC等で作ったアプリだって同じだぞ。ネット経由でダウンロードするように作ってあるなら。
バックグラウンドスレッドでガンガン落としていけばあまり問題はなさそうだが。
544 :
名前は開発中のものです。 :2006/11/26(日) 21:31:48 ID:vp/Awfnk
>>544 Wurm Online の中の人が製作しているみたい?
ソース付きだし勉強になりそうだ。
546 :
名前は開発中のものです。 :2006/11/27(月) 18:13:24 ID:QR83lXnt
VolatileImageとMemoryImageSourceって一緒に使えますか?
使えるけど、後者は使う意味ないぞ 1.1時代の互換性のためだけの遺産だから
548 :
名前は開発中のものです。 :2006/11/27(月) 18:52:38 ID:QR83lXnt
詳しく教えてください VolatileImageでピクセル操作とかできますか?
VolatileImageは画面モードにも夜がVRAMをさすと思っていい。 VRAM直書きはメインメモリ直書きに比べて非常に遅いので出来てもやらないほうがいいのは常識。 メモリ上のImageを扱うなら1.2以降はBufferedImageを使う。最初にピクセルフォーマットをきめて 配列で扱えること、出来上がった画像を何度もコピーする場合アクセラレーションが自動的に適用される。
>>547 いや、実際にはMemoryImageSourceが一番素直な「フレームバッファ」
で使いやすい。BufferedImageは、メモリ上の配列と直接関連付けられ
ないのが致命的(ピクセル列に見立てたint配列を操作すれば直ちに
対応するImageに反映されるという意味での「Buffered」でなければ、
Rasterなどという扱いにくい邪魔者が出てくるだけでまったく意味が
ない。まだMemoryImageSourceの方がまし)。
ゲーム用途だとダイレクトにピクセルを扱う場合8bitか16bitにしないと速度的に問題が出るから BufferedImageでそういう指定するのが一番だと思うし、ピクセルフォーマット合わせる場合 GraphicsConfiguration使うだろ? 問題あるのか?short配列アクセスとか簡単に出来るから便利だと思うんだが。
>>544 それすごいな
pure javaだけでここまでできるの?
>>552 2Dなら余裕
あとは根気等
ただグラフィックなどあからさまなパクリはいかんね
>>552 署名なしで動くアプレットだから当然、pure javaです。
携帯で普通にドラクエが動いている世の中だからな。
出来るかどうかはプログラマの腕次第だと思うよ。
>>551 >問題あるのか?short配列アクセスとか簡単に出来るから便利だと思うんだが。
いや、だからその配列の内容は一度変換・コピーしないとImageとして表示できないんだよ。
自分でRGBを数値として処理する配列を取ると、一度それをMemoryImageSourcre/BufferedImageを介して変換しないと描画可能なImageが得られない。
そして、そうしたRGB配列のImage化には一発でできて余計な機能がないMemoryImageSourceの方が使いやすい。
Win32のDIB/DIBSectionのような機能(直接描画可能なフレームバッファを配列として取得できるImage)があれば楽だし、変換や不要な配列の二重確保が入らない分性能上も有利なはずなんだけどね。
BufferedImage(あるいは各種変換機能を削除して単純化したMemoryImageクラスでも新設して)でピクセル列の配列を直接公開してくれれば良いのだけど。
あと、int配列から作ったMemoryImageSourceで速度的な問題って感じたことないぞ。
Pen3+845GEのマシンで100以上のキャラクタ描いてもまったく問題にならなかった(100FPS以上)。
>>556 ラスターは邪魔だよな……。
BufferedImageのような各種変換機能付きImageを作るなら、まず単純なフレームバッファ用意してその上位版という位置づけにして欲しかった。
BufferedImageも内部には直接画面に転送する32ビット配列(Win版は32ビットDIBSection+独自のアルファ処理?)持っているんだろうし。
ピクセルフォーマットが同じだとDDBで転送するだろうから速度は速いはず。 MemoryImageSourcreは任意のピクセルフォーマットで扱うとき大変じゃない?
>>558 いや、BufferedImageはWinではDIBSectionじゃないの。
一応「バッファ」もっているし、アルファ処理対応だから。
ラスター要求されたときのためにもメモリ上にフレームバッファが必要なはず。
そういえば、もう何年もWin32APIにしろJavaにしろフルカラー32ビットフレームバッファ(DIB/DIBSection/MemoryImageSource)の速度的な不満は感じたことないな。
ピクセル単位の処理はフルカラー32ビットで行うのが一番楽(1ピクセル1DWORD)だし描画時の性能も十分。
BITMASK指定でバッファ作ればDIBと思われる動作速度じゃないよ。
32bit単位でのアクセスは非常に遅い。 IntelCore等最新のCPU使っていてもVGAクラスになると処理速度が間に合わない。 2次キャッシュのサイズ等を考慮してぎりぎりといったところか。 QVGAなら32bitカラーはぎりぎりいけるかな。 PentiumM1GHz/Pentium42GHzクラスのマシンを動作対象にしようとすると QVGA-16bppくらいしか選択肢はない。
>>559 そんな馬鹿な。2Dの画像転送速度で比較すると
BitBlt(WinGDI) > TransparentBlt(WinGDI) > AlphaBlend(WinGDI)
>> copyArea(Java2D) >> drawImage(Java2D)
なのですが。確かに小さい画面サイズならそれだけ差はなくなるけど
まともなゲームの画面サイズにすると、その遅さが浮き彫りに
>>559 失礼。フレームバッファの単語を読み飛ばしてました
Java2DアクセラレーションはDirectXも使っていたり複雑だけど 通常の矩形転送以外はアクセラレーションきかねぇんだよな しかも頻繁にGCがおきやがる JOGLアクセラレーションに期待 5.0だとDirect3Dモードはひどいし、OpenGLモードはもっとひどいし
JAVAって画像ファイル形式にGIFしか使えないってマジですか?
マジではありません どんな画像ファイル形式でも使えますよ
567 :
名前は開発中のものです。 :2006/12/01(金) 11:37:19 ID:LC+/aYM5
結構作りこんでありますねぇ。 某ゲームを彷彿させて萌えましたw ところでシステムがアーケードっぽいのはなぜなんでしょう?
569 :
名前は開発中のものです。 :2006/12/01(金) 17:16:25 ID:LC+/aYM5
感想ありがとうございます~。 アーケードっぽいのは私がアーケードゲーム好きだったので、なんとなくそれっぽくしただけなんです。(^^ゞ
>>567 ちょっ
これで素人とは言わせないぞ
どこのプロだ?
571 :
名前は開発中のものです。 :2006/12/02(土) 00:01:56 ID:WxTjtQSm
>>570 こんばんわ。
ホントにJavaでものを作って公開するのは初めてですよ~。
一度くらい仕事でJavaってみたいです。(^-^)
ちなみにゲーム歴は結構長いです。インベーダー時代からやってます♪
適当な推理だけど、 中堅ソフトメーカーの社員で、30代半ばから40台。 開発現場から管理職に昇進したものの、なんか以前より暇でムズムズしてる人。 最近のゲームは、はっきりいってぬるぽ杉て殺意すら覚えている。 乗り越える壁があってこそ面白いゲームと考えてる。 マーケティングにその事をこぼした際今時流行らないと一蹴され、このゲームを 作り始める直接のきっかけになった。 なんてね。
>>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
俺もURLみただけでアプレットかなんかかとおもってスルーしてた 単純でもDEMOがあるのがすばらしいな 結構DEMO作るの面倒なんだよな
>>567 初期化時の画面のこだわりは恐ろしいものがありますな。
ゲーム自体もかなり作りこんであるので、ちとびっくりしました。
>>574 「飛ぶだけのやつ」はシリーズでいうと3作目ではないかと。
2作目は「塔を降りる」やつではないかと。
スレ違い失礼。
580 :
名前は開発中のものです。 :2006/12/02(土) 16:49:36 ID:YSW2q7Ho
>>578 DEMOがあるとなんか昔のアーケードっぽくていいかな?
と思いました。(^^)
あと、最初の方の面は宝の出し方が故意にノーヒントにしてあるので、
デモプレーで分かるようにしてみました。
>>579 感想ありがとうございます♪
二作目はイシターでしたね。三作目が正解です。www
書き込んだ後に思い出して反省していました。(^^ゞ
>>567 JAVAなのにブラウザから直接はじめられないの?
582 :
名前は開発中のものです。 :2006/12/02(土) 17:12:22 ID:YSW2q7Ho
>>567 Javaの素人なのでアプレットの作り方とか知らないんです。
エントリポイントが違うくらいの違いであれば作ることができそうですが、
ちゃんと作る気力が無くて...orz
embedとかで埋め込めなかったっけ? 普通に作りこんであるだけに起動が面倒なのは惜しい。
584 :
名前は開発中のものです。 :2006/12/02(土) 17:50:35 ID:YSW2q7Ho
ほほぉ。そんなのがあるんですね。φ(.. )メモメモ 今度勉強してみようかな。
585 :
名前は開発中のものです。 :2006/12/02(土) 20:54:16 ID:A5BBW3gR
>>582 つゲームのパネル化&AppletとFrameへの貼り付け
マニフェストでMain-Classを指定してるみたいだからjarアーカイブの関連づけをjavaかjavawに関連づけてたらダブルクリックで実行できるだろ。
>>567 起動~リソースの読み込み~タイトル画面移行に掛かった時間を標準出力に吐いてくれたらうれしい
>>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ファイルで中を展開ってイメージが
あったもんで...)
jarはダブルクリックで実行がデフォ あふぉなアーカイバは無視しておけ
>>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を何も考えずにクリックして見るのが普通と思う。解凍は意図的にする。
長かったな参考になっただろうか
>>592 System.exitがどっかにかいてあるとか?
あれはアプレットだとセキュリティ違反
>>593 GCはインクリメンタルGCnにするとフルGCが大体消えて快適になる
5.0ならパラレルGCなので大丈夫
-Dはパラメータ用ではない。用途が違う
>>593 どうもです。(^^)
>んで効果を手軽に確認するのに初期化処理とかリソースの読み込みに掛かった時間が分かるとめあすになるかと思って。
参考になりました。φ(^^ )メモメモ
ということで時間を見つけて入れてみますね。
エンディングまで行った時にもTotal Play時間も入れておこうかな。
-Dswing.aatext=true パラメータは知らなかったのでググッてみたのですが、
これはテキストにアンチエイリアスがかかるとか紹介されていました。
ビットマップの転送にもアンチエイリアスがかかるのかも知れないのですが、
私も試したらNGでした。ちなみにゲーム中に表示される文字は全て
ビットマップです。
>>594 System.exit書いてあります!
アプレットの時はコレが書いてあるだけでNGなんですね。φ(^^ )メモメモ
ブラウザでプレイできるようにしてくれ~
>>597 すみません~。スキルがなくて…orz
System.exit止めたらExceptionが消えましたが、Component.createImage(w,h) API
でイメージが生成できないのは解消できずです。orz
newしたJPanel(Component)はヌルポでは無いのに…
>>597 アプレットはずっと動き続けるものだからね
破棄はブラウザ閉じたりページ移動したりユーザーの意思によってのみされるわけだ
>>598 エラーメッセージは?
>>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にあたります。
しかしアプレットだとVMにたいして細かい制御ができないしパフォーマンスも下がるし制限多いんだが アプレットにこだわるのはどういうことだろうね WebStartアプレットならまだましか
>>602 肝心の例外が出てる行はどこ?
ツールキットでのロードってことは読込完了するまでまってる?
画像ロードはImageIO使ったほうが楽だと思うよ
リソースのストリームから呼び出すようにね
あとソースファイルが多いので1つのディレクトリに全部展開するよりは階層構造にしたほうがいい
viとかでは管理できないレベルかと
リファクタリング使えるIDEつかえばドラッグアンドドロップで自動的にクラスの移動ができる
もちろん使われている場所も全部問題なく変更される
ここまでの規模になるとたいしたことなくともIDE必要だと思うよ
antも全部自動生成してくれるし
>>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
>>602 根源は
URL url = God.getURL(fileName);
というところでした。
この関数は、sun.applet.AppletClassLoader.getResource(filename)
としていて、ここでNULLになっているみたいです。
(結果、if(srcImage == null)がnullになるという感じです)
ImageIOというのもあるんですね。ためになります~。
EclipseとかカッコイイIDEを使いたいというのもあったのですが、
何分勉強する時間が無くて、最初はHello Worldから始めて、
グラフィックをちょっと描いてみる→ここまでに至りました。
この辺、言語や開発の仕方を覚えていく過程としてはかなりいい加減です。
(この言語が本職で無いからどーでもイイヤみたいな感じだったとでも
いいましょうか...(^^ゞ)
>>603 サーバーVMはスループットはよくなるけどレスポンス悪化するのでゲームじゃ今のところ使えない
クラスロード時にコンパイルが出来るなら別だがそういうVMはないはず
それにインクリメンタルGCは5.0でトレインGCからパラレルGCに変更になったので大丈夫だよ
トレインアルゴリズムは非常の遅くて1GHzくらいでも60fps維持は結構きつかった
一応隠しオプションでトレインにかえれるけどだれもつかわないね、あれは
>>604 リソース読むときコードにクラスローダ直書きってこと?
IDEはわからないのであればNetBeansお勧め
セットアップしてすぐに使えることと覚えることが少ないのがぐー
新規にプロジェクト作ったらsrcフォルダにそのままソースをぶっこむだけでおわる
それに補完等があるからIDEは便利だよ
コンパイルしなくても構文にエラーがあればリアルタイムに表示してくれるし
>>606 >リソース読むときコードにクラスローダ直書きってこと?
いえ、最初にgetClass().getClassLoader().getClass()してます。(^^ゞ
アプレットの時は"sun.applet.AppletClassLoader"で、
アプリケーションの時はお詳しいと思うのでご存知のように、
"sun.misc.Launcher$AppClassLoader"
みたいになりました。
IDEはもう少し時間が取れたら試してみようかな…
>>605 パラレルアルゴリズムってそんなにパフォーマンス改善されてるのか。
>>サーバーVM~
そういやこれアクションゲーだったな。
俺ADVエンジンしか作れないからレスポンスいらねw
でもlinuxだとデフォでサーバーVMが起動するからゲームのパフォーマンスさげてるって事か。
ところでswingで書けばアプレットでもアプリケーションでもどっちでも起動できるが
>>604 がdemoのSwingSet2のソースを理解出来るかどうか。
swingサポートしない古いMSVMはセキュリティの面からも切り捨てでw
#MSVMはJITだけが取り柄だな
>>607 リソース周り少し調べればたぶん解決すると思う
ストリームのほうつかってみたら?
あとファイルをjarの外に出すという方法もあるね
あとでパッチ当てるの楽になるし開発中のときはデバッグに楽かも
まぁリソースは別のjarとかにしておくのが正解か
WebStart等とかんがえるならね
>>608 あとGC自体1.4から5.0で見える範囲でパフォーマンスアップしている
Swingかどうかって関係ないのでは?
awtでもアプレットとアプリは併用可能
フルスクリーン等実装してることから1.4以上が必須なわけだし
あとはOggあたりをループ再生していればいいね
linuxは32bitならサーバークラスマシン検出しないとデフォはクライアントだと思うんだけど
64bitはクライアント版はなし
>>609 色々と調べたら、アプレットでのjar内のリソースの読み込みは
セキュリティポリシーの問題で難しそうに感じました。
(それで合っているのか分かりませんが...)
本来は提案で言われたとおり、jarを外に出すとかWebStart等が
いいのかと思いますが、流石にそのパワーが無いので、
一旦これで凍結にしようかと思います。
(所詮適当に作ったサンデープログラムプロゲームですしね。www)
----
本来はオフラインで周りに聴ける人とかいれば、色々と相談したい
ものなのですが、残念なことにJavaエンジニアが側に一人も居ないので、
なんかきっかけがあったらまたゴソゴソとトライしてみようかと
思います。
スレの流れを見ていると、上級Javaエンジニアの方が二人程
私の相手して頂いたように見受けられます。
色々とテクニカルなキーワードを教えてもらって、
かなりタメになりました。ありがとうございます!( ´▽`)ノ
>>皆様
クソゲーではありますが、純粋にレトロ風なアクションゲームを
楽しんでいただけると幸いです。(^^)
ttp://perfect-logic.net/SampleAction/
自分が書いた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; } }
確か、Jar関連のプログラミングは、 ClassLoader#getResource Thread#setContextClassLoader 辺りを使えば大体何とかなったな
>>611 のコードが間違っているが見なかったことにする
>>610 楽しんで作ってるうちが一番だと思うよ
だからアプリケーションでのみだが問題ない
仕事で作るとなるとそれはそれは・・・
とりあえずこのスレを1から読んでみることをオススメする
>>614 斜め読みですがこのスレを一通り見てみました。(^^)
私がコーディングしていて通ったような悩みを他の人も
遭遇していたりして、もっと早くこのスレに来ていればなぁと
思いました。
本職はWin,LinuxのC++/Asm系なので、この言語の高級感
(というかライブラリの充実度)は萌えだったのですが、
仕事となると色々と知らないといけないガイドラインが多そうで
大変なんだろうなぁとシミジミです。
前スレのほうが中身はあったようなきがしたけどまぁ出来上がってるから関係ないね あとは音楽でもはいっていれば十分かと できればジョイパッド対応ってところだけどJNIはいるからめんどくせーかな まぁC本職なら十分楽だろうけど Javaはネット周りが楽なのでネトゲの鯖から採用され始めてきて最近はクライアントにもきてるみたい ネトゲは運用がはいるからパッケージと違って保守性って大事だからね
>>616 >あとは音楽でもはいっていれば十分かと
そうなんですよねぇ… ちょっとMIDIで作ったのですが、
プログラムや絵よりも難産で当分無理かなぁという状況です。
(外部ファイルで設定できるとはいえ、開発者の作曲のスキルが…orz)
>できればジョイパッド対応(ry
最初Windows上にcygwin入れて、JNIをサンプルで作ってみて、
エントリポイント関数ができたので、さて作ってみるかと思ったのですが、
その直後「JoyToKey」という素晴らしいソフトを見つけてしまったので、
作成意欲がゼロになりました。
(私は"PCで遊ぶゲームはキーボード"で育ったので、自作ゲームは
キーボードでクリアする方が簡単となってしまい、この辺があんま考慮
されてなかったりします。m(_ _)m)
昔、日経Linuxとかで携帯ゲーム開発のコストの記事かなんかを
みたことあるのですが、技術者のスキルに比べて開発費用が激安で
回収が厳しいとか書いてありました。Javaで簡単に作れる時代になった
とはいえ、これで保守/運用とかあると厳しいんだろうなぁと感じました。
キーボードでもいいんだけど、同時入力が出来ない場合が多いからね しかもこのキーとこのキーが同時に入力できないってのはキーボードによって違う アクション系では致命的
>>618 >キーボードでもいいんだけど、同時入力が出来ない場合が多いからね
>しかもこのキーとこのキーが同時に入力できないってのはキーボードによって違う
φ(.. )メモメモ
これって、キーボード的(ハードウェア的)にですか?
OSのキーボードデバイスドライバ的ですか?('=,VMのイベント的ですか?)
(恐らく後者とは思っていますが...)
自作のゲームはサンプルなので、左右とジャンプしか行わないためか、
幾つかのPCでキーボードプレーしても、このような感覚に出会った事が
なかったです。
とても勉強になります。
あー、ハードウェア的でしたか…(^^; JoyToKeyのようなソフトウェアはキーイベントをOSに発行するから、 こーいう問題はないのかもなぁ…
622 :
520 :2006/12/04(月) 04:42:32 ID:8QL/yjCh
キーボードのタイプにもよるだろうけど左上+スペースが反応しないね。
そしてミス、漏れはこのスレの520じゃない
JavaSE6がでたが、単純に高速化してるなー
ニューラルネットワークの学習に使ってるけど 同じことさせて11.701sec→9.815secで速くなってた。 処理の内容はほとんどが浮動小数点演算だけどGUI周りはどうなんだろ?
GUIもはやいっぽい。 特に今までアクセラレーションがなかったWindows以外の環境でもアクセラレーションきくようになったのは大きいかと。
windowsだけど1600x1200のタイル描画で普通に60fpsがだせるようになった 5.0で同じことやっても10fpsいかなかったし、 6.0はjavaゲームの本当のスタート地点になるかも
まじか じゃあ俺もこれからアプレットのゲームつくってみよ
デスクトップ環境の強化ってどういう意味? Javaアプリケーションが高速ってこと?
>>627 2Dの事?
今までが遅すぎただけ。アルファブレンド固定なせいもあるけど
しかし、今頃になってようやくって感じだな。
ロジックの速度も上がってるけど、コレクションクラス群はどう?
JavaがC++で劣るのはGCのみ、と言ってる人がいるけど
ロジックのコアとなるCollectionAPIの遅さを考慮してないから話にならん。
STLは、ヘボ設計だけど速度はあるからそれだけ実用に足りるがね。
>>627 が何の描画で早くなったのか知りたいな
今回JREにServerVMが付属してないからJDKのJREほうでやってみたら
ServerVMのほうがコンパイルに時間がかかってかくかくになるくせに
ClientVMと同じ性能しか出てない
これはClientVMがServerVMにスループットでも追いついたということか
へーマジか
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
おお、ありがとう。 そうか、疑似端末でインストールして動かすのか…… 盲点だったぜ。
これはどういう流れなのだ・・・
俺も新型エミュにはあれ? と思ったよ 何しろexeだったし… つーかバッドバージョンインフォメーションてなんだよ。1.5だからか?
>>673 ん? 君には見えないのか。
アドバイスをくれたあの人が……
いや、どうやら俺にだけ見えるらしい……忘れてくれ……
ところで、初心に帰ってゲーム制作を1から学び直せるサイトってどこかないだろうか。
出来たものが何故かバグだらけで非常にむかついたんだ。
自分でもぐぐって探してみたんだが、どうにもPC用講座ばかり引っ掛かる……
というかサウンドノベルでバグ出す自分って一体……orz
>>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)
あら・・・動かない。
>>642 こんばんわ、567の作者です。
初めてみる症状です…
JavaのMidiSystem.getSequencer()にて例外が起きているみたいです。
PCのサウンドシステムにMIDI環境は揃っているでしょうか…?
サウンドバンクはこのプログラムには入ってるの? JDKはサウンドバンクの一番小さいやつははいってくるけど、JREには1.4以降はいってないはずだよ それを読み込むプログラムはどうしてるの? それがないとすれば動かないのが普通 一部環境(JDK入れた人)では動く、が正解
>>644 すみません。サウンドバンクという概念自体を理解してないでAPI使っています。(^^ゞ
なので、回答としては「恐らくプログラムには入っていない」ような気がします。
以前、インスコしたばかりのWindows 2000上にJRE5.0を入れて動いたのを
確認したことはあったのですが、もしもJRE1.4以降にそれが入っていないと、
Sequencer midiSequencer = MidiSystem.getSequencer();
midiSequencer.open();
みたいなことができないようであれば、JDKもついでにインスコしていた
のかもしれません。
(他の開発環境ではないマシンはネットカフェでJDKが入っていないと
思われるXPマシンで動かしたことがある程度です)
とりあえず642さんに動かして遊んでもらいたいところではあるので、
どうしたらよいもんやら...
>>646 こんにちわ。
う~ん。ちょっと環境の詳細が分からないとちょっと対応が難しそうですね。
(OS、サウンド環境、Java環境、etc...)
こちらで現象が確認できない(同一環境が揃わない)と、どうやって
対処して良いものか...
あと、他の方が作成したMIDIを鳴らすサンプルプログラムとかで、
発声するかとか知りたいところです。
それでも同じような例外が発生するようでればPC(Java)環境、
そうでなければ私のプログラムが問題ということになりますね。
(私がJavaの素人なので後者とは思いますが...)
なんか他の良いMIDIサンプルないですかねぇ。
(MidiSystem.getSequencer().open();してそうなやつ)
>>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)
諦めます。
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()も問題なし・・・。 こんな現象もあるんだ~と感心。 今後の参考にします。
>>648 オアー。環境スか...(´д`;
そのうち環境が整ったらプレーしてみてください。m(_ _)m
(ステージも結構あるので、80'sのアクションゲーム好きでしたら
楽しめると思います)
でわ。
>>648 がうごかないっていうのはライブラリの問題だと思う
マルチコアだと動かないとかよくあるから環境を書いたほうがいいと思う
マザー:gigabyte GA-965P-DS3 CPU:intel Pentium D 930 BOX(一個) サウンド:オンキヨー SE-90PCI OS:Win2000SP4 JDK:JDK5、JDK6(どっちもダメだった) 関連性があると思われるインストール済みソフトウェア Audio Deck JMF1.2 MIDIはWindowsMediaPlayerに関連付けられている状態
お前らのゲーム音源はMIDIですか、それともAUですか。
BGMはMIDI、効果音はau使ってます。
BGMはOggVorbis、効果音はWAV これデフォでしょ
660 :
名前は開発中のものです。 :2007/01/04(木) 22:53:24 ID:KxRY1/gx
サウンドバンクを配布するってのもだるいな・・・。 配布する際は使ってるライブラリも含める? それともインストールを促す? 含めると、そんなライブラリ持ってるわい!って言う人いるだろうな。 かといって含めずに「動かないんですけど」って問い合わせが来ると対応が大変だし。 なんか良い方法ないかな。
散々注意書きする
アプレットなら普通にHTTP経由でダウンロードすればいいだけでは? アプリなら適当にファイル同梱すればいいし 別にJREにはいってる必要はない
>>662 その「適当にファイル同梱」の事を言ってるんジャマイカ。
>>663 再配布可能物なんだから問題ないだろ?
それが問題になるなら画像やサウンドファイルなど他のリソースも問題になるってことだぜ?
エフェクトに対してJavaと何の関係があるのかと それにゲームによって使い方違うだろ
667 :
名前は開発中のものです。 :2007/01/06(土) 18:29:48 ID:nMuYdedC
自分も視覚効果について考えていたけど処理速度の都合上 あんまり無茶するとフレームレートががた落ちになるのがネックだね。 sun.java2d.openglやsun.java2d.d3dのオプションで OpenGLやD3Dのアクセラレーションが効くのはいいけど 環境や処理によってアクセラレーションが 効いたり効かなかったりするからあんまし過信できないかな。 というかアクセラレーションが効かないだけならいいけど、 D3Dだと拡大縮小が以上に時間かかるバグがあったり、 OpenGLだと色が化けたりでまだ実用には少々難ありっぽい。 (どちらも本家のバグレポートにあった) とりあえずDirect3D向けの視覚効果テクニックから 軽そうなのだけをJavaに引っ張る予定。
OpenGLによるJava2Dアクセラレーション期待していたらぜんぜん話にならなかった(DirectDrawのほうがまし)から JOGL使ってOpenGLそのまま使うのが今は一番現実的かな
>>669 ブラウザ上で動くオンラインゲームってのは面白そうだな。
Javaのメリットも生かせそうだし、何より金の臭いがプンプンするぜー!!
ホームページビルダーですか(笑) アドレス見て.hackを思いだした
672 :
名前は開発中のものです。 :2007/01/09(火) 03:31:44 ID:EAQZbwWj
>>669 オモシロそうだね。
しかし、いまどき手作りサイトはきつくないか?
せめてCMSを使ってほしい。
xoops, joomla, pukiwikiあたり。
FrameとSwingの違いってなんです?
AWTはFrameやDialog等を含む SwingはJFrameやJDialog等を含む つまり比べている単位が違う
XOOPSはバグだらけだしコミュ荒れまくりだしトラブル起きまくりだし半分死んでる
>>673 ネットゲームを作ってるけどユーザー登録と認証のデータベースを
一々作らなくてもXOOPSとかのに便乗してしまえばいいことに気がついたよ。
でもXOOPSは荒れてるのか、残念。
>>669 試みは面白いけど
ブラウザMMOである必要があるかってのが不明だし
見た感じ完全な素人ぽいし、何をやりたいかってのがわからないから微妙だな
>>679 Javaだからブラウザとは限らないと思う。
むしろブラウザでアプレットでも動いて、
WebStartやJavaアプリケーションだったら
他の機能も使えるとかだったら面白いと思う。
ただ募集で人を募ってるにしてはちと情報が足りないよねぇ。
>>669 どこかでみたなって思ってたら BOTNEWSの人のサイトじゃん。
682 :
名前は開発中のものです。 :2007/01/11(木) 08:07:23 ID:S2vx2eJV
ラグナロクw
.hackを思い出すようなURLだな
皆様こんばんは。JAVA初心者です。 JAVAゲームを作りたいのですが、どこかのサイトでフロッピーに一括DLできるようなところはありませんでしょうか? プログラムはもう出来ていて、あとは入力すれば出来るような簡単なゲームで良いんです(テトリスなど)。 皆様ご存知でしたら大変申し訳ないんですが教えてくれませんでしょうか…?
申し訳ありませんが意味が分かりません。もう少し易しい日本語で書いてください。
そのサイトすごくいいんだけど もちっと泥臭いJavaに限った情報を集めたサイトが欲しいなー
どの程度Javaを理解してるかにもよるな。 とりあえずお前さんが書いたソースをどっかにあげてくれ。
Imageのサイズを取得することが出来ないんですが何故でしょうか image.getWidth(this);でいけますよね?-1が返るんですけど
>>689 Javadocより
> abstract クラス Image は、グラフィカルイメージを表現する
> すべてのクラスのスーパークラスです。
> イメージは、必ずプラットフォーム固有の方法で取得してください。
ベクトルイメージとかもひっくるめてのスーパークラスだから
ピクセルの概念をImageは持ってない。
BufferedImageとVolatileImageはピクセルベースのイメージで
サイズの概念を持ってるからサイズの取得ができるよ。
>>688 ソースは公開してるけど、ここに紹介すれば
そんなサイトを君が作ってくれるの?
別に作ってもいいよ。 で、どこで公開してるの?
>>669 おもったんだけど、この理屈で言うんだったら、
ネトゲーのクライアントはアプレットでつくるより
Flex(ActionScript)で作ったほうがよくないか?
開発環境無料だし。
JREをインストールさせるより90%以上普及している
Flash使ったほうがよいかと。
(サーバサイドはJAVAでいいと思うが)
てかそういうゲーム誰か知らない?
>>693 JREをインストールさせることが面倒なのは同意だが、
サーバーとクライアントで別々の環境にすると
今度は通信プロトコルの統一が面倒なのよねぇ。
>>692 実名でやってるから2chに晒すつもりはない
とりあえずGraphics2Dの最適な描画について
まとめたドキュメントが日本語で読みたい
この方法は高速で、この方法は低速ですというのを
使ってるJDKのバージョンに合わせて知る方法があればすごく助かると思う
例えば画像の描画だけの場合でも描画面積のみ考えればいいのか、
そこでImageの描画回数はどのくらい影響するのかとか
src->dest間の色深度の違いでどのくらい影響があるのかとか
そういうのは試してみないとわからんし
結局は個人の常識とかノウハウに埋もれてたりする
みんながみんなの開発日記やソースを読める訳でもないから勿体無い
>>693 Flashで作る場合、試行錯誤で作り上げていくの難しいからまずはJavaででも問題はないと思う
それにほとんどのMMOhaアプリケーションセットアップ型だし、ランタイムのみってのはメリットはあるだろう
WebStartつかえば差分パッチとか入れることも出来るし、キャッシュさせることも出来る
UDPTCP直接バリバリつかうようなアプリだとFlashきつくね?
HTTPだけ使うようなのならいいと思うが、ターゲット考えれば暗号化とかのいたちごっこ打破も目的に入ってると思うし
てか、2ch閉鎖すんのか。。。
>>695 そういうのはいいだしっぺがやるもんだと思うぞ。
自分のノウハウをまとめたサイトをどこかで立ち上げて、その後、皆に協力を依頼するなりしてみたら?
いくらなんでも自分は何もせず、他人に頼りきりってのは虫が良すぎだろう。
こんなのが欲しい、あんなのが欲しいと言ってるだけではどうにもならないんじゃ無いかな。
まず自分が動こうぜ。
Java2Dの場合まずアクセラレーションがきくかきかないかの判断が最重要 いまだとJOGLでアクセラレーション前提のほうがよさげ
>>698 そういうのを言いだしっぺ厨って言うんだよ
顔が見えないからといって人をクレクレ厨呼ばわりするような君の為には
javadocもドキュメントもフレームワークも永遠に書かないと心に決めた
というか実際そういう需要ってあんの?
だってお前、何もしてないじゃん。 まとめサイトが欲しいって言ってるだけじゃん。 欲しいものがあるのに何故自分から行動を起こさない? まず何か行動を起こそうぜ。 俺の為に書くんじゃないよ。 自分の為、みんなの為に書くんだよ。 自分が培ってきたノウハウを他人に見せるってのはそういう事。 ここの連中、お前の質問に答えてくれてたよな。 俺じゃ無く、そいつらの為に書く気は無いか? それとも最初から自分のノウハウをまとめたサイトなんぞ作る気は無くて、何かと言い訳して逃げたいだけか? サイトを作るか?それとも作らないのか?どっちだ?
むしろ閉鎖しようかと…
>>702 実際にサイトを運営してるのか?
よければ詳しく事情を聞きたいんだが。
>>701 なんか自己啓発セミナーみたいだぞ
もうちょっとトーンダウンしろよ
>>704 で?
結局、サイトを作るのか?それとも作らないのか?どっちなんだ?
寄稿するくらいならできるけどサイト運営まで手を回すつもりはないな 自分は自分でやってる事沢山あるし でも例えば gamedev.org の Java コーナーにみんな書く気があったら 自分も何かしら書きたいけどね ただ重要なのはそういう雰囲気であって、やる気だけで上手くいく問題とは思わないよ
あーJavaでゲーム作りますがってあんま見てなかったけど そういうサイトになってたのね。てっきり個人サイトかと思ってた じゃあ何か書けるよう準備しとくよ
書くのか。そうか頑張れ。 >重要なのはそういう雰囲気であって、やる気だけで上手くいく問題とは思わないよ これは同意。やる気だけでは上手くいかない。 でもその雰囲気ってのは待ってたら自然発生するのか? するかもしれんが、それまでずっと待つのか? そういう雰囲気になるよう自分で行動したほうが早いと俺は思うね。
709 :
名前は開発中のものです。 :2007/01/13(土) 08:27:49 ID:ChZPL/q1
このスレは伸びる!!
>>707 あそこは個人サイトっぽい
Wikiだけどページ凍結されてるから他の人は更新できないし
>>708 日本で恐しくマイナーな言語のwiki立ちあげた事あったけど
利用者が一人もいなかったのでやめた事あんだよ
どんなプロジェクトでも需要の母数がなければ本人のやる気とともに消滅する
やる意味が薄いと思ったらやらないで他の事をやるだけ
>>710 よく読んだらそうだったすまん
でやっぱgamedev.orgかなと思ったらgamdev.orgなのか
gamdev.orzに見えた漏れはどうすればよいでしょうか?
Javaで作ったゲームってどうやって公開すればいいんですか? クラスファイルを配布しても直接実行できないですよね?
ランタイムが入っていればダブルクリックで実行できるようにしておくといいんじゃないの? 細かい設定がほしいならバッチファイルとかexe作るとかもあるけど
>>714 アプレット or WebStart or Jarにする。
>>715 - 717
Jarなんていいものがあったのか
ありがとうございます
なるほど そういうことね メインクラス指定してするだけでおけ ライブラリを使うのであればその指定もしておくといい NetBeansだと自動的にライブラリへのパス設定とかその辺全部やってくれるよ
NetBeansいいよねEclipseよりスッキリしてるし 移行できない理由があってすごく悔しい で、とりあえず今小さな描画テストのフレームワークを作ってるんだけど スコア算出って基本的には スコアA = fps値 スコアB = fpsの実測値 / 設定された目標のfps スコアC = 指定秒内に描画した回数 くらいでいいのかな
設定値と実測値だけでいいとおもわれ
Java WebStartを使うにはサーバーやサーバー側でダウンロード受付対応するプログラム を用意しないといけないんでしょうか?
差分ダウンロード使わないのならアプリのjarとjnlpファイルを配置して mime指定するだけでおけ
OpenGL使ったほうがおおむね早いけど、描画が崩れるよね これはバグとしてあがってたと思う 5.0のときはまったく使い物にならなかったけど、アクセラレーションは一応聞いているようだ ただ、これとJOGL組み合わせるとフリーズしたりするのが癌だな ところでエッチな画像がはいってるといわないと周りの目がある家庭だと大変なことになるぞ フルスクリーン切り替えが多いのであんまり切り替えないようにしたほうがいいかな あとウインドウモード時にウインドウサイズを変更できないほうがいいか
OpenGLやD3Dのアクセラレーションは効果は大きいね。 だけどOpenGLは環境によって色化けしたし、 D3Dはsun.java2d.ddscaletoとsun.java2d.translaccelと同時に使わないと 逆に速度が落ちる上のに、 WebStartではd3dしか使えないという訳のわからない仕様なのよねぇ。
>>725 こういうエラーがでるけど何これ?
こちらの環境はver.1.5です、1.6でないとだめ?
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version n
umber in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
>>727 OpenGLで描画が乱れるというのは気付きませんでした。ビデオカードによるのかな…
jogl との組合せは考えてなかったですがちょっと試してみます
でも jogl はデモしか触った事ないんで時間がかかりそうかも
あのエッチ画像はフリー画像で真っ先に思いついただけなんで変えときます。やっぱダメかな
フルスクリーン/ウィンドウモードは了解です
>>728 多分JRE 1.6 じゃないからだと思います…
注意書き忘れてました
レポありがとうございました
>>727 その辺は本当に悩みどころです…
VM 起動オプションによる描画法の設定もテスト側には面倒なんで
まとめて試す方法を考えときます
731 :
名前は開発中のものです。 :2007/01/18(木) 20:03:05 ID:cuqRge9/
>>669 いっぱい文章が書いてあるにも関わらず、何をしたいのかさっぱり分からない(´・ω・`)
Javaでトゥーンレンダリングのサンプルってあるか?
つーかOpenGlスレいったほうがいいぞ
質の高いサイトだな 乙
良スレ認定
設計の段階で悩んでいます。 具体的には、プレイヤークラス と 職業、職業毎のスキルの関係について悩んでいます。 戦士→剣士→騎士 のように転職可能なシステムを作りたいのですが、 騎士になっても戦士のスキルを使う事が可能というシステムにする場合、 スキルもオブジェクトとして持たせるべきなのでしょうか? プレイヤーオブジェクトに 職業オブジェクトを持たせる その職業オブジェクトが持っているスキルリストの中から習得したものを 名前を引数としてFactoryパターンのクラスに渡しスキルオブジェクトを作成 という形を取ろうと思うのですが、この形は非効率的だったり美しくなかったりしますか? 動くには動くのですが、確信が持てません 詳しい方が居ましたらご教授お願いします 説明分かりづらいですかね?
スキルは人につく でいいんじゃね?
スキルオブジェクトに スキルの名前、例えば"飛び蹴り"を渡したら 戻り値でその技の設定値を受け取るという形でしょうか? プレイヤー→Skills.getSkills("飛び蹴り") プレイヤー←"飛び蹴り"の設定値
741 :
738 :2007/01/24(水) 18:58:43 ID:abB7yEBV
すいません、名前入れ忘れてました
738=740=741=私です
>>740 は
>>739 さん に宛てたものです
EnumMapとか使うのがいいんじゃね?
それって実装の問題じゃなくね? ドラクエ転職とかジョブチェンジなら人につければいい(直接オブジェクトにしないで習得フラグだけとかね)けど、例の様な継承系なら職につけてもいいよな 戦士:A,B 騎士:A,B,C,D て上級は下級の全スキル含むようにすればいいし ちゅうわけでシステムしだいでしょ
スキルを持ってるか持ってないかだけに意味があるなら、スキルはenumの方がコードが簡潔でいい。 例 enum Skill { SWORD, GUARD, ....... } class Player { EnumSet<Skill> skills; } スキル毎にレベルがあるとかいうなら、 class Player { EnumMap<Skill, int> skills; } でレベルを表現。 スキル毎に経験値やらレベルやら使用回数やら細かいデータがつくなら、スキル毎にオブジェクトを作った方がいいと思う。 その場合でも、factoryを使う必要性はないような気がする。職業オブジェクトが直接 new していいんじゃない?
実装の仕方なんて好きにしろとしか それを考えるのが正しいのだし、解法は何通りもあるわけで マニュアルがないとゲーム開発が出来ないわけじゃないだろ? そもそもJavaと何の関係もない
俺が今作ってる奴は魔法名とかもシナリオファイルにデータとして持っている。 シナリオファイルから読み込んだ際に管理クラスがオブジェクトを作成して 必要な時はそれを使うようにしてる。
サンプルがJavaで語られるんだからここでやる意味はあるだろ 無意味な誘導に見える
Javaに依存していればココでいいさ だが、そうではないだろ
ただの自治厨だな、実際にコードが出てるだろ
751 :
738 :2007/01/28(日) 03:47:32 ID:rcpB4oX3
レスをくれた方、有難う御座います。 EnumMapで実現する事が可能でした。 しかし、dojaなので使う事は出来ませんでした。 ただ、EnumMapを知らなかったので、列挙型についてあれこれと調べる内に知識が付きました。 大変感謝しています。 結局、上手いやり方が見つかるまで、 各職業毎にインナークラスでスキルを持ち、 習得時にインナークラスを作成してPlayerクラスのVectorに突っ込んでやる事にしました。 747さんのスレは、非常に参考になりそうなのですが、 レベルが高過ぎてちょっと参加出来なさそうです。 いえ、何もこのスレが自分みたいにレベル低いかというとそういうわけじゃないのですが いつか参考に出来るレベルになった時に閲覧したいと思います。 今後は設計に関しての話題は自粛したいと思います。 なんだかすいませんでした。
752 :
738 :2007/01/28(日) 03:54:34 ID:rcpB4oX3
public Skills getSkill(String jobName,int No){ return (Skills)Class.forName("skills."+jobName+"$skill"+No).newInstance(); } try~catch文は省略していますが この様にして内部クラスをオブジェクトとして得ました。 例としてSoldierクラスの内部クラスです。 public static class skill1 extends Soldier{ public skill1(){ skillName="剣士1"; } } JVMがstaticに関してどのタイミングでメソッドをロード?するのかは 分かりませんが 上述の通り、「上手いやり方」が見つかるまでこれで行こうと思います 初心者なのに、dojaはきついなぁ… String.splitもStringTokenizerも無いので自分で作ってます…
dojaって最初にいってくれ そういうスレがあるはずだから また、容量が少なかったり速度が出なかったりするような環境の場合、 本来あるべきアルゴリズムを端折ることが多いから勉強にはむかんね
>>752 Skill を扱いたいのか Skills を扱いたいのかよくわからんが
int でナンバー振ってサブクラスがガチガチに定義するんなら
Skill の配列かリストで済むんじゃないのか
public abstract class AbstractJob implements Job {
protected Skill[] skills;
// ジョブのスキルを返す
public Skill getSkill(int no) {
return skills[no];
}
}
というかリフレクションの使いどころを完全に間違えてる
あれはいざという時に使う伝家の宝刀みたいなものだ
こまめにさしかえるような汎用的なフレームワークつくりたいのならインスタンスの生成の仕方それでもいいけど dojaとかいってることからしてそういう目的ではないだろうしな RPG用フレームワーク作るんです!とかいうのならなおさら 基本的にメソッド先で生成したオブジェクトを返すって使い方はしないよ 自前で登録してコンテナへ登録、もしくはコンテナが自動的に生成のどちらかかと そしてコンテナからインスタンスを取得する。場合にっては使いまわしたり
756 :
738 :2007/01/29(月) 00:36:23 ID:X8Jeor0A
>>754-755 お二方とも有難うございます
稚拙なコードを晒すのは恥ずかしいですが、本当に勉強になります。
生成時にコンテナに追加という形でやってみたいと思います。
754さんの意見も大変参考になります。感謝しています。
>>757 アプレットがすさまじかったのは原因はネスケで使ってたシマンテックJITの出来の悪さだろ
あれ起動中にネイティブに全部変換してる
おかげで1.3から標準でHOTSPOTVM搭載されるようになってVMのサイズが何倍にも膨れ上がったわりに
起動時間は何分の一にもなった
その後VMの起動速度はゆるやかに改善されていくことになるがJavaSE6は起動が急にはやくなったのは確か
適当なWEBに置くコンテンツとしてはFlashなりなんなりでいいだろう
ただ、規模がある程度大きくなり本格的なアプリとなれば別
>>757 プログラミングを行う観点で見れば、
「開発環境死亡・ライブラリ設計死亡・Flash9でもJITの性能しょぼい」
と選択肢にも挙がらないぞ。
アニメーション作成ツールとして見れば素晴らしいが、
残念ながらアプリ開発には使い物にならない。
761 :
名前は開発中のものです。 :2007/02/25(日) 12:31:39 ID:6L67UnbH
age
762 :
名前は開発中のものです。 :2007/02/25(日) 19:01:35 ID:LGf8AXIi
>>760 「使い物にならない」のがFLASHなのか、おまいのプログラム開発力なのか、世の中の「FLASHアプリケーション」でも見ながらもう一度考えてみるんだなw
>>762 出来ることできないことがあってFlashはまだまだ制限は多い
アプリの種類によってはFlashでもいいこともあるが、開発コストとかそういうのもみてからな
765 :
名前は開発中のものです。 :2007/02/26(月) 21:37:19 ID:g0XTbe0A
good job!
767 :
名前は開発中のものです。 :2007/02/27(火) 17:21:30 ID:ZjZJQFQd
楽なのはJavaのほうかと
769 :
名前は開発中のものです。 :2007/02/27(火) 18:54:43 ID:ZjZJQFQd
そうなんですか! ありがとうございます ┌●ペコ 本屋行ってJavaの参考書を見てきます。
Javaのゲームの本たくさんあるけど、比較的まともなのは14歳からとかいうやつだけだったような
比較的新しい書籍でもなぜか10年前のJavaの環境用につくっていたりするし
>>11 のところにあるライブラリやゲーム、過去の日記がわりと参考になる
java は覚えなきゃいけないことが多い。 もちろん java で覚えた事は他の言語でも役に立つけど。 つまり初心者が目的の作品を完成させるまで、 という意味では flash の方が簡単。 プログラミングそのものに興味があるなら java それらしいものを作りたいだけなら flash でいいとおもう
RADで言語が隠ぺいされてるflashと言語そのものjavaを比べて覚えること沢山てw 保守性考えたらjavaだよな。 javaゲームはハードウェアアクセラレータ効かんとバリバリの3Dとか無理だが。
プログラミング自体がはじめてで本当の取っ掛かりがほしいなら昔のBASIC感覚で使えるHSPあたりだろうな だが、flashは開発環境がお粗末なのでお世辞にも初心者が作りやすいとはいえないのが癌 JavaSE6ならJavaスクリプト+Javaのライブラリという使い方も出来るがIDEのお世話になることも出来ないので ある程度の規模になるときつい
Flashは仕様外の動作をすることがあるから
それを避けるためのオマジナイが多いとか聞いたけどこれは本当?
あとは
>>771 に同意。
そう言う場合は他人が作ったフレームワークのバグリスク担いでフィードバックしてやるのが バザールモデルの基本・・・ とか言ってみる。 結局間接的にOSSなライセンスされてんだし。
>>767 ずいぶん長い間いじってる割に画面が小さくて見づらい、flashの方が簡単に作れるんじゃないの?音もかなり悪いし
777 :
名前は開発中のものです。 :2007/03/01(木) 11:25:25 ID:Q/MrFJlJ
上のページ見てたらjavaだけでBGMとか効果音出るんですね けっこうゲームらしくみえる
音は普通にネイティブと変わらんよ むしろFlashのほうが制限が大きすぎる
midiとかwavファイルはJava1.4以降だったかも・・・ アプレットからの利用では制限があったような気がする。 ひょっとしてJava1.1辺りでも波形を生成して発音可能?
>>762 AS2で3000行以上のコーディングが必要なもの書いてみろ。
開発環境は酷い、ランタイムエラーを吐かないで正直死ねるぞ。
いまActionScript語るならFlashよかFlexの方がこのスレ的だろな それでもアポロ登場まではアプレット比較前提だが
>>779 JavaSoundは1.3以上
>>781 ゲーム用途ならWebStartのほうがいいんじゃね?
外国じゃけっこうwebstart見るけど日本じゃ見ないな。 開発者がwebstartに対して無知だから使いこなせてないんじゃね? 鯖丸ごと立てるかホスティングしちゃう他国と違ってレンタルスペース主体の日本じゃwebstart置けないしね。 クリック一つで必要なもん全部落としてキャッシュして後は差分だけネット越し・・・他はスタンドアローンと同じってのは使う側から見れば楽で良い。 同じ事はMEのAMSで出来るけどあっちは実装依存ヒドスw
差分ダウンロードがつかえるかどうかはたしかに鯖次第だが、配置だけならApacheとかなら大丈夫だぞ
レンタル鯖でもいけるってこと?
JNLPファイルのMIMEタイプの設定が出来る or 既にされている所だったら
でもレンタルにwebstart置いたら鯖に負荷掛けそうで気が引ける・・・
そんなに人気出るのかお前のゲームは
webstartはアプレットより負担かからんだろ
同じだろ
WebStartはバージョンチェックやオフラインモードがある時点でアプレットやFlashより負担は少ない
アプレットが常に鯖と通信してる訳じゃないだろ?
Macもあるお
jreにjws付いてなかったけ。 jdkだけだった?
>>792 ブラウザ閉じればまたダウンロードが入ってしまう
あとは署名関係が5.0から柔軟になったのでライブラリが使いやすくなったというのは大きい
AppleはSunに金払ってJavaの正式版を出してもらえよ
MacOSXのJVMは、SunのJVMを元にAppleが手を加えたバージョン だったと思うのだけど...
801 :
名前は開発中のものです。 :2007/03/04(日) 00:33:57 ID:u4tLbN0a
>>798 ブラウザのディスクキャッシュがある
>>800 sunがハードウェアアクセラレータ利かす前にcocoaと統合してOpenGL使っちゃったから描画周りが違ってたり、5.0の途中までしか出てない。
アプレットだとオフラインモードやデスクトップ統合がないからダメすぎ
コメント書き忘れたけど、下の本のPDFが読めるよ。 Pro Java 6 3D Game Development(発売予定) Killer Game Programming in Java
win2k と me でデュアルブートしてるんだけど (つまり、完全に同一マシン) 同じ Java5 SDK、同じ DirectX8(笑) を入れたはずなのに 2k で普通にサクサク動く画面が me ではものすごく重くて意外。 ウィンドウモードでのゲームを作りたくて、 あらかじめ BufferedImage から int[] を取得しておいて そいつに描画して JFrame に貼り付ける、という処理を wait() と Timer、notify() を組み合わせる常套手段で回してるんだけど このどこかで 9x系 = 本質的に 16bit てのが足かせになってるのかな。。。 タイマの精度か、synchronized のコストか。。。 今まで C++ で書いてた時は、ここまでの差は見た事なかったんで ちょとショックですた。。。
画面の色深度が違うとか ソフトウェア描画は60fpsやるなら320*240くらいが限界だね
DirectX8ならVGAカードとドライバは? directX9以降のカード+ドライバだとdx8の対応がいい加減になって来てる。 まあ、javaが5.0ならハードウェアはあんま期待出来んが・・・
レスがついてるとはおもわなかた。サンクシコ。 色深度は両方とも32bit。 カードは6年前のDX8全盛期のもの。 だからおいらなかなかDX9に手出しにくいのですよ。 そんなわけで今プロファイラ勉強中。楽しくて萌え。いや萌えとかないけど。
タイマー周りはNTカーネルと9xカーネルとでまったく違うから 組み方によっては差が出るだろうね プロファイルとればどこが遅いのかすぐにわかるはず 勉強することもないのでは? IDEが一発で円グラフや棒グラフでビジュアル化してくれるし
タイマーの差異でfps固定にミスってるとか描画性能が出てない上にディスプレイが32bitだからとかか・・・どっちかてとCPU性能かな? こりゃベンチマークでマシン側の2Dと3D性能調べた方が良いね。javaの問題じゃなさそう。FF11がDX8世代だからちょうど良いと思うよ? 後はまあ、メモリの転送速度とか?java自身は十年前でも徹底的に叩きあげればそれなりに出たからね。 下手するとDX8末期に出た イリュージョンのエロゲすら危ういかもしれんし・・javaで演算量を馬鹿みたいに増やしたベンチ組むと顔出すかも。 5.0だと初めから性能が大方バランス良く出てるから叩き甲斐の無いイケナイ子になってしまって残念。 6.0なんてそりゃあもう・・・再コンパイルなしであの速度はビビった。調教師いらねぇ。 けどサポートがxp sp2以降なんだよね。 vistのドライバが出そろってから乗り換えようと思ってる奴には正式サポートはなしですか?
>>810 6.0っつーのはJava SE 6のことか?
どうでもいいことかもしれんが、Java SE 6のサポートはWindows2000以降
(厳密にはWindows2000以降とは書かれてないが面倒なので他バージョンは省略)。
XP SP2以降でなければならないとはどこにも書かれていない。
ていうかすでにSunは6.0といった名称は使っていない。Java SE 6。
こういうことは調べてから書いてくれよな。
そういう俺はWindows2000ユーザー。
サポートがXP SP2以降とか書いてあったので焦ったぜ。
xp sp1にjdk6入れたときテストしてないって出たよ。 動くがsp2移行にしろインストール続けるか?って聞かれた。 システム要件の所にはサービスパックの事までは書いてないはずだし。 書いてあるのは98,MEはサポート外ってだけ
>>770 > Javaのゲームの本たくさんあるけど、比較的まともなのは14歳からとかいうやつだけだったような
そう、15歳からはじめる Javaゲームプログラミングとかいう題名の本、結構良いよね。
とにかく、読みやすいし、アクションゲームの基礎をきっちり学べる。
画像、MIDI,、wav、地形スクロール、タイマー とか。
ただし、この本を買うのは恥ずかしい。
あと、はがきを送ると、オマケPDFがもらえるとあるのだが、まったく返事なかった。
サポート宛にメール送っても返事も返さない出版社である。
おいおいサポートめちゃくちゃだな
18歳から始める・・・が必要だな
ゲーム作りが初めてなら悪くないとおもうんだけど 古いJavaで動くように書かれてるんだよね。 新しいJavaを使いたかった俺としては少し物足りなかった。
>>816 エロゲでも作る?
>>817 1.4.2,5.0,6と全部別モンだから新しいっても書く方はバージョン毎に出せるよね。
何処ぞのeclipse本の様に
>>817 どの本について?
>>818 最新版対応とかかかれていて1.1時代のコードの本大量にあるから困る
音を出すにはauファイルにコンバートしましょうとかみると泣けてくる
なんで10年前のままなんじゃぁと
>>819 やさしいJava第二版なんて5.0対応とか言って触れてる言語仕様は前版(1.4.2)のままで5.0仕様には一切触れずにコードもなく加筆しただけだった気ガス・・・
ただ単にこの本のサンプルコードがそのまま5.0のコンパイラ通るだけ。
当たり前だのくryと言いたい所だが小一時間・・・
ちょっと質問があります。
[Javaでゲーム作りますが何か?]
ttp://javagame.main.jp/ を見ながらコーディングしています。
[ボールを動かす]
http://javagame.main.jp/index.php?%A5%DC%A1%BC%A5%EB%A4%F2%C6%B0%A4%AB%A4%B9 で挙動が理解できないことがあります。
サンプルどおりうつと、おもったどおりなんですが、クラス構成を変更すると、移動元のボールが削除されず、棒状態で描画されてしまいます。
ソースをミテモ理由が分からなかったのでコメントをもらえないでしょうか?
・変更後クラス構成
Sample.class
MoveBall.class
MainPanel.class
・実装
Sample -> main()があり、main()内ではMoveBallインスタンス、MoveBall.work()呼び出し の2つ
MoveBall -> サンプルとほぼ同じ、main()内のインスタンス化を削除、main()内の処理をwork()に変更
MainPanel -> サンプルと同じ
・環境
JDK1.5.0_11
Window Vista
ほぼおなじとかじゃわからん ソースあっぷしてもらわんと
823 :
821 :2007/03/21(水) 21:52:26 ID:PxlWoCAm
ふじこ
自己解決しますた。
>>822 スマソ、おっしゃるとおりでした。クラス構造はまったく関係ない箇所でした。
何がおこったのか簡単に書いておきます。
MainPanel(JPanelのサブクラス)内に、コンポーネントを描画するメソッドとしてpaintComponent()があるのですが、その中で
paintComponent(Grahics g) {
super.paintComponent(g);
//以下青いボールの描写が続く
}
と書く箇所で、以下のミスをしていました。
super.paintComponents(g);
本来JComponent.paintComponent()を呼び出すのを、Container.paintComponents()を呼び出してしまったのが原因でした。
#JComponent.paintComponent()とContainer.paintComponents()の違いは良く分からず
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/swing/JPanel.html
つーか、親のpaintComponent呼び出す必要はないと思うぞ 普通にfillしたらええ
825 :
821 :2007/03/21(水) 23:10:05 ID:PxlWoCAm
Swingのソースコード読んで実装が何やってるか見た方が理解が早いと思うよ
827 :
名前は開発中のものです。 :2007/03/29(木) 03:53:53 ID:V9bhDi93
Java で高速(fps で管理される)ゲームを作ってますが、フルスクリーンを使うと速度が激遅になってしまいました。 自分で調べてもこれ以上わからなかったので、お力を貸して頂けないでしょうか? 単純に、Sun のチュートリアルのとおりに排他的にフルスクリーン化しました。 ↓のようにゲームループを作って、アクティブレンダリングを行い、 もちろん bufferStrategy を使ってページフリッピングを行っています。 ↓のを1秒間に実行できる回数が、ウィンドウモードに比べて フルスクリーンだと激減します。(→800x600x32xUNKNOWN) do { update(); Graphics2D g = (Graphics2D)bs.getDrawGraphics(); rendering(g); g.dispose(); if(!bs.contentsLost()) bs.show(); } これが、αを使ったりすると、ウィンドウモードでは 40fps 出るのに対してフルスクリーンでは 3fps。 明らかにお前のやり方間違ってるということですよね。 rendering(g) をコメントアウトしたときでも、ウィンドウモードは 1000fps、 フルスクリーンで 60fps でした。この60という数字を見るとふと505さんの発言に関係している気がしたんですが、 調べてもわかりませんでした。ここを見れば?でも結構ですんで、よろしくお願いします。
そういえばフルスクリーンの時にDirectXかOpenGL使う指定したら描画速度上がるんだろうか?
まず前提条件としてウインドウモード時の色深度 あとJava2Dのアルファブレンドはソフトウェア描画なのでネイティブなVRAMにバッファが置かれると大幅に遅くなる そもそもフルスクリーン時で、というか高FPS時にイベントベースでの描画はつかうものではないぞと
javaのDirectX/OpenGLの使用はどちらかというとDesktop Javaの一環でフォントや図形の描画品質を上げる為に それを使ってて描画速度を上げる為のものじゃないってイメージだったけど それで合ってるって事かな?
831 :
827 :2007/03/29(木) 18:09:59 ID:V9bhDi93
ウィンドウモードは解像度 1024x768x32 の画面上に
800x600 のウィンドウを作ってます。フルスクリーンでは 800x600x32 にしました。
ウィンドウの初期化時にフラグでフルスクリーンとウィンドウモードを場合分けしてます。
要するに描画ルーチンはウィンドウモードでもフルスクリーンでも
同じゲームループ(上に描いたやつ)を使ってます。
αを使ったら激遅になるのはわかってますが、αを使ったときに
フルスクリーンでここまで遅いというのが納得いかなかっただけです。
このやり方ってイベントベースっていうんですかね…。
フルスクリーンにすると処理範囲も狭くなるし、排他的に画面全体を使うとなると
う~む、どう考えてもフルスクリーンの方が速いはずではないんですかね…。
一応、大枠はここのやり方を真似てるつもりです。
ttp://fivedots.coe.psu.ac.th/~ad/jg/ch03/index.html
>>831 フルスクリーン時描画してるのはVRAM
ウインドウ時描画しているのはメモリ内ビットマップ
あわせるのならまずメモリ内のバッファで描画をしてそれをVRAMへ転送とする
描画の仕方が大幅に違うのだから速度も大幅に違うのは当たり前
イベントベースってのはみまちがいだったようだ
updateというメソッドがあったのでな
単純な質問ですいません。 RPGを作っていて、 マップと自キャラを表示するところまでは 作ったのですが、NPCを表示させる いい方法が思いつきません。 背景画像のように、固定ならいいのですが、 動き回るNPCをうまく表示できません。 効率のいい表示方法があれば教えてください。 いまは、 1.背景描画 2.自キャラ描画 3.表示範囲内にいるNPCを探し、描画 今は、この3の処理が無駄な動きになっている 気がします。
3. の処理を行ったとしても動きとは無関係だと思うけど。 とりあえず MVC でやってみると単純になるよ。 1. モデルを次の時間に進める (キャラ座標の計算など) 2. ビューがモデルの内容をまとめて描画 (キャラの座標は 1. で計算済み) あと表示範囲内の判定はJVMも勝手にやってくれるので、必要になったら実装でいい。
そういうのって描画範囲に入ってないキャラも描画しちゃっていいんじゃない? 画面に表示されないから無駄かもしれないけど、マップのキャラクターが多くなってもそんなに重くはないんじゃ・・・
実装依存だな クリップ外に描画すること自体は重くはないのだが、 その前にテクスチャ座標とか計算して渡す処理だけははいるから 重くはならないというのは間違い 画面外かどうかの判定なんてスプライト描画処理で一括して扱うだろうからいれとけ 最初はまったく処理をしないラッパでいいから
838 :
名前は開発中のものです。 :2007/04/02(月) 00:03:15 ID:0q+4yudy
AGE
ありがとうございました。 画面外のキャラも、さほどの数にはならないので、 描画する方向で作成してみます。
840 :
831 :2007/04/03(火) 01:04:07 ID:Wawfbgtr
遅れながらレスくれた方ありがとうございます。 う~む、色々試してますがウィンドウで BufferStrategy 使った場合も VRAM直…ではないんですかね… 505さんの >フルスクリーン時は垂直同期取るのに対してウインドウモードは取らない って何か関係してませんかね?そもそも垂直同期って言葉自体なじみがなかったんですが、 垂直同期を取ってるのでいくら処理が速くても bs.show でリフレッシュレート以上に ならないようになってる、と考えるのは間違いですか? それだとしてもα使って 3fps って明らかな処理落ちか…う~む…
BufferStrategyでの同一API使ったアクセスが可能というだけで
VRAM直になるかはVM実装(つまり環境)依存
でも問題はなかろう?
Windowモードと同じようにいったんメモリ内で作ればいい
どういうゲーム作ろうとしているのかにもよるけど
あとは逆に積極的にハードウェアアクセラレーションを使うという方法もある
>>11 のところでOpenGL対応してJava2D以上の表現が可能になったようだ
Java2Dはゲームで多用する加算合成がないしね
手軽そうだね 前見たときあまり内容無かった気がしたが地味に進めてるのね 今後に期待しとこ
>>840 確かに遅すぎるようにも思うが、それだけの情報じゃ何とも言えない。
α使わないようにしてみたり、rendering(g)の中身を1行ずつコメントアウトしてみたりして原因をもっと追求してみたら?
フルスクリーン時にのみ毎回妙な処理してたりしないかい(毎回DisplayMode変更してたり…さすがにそれは無いか)
ともかく・どの部分で遅くなっているか・現象を再現できる最小限のコードはどんなか をもっと追求した方がいいと思うよ。
GTGEの日本語資料は"Javaでゲーム作りますが何か?"以外無いかのぉ。 使ってる奴居る?
Javaの場合あんまり泥臭いコード必要としてないので必要性が薄いだけでは?
847 :
840 :2007/04/06(金) 21:28:03 ID:/J9SjvCf
レス下さった方ありがとうございます。 rendering(g)の中身を1行ずつコメントアウトしてみたりってのは やってるんですが、rendering の中身を空にすると今度は bs.show で 時間かかってたりして、どうにも思うように動いてくれないんですよね。 つまり、プログラムの動作速度をはかって原因を探るだけでは解決できず そこで、ここで皆様の力を借りようという経緯です。 コードはどうあがいても結局 60fps になってるんですよね…。 BufferStrategy は実装依存、なんですね。 15歳から始めるJava~ではウィンドウのみのサンプルがあって そこで「BufferStrategy はビデオメモリに直接書き込むので高速」と 断言してあったような気がしてそこは疑ってませんでしたが。 実装依存としてウィンドウモードと同じ方法を用いる、という方法は そういえばまだ試してませんでしたね。一度試してみます。
847 だからメインメモリでの描画はどうなんだと
BufferStrategyがVRAM使うのってsunの実装だと、DirectXかOpenGL使うときだけじゃなかったけ?
何のオプションも指定していないデフォがDirectXなんだが
DirectXはDirectXでも指定なしはDirectDraw。 指定するとD3D。javaでのOpenGLとD3Dの基本的な使い方は同じで どっちも極力VRAMに置こうとする。 けどだからと言って早くなるわけじゃない。
アルファブレンドがどういう描画をしているか、ソフトウェア描画がどういう経路でメモリアクセスしているかがわかるなら
遅くなる原因はわかると思うぜ
>>840 BufferStrategyそのものが問題じゃないんだよ
Java2Dでゲーム開発ならBufferStrategyはどんな状況においても必須だし
スレチで悪いんだが「Javaでゲーム作りますが何か?」の掲示板書き込める? IPAフォントのライセンス違反してるからライセンスのリンク貼ってやろうかと思ったらCGIに怒られた・・・。 不明な処理って何ざんす? スレチスマソ。
再配布してるってことだな あとそこのサイトのコードバグもちなのでそのままつかわないこと もしくは参考にしないこと
再配布自体はOKのようだが? 配布方法に問題があるとか?
重要な事忘れてたがIPAフォントはGRASS GIS / MapServer / PostGISからの利用以外許されてないよ。 他ソフトウェアからの利用がライセンスに含まれてない。 自分とこで作ったソフトに使うためにわざわざ商用フォントベースで作ったんだから当然だが・・・。 んでIPAフォントの権利持ってんのはオークニーだから聞くならこっち。
すいません、質問です。 JAVAで最短経路探索(A*)を組みたいのですが、 よいサンプルがあれば、教えてください。
えーすたーのアルゴリズムがわかってるならそのままやればいいのでは? まずgoogleなどで検索してみよう
>>853 管理人なんですが忠告ありがとございます。
IPAフォントのライセンスよんだんですが「当該ソフトウェア」って自分のソフトウェアと勘違いしてました。
即刻他のフォントに入れ替えます。
超亀レス恥ずかし><!なんですが
>>815 の ゲームプログラミング-アルゴリズムとフレームワーク-長久-勝
は内容的にはjdk1.4.2の時代に1.1でも動くようにと書かれているので現在からすると
古すぎる感は否めないのですが、自分はこれでリフレクションを覚えたりしたので
懐かしくてレスしてしまいます。
でもその後、雑誌などを読んだ限りではリフレクションはあまり推奨されてないんですよね。
保守性が落ちるとかで。趣味な自分はへろへろ無駄に使ったりしてますが。
リフレクションはアプリが使うものではなくライブラリやフレームワークが情報を引き出したり設定したりするのに使うもの アノテーションが使えるようになってからは必須事項だよ
864 :
名前は開発中のものです。 :2007/04/15(日) 14:22:41 ID:Do4UH/Bo
いまさらタスクシステムの話されても。 オブジェクト指向が使えない時代のお話。
ですよねー
誰一人として悪くはない。 この企画は…構造自体が不幸を孕んでいたのだ。 戦犯はいない。 理解できない、根源から違った存在がいただけだ。 誰にとっても。 本当なら決して出会うことのなかった、才能も、経験も、熱意も、人脈も、 何もかも違う人々に関わってしまった事自体がお互いに不幸だった。 つまり…関わった時点で無残な結末が予定されていたのだ。 今はもう…その不幸を呪い、やがて忘れる時を待つしかない。
>>865 オブジェクト指向言語でタスクシステムが不要にはならないよ。むしろより簡潔に書ける。
マルチスレッドとかコンカレント関連のAPIのない時代でもあるまいし、というしてきなら、いいたいことはわかる。だがまちがっているけどね。
クマー。
釣るならもっとそれっぽいことかいてよ
drawImage(image, 0, 0, ★) の★のところなんですが、パネルを渡してもnullを渡しても同じように描画できるんですが何か意味あるんでしょうか?
画像のロードに時間がかかるときとかに、 ★にImageObserverを渡すと、ロードの完了を通知してもらえたりする。
ゲームの場合、通常非同期でテクスチャロードすることはないから意味のない引数だと思っていい。 ネトゲだとしてもそのへんは自前でコントロールするわけで。
遅くなったけど㌧
誰か前スレ持ってる人いませんか? 保存しておいたと思ったけどなくしてしまったorz
>>876 アップしていただけてうれしいんですがそれこのスレですorz
>>878 ありがとございます。
おかげさまで見れました。
爆発のエフェクトを作りたいんですが、爆発させるときにTimerTaskオブジェクトを生成して起動、爆発が終わったらcancel()で破棄って方法でよいでしょうか? 何か大量に爆発させるときオブジェクトごとにTimerTask起動するのはあまりよくないような気がするんですがいい方法ないでしょうか?
そもそも、ゲームPGでは余りスレッドを使わないんじゃない?
基本的にはオブジェクトごとにスレッドはやめとけ 関連性のないエフェクトだけ別スレッドというのはやってもいいけど(というか3Dはわりと普通気味) そういうのはスレッドプールとか使うのが普通 こまめにON/OFFはとろいぞ
>>883 スレッドをかんちがいしてないか?
ゲームで処理単位でスレッドは使う必要はない
使う場合同期等ちゃんと理解してから出ないとダメ
スレッドプールは標準APIにはいってるんだからそれを使えばいい
これはこまめにスレッドを生成破棄しないからタイマータスクの生成+破棄とはまったく動きが違う
言っている意味がわからないならスレッドは使わないで下され
どうでもいいことだが、 >タイマータスクの生成+破棄 が >タイガーマスクの生成+破棄 に見えた。
タイガーマスクと聞いてなぜかアンパンマンの顔が浮かんだ。 アンパンマンの顔のライフサイクル想像すると笑えるw
sdljavaが結構いいと思うんだけど このスレ的には評価はどう?
それ開発とまってなかったっけ? アクセラレーションもつかえないし、ネイティブのSDLもあんまりほめられたものじゃないけどね
sdlって俺だと動画表示くらいしか使わんなぁ。 動画ならJMFのVideoRenderer実装してるんで間に合ってる。 他はCDへのアクセスとジョイスティックだっけ? javaゲーをCD・・・。
graphicsクラスとかImageうんたらクラスとか描画関係のことだが、javaSE6(別に5.0でもよい1.4より新しい奴)でどうすればいいのかサンプル紹介しているページないかな とりあえず、BufferStrategyとかが1.4で加わったのは記憶にあるのだが、それ以降描画関係一切追いかけてないのでどのAPI使うのが最新手法なのかよくわからん その辺の解説とサンプル紹介しているページキボンヌ
SE5,6のJava2Dは内部実装が変わっただけで1.4以降から特に使い方が変わるようなAPIの変更はないよ。 強いていうならLCD向けアンチエイリアシングが強化されたのと、JOGLから描画パイプライン触れるようになったくらい。 アプリケーションプログラマには関係ないね。 だから1.4の事知ってりゃ、それが使える。
JavaSE6のOpenGLパイプラインは不安定なのでデフォ動作は取りやめになったよ おかげでSwing+JOGLが5.0までとおなじ遅い動作しかできん
win版のOpenGLまわりは全部VGAドライバ寄りの原因だからしかたない。 プロパティ与えて起動すると描画がめちゃくちゃだからな。 そもそもゲームはSwingと相性悪いからAWTで良いよ。
MORPGとかネット対応とかになるとSwingコンポーネント使えないのは不利かと ドライバの不具合ってほんの一部の話なら別にそのドライバが対応すればいいだけのこと nVidia、IntelともにOpenGLを有効にしてもまともに動かないのだから原因は他にあるはず
891です レスさんくすです 参考にさせていただきます それはそうと、今日15才からはじめるJavaゲーム製作だかなんだか言う本を軽く立ち読みしたのだが、 音楽とかタイマ関係まで一通りそろってそうでよさげだと思っている ただ、心配なのが、ここで使ってるAPIて古い奴まじってたりしない? わかる人、教えてくれ
そこのは1.4だったかな 許容範囲 Javaのゲーム開発本は大量にあるが唯一実用となる書籍として有名なやつだよ 新目なのに1.1対応とか、やってることがひどいとか参考にならないのが多いからね @ITとかも平気で嘘のせるからAPIマニュアルとソース読むしかないというのが悲しい とりあえずその本で一通りわかるようになったら次はたぶんOpenGlとかやるレベルだから中級まではそれでいいと思う
>>898 レスさんくす
土日勉強してみます
>そこのは1.4だったかな
>許容範囲
だよね
俺の会社(メーカー、ソフトハウスじゃないが、ソフトもそれなりに作ってる)もほとんど1.4しか使ってない
極たまに5.0のところあるが、6は使ってる部署0
15さいからはじめる~は日本のjavaゲー本の中では良い本だよ。 あれの内容を完全に理解できたぜ!ってレベルなら一人でシコシコハードコーディングでもゲーム作れるんじゃないかと。 日本の企業が仕事で1.4系使ってるのは単について行けてないだけだよ。 エンドオブライフだからやめた方が良いんだけどね。5.0の新文法だけでも覚えた方が良い。 趣味グラマの間に使って覚えとくとか・・・。6.0は追う気がないならどうでもいい。
去年あたりから5.0は普及してるよ ツールも対応したし、アプリ鯖もJ2SE5.0対応したしね 今年に入ってからアプリ鯖もJavaEE5対応したのが出始めてきたから加速すると思う 効率が別次元なので今のうちに覚えておくといいかと 個人のゲームなら1.4を選択する必要はないしJavaSE6一択かと 仕事だと6は今は検証中だと思う update1が出る前はほんとひどいバグもちだったし ただ標準でJAXB2.0やJAX-WS2.0はいったのが面白いし5.0のときはほとんど強化されなかったAPIに かなり手が入っているのもポイントでびっくりするほど使いやすくなったよ
>>900 古いBroadVisionとか使ってる会社だと
今でも1.3onlyだな
つかうちもそうなんだが
1.3と6じゃVMすら別モンだよな。Swingがまだ屑だったころだしXML APIもろくに無かったころか。
でもMACを視野に入れたゲームだと5.0は動かないよね?
たとえば?
そういう話じゃないと思うぞ
15才の~で勉強しようと思ったが、近所の本屋で売り切れだ ついでに俺の金も無い てことで、節約してnetだけで勉強しようと思うのだが、Javaでゲーム作りますがなにか?はどうなんですか? 自分が軽く見たところ、基礎からしっかりやってくれているみたいだが、ダメダメなところとか、注意するところありますか?
本格的に開発しないのであれば通過点としてはそれなりにいいんじゃない?
目的がゲーム作成だけならライブラリ用意してすぐに開発に入ったほうがいいけど。
ただ、画像はImageIO使ってロードしたほうがいいとかバッファは現在のピクセルフォーマットとあわせるといいとか
Java2D細かい挙動が必要になったときがたぶんのってない。
まず
>>908 がゲーム開発自体はすでにしていてJavaでのやり方がわからないだけなのか
Javaはわかるがゲーム開発自体がわからないのか、どちらもわからないのかによってとるべき道は違うかな。
>>909 Javaはそれなりにやってます(SE5.0、webアプリ開発)
会社の同僚と趣味でSE6勉強してます
最近勉強仲間がSE7だのクロージャだの言い出して、俺自身は最新テクノロジとかよりゲームの方が好きなので個人でゲーム勉強しようかと思ってます
ちなみに、グラフィック、swingは全く触ったことありません
学生時代awtすこし勉強したけど、それも研究室の新人研修だけで、忘れてしまいました
よろしく
ということはゲームの開発に関する知識だけがないのか ならそのサイトで軽く覚えるといいかと あとはJavaに関係なくゲームの作り方を教えてるサイトもみること 流れとかそういうのはかわらんから 基本的にタイマーや垂直同期によって一定頻度でのループをつくり、1フレームごとに処理をしていく まず最初にキーなどの入力>その後ゲームの処理処理>出力 出力する際逐次表示されているVRAMへ描画していくと描画途中が見えてしまうので オフスクリーンバッファという見えない領域へいったん描画、出力時にコピーまたはフリップ(フルスクリーン専用)となる 基本的にイベントを取るのはキーボードくらいなのでawtやSwingはそんなに深く知る必要はないよ
Javaの文法がわかっていてゲームを作るのが目的ならフレームワーク的になっている
>>11 をつかうのがいいかと。
本格的なSTGも作れるようだし。
自分でフレームワークを作りたいというのなら上記の細かい仕組みを知る必要になるが。
レスどうもありがとう ゲームは1日1時間てことで明日から1時間位づつゲーム勉強してみまつ Javaでゲーム作りますが何か?のページ見てたらGTGEが面白そう とりあえず、こいつの中身読んでみよっかな なんか、やる気出てきたので週明けから暇であることを祈る また、なにかあったらよろしく
俺も毎日一時間以上ゲームPGや勉強やることにしたよと会社から
ゲームはモチベーションを上げるため、と割り切れば勉強のためにもいいとおもわれ。 殺風景な業務用のコンポーネントがならぶだけではなく、フレームの中をボールが飛び跳ねてアニメーションしてるとか DBとの連携やゲームとの相性の悪くないORマッピングとか、各種デザインパターンとかものにはなるし。 WEBアプリのフレームワーク側ではなくドカタ側にまわってると技術力とモチベーション低下が避けられないからね。
まさにそんな感じ。 去年まで4年以上ミドルウェアを開発してて、 上司の退職をきっかけにずっと前に出した異動希望が発動して、 グラフや統計などを使う研究用Webアプリを開発することになって、 プログラミング的には難易度が下がった。 とはいえ計画通りだし、年内は勉強しながらMyライブラリを作る。 2年ほどで作りたいのはトバルみたいなの。
917 :
名前は開発中のものです。 :2007/05/28(月) 21:47:29 ID:9APdzwvN
トバルとはなつかしいな
No.1だな
トバル2は面白かった
PSで格ゲーは邪道。SSでアーケードスティックプロ、それが俺のジャスティス!
15才~、以外にお勧めの本もしくはwebある? ゲーム製作本でなくても、描画とか同期とかキー入力とかゲームに関係あることが書いてある奴があれば教えて欲しい レベルは基礎でも応用でもどっちでもいいです あ、javaのAPIは無しね よろぴこ
実際のところ標準APIの組み合わせで2Dゲームならだいたいことたりるから APIマニュアル見ながらテストするのが一番わかりやすかったりする Javaの命令がわからない、という人ならそれでわからない問題ってのはたしかなかったと思う ゲームの作り方そのものがわからないならJavaとか言語以前の話
ようするに、15才~以外にまともな本もホームページも無いのね
ゲーム開発がわかる人=APIマニュアルだけでおけ ということだろ だからある程度のゲーム開発になるとまともな本がない あとは開発者の減少だろうね 昔はベーマガとか大量にゲーム開発のための本があったわけで 実際同人の開発者もほとんどがその世代である30代以上だ Javaに限らんのよ
MIDPってはやってる?
MIDP汎用は日本じゃはやってない やれることが少なすぎるから ドコモが使ってないというのもあるかも 一応2.0からはやれることは増えたけど使いにくいかな
スプライトのアニメーション(イメージの切替)なんですが、スプライトクラスの中でTimerTaskを起動して表示するイメージ番号を切り替えるのって効率悪いですか? 定石としてはメインループで各スプライトに対して表示するイメージを切り替えるメソッドを呼ぶようにするんでしょうか?
つまりメインループとキャラと完全な非同期ってことね スプライト100個出したら100個のスレッドがたちあがるってことかな? そうでないにしろ、表示されるタイミングとスプライトの時間管理とのずれが問題になるよね たとえば1フレームごとに点滅表示させるような場合、それらが同期取れてないのでずっと表示されたり ずっと消えたままになるよね 各種オブジェクトは内部でカウンタを持って1フレームごとに呼び出されるメソッドで+1していくのが基本だよ メインループ側(フレームワーク側)とは切り離して独立して動けるようにね そうすると単体テストが容易になったりするし、見るクラスが1つだけなのでバグもでなくなる 外部からのきっかけがほしい場合はオブザーバーパターンを使えば汎用的になってなおよろし 小規模であまり深く考えないのならpublicなメソッドでもいいと思うけど
それならフレームじゃなくて時計の時間にスプライトの状態を同期すれば 完全非同期でも問題ないの?
タイマつかっても完全同期は無理。 スレッドの動く時間は保障されないし、逐次処理しても当たり前だが時間は常に動いている。 それと処理落ちとかした場合は?OSがリアルタイムでない時点でいくらでもあることだよ。
931 :
名前は開発中のものです。 :2007/06/04(月) 01:03:47 ID:LU4adZL7
モーション付モデルデータを表示するために、何か良いエンジンありますか?
>>926 レスサンクス。
auのオープンアプリレイヤーに興味あったんだけどこれからなのかな。
というか新しい機種しか対応してないし、ここはJavaSEの話がメイン
eclipseでjarファイル生成させたのにクリックしても起動しませんorz 何が問題なんでしょうか。 クリック時にエラーは出ません
マニフェストファイル作った? わからないのなら正直NetBeansのほうがいいと思うぞ 必要なライブラリもクラスパス自動登録されるようにしてくれるし
ふむ 同意してみる eclipseの方が好きなの、ちょっと玄人向けの気もする 何でもかんでも後からplugin追加だからな その点、NetBeansは何もしなくてもある程度使える 個人的には何もしなくてもWebアプリのプロジェクトがサクサク作られたのが気に入った しかし、疑問なのはゲーム製作にしてもそれ以外にしてもIDEの話になると、ほとんどの書籍がeclipse使うよな NetBeansはなんか問題(著作権とか?)でもあるのかね
NetBeansの使い方知らないやつが多いだけじゃね? 去年のJavaのIDE TOPはNetBeansが選ばれてる時点で流れに乗れない人たちと思われ。 あとEclipseはプラグイン入れるだけでページ数稼げる。これポイント。
>>935 マニフェストファイルは作ってます
必要なライブラリはありません
大学がeclipseなのでそれを使ってます-`)
考えられるのは、 ・マニフェストファイルがおかしい ・実行環境に問題がある ・そういうプログラムである くらいか マニフェストファイルをEclipseに生成させるようにしてJARを作成してみたら? それで上手くいくようなら自作マニフェストファイルがおかしいって事になる
940 :
名前は開発中のものです。 :2007/06/07(木) 13:02:37 ID:vuPLnRCS
NetBeansのほうがお勧めというが、 プラグインを入れなくても、 リファクタリングとか、補完とかの機能がEclipseのほうが使いやすい。 必要としない人も多いから何とも言えないが。 まぁ、次期NetBenasで解消されるようだけど。 Swingが速くなったおかげで、重さも解消されたし。 最初からNetBeansを使ってるひとは、Eclipseのほうが便利な部分を知らなくて使っていくだろうし、 逆もそうだとおもうんだよね。 まぁ、初心者にはNetBeansが良いと思う。
う、下げ忘れた。ごめんなさい。
>>934 まずは、コマンドプロンプトで
java -jar ***.jar
で起動させてみて。
>>940 JBuilderとかになれてるとEclipseのほうが使いにくいのだ
EclipseはCTRL+スペースばかりに機能が統合されていてすばやく撃ち込む場合使いにくいのだよ
NetBeansも最近CTRL+スペースに集中してきて悪化している
ユニットテストとかライブラリとかはNetBeansのほうが使いやすいね
EclipseでまともにGUI開発できないってのはまぁ致命的といえば致命的だが
ゲームだとせいぜいコントロールパネルくらいだからどうでもいいか
あ、ゲームだと問題となるのが最新のJDKが推奨されるけど、
Eclipseは最新のJDKが使えない可能性が高いのが問題となりやすいかも
>>942 なるほど。
JBuilderはほんとの初期しか使ってないから評価できないけど、
forループとかでイテレータ使うテンプレートが無かったのは覚えてる。
あと、sysoutとかで補完とかそういった細かい所は好みの問題だし、
慣れだからね。
確かにユニットテストはNetBeansのほうが良い。
Eclipseはわかってる人からすれば、なんてことはないけど
知らない人に説明するの面倒。
プロファイラも同じなんだよね。
Eclipseのプロファイラの重さはかなり致命的。TPTPとかもうね・・・・。
GUI開発に関しては、VEが一応ある。Matisse(NetBeansのGUIエディタ)も動く・・・・・・有料だけど。
コレが無料ならいいのだけどねぇ・・・・。
ただ、Matisseはソースは出力物であって、編集できない形だから俺はいまいち。
その点VEは編集しても頑張って再現してくれる。失敗も多いけどね。
俺の印象だと、
Eclipse 巨大な整理されていない道具箱
NetBeans 必要な道具だけが綺麗に整理されている道具箱
ある程度使えばどっちも生産性に差は無いと思う。
とくにゲーム制作に関しては。
>>941 java -jar ***.jarで起動させました
するとエラーが表示されました
eclipseには何も表示されなかったのに何故…
どうやらファイル入出力が拙いようでした
いろいろ弄って何とか解決できました
皆さんありがとうございました
ん?Eclipseでも実行させたらエラーちゃんとでてるよな?
Jarにまとめる前に実行するだろうから やっぱり、コンソールに出力されるはずだがなぁ・・・・。 自動的にコンソールが前面に出てくる設定になってないとか。
>>943 >俺の印象だと、 >Eclipse 巨大な整理されていない道具箱 >NetBeans 必要な道具だけが綺麗に整理されている道具箱 激しく同意 しかし、最近NetBeansの勢いが増してきた気がする 6.0楽しみだ Eclipseは最新の技術への対応が遅くなってきて無いか? ただで使わせてもらってるのにえらそうに言うのもなんだが ただ、個人的にはEclipseの方が好き なぜなら、日本語のドキュメントが多いからw
948 :
943 :2007/06/08(金) 11:19:22 ID:uRAOQaxB
ちょっと補足。 >Eclipse 巨大な整理されていない道具箱 >NetBeans 必要な道具だけが綺麗に整理されている道具箱 NetBeansは必要な道具が無かった場合、かなり苦労を強いられる。(出来ないことはない) Eclipseはほとんどの場合箱のなかを探し出せばそれを実現する道具(プラグイン)を誰かが作ってる。 俺もEclipseの方がすき。 長いこと使ってきて愛着があるってのもあるし、使えるプラグインが多いことも私にとっては重要。 Amaterasのプラグインとか無いとやっていけない。 それにNetBeansのとにかく簡単に!という流れに乗ってか、Callisto という、 コレさえあれば大抵大丈夫っていうプラグインセットも出てきたから NetBeansの勢いに負けずに頑張って欲しいなぁ。 Eclipseで一番危惧しているのはJavaが疎かになるんじゃないかなってこと。 PHPやC++、Rubyへの対応がニュースの目玉になるぐらいだから・・・。 ゲーム関係ないなw
NetBeans、この1年でのRuby対応すごすぎ Ruby対応は今IDEでもっとも旬なものじゃないかな
>>928 遅くなったけどありがとうございます。
>>スプライト100個出したら100個のスレッドがたちあがるってことかな?
そうです。
結論としてはオブジェクトごとにTimerTask持つやり方でいいってことでしょうか?
皮肉をこめたあの文章でダメだと思わないのならやめたほうがいい マルチスレッドでやるにしろスレッドプールと排他制御を理解してからね タスク間での通信とか大丈夫に見えない 別スレッドでやるにしろ手軽なものじゃないよ 何も考えない場合依存性がないエフェクト関連でしかつかえん
キャラクターのアニメーションに使うだけなので他のオブジェクトと依存性はないかと・・・
で、スレッドが増えることによる弊害は考えないの? 各スレッドごとにスタックもつわけだし、綺麗なアニメーションも出来ないよ
954 :
名前は開発中のものです。 :2007/06/08(金) 18:43:35 ID:f1IK12WV
fillPolygonなんかで多角形を一色に塗る方法は分かったのですが、 ゲームなんかでよくあるように画像をはめ込むことはできませんでしょうか?
矩形ならJava2Dですぐ出来るんじゃね? 多角形が必要ならJOGL使ったほうがよさげ
javaのゲームプログラミングを勉強したいんですけど、何かお勧めの本はありますか?
>>955 ありがとうございました。ド素人なんでググるところから始めてみます。
>>956 ゲームじゃないプログラミングの経験はあるの?
ないならしばらくゲームを作るのは忘れて一般のJavaの入門書買って勉強した方がいい
ゲーム作りながら0から学ぼうとするのはかえって遠回りになるよ
959 :
名前は開発中のものです。 :2007/06/08(金) 21:56:13 ID:JbwzLCuD
>>953 それを
>>927 で聞きたかったんです。
やっぱりオブジェクトが増えると効率悪くなりますかね。
今のところ数十個ならちゃんと表示されてるんですが。
一般的にキャラクターのアニメーションとかエフェクトとかでもスレッドプールというのを使うんでしょうか?
>>958 普通のプログラミングも始めたばかりです
>>960 スレッドが増えるとメモリなどの効率が悪くなるし、排他制御での効率の問題も出やすい
マルチコアが普及してもこの数年じゃせいぜい同時に動けるのは4スレッド程度
ならば4スレッドつくっておいて毎フレームなげる
100個のオブジェクトがあった場合最初に4つなげて空きができるまで残りの96個は待っている状態になる
ただ、本当に並列動作が意図的にほしいのでないのならマルチスレッドはバグの原因になるから使わないほうがいい
TimerTaskが便利そうに見えるというのならそれはフレーム管理を理解していないだけ
書籍なども読んだりしてまずシングルスレッドで行うようにしよう
バックグラウンドで動かしたいスレッドなんて音楽や効果音などでたくさんあるんだし、必要になってから勉強しよう
並列処理を理解せずにTimerTaskを使うのは危険すぎる
>>960 いわゆる擬似タスクを使えばいいのでは?
スレッドは同期処理とかなにかと面倒。
疑似タスクとかフレーム管理とかJavaの本でお目にかかったことないんですがC++関係のゲームプログラミング本に書いてあるのでしょうか。 何かよい資料があれば紹介していただきたいんですが。
場合によってはデザパタ本よんだほうがいいかもしれん
>>965 JavaであるといいんですがやっぱりC++のほうがゲームプログラミングは充実してますね。
ありがとうございます。読んでみます。
別にObject指向わかっていればたいしたことはないと思うし、そういうゲームの基礎的な部分ってのは みんなアセンブラやC,BASIC時代で終えてきた人ばかりだしね 今のほうが基礎的なこととか情報の入手に困る時代 Cでもサンプル少なすぎってわけさ
969 :
名前は開発中のものです。 :2007/06/09(土) 19:01:59 ID:Z0TKLmia
タスクシステム使った事ないけどワークメモリと関数ポインタもった構造体のリストを時間ベースで管理するってかんじ? OOと合うの?普通に並列化したほうがいい気がする。
970 :
名前は開発中のものです。 :2007/06/09(土) 19:45:16 ID:zoMf1LX5
SFCの聖剣伝説のようなARPGを作るにあたって、MVCを考慮したシステム設計で悩んでいます。 ARPGを作成する上で参考になりそうなクラス図一覧やシーケンス図が記載されているような 参考書はあるのでしょうか? JAVAで無い場合はそれ以外の言語でもいいのでよろしくです。
普通に作れば? どこがひっかかるの?
このスレの少し前でも話題になってるようなのですが 15歳からはじめる~の本の応用編PDFのパスワード誰か知りませんか? 出版社のサポートに問い合わせても何の返事も来なくて・・・
>>972 あれの葉書の締め切りとかってもう終わってる?
今から葉書出しても遅いかにゃ?
>>974 本当だ
葉書見たら、無料で送付してくれる期間も過ぎてたわ
graphic関係で質問 BufferStrategyてJPanelで使えないの? 今、JFrameでWindow作って、その上にJPanel乗せて、JPanelにゲーム画面を描画しようと考えているのだが、間違ってるのか? 直接JFrameに描くほうが正しいのか? それとも何か解決法があるのか? すまんが、よろしこ
ドキュメントちゃんとよんだ? 1行目に書いてあると思うけど。
>>977 もちろん読んでる(BufferStrategyのことだよね)
そこで、WindowsとCanvas上の~~~とあるのはわかるのだが、JPanelやそのほかのコンポーネントでも描画すること多いから、普通に考えるとJPanel上でも使用する方法があるのでは無いかと思って質問した
結論としてはやっぱり、無理なの?
とすると、JFrame上にべた書きか
ようはライトウエイトコンポーネントじゃないんだよ WindowとCanvasってのことはね JComponentなんてかいてないでしょ?
ゲーム作ってみたいがどれダウンロードすればいいか分からない
981 :
名前は開発中のものです。 :2007/06/22(金) 10:24:46 ID:GQikK9pU
>>980 みな、次スレ立てるのが嫌で980踏まないようにしていたのに、こんなど素人が踏むとは…
お前さんスレ立てしたことあるかにゃ?
無いなら985か990に立ててもらうしかないな
>>981 開発環境としては、eclipseの方が情報豊富だから、初心者にお勧めじゃないかな
インストーラの指示に従うだけでおわるNetBeansのほうが楽、というか環境に対応する速度がやはり速いね VistaとかJDK6とか
NetBeansって名前が変わる前は使ってたが、まともになった?
それなりにまともだけど、あともう一歩って感じかな。6.0に期待。