1 名前:名前は開発中のものです。 [2008/10/28(火) 18:23:40 ID:2CMNNHdH] Javaでゲームを作ろうと思っている人、今作っている人等が情報交換するためのスレです。 2Dのスレはありましたが、総合スレがなかったので立てました。 2D,3DどっちでもOKで、グラフィックス、アルゴリズム、お勧めサイト等、内容も自由です。
293 名前:名前は開発中のものです。 mailto:sage [2009/04/08(水) 01:05:02 ID:IDvn4V//] >>291 芝君元気だな サーバーサイドじゃねーの? それともu10以降のscriptほうれるようになったjavaプラグインとか(意味ねーけど) >>292 JOGLはOpenGLそのまんまべたで実装することに主観がおかれてるからあんなもんだ Cより面倒でJavaより面倒という(そのかわりJavaでラップはしやすいか) 定数とか普通のオブジェクト指向ではやらないタイプだしね
294 名前:名前は開発中のものです。 mailto:sage [2009/04/08(水) 01:22:27 ID:cu0myc7l] JOGLの気持ち悪いのはGLUやGLUTだなあ。 GLU glu=new GLU(); glu.gluLookAt(…) とか、いきなり普通に使えてしまう。 お前はどうやってGLにアクセスしているのかと。 CのAPIそのままなんだけど、Javaの感覚に慣れてるとかなり違和感がある。 GLU glu=new GLU(gl); とかなら、直観的にわかるんだが、
295 名前:名前は開発中のものです。 mailto:sage [2009/04/09(木) 23:36:18 ID:QVY5xGft] JOGLのソースファイルの場所についての質問なんですが、 先日JOGLのプログラムでエラーが発生しまして、 Caused by: java.lang.UnsupportedOperationException at java.nio.FloatBuffer.array(Unknown Source) at com.sun.gluegen.runtime.BufferFactory.getArray(BufferFactory.java:124) at com.sun.opengl.impl.GLImpl.glBufferData(GLImpl.java:783) VBOを実装してたんですが、バッファ関連でエラーのようです。 // 頂点データ配列を転送 gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vboId[0]); gl.glBufferData(GL.GL_ARRAY_BUFFER, vtxBuff.capacity()*BufferUtil.SIZEOF_FLOAT, vtxBuff, GL.GL_STATIC_DRAW); <<ここでエラー とりあえず、なにが起こっているのか確認しようとしてGLImpl.javaを探すものの… ………なんか、このファイル、JOGL1.1.1のソースファイルの中には入ってないっぽい。 GLImpl.javaの所在をご存知の方いたら教えてください。
296 名前:名前は開発中のものです。 mailto:sage [2009/04/10(金) 01:28:18 ID:y7sVQ1aZ] Buffer.capacity()は要素数じゃなくてバイト数だから、floatのサイズをかける必要はないんじゃないか? ただ、このエラーはそれとは別で起こってる感じがするが。
297 名前:名前は開発中のものです。 mailto:sage [2009/04/11(土) 00:44:56 ID:MyX2Juju] ゲーム作成とは関係ない、煽りとしか思えないような書き込みが頻発したり、 ゲームの話に戻るかと思えばOpenGLの技術的な話になって初心者がついていけなくなったり、 なんか、このスレの話題は極端から極端に触れてる気がする。 住人がもっと増えれば、ゲームの話題でもうちょっともりあがれるのかね。
298 名前:名前は開発中のものです。 mailto:sage [2009/04/11(土) 07:46:25 ID:nrxnXQtg] >>295 GLImpl.javaの場所は知らんけど Buffer#hasArray() で true 返す Buffer 渡さないとだめなんじゃね?
299 名前:名前は開発中のものです。 mailto:sage [2009/04/11(土) 19:32:25 ID:JxzVzDpH] >>298 >>295 です。 どうもです。配列をwrapするようにしたらエラーが出なくなりました。 が、まだ表示されるところまで行きません。 もうちょっと試行錯誤が必要なようで、現在悩みつつ調査中。 Bufferまわりはけっこうややこしいので、日本語の解説書がほしいところです。 オライリーからJOGL本が出たら、5000円や1万円は出すのになあ。
300 名前:名前は開発中のものです。 mailto:sage [2009/04/15(水) 23:58:29 ID:D2aVXs86] JavaでOpenGLだとJOGLを使うのが普通だけど、ジョイスティック関係でデファクトスタンダードってあるのかな? 標準仕様ではまだ存在しないけど、JSRになってるくらいのものがあれば割と安心して使えるんだが。
301 名前:名前は開発中のものです。 mailto:sage [2009/04/16(木) 00:35:02 ID:Dl/qvkUP] jinput
302 名前:300 mailto:sage [2009/04/16(木) 00:44:42 ID:Ge+Eyh9Z] >>301 サンクス
303 名前:名前は開発中のものです。 [2009/05/16(土) 16:06:53 ID:1PTlJmFk] >>171 `∧_∧ (´・ω・) ( つ旦O と_)_) ちょっと休憩。
304 名前:名前は開発中のものです。 [2009/06/14(日) 00:51:47 ID:YAYpVdk3] nsj.hp2.jp/asteroid001/ こんなの作ってみました。 まだ試作品だけどよかったら誰か意見ください。
305 名前:名前は開発中のものです。 mailto:sage [2009/06/14(日) 01:09:15 ID:MK353TQU] 物だけ見せられても宣伝乙としか
306 名前:名前は開発中のものです。 mailto:sage [2009/06/14(日) 03:42:19 ID:g6ViaG4n] >>304 死なないシューティングゲームって爽快感があっていいね もっと弾とか相手がぶっ壊れるときのエフェクトを派手にして 爽快感だけのシューティングゲーム作りたいなあって思った
307 名前:名前は開発中のものです。 [2009/06/14(日) 11:28:09 ID:YAYpVdk3] >>304 です >>305 確かにこれだけじゃただの宣伝ですね。すみません。 どんな物にしたいか: ・要するにいくつかのステージに渡って隕石を駆除するゲーム(制限時間付き) ・まず巨大だが速さが低い隕石がいくつかある状態から開始する ・直径50pixel以上の隕石は破壊されると分裂する。 ・隕石の最大速度はサイズに反比例する。 ・隕石に衝突すると、何らかのペナルティが発生する。 ・隕石を破壊(分裂)させると、得点が隕石のサイズに応じて増える。 こんなところです。 よろしくお願いします。 >>306 見た目に関してはこれからも色んな効果を追加していくつもりです。 まずはもうちょっと画面を揺らす効果を強くしてみます。 実は途中までは死亡出来る仕様だったのですが、「死ぬまで続ける」よりも「制限時間内でより効率的に隕石を掃除する」 ようにするために急遽死亡判定を取り除いてみました。
308 名前:名前は開発中のものです。 mailto:sage [2009/06/14(日) 14:03:19 ID:dPzbkR7D] 超巨大な隕石にちっぽけな自機が挑むっていう構図がいいね。 ただ、主砲が小さな隕石に当たってかき消されちゃうのは少しさびしいと思った。 爆風とかあってもいいんじゃないかな。 そうすれば効率的に隕石を掃除するっていうコンセプトにも一致するし。 あと反射、分裂ってところでbio100%の蟹味噌思い出した。
309 名前:名前は開発中のものです。 [2009/06/14(日) 15:23:29 ID:YAYpVdk3] >>306 と>>307 の意見を参考に、少し細かい修正を施して見ました。 nsj.hp2.jp/asteroid002/ ・ゲームの速度を全体的に上げた。 ・隕石が分裂する際に粒子を放出するように。 ・隕石のサイズを更に少し上げた。 ・主砲の仕様を変更。「ただの強力な弾を発射」→「貫通性を持った削岩機を射出」するように。 爆発物もその内実装してみようと思います。なんで思いつかなかったんだろう。 結構発想を得る事が出来ました。ありがとう。 >>306 少しは爽快感増えましたかね。 >>308 俺も気に入ってます、この構図。 主砲弾のダメージ量を変えずにダメージの与え方だけを変更してみました。いかがでしょう。
310 名前:名前は開発中のものです。 mailto:sage [2009/06/14(日) 19:24:58 ID:g6ViaG4n] >>309 速度が上がって隕石を早く壊せるようになったから、ただ弾を撃って待ってる時間が減ってテンポが良くなってて、 爽快感も増えてる。 今のところ画面内だけを飛びまわれるけど、このゲームはテンポが速いからもっと広いマップを飛びまわれれば 面白いかなあと思った。でも、あまり広いマップだと隕石を見つける作業が大変になってつまらなくなりそうかなあ。
311 名前:名前は開発中のものです。 [2009/06/18(木) 19:43:08 ID:qodO8hsI] GTGEのオープニング画面消せませんか?
312 名前:名前は開発中のものです。 mailto:sage [2009/06/19(金) 00:36:36 ID:Re09H4o6] ライセンス違反
313 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 03:27:34 ID:eJZ0zwQp] GTGEはだいぶ前に開発止まって、JMonkeyEngineに人が流れたと思ってた ちょっとgoogleで検索してみたけど、JMonkeyEngineはほとんど情報ないね 2.0もよくわからん状態だし Javaでゲーム作る人はフレームワークとか使わんのかね?
314 名前:名前は開発中のものです。 [2009/06/21(日) 19:11:59 ID:7M0/xeSN] GTGEはちょっとしたゲームにはすごくいいっぽいね 最近ゲーム勉強してフレームワーク作ろうとしてたけど使って見て馬鹿らしくなったw
315 名前:名前は開発中のものです。 mailto:sage [2009/06/21(日) 22:47:18 ID:JjTebPbF] Java自体が半フレームワーク みたいなもんじゃね。標準で付いてるクラス使いこなせてれば
316 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 10:23:26 ID:hPMjGfX/] フレームワークって概念をどうとらえているか知らんが、 普通はそういう言い方はしない。 Javaは基本的なAPIは提供するが、 フレームワークで準備されるような拡張API的な部分はかなり少ない。 多いなら、JakartaCommonsやらは出てこない。 とはいえ、PC上でやりたいことのほとんどにたいしての、 基本的なAPIを提供してくれているのには同意。
317 名前:名前は開発中のものです。 mailto:sage [2009/06/22(月) 21:30:21 ID:D4ho1sgZ] JMonkeyEngineがバージョンアップして、日本語の解説記事がガンガン出てきたら本気でゲーム作る それまでは、会社でWebアプリ作ってます
318 名前:名前は開発中のものです。 mailto:sage [2009/06/23(火) 02:32:57 ID:Z4M/wv7L] そういえばjME2.0、鯖が重くてうまく落とせなかったな。 F/Wの話だが俺は2DゲーメインなんでjME程の3D機能はいらんな。 JOGL使って小型のものを作った。 ただ、スプライトをどう制御するか悩むね。 スプライトクラスが個々のフレームの表示時間も持つのか描画する時に管理するかとか。
319 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 11:22:25 ID:GkwNF2sp] スプライトの当たり判定をアルファ値考慮して実装したら平均68msの実行時間がかかってしまう。 どうやって高速化するんだろ?
320 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 11:52:19 ID:jlXOwoDQ] 厳密なアルファ値判定が必要な物だけをリストしたらいいんでない。 もうやっているならスマン。
321 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 15:53:53 ID:86MRbq/S] クロスプラットフォーム目指してるならSDLがあるでよ Javaの方が手間がかからないけどね
322 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 19:20:49 ID:p2fvfWui] SDLならjavaにもあるんだが
323 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 21:35:08 ID:PEcZRotC] JavaのSDLでいきてるのってるのか?
324 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 22:58:00 ID:q4KJV7Tw] >>319 大きさや個数が分からんから何ともいえんが ピクセル単位の判定前に矩形チェックで弾くのはやってるとして ・大きなスプライトを使うんならあらかじめ32x32くらいの判定ボリュームを 用意して精度を落としてしまう ・輪郭線に該当するピクセルだけをあらかじめ列挙しておき、 そのピクセルから相手のキャラのアルファ値を見に行く(相互にやる) ・衝突判定用描画バッファを用意し、各ピクセルに色ではなくキャラクタ番号を 書き込みながら、書き込み先のピクセルを見て判定する ※描画順序に判定条件が依存するので注意 のうちのどれかを実装するとか
325 名前:名前は開発中のものです。 mailto:sage [2009/06/24(水) 23:31:26 ID:E6VQkcW7] データ構造の仕様も判定の仕様もわからんが あらかじめ判定のある不透明部分だけ抜き出して適当なデータ作っとくとか
326 名前:名前は開発中のものです。 mailto:sage [2009/06/25(木) 18:29:50 ID:Hr5vf1Co] >>319 ゲームの種類にもよるけど、ドット単位で厳格な判定をしようと言うのがそもそもの間違い。 (これはスプライト同士の場合。マウスカーソルとアイコン等、点とスプライトの判定ならドット単位でも大丈夫) 例えば、格闘ゲームの判定なんかは長方形の判定が数個配置してあるだけ。 キャラの喰らい判定も、パンチやキックの攻撃判定も、みんな2・3個の長方形で表現されている。 衝突判定が重要な格闘ゲームですらこうなんだから、他のジャンルもこんな感じ。 どうしても気になるんなら、当たり判定を複数の円や三角に分割して処理すれば軽さと精度を両立できる。 あまり細かく分割すると余計重くなるので、多少の誤差なら無視してしまってok。 STG等、敵の大群と自機の弾幕の間で判定を行なう場合の高速化方法もあるけど、 アルファを考慮して68msって規模なら必要無いので省略。
327 名前:319 mailto:sage [2009/06/27(土) 02:44:14 ID:jkJfUe9s] い、忙しい。コード書けねぇ。 スプライトの仕様は以下 ・スプライトの描画座標系での位置(x,y)を持つ ・スプライトのサイズ:w * hを持つ ・表示される画像を持つ ・可視性-visibleを持つ で当たり判定の実装は以下 1) 可視性をみる 2) 二つのスプライトの位置とサイズから重なっているか見る --- ここから実際にアルファ値考慮 --- 3) 二つのスプライトの共有された矩形の情報を得る 4) 3)を元に二つのスプライトの画像の共有部のみそれぞれint[]に各ピクセルのargb情報を格納 5) 4)より得た配列二つのピクセルの全アルファ値をみる 6) 見たアルファ値の両方が完全に不透過ならば当たっていると判断 こんな感じ。 それで当たり判定メソッドにアルファ値を考慮するかどうかのフラグを指定できるので、 >>320 の"アルファ値判定が必要な物だけ"というのはこれをoffにすればいい。(そのとき実装の 2) までやってreturnする) それ以外は上記に挙げたこと以外は特にやっていない。 とりあえず>>324 の"あらかじめ32x32くらいの判定ボリュームを用意して精度を落としてしまう" を時間がある時に実装しようと思う。 レスくれたみんなありがと。
328 名前:名前は開発中のものです。 mailto:sage [2009/07/13(月) 20:05:52 ID:L/yN0+Rr] スレ違いだとおもうけど 就職作品で提出する場合 MIDPとDojaどっちで作るのがいいと思う? てかどっちが主流なんだろう
329 名前:名前は開発中のものです。 mailto:sage [2009/07/13(月) 21:00:36 ID:m1tx5Cmh] どっちでも作れるなら両方作っておいたほうがいい。 私なら使うかどうかは別として常に保険は持っておく。 ただ「提出」となるとMIDPの方が用意しやすいんじゃないか?
330 名前:名前は開発中のものです。 mailto:sage [2009/07/13(月) 21:20:41 ID:L/yN0+Rr] >>329 了解ありがとう〜
331 名前:名前は開発中のものです。 mailto:sage [2009/07/13(月) 22:39:13 ID:X6MZ6Qd8] その会社の製品がどっち優先か調べて決めれ
332 名前:名前は開発中のものです。 mailto:sage [2009/07/14(火) 07:11:46 ID:d7m2rzzT] いまDojaじゃないけどな
333 名前:名前は開発中のものです。 mailto:sage [2009/09/11(金) 12:02:33 ID:yaQ7P120] 質問させてください Javaでゲーム作る場合は、Swingを使うのでしょうか?それともAppletを使うのでしょうか? 勉強中なのですが、ネットで色々と検索するとJFrame上に画面を生成している人とAppletに画面を生成している人がいます どちらが一般的なのでしょうか? PC用、携帯用とかで使い分けるものなのでしょうか? よろしくお願いいたします
334 名前:名前は開発中のものです。 mailto:sage [2009/09/11(金) 14:11:16 ID:UvBFGDsD] アプレットでSwingが使えるJAppletというのもあるよ! ブラウザ上で動かしたいならアプレット、単独で動かしたいならJFrame やろうと思えば両用に作ることもできるが、好みで選べばいい 携帯用は根本的にまったく異なる
335 名前:名前は開発中のものです。 mailto:sage [2009/09/11(金) 20:42:59 ID:mQuEMJXs] SwingかAppletかっていう選択はおかしい。 選ぶのはまずターゲットにする実行環境を選ぶ。 ・アプレット(ブラウザ内で実行) ・アプリケーション(ダウンロードして実行) ・携帯 WebStartとかFXとかもある それとは別に使うライブラリとして ・Swing ・AWT を選択。他にもSWTやJOGLを使う手もある。
336 名前:名前は開発中のものです。 mailto:sage [2009/09/12(土) 14:13:51 ID:IEF6R4ya] レスありがとうございます 基本的に、ダウンロードして遊ぶアプリケーションを考えています 色々と調べましたけど、appletは過去に現在のFlash見たいな位置づけにあった技術ってことでいいんですかね? Java Web Startとかも同じようなことやっているみたいですし、今回はappletは無視の方向でがんばってみます
337 名前:名前は開発中のものです。 mailto:sage [2009/09/13(日) 12:41:46 ID:uuePN42W] ゲームでSwingはJOGLが安定してからの方がいいような
338 名前:名前は開発中のものです。 mailto:sage [2009/09/13(日) 18:57:10 ID:Myip4/jy] 質問者のレベルからいっておそらくJava2DだけでいいからSwingでもAWTでもかまわんかと
339 名前:名前は開発中のものです。 mailto:sage [2009/09/14(月) 12:43:38 ID:PZzYIY3C] >>333 いつの日かAndroidにRhino組み込んでゲーム作る日が来るよ
340 名前:名前は開発中のものです。 mailto:sage [2009/09/15(火) 20:39:38 ID:zYM08P02] 皆さんどんなゲーム作ってるの?
341 名前:名前は開発中のものです。 mailto:sage [2009/09/25(金) 02:51:49 ID:hUUmuj0G] 皆さんゲーム作ってないのですか??
342 名前:名前は開発中のものです。 mailto:sage [2009/09/26(土) 09:58:13 ID:J1BQH5PO] 誰もいないでちゅか?
343 名前:名前は開発中のものです。 mailto:sage [2009/10/01(木) 07:27:17 ID:8Vk+ua23] 誰もいないなら削除依頼だしたほうがいいですかね?
344 名前:名前は開発中のものです。 mailto:sage [2009/10/01(木) 16:48:22 ID:ULQNoLtL] 削除依頼を出す必要性が見つからないんだが。
345 名前:名前は開発中のものです。 mailto:sage [2009/10/01(木) 23:01:58 ID:8Vk+ua23] よかった!私以外にも人がいたみたいですね!! 削除依頼は延期させてもらいます!!!
346 名前:名前は開発中のものです。 mailto:sage [2009/10/01(木) 23:31:47 ID:4EjDbNUg] Javaだと、標準機能だけで2D系ゲームならすぐ作れそうだよね。 新入社員教育で、「期間8時間x5日間の課題としてテトリスクローン作成」 程度のメニュー組んでも大丈夫そうな気がする。
347 名前:名前は開発中のものです。 mailto:sage [2009/10/02(金) 07:41:58 ID:aJX6kioG] >>346 テトリスだとアルゴリズムの部分を除けば必要な機能はキー入力の処理と画像表示だけだよね 疑問なんだが、C#とかC++とかにはそういう機能は標準ではないの?
348 名前:名前は開発中のものです。 mailto:sage [2009/10/02(金) 08:03:30 ID:Zzm+z8T1] >>347 C++は画面出力用の標準ライブラリは存在しない。 C#にはあったと思うけど、本格的に使ったことがないんで自信なし。 Javaで40時間で作れそうなゲームというと、大抵の落ちものパズル、インベーダー、パックマンとかかな。 黎明期のゲームはわりとどうにかなりそう。 もちろん、敵も味方も丸や四角になるけど。
349 名前:名前は開発中のものです。 mailto:sage [2009/10/02(金) 11:39:50 ID:7JGC3MOY] >>343 スレがのこってるということ自体に意味があるので自然の落ちない限り残すのが普通だろ たとえば間をおいて質問等があった場合スレを新規に立ち上げるのと書き込むだけでは敷居が違いすぎる スレは一個人のものではないんだぜ? スレはたった時点で「1」の手を離れてるんだぜ…
350 名前:名前は開発中のものです。 mailto:sage [2009/10/02(金) 12:37:48 ID:a6aeKiDs] 今のJavaはゲーム作成環境としてもけっこうこなれてきたと思うんだが、 フリーや同人の世界でもJava製ゲームってあんまり無いね。
351 名前:名前は開発中のものです。 mailto:sage [2009/10/02(金) 18:33:12 ID:+i1IzwK6] PCのスペックがどんどん上がってきて、比較的大規模なソフトウェアがJavaで 作られて実際に使われることが多くなったから、Javaの評価は少しづつ上がってると思う。 開発者にとっては楽な言語だからもう少し増えてもよさそうなのになあ。
352 名前:名前は開発中のものです。 mailto:sage [2009/10/02(金) 19:52:15 ID:LwoQ3y57] 楽な言語ではないんじゃないかなw 楽な環境だとは言えなくもないけど 今時ならScalaやJRubyでゲーム製作ってのもアリかもな
353 名前:名前は開発中のものです。 mailto:sage [2009/10/02(金) 20:52:06 ID:y+fTXPF0] 最近、Applet動かすとき一瞬で起動してきもちい。 Java6になってだいぶ良くなった気がする。 FlashやDirectXに浮気せずAppletやJOGLで頑張りますよ。 やっぱり俺はJavaが好き。
354 名前:名前は開発中のものです。 mailto:sage [2009/10/03(土) 01:10:42 ID:odjYAQpQ] >>348 俺の中ではC++とC#はVisualStudioのイメージしか無いからGUI関連は充実してると思ってた >>350-351 JavaはなんだかんだでWebアプリが主戦場だからね SwingはSwingUtilities使ってイベントディスパッチスレッドでアクセスするようにしなければならないとか、仕様だかバグだかわからん状態だし Sunも買収されちゃって、今更Webアプリ以外の分野に大量の技術者投入してくれるとかありえないだろうから、この状態のままだろうね、、、 JMonkeyEngineとかもあるけど、プロジェクトの勢いはあまり無さそう それと、ネットに落ちているサンプルコードが少ないのが痛いかな C++は大量にあるのに、Javaは少ない どう考えてもC++よりJavaの方が書きやすいし、C#と比べても別に遜色ないから、もっと流行って欲しいけどなー
355 名前:名前は開発中のものです。 mailto:sage [2009/10/03(土) 17:26:03 ID:9zReYZbr] >>354 GUIは安全にやろうと思ったらシングルスレッドモデルになるのはなのはどれも当たり前 Javaに限らんぞ
356 名前:名前は開発中のものです。 mailto:sage [2009/10/03(土) 19:21:25 ID:/8MbXK30] マルチスレッドなGUIライブラリを作ろうと思ったらそういったものも作れるはずだけど、 GUIを扱う人すべてがマルチスレッドに精通してないといけなくなってしまう スレッド、同期、排他制御等の正しい知識がなくこれらを扱えない人はGUIお断り、ってのは門戸が狭すぎる そもそも別スレッドを起動しなきゃイベントディスパッチスレッドを気にする必要なんて無いんだから、 スレッドを使う人だけがスレッドを知ってれば済む今の仕組みがたぶん一番いいんだよ ところでゲームでSwing使うの?
357 名前:名前は開発中のものです。 mailto:sage [2009/10/03(土) 19:23:55 ID:Z1ihaRDW] >>356 Window動作するゲームだとJFrameは使うと思う。 JMenuBarとかも使われそう。
358 名前:名前は開発中のものです。 mailto:sage [2009/10/04(日) 02:19:53 ID:w83xHhR5] どうせBufferStrategyかGLCanvasになるからFrameにCanvas張り付けて中で全部自前だなぁ。 設定ダイアログを別に付けるならSwing。
359 名前:名前は開発中のものです。 mailto:sage [2009/10/04(日) 08:22:05 ID:c2zkrtYj] >>358 基本的にFrame一個作って、その上のBufferStorategyに全部処理させるのが基本なのか RPG作るとしても、コマンドとか戦闘画面とかは全てお絵かきすべきであって、いちいち新しいFrameとかPanel立ち上げたり、コマンドをあらわすTable作ったりはしないのが正解かな
360 名前:名前は開発中のものです。 mailto:sage [2009/10/04(日) 10:18:10 ID:ouCzztcy] >>359 Swingコンポーネントを使う意味があるとしたらSLGだと思う。 RPGとかACTなら、基本的に全部自前で処理じゃないかと。
361 名前:名前は開発中のものです。 mailto:sage [2009/10/04(日) 13:09:00 ID:GkatRSH2] RPGのウィンドウやなんかは独自L&F実装したSwingでやってもいいんじゃね?
362 名前:名前は開発中のものです。 mailto:sage [2009/10/04(日) 13:10:18 ID:Ts8Codr2] 半透明パネルとか可能だからそれもありかもね。 メリットとしては、マウス関係のイベントとかをswingで取得できることか。
363 名前:名前は開発中のものです。 mailto:sage [2009/10/04(日) 14:19:32 ID:xOGATpGU] GLCanvas/GLJPanelとかつかってるならSwingの重ね合わせ鬼門だな
364 名前:名前は開発中のものです。 mailto:sage [2009/10/04(日) 16:03:38 ID:TgmjWOtf] SwingとJOGL混ぜたら透過周りがすごいことになったような・・・あれはJava3Dだったかな。
365 名前:名前は開発中のものです。 mailto:sage [2009/10/04(日) 16:06:49 ID:VE8wUZqH] どうすごいの?
366 名前:名前は開発中のものです。 mailto:sage [2009/10/04(日) 18:54:04 ID:yghp6+zA] >>364 GLCanvasとswingは混ぜるな危険だけど、GLJPanel使えば問題ないんじゃないか?
367 名前:名前は開発中のものです。 mailto:sage [2009/10/04(日) 22:32:16 ID:xOGATpGU] >>366 やってみればわかる
368 名前:名前は開発中のものです。 mailto:sage [2009/10/05(月) 04:32:06 ID:/FBVWM1E] いまのGLJPanelはまだ不安定な部分が
369 名前:名前は開発中のものです。 mailto:sage [2009/10/06(火) 15:09:55 ID:DNDsP0px] JAVAのゲーム作り関係の本で初心者にお勧めなのってどれだろう? 古すぎるやつは買わないほうがいい? amazonの中古で1000円切ってるのあるけどさ 環境はeclipseです
370 名前:名前は開発中のものです。 mailto:sage [2009/10/06(火) 23:20:12 ID:1V/8RsIs] 基本的な質問かもしれんが、RPGとかシミュレーションを作成する場合、命令入力やステータスを表すWindowをあらわすクラスを生成して、それをpaintComponent(Graphics g)で描画するのが基本なのかな? Webアプリしか作ったこと無いから、イメージがわかない >>369 「14才からの〜」が評判良かったような気がします 読んだことは無いけど
371 名前:名前は開発中のものです。 mailto:sage [2009/10/07(水) 00:18:11 ID:wMLe0J1A] >>370 アクション要素なしならそれでもいいけど、どの方式でやるにしろ、 オフスクリーンバッファで全部描画処理を完成させておいて。 そうすれば出力方法は何でもいいし、ウインドウにあわせて描画を拡大縮小させるとかできるから。 paintComponentやpaintメソッドとかでゲームのオブジェクトの描画処理はだめね。 また、これらのイベントの場合ダブルバッファだと問題が起きるからトリプルバッファにすること。
372 名前:名前は開発中のものです。 mailto:sage [2009/10/07(水) 01:47:32 ID:0p5gfWJh] アクティブレンダリング自前で書く。
373 名前:名前は開発中のものです。 mailto:sage [2009/10/07(水) 19:16:17 ID:8uGSJp5y] >>369 少なくともJava5以降を対象にしたものを買った方がいい。 総称型や拡張forのお陰でプログラムスタイルがかなり違う。 ただ、本気のゲーム作りのための参考書ってあんまり無い気がする。 JOGLやLWJGL系は皆無。
374 名前:名前は開発中のものです。 mailto:sage [2009/10/08(木) 11:14:07 ID:LM8f1SUk] >>371 ごめん、何を言っているのかまったく理解できない、、、 レベル低くてすみません paint系メソッドはすでに非推奨なの? てか、描画はどうすればイイの、、、 サンプルになるものとか紹介していただけると嬉しいです
375 名前:名前は開発中のものです。 mailto:sage [2009/10/08(木) 19:49:44 ID:C8pidVMn] >>374 単にGL使えって意味じゃないか? GLCanvasとかGLJPanelを使う場合、paintとかpaintComponentじゃなくて displayが呼ばれる。
376 名前:名前は開発中のものです。 mailto:sage [2009/10/08(木) 21:52:03 ID:LM8f1SUk] >>375 2DのゲームでもすでにGL...系使うのが当たり前なのかな 俺はてっきり、JFrameに直接描画するか、上にJPanelかなにか張って、それにpaint系で描画するものだと思ってた いずれにしても、参考にしても良いサンプルが欲しい…
377 名前:名前は開発中のものです。 mailto:sage [2009/10/08(木) 23:44:25 ID:C8pidVMn] 2DゲームならGraphicsクラスのメソッド使ってもそれなりに実装出来そうなきがするなあ… 加算半透明以外の要素は大体そろってるし。
378 名前:名前は開発中のものです。 mailto:sage [2009/10/09(金) 01:14:28 ID:JcFEYjJn] >>376 paintのメソッドでもかまわないよ。 ただし、きれいにまわすには描画用のバッファが2枚必要。 paintイベントはOSによっていつ呼ばれるかわからないというのに注意しないといけないからね。 再描画はrepaint自前で呼び出すのみにするという方法もあるけどフレームレートが言っていないと厳しい。 その場合setIgnoreRepaintをよんで無効にしておくこと。GLでもそうだけど。
379 名前:名前は開発中のものです。 mailto:sage [2009/10/09(金) 20:00:50 ID:kPk3xGOi] Java5以降は標準でダブルバッファだと思ったけど、トリプルバッファまでやる必要あるかなあ…?
380 名前:名前は開発中のものです。 mailto:sage [2009/10/09(金) 20:37:11 ID:4MfvuD2J] >>379 >ダブルバッファだと思ったけど そうなの? だとすると、トリプルバッファ以上やらない限りはBufferStorategyは使わなくていいのかな? あれは、JFrameとCanvasでしか使えなかったから、JPanelで自動的にダブルバッファにしてくれるなら、嬉しいよね
381 名前:名前は開発中のものです。 mailto:sage [2009/10/09(金) 21:35:46 ID:JcFEYjJn] >>379 Swingの自動のダブルバッファとは違う話。 ゲームの処理がまわるスレッドがあると思うけど、そこで使う描画バッファが1枚だと 次のフレームの描画に使用可能なバッファが存在しない。 paintイベントで表示するときに前のフレームで描画したバッファが使用中だから。 アクティブレンダリングならその問題は起きないが、フレームレートが一定はないと厳しい。 paintイベントはいつ起こされるか判らないから。
382 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 13:58:45 ID:hq8APMAs] >>381 自分が前に実装した時はゲームスレッドを用意して、そこからrepaint呼ぶようにしてた。 この場合、システムがrepaintしたときは内容に変更が無いから同じ絵が再描画される。 フレームレートとかはあんまり気にしてなかったな。 実際問題として、全画面のアクションゲームとかでなければあんまり気にしなくていいと思う。
383 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 14:55:42 ID:nBhhlmBk] >>382 そのrepaintする際のバッファが1枚だと描画中はだめなんで排他制御が必要になる
384 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 15:12:17 ID:ufkJMSFN] 1フレーム画面が乱れるとかなら、ホビーゲームのレベルで特に気にしなくてもいいような。 そこでハングアップにつながるようだと問題だけど。
385 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 18:56:19 ID:nBhhlmBk] イベントディスパッチスレッド以外でゲームの描画すると不具合は生じるね。 フリーズ等はないとは言い切れない。 ハードウェアアクセラレーションを使うってことは実装上オフスクリーンバッファを VRAMに確保しているはずなのでへんに動くと怖い気もする。 実装依存にするのも将来のバージョンで動かなくなる可能性もあるし。 ダブルバッファの場合ゲームのスレッドから描画処理だけ抜き出して InvokeAndWaitで処理させてからのrepaintというのが必須になる。
386 名前:名前は開発中のものです。 mailto:sage [2009/10/10(土) 23:49:32 ID:GjpbDtnI] トリプルバッファってのはオフスクリーンバッファと画面エフェクト合成用バッファがいるって意味じゃね? >>385 AWTと並列処理の組み合わせでいける。シングルスレッドなSwingを使うから余計変なことになる。 というかそもそもパッシブレンダリング使うからrepaintまわりで排他制御が必要になるんじゃ?
387 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 01:22:50 ID:ssskajUX] AWTもシングルスレッドモデルだよ。 それに今の話の流れはパッシブレンダリング上での話。
388 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 10:14:08 ID:Vof/a9NH] 排他処理する場合、repaintをオーバーライドする時にsynchronizeつければいいだけ?
389 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 11:08:47 ID:ssskajUX] 描画バッファに対してrepaintの中と描画処理部分にsynchronizedブロックをつけるとよい。 少しでも高速化したい場合はLock構文を使うとよい。 したがって描画部分をまとまるようにすること。ゲームのロジックの中で描画していくのはさける。
390 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 13:10:06 ID:b7DeQBBg] 14才からはじめるJavaゲーム製作だかなんだかの本を軽く立ち読みしたけど、排他制御には触れていなかったような、、、 JFrame上でBufferStoratgy使って描画するように書いてあったと思うんだが、これだけじゃ、不足なのかな?
391 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 13:21:07 ID:S5wUXJ38] JOGLだとFPSAnimatorに任せられるから、その辺は全然気にしたことなかったなあ。
392 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 13:22:26 ID:ssskajUX] >>390 それはアクティブレンダリングでしょ?今回の話とは違う。 ペイントイベントつぶすsetIgnoreRepaint()使ってるはず。
393 名前:名前は開発中のものです。 mailto:sage [2009/10/11(日) 13:25:58 ID:ssskajUX] >>391 FPSAnimatorはイベントディスパッチスレッド上でdisplayがきれいに動くようになってるからね。 AnimatorやJava2Dなどでパッシブレンダリングやろうとすると自前での管理が必要になる。