- 1 名前:名前は開発中のものです。 [2005/10/27(木) 09:43:50 ID:dzSvRQXE]
- Javaでのゲーム作成について情報交換をするスレです。
ゲーム作成以外の話題はム板(pc8.2ch.net/tech/)、 他言語に関する話題は他スレでお願いします。 前スレ JAVAでゲーム作成 pc8.2ch.net/test/read.cgi/gamedev/1074347252/ テンプレは>>1->>10あたりを参照
- 207 名前:名前は開発中のものです。 mailto:sage [2006/01/28(土) 23:06:37 ID:u3ZzJuZS]
- >>204
多少は調べろ クラスロードした後はざる
- 208 名前:まほろば ◆BmUbLWewsM [2006/01/28(土) 23:57:58 ID:K+4gOIY6]
- >>207
- 209 名前:名前は開発中のものです。 mailto:sage [2006/01/29(日) 01:11:24 ID:1KG7yFUT]
- 結局いいスレだったのをコテハンが壊したってことか。
- 210 名前:名前は開発中のものです。 mailto:sage [2006/01/29(日) 02:35:06 ID:PecoYXTp]
- もう大学生は春休みか……
いいご身分だなぁ。
- 211 名前:名前は開発中のものです。 mailto:sage [2006/01/29(日) 12:34:08 ID:FRX/ORuz]
- 低脳だから卒業後ニート行きで
さらに良いご身分だな
- 212 名前:まほろば ◆BmUbLWewsM [2006/01/29(日) 13:24:43 ID:LX0lKjST]
- まったくだなww
- 213 名前:名前は開発中のものです。 [2006/01/29(日) 17:14:26 ID:zbiz4Pm/]
- GraphicsクラスのdrawImageで浮動小数点数を使う方法って何かない?
ゲームのキャラクターを表示させるためにはint型では精度が悪いんで。
- 214 名前:まほろば ◆BmUbLWewsM [2006/01/29(日) 17:28:00 ID:LX0lKjST]
- ないよ。javadoc見りゃ分かるじゃん。。
- 215 名前:名前は開発中のものです。 mailto:sage [2006/01/29(日) 17:45:07 ID:ec+1eYbr]
- >>213
そういうときは大きいバッファを持つことで回避する 320*240の画像を0.5単位で扱いたいときは640*480とかね drawRenderedImageとかtranslateを使う方法もあるが 用途がゲームなら使わないほうがすっきりしていいと思われ
- 216 名前:名前は開発中のものです。 mailto:sage [2006/01/29(日) 17:57:12 ID:2i9o9yjB]
- >>213
Graphics2D でもいいのなら AffineTransform を使えばできる。 デフォルトでは AffineTransform を使用しても補完してくれないので、 補完方法を設定する必要がある。 Graphics2D g2 = (Graphics2D)g; g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); g2.drawImage(image, transform, null); こうすると 0.01 単位でヌルっと動かせるけど、それなりに重くなるし 画質もはっきりしたりぼやけたりするので逆にオススメできない。 キャラ自身の内部座標を小数点で扱うのは自由だけど 画像の描画に関しては座標を int で処理するのが現実的だと思う。
- 217 名前:名前は開発中のものです。 mailto:sage [2006/01/29(日) 21:48:41 ID:qPM3IQVC]
- 正男ってjava?
- 218 名前:名前は開発中のものです。 [2006/02/01(水) 20:44:05 ID:W1eX6IZO]
- Javaアプレットでしょ
- 219 名前:名前は開発中のものです。 [2006/02/05(日) 00:25:12 ID:LCSDYznu]
- フルスクリーンモードで質問なんですが
public static void main(String[] args) { GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice device = env.getDefaultScreenDevice(); JFrame frame = new JFrame(device.getDefaultConfiguration()); frame.setUndecorated(true); device.setFullScreenWindow(frame); MyPanel panel = new MyPanel(); frame.getContentPane().add(panel); } こんな感じでフルスクリーン化するフレームの上にパネルをはりつけてます。 このときフルスクリーン状態にはなるんですが、パネルのpaintComponent()が 呼ばれてないらしく描画されません(画面が真っ白のままでサウンドはなります) panelのpaintComponent()が呼ばれるにはどう修正すればよいでしょうか。
- 220 名前:名前は開発中のものです。 mailto:sage [2006/02/05(日) 00:52:34 ID:NFbwVJ0F]
- フルスクリーン使ってるならSwingのイベントモデルにはこだわらないのが普通
BufferStrategyってのをしらべてごらん ようは好きなタイミングで描画が出来るのだ
- 221 名前:名前は開発中のものです。 [2006/02/05(日) 01:21:52 ID:LCSDYznu]
- ありがとうございます。
やっぱそれですか。そうかもと思って実装始めたらできました。 frame.createBufferStrategy(2); とやってpaintComponent(g)をdraw(g)にかえて BufferStrategy strategy = window.getBufferStrategy(); Graphics g = strategy.getDrawGraphics(); draw(g); g.dispose(); でうまく描画できました。
- 222 名前:219 [2006/02/05(日) 01:30:28 ID:LCSDYznu]
- もう一つあるのでアドバイスいただけるとうれしいです。
Window window = device.getFullScreenWindow(); window.add(JPanelオブジェクト); とやってフルスクリーン上にパネルを置いています。 こうするとパネルがちらついてしまうのですが対策はあるでしょうか。
- 223 名前:名前は開発中のものです。 mailto:sage [2006/02/05(日) 01:52:48 ID:8ByMu9YS]
- まずパネルをおく必要はない
ウインドウ全体を使って描画してるから
- 224 名前:219 [2006/02/05(日) 09:38:19 ID:LCSDYznu]
- コマンド選択パネルみたいに使っているんですが。
フルスクリーン上でスペース押すと右上にパネルが表示されます。 KeyboardListenerを実装してるのでキー入力はそのパネルが奪い パネルを消すともとのフルスクリーン上にキー入力がいくという感じです。 パネルじゃなくてCanvasでもいいんですがどうもちらつきます・・・ パネルで何も描画しなくてもちらつくということはフルスクリーンにしてる JFrame上にコンテナは置いちゃだめということでしょうか。
- 225 名前:名前は開発中のものです。 mailto:sage [2006/02/05(日) 12:29:26 ID:8ByMu9YS]
- おいてはいけないということはないが、BufferStrategyはつかえんぞ
- 226 名前:219 [2006/02/05(日) 13:00:29 ID:LCSDYznu]
- そうですか・・・ボタンやらも全部だめだったのでBufferStrategyの描画領域にコンポーネントは配置してもちらついてしまうみたいですね。
あきらめてパネル風のウィンドウを描画することにします。
- 227 名前:名前は開発中のものです。 mailto:sage [2006/02/05(日) 13:25:23 ID:8ByMu9YS]
- ゲーム目的ならコンポーネントの描画は避けるべきだな
すべて自前で描画しないとリフレッシュとかのタイミングがコントロールできん
- 228 名前:名前は開発中のものです。 mailto:sage [2006/02/05(日) 14:37:09 ID:15xceU0H]
- 便乗だけど、フルスクリーンで文字の入力はどうすればいいの?
英語だけなら楽勝かもしれないけど、漢字変換とかどうすればいいのかさぱーり。 以前コンポーネント埋め込んだら酷いことになって諦めてた
- 229 名前:名前は開発中のものです。 [2006/02/05(日) 14:40:46 ID:LCSDYznu]
- MMORPGの市販ゲームとかできてるからやり方あるんだろうけど。Javaだとどうなるんだろ。自分も知りたい。
- 230 名前:名前は開発中のものです。 mailto:sage [2006/02/05(日) 15:23:24 ID:8ByMu9YS]
- MMORPGの場合フルスクリーンでもただすべての画面を占有するだけ
といった作りかたしてると思われ JavaでやろうとするならBufferStrategyをあきらめるほうがいいだろうね JPanelに画面部分を描画、paintComponentでバックバッファから自前で転送
- 231 名前:名前は開発中のものです。 mailto:sage [2006/02/05(日) 17:31:23 ID:XoC15JKP]
-
LWJGLやJOGLで日本語文字を画面に表示するにはどうしたらいいんでしょうか。 LWJGLにAWTGLCanvasっていうのがあって、これを使えばできそうなんですが、 サンプルがなく使い方がいまいち分かりません。 みんなはどうやっているんだろう。 以前Graphics2Dでゲーム作ろうと思ったけど、アルファブレンド処理がソフトウェア描画に なったので、LWJGLに移ったんですが。 うううーーーん
- 232 名前:名前は開発中のものです。 mailto:sage [2006/02/05(日) 17:43:24 ID:8ByMu9YS]
- 基本はDirectDrawだからな
一応オプションでDirect3Dで動作させればアルファブレンドもハードウェアになるが レンダリング品質の問題とか通常一番使うブリットが遅いとかJava2Dベースでは 通常合成しか出来ないとかが問題になるからな LWJGLはまったくさわったことがないのでわからん JOGLはOpenGLそのままだね 俺が触ったときはSDLとのリンクが未実装だったので対象には上がらなかったが Java3Dは高級すぎてゲーム用途にはまったく使えないという感じだった 速度がまったくでないことやピクセル単位の処理という感じではなかった ただ、軽く触っただけなのでなんともいえない 2Dゲームならソフトウェアによるアルファブレンドが問題になるほど遅い場面は少ないとは思う
- 233 名前:名前は開発中のものです。 mailto:sage [2006/02/05(日) 19:35:20 ID:XoC15JKP]
-
>>232 640x480の画面に32x32のマップをひきつめただけですでに40FPSだったんですよね Graphics2D。。。 やっぱりC++の方がゲーム開発はいいのかなぁ・・・ 開発効率はJavaの方がはるかにいいんですけどね 何かJOGLやLWJGLに近い速度がでるゲーム用ライブラリって ないんでしょうか
- 234 名前:名前は開発中のものです。 mailto:sage [2006/02/05(日) 19:44:36 ID:8ByMu9YS]
- アルファブレンドでしきつめたらそれくらいにはなりそうだが
通常転送ならそこまで遅くなることはあるまい 使い方がおかしいかと
- 235 名前:名前は開発中のものです。 mailto:sage [2006/02/05(日) 19:48:54 ID:XoC15JKP]
-
>>234 アルファブレンドで描画したときです。 正直なきたくなりました。 同様の処理でDirectXの場合は余裕を持たせてもFPS500ぐらいでした。
- 236 名前:名前は開発中のものです。 mailto:sage [2006/02/05(日) 20:03:06 ID:8ByMu9YS]
- デフォはDirectDrawベースだから当たり前
PureJavaベースのゲームなら少し前のコンシューマの2Dベースにしておくべき アルファブレンドが多い場合は自前のエンジンを使ったほうがいい Java2Dのアルファブレンドは機能が多すぎて高級すぎる 回転とかも同様 あとメモリアクセスを減らすために解像度を下げるとか 今後を考えてレンダリングエンジンはマルチコアに対応させる 現状を考えると320*240-16bppが2DでJavaでの安定動作の限界だと思うよ それを2倍拡大して描画するのがベストか Sunはデスクトップ部分に5.0は力を入れるといいつつ 1.4.2とほとんど変わらなかった前科があるから6にも期待薄だな
- 237 名前:名前は開発中のものです。 mailto:sage [2006/02/05(日) 20:25:57 ID:15xceU0H]
- -serverを指定するだけ多少は速くなるし、メモリ次第かなぁ
- 238 名前:名前は開発中のものです。 mailto:sage [2006/02/05(日) 21:05:19 ID:8ByMu9YS]
- serverはゲームではオススメしない
強度の最適化のために滑らかに動かない
- 239 名前:名前は開発中のものです。 mailto:sage [2006/03/01(水) 00:33:42 ID:LBMCdldE]
- BufferStrategyとpaintComponentを切り替えられるようにすれば
RPGツクールでキーボード名前入力を可能にした感じのゲームも可能なのかな。 でもそんなことしてたらMMORPGなんて作れない気もする。 -serverの件もそうだけど、なんかもどかしい
- 240 名前:名前は開発中のものです。 mailto:sage [2006/03/01(水) 00:53:30 ID:iPnrcY6D]
- 一応BufferStrategyはCanvasでも使える
AWTなのであまり込み入った使い方しないように
- 241 名前:名前は開発中のものです。 mailto:sage [2006/03/01(水) 01:34:48 ID:LBMCdldE]
- おお、ホントだ。BufferStrategyは埋め込み可能だったのか。
ゲーム画面上に透明チャット窓とかしようとするのも可能そうだね。 BufferStrategyならAWTとSwingの差分なんてあってないようなものだろうし。 ちょっと希望が湧いてきました。
- 242 名前:名前は開発中のものです。 mailto:sage [2006/03/01(水) 02:35:02 ID:LBMCdldE]
- 5.0からAWTにZOrderが追加される。かゆいところに手が届いてら。
- 243 名前:名前は開発中のものです。 mailto:sage [2006/03/04(土) 19:59:23 ID:+Bxv4duP]
- Swingでrepaintをした場合ってイベントキューで処理されるの?
Timerのタイミングできちんと描画スレッドに渡せますか?
- 244 名前:名前は開発中のものです。 mailto:sage [2006/03/04(土) 23:22:41 ID:EEF7QBKs]
- 何を言いたいのかわからんがSwingは普通のSUIのイベント処理だぞ
リペイントわたしてもリペイント範囲のaddされるだけ 連続でrepaint複数渡しても1回しかリペイントされないとかよくあること これはSwingに限ったことではない Windowシステムは全部そう だからTimerでrepaintわたしたからすぐに描画されるわけではない 正確なタイミングでやるならAWTイベントでのリペイントは辞めるべき BufferStrategyを使うのが正しい これは内部でDirectXとか使われてるイベントモデルではなく、いわゆる直書きだ
- 245 名前:名前は開発中のものです。 mailto:sage [2006/03/05(日) 13:59:16 ID:R322THrX]
- >>244 どうもです。
FPS管理するからrepaintのままでやります。 描画に失敗したら致命的というわけでもありませんし。
- 246 名前:名前は開発中のものです。 mailto:sage [2006/03/05(日) 14:46:49 ID:o20ilzio]
- FPS管理って普通にみんなBufferStrategyでしてると思うぞ
なんか勘違いしてないか?
- 247 名前:名前は開発中のものです。 mailto:sage [2006/03/05(日) 15:12:44 ID:R322THrX]
- いやJComponentもバリバリ使いたいので。
- 248 名前:名前は開発中のものです。 mailto:sage [2006/03/05(日) 16:46:58 ID:o20ilzio]
- Swingコンポーネントベースのゲームってめずらしいな
ダブルバッファリングをライブラリに任せるのは割ときついからな
- 249 名前:名前は開発中のものです。 mailto:age [2006/03/15(水) 01:15:11 ID:cXOEjtfT]
- 保守
- 250 名前:名前は開発中のものです。 mailto:sage [2006/03/18(土) 15:46:10 ID:bpOUjL+k]
-
良スレですね。 6年ぶりぐらいにJava触って驚いた〜。 趣味の遊びには最適ですね。
- 251 名前:名前は開発中のものです。 mailto:sage [2006/03/18(土) 23:01:07 ID:ATXsVevn]
- exewrapがJavaゲームの必須アイテムになるのかな?
ヒープサイズをjrockitと同じ物理メモリの75%とかに指定したいんだけど exewrapにはそういう指定は出来ないんだろうか 128m版と256m版の2つ用意したほうがいいかな・・・うーむ
- 252 名前:名前は開発中のものです。 mailto:sage [2006/03/18(土) 23:25:32 ID:xwepgm3J]
- 鯖アプリじゃないんだから物理メモリの割合は意味がないぞ
メモリ増えればGCにかかる時間は増えるわけで、ゲームで使用するメモリ量とかちゃんと計算してないの? それだとGCとかでかたつかないか?
- 253 名前:名前は開発中のものです。 mailto:sage [2006/03/19(日) 00:20:58 ID:jd/0wDmz]
- 単位時間に対するGC率が増えるのって操作性に影響でないの?
- 254 名前:名前は開発中のものです。 mailto:sage [2006/03/19(日) 00:26:14 ID:UecNa0OI]
- 100秒ごとに1秒とまるGCと1秒ごとに0.01秒とまるGCとどっちがゲーム向きかということだ
それにわりあいでやられたら世代の調整とかおわっとる GCのアルゴリズムの種類だって調整するのは常識なんだし アプリごとに最適な値は大きくことなる
- 255 名前:名前は開発中のものです。 mailto:sage [2006/03/19(日) 00:34:10 ID:jd/0wDmz]
- Mapにキャッシュするサイズ+演算用のサイズで考えればいいんだよね?
最適値というのは演算分のヒープサイズがどのくらいのものなの?
- 256 名前:名前は開発中のものです。 mailto:sage [2006/03/19(日) 00:50:29 ID:UecNa0OI]
- GCの頻度とか使用量とかチェックしてないの?
-verbose:gcオプションいれてごらん もっと詳しく見たいのならプロファイラで見るのが一番だが まずはGC部分に注力するならこれが見やすいだろうね
- 257 名前:名前は開発中のものです。 mailto:sage [2006/03/19(日) 00:58:12 ID:jd/0wDmz]
- >>256
OK、チャレンジしてみます。
- 258 名前:名前は開発中のものです。 mailto:sage [2006/03/31(金) 14:22:07 ID:5bd8BEHK]
- 当方、子供の頃にZ80アセンブラやBASICでゲームプログラムして遊んでいました。
まぁアルゴリズムとかは結構わかります。 今頃になって、再びプログラムを趣味にしてみようと思いJavaを選択しました。 シンタックスやOOPの基本的なことは大丈夫そうです。 Eclipseインストールしてちょっと感激。 で、問題なのはすこしでもDirectDrawとかFPS管理とか、ちょっとでもシステム寄りの 部分になると全然わからないのです。 いくつかソースを読んでみますと、各人でわりと実装が違うようですね。 Java5ではどんな方法がよいのかなど、参考になるものは無いでしょうか。
- 259 名前:名前は開発中のものです。 mailto:sage [2006/03/32(土) 00:20:26 ID:dul/XEV4]
- >>258
そういう人かなりいるよね ゲームは問題なく作れるけどウインドウアプリになるとmainからはじまらないので わけがわからない、と Javaは一応mainから常に始まるしまだ楽なほう >>1-11あたりはまずよんでみた?
- 260 名前:名前は開発中のものです。 mailto:sage [2006/03/32(土) 01:27:44 ID:liMA6BYm]
- 3/32 記念パピコ
- 261 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 13:36:48 ID:oy1ylhQ+]
- eclipseってそんなに良いか?【エクリプス】
pc8.2ch.net/test/read.cgi/tech/1099300344/274- > 280 名前:デフォルトの名無しさん[sage] 投稿日:2006/04/04(火) 09:53:59 > >>276 > ほんとかよ。 > 2Dゲームの背景にタイルを敷き詰める処理を作ってみたが明らかに遅いぞ。 > これと言って変な処理は入れてないが、5fps出ない。 > 透過pngをImageIO.read()で読み込んで Graphics.drawImage(Image, int, int, ImageObserver)で表示すると確かに重くなるが 上の奴はこれと同じ状況なのだろうか?
- 262 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 13:41:10 ID:h6nMnOJP]
- アルファブレンドだと重いけどただの色抜きなら重くはないよ
5.0ではBufferedImageのままなにもしなくてもそれなりにきくようになってるし 5fpsってありえんね そもそもソフトウェア描画でもVGAで30fpsはでそうだが
- 263 名前:名前は開発中のものです。 [2006/04/06(木) 12:59:32 ID:kzyZx0iO]
- iアプリを作ろうと思って勉強してるんですが、画像表示で躓いています。
サンプルではちゃんと表示されるんですが、画像を自作のものと入れ替えるとIO.connectionexception ってのがでるんです。サンプルと同じGIFでサイズも同じにしてあるんですが。自作画像の方に問題が あるんでしょうか。
- 264 名前:名前は開発中のものです。 mailto:sage [2006/04/06(木) 14:20:33 ID:mP0GEHd4]
- >>263
動かないのが実機かPC上かを明記してもらえるとありがたい サンプルがどんな処理を行うアプリケーションなのかも関係してくる 情報が少なすぎるのでエスパー回答してみるが、 ・ファイルが壊れている 終端コードが無かったり、BMPなのに拡張子だけGIFにしたとか 試しにネット上に転がってる別のGIFファイルでテストしてみては? ・ファイル名の指定が間違っている サンプルと同じファイル名にしてテストしてみては? 大文字小文字、全角半角の違いがないか気をつけて ・容量がオーバーしている 同じサイズというのはピクセル数のことだと思いますが、 バイト数が上限を超えていないか確認してください。
- 265 名前:名前は開発中のものです。 [2006/04/06(木) 17:15:27 ID:kzyZx0iO]
- 適当に書いてすいません。エラーがでるのはDoja3.5のPC上で、ビルドした後実行すると出ます。
サンプルは簡単なもので、画面にタイトルを表示するだけのものです。十枚ある画像を取り込んで そのうちの一つを画面に表示するものです。 ファイルが壊れている>壊れているかは私に判断できないんですが、自作の画像はwindowsのペイ ントで書いて、0という名前で(サンプルで表示されるのが0.gif)形式をGIFにしています。 容量がオーバー>サンプルは色付きですが、自作のものは白と黒のみなのでサイズは小さいです。 いろいろ試してみたんですが、サイズの違う画像の時に一回エラーがでずにちゃんと表示されて、 その画像の大きさをいろいろ変えたんてみても上手く表示されました。やはり元の画像が悪いので しょうか
- 266 名前:名前は開発中のものです。 [2006/04/06(木) 17:20:56 ID:kzyZx0iO]
- あともう一つ。一回エラーが出た後、画像をもとのサンプルの画像にしても、やはり
エラーが出たままなんです。
- 267 名前:263 mailto:sage [2006/04/08(土) 17:16:17 ID:+i1+4exU]
- ソースも画像も変えてないのに何回かやったら表示されるようになりました。
お騒がせしました。264さんありがとうございます。
- 268 名前:名前は開発中のものです。 mailto:sage [2006/04/08(土) 21:22:15 ID:MsUK1t+N]
- 何回かやったらってありえね
ビルドしてないとか
- 269 名前:名前は開発中のものです。 mailto:sage [2006/04/09(日) 20:57:47 ID:S2mcpQ+R]
- 俺の場合、PCを再起動してみたら正常に動いたってことはたまにある。
メモリが不足してたのかな?
- 270 名前:263 mailto:sage [2006/04/09(日) 23:11:53 ID:TOyrHTNi]
- 原因はわからないです。さんぷるの画像の内、一枚だけ入れ替えたらうまくいったんで、
一枚ずつ入れ替えていったらエラーがでなくなりました。言われてみれば一回電源切った あとかも
- 271 名前:名前は開発中のものです。 mailto:sage [2006/04/10(月) 02:20:42 ID:tKGbAe46]
- >>270
わかんないならもうレスしなくていいよ
- 272 名前:名前は開発中のものです。 [2006/04/15(土) 01:23:46 ID:sf5nUDiw]
- そのくらいのサンプル段階ならソース晒してもいいでしょう
アップローダにアップしては? gamdev.org/up/upload.php 短いソースならこのスレに書き込んでもいいだろうし。
- 273 名前:名前は開発中のものです。 [2006/04/15(土) 10:51:05 ID:0dEqMUag]
- この板寂しいからレスしてくれよ・・・
書き込みがあるとわくわくする
- 274 名前:名前は開発中のものです。 mailto:sage [2006/04/15(土) 11:44:35 ID:HLCHM0Al]
- 最近アプレットは流行らないよな。
このスレはJavaアプリのこと?アプレットのこと? サーバ側の話?J2MEのこと? なんでもあり? それよりなにより、漏れは女とJavaTea飲みたい。
- 275 名前:名前は開発中のものです。 mailto:sage [2006/04/15(土) 16:50:42 ID:hisjoupK]
- MEは実装依存度が高すぎるからそちらのスレで
基本はJavaアプリだろうね アプレットは社内用リッチクライアント用途ではかなりいいけど アプリと違って起動時のパラメータとかチューニングが限界がある アプリによってメモリやGC等の設定は細かくかえるのが普通だから ゲーム用ではさほど・・ フルスクリーンとかファイルアクセスとか限界もあるしね 手軽に配布ということでフラッシュ程度でいいのならフラッシュで作ればいいし JavaでやりたいのならWebStartにしたほうがまし JRE同梱してアプリにしたほうがいいよ
- 276 名前:名前は開発中のものです。 mailto:sagw [2006/04/15(土) 18:40:50 ID:nQHtm5rD]
- 某スレに幾つかアプレットの2Dゲームが上がってるけど、
速度的には全然遜色ないな。 アプレットでも結構作れる事は作れるけど、開発環境などその他諸々の点で フラッシュの方が断然上。 アプレットでゲームを作るメリットは何もないよ。
- 277 名前:名前は開発中のものです。 mailto:sage [2006/04/15(土) 18:57:48 ID:AcPPvKEl]
- 無料でまともなFlash開発環境があればいいんだけどな
- 278 名前:名前は開発中のものです。 mailto:sage [2006/04/15(土) 19:10:16 ID:Vc+Xe/9j]
- ActionScript経由でFlashの機能は全部表現できるんだよね?
だったらActionScript3.0がパブリッシュ(コンパイルの意)出来る環境があれば あとはAPIリファレンスを手に入れるだけで何とかなりそう
- 279 名前:名前は開発中のものです。 mailto:sage [2006/04/15(土) 21:04:45 ID:hisjoupK]
- >>276
配布を考えればの間違いでは? 開発環境はアプレットのほうがどこをどう考えても上 アクションスクリプトきっついよ
- 280 名前:名前は開発中のものです。 mailto:sage [2006/04/15(土) 22:36:11 ID:lpccgP2z]
- >>276
ASの開発しづらさを知ってて言ってるのか? マジキツイっての、アプレットと作り比べてみろよ。
- 281 名前:名前は開発中のものです。 [2006/04/21(金) 18:53:51 ID:7zcsjMK6]
- Java使えればゲーム以外にも仕事で役立ちそう
Flashは覚えても応用範囲が狭そう
- 282 名前:名前は開発中のものです。 mailto:sage [2006/04/26(水) 22:50:39 ID:h83t4bfk]
- >>281
俺はC→AS→Javaだったよ ASだけは遊びで覚えたんだけど、OO開発の基礎は自然と身についた MovieClipの仕様がいいんだろうな
- 283 名前:名前は開発中のものです。 mailto:sage [2006/04/29(土) 05:29:13 ID:e8m8pSlv]
- みなさんゲーム作ったんですか?
ここじゃ晒さないんですか?
- 284 名前:名前は開発中のものです。 mailto:sage [2006/05/01(月) 20:40:07 ID:nUaQGh3S]
- フリーのは、ふりーむ!とベクターで公開してる。
有料のはDLsite.com等で販売中。
- 285 名前:名前は開発中のものです。 [2006/05/07(日) 00:14:23 ID:W2WiM6Ar]
- 知っている方がいらっしゃったら教えてほしいことがあります。
以前j2re1.4.1_02でフルスクリーンとウィンドウモードを切り替えるものを作ったのですが 1.5.0_06では解像度の変更が正しくうごかないという事に当たりました。 手順は 1)フルスクリーンにする GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); device = ge.getDefaultScreenDevice(); DisplayMode fullscreen = new DisplayMode(640, 480, 32, DisplayMode.REFRESH_RATE_UNKNOWN); device.setFullScreenWindow(fullscreen); 2)排他を解除しウィンドウモードにする GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); device = ge.getDefaultScreenDevice(); device.setFullScreenWindow(null); この後で1)を行った場合、1.4.1_02ではフルスクリーンで解像度が変わったのですが 1.5.0_06ではフルスクリーンにはなるが解像度が変わらないということになりました。 何かご存知の方がいらっしゃったらお願いします。
- 286 名前:285 [2006/05/07(日) 00:27:33 ID:W2WiM6Ar]
- 書き忘れていました。
1)では決まったフレームをフルスクリーン指定してます。 device.setFullScreenWindow(frame);
- 287 名前:名前は開発中のものです。 mailto:sage [2006/05/07(日) 02:17:45 ID:5a9PuC3k]
- 元々フルスクリーンと行き来するとリークが発生するから起動時に選択させるほうがいい
ところで意味が分かりにくいのだが 1>2>1ってこと?
- 288 名前:285 [2006/05/07(日) 02:57:40 ID:W2WiM6Ar]
- >287
>元々フルスクリーンと行き来するとリークが発生するから起動時に選択させるほうがいい ありがとうございます、その方向で考えてみます。 >1>2>1ってこと? そうです。
- 289 名前:名前は開発中のものです。 mailto:sage [2006/05/07(日) 11:37:59 ID:5a9PuC3k]
- いまやってみたけど画面ちゃんと切り替わったよ
- 290 名前:285 [2006/05/07(日) 14:11:36 ID:W2WiM6Ar]
- >289
j2re1.4.1_02では、繰り返し切り替えたときにちゃんと解像度も一緒に変わったのですが 1.5.0_06ではフルスクリーンにはなりましたが、二度目以降のフルスクリーン切り替えで 解像度が変わりませんでした。(一回目はちゃんと解像度が変わるようです。) もしうまく切り替わったのでしたらソース、上げていただけませんでしょうか?
- 291 名前:名前は開発中のものです。 mailto:sage [2006/05/07(日) 14:15:43 ID:5a9PuC3k]
- こんなかんじ
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice device = ge.getDefaultScreenDevice(); GraphicsConfiguration gc = device.getDefaultConfiguration(); DisplayMode mode = new DisplayMode(640, 480, 32, DisplayMode.REFRESH_RATE_UNKNOWN); JFrame frame = new JFrame(gc); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); device.setFullScreenWindow(frame); device.setDisplayMode(mode); Thread.sleep(1000); device.setFullScreenWindow(null); Thread.sleep(1000); device.setFullScreenWindow(frame); device.setDisplayMode(mode);
- 292 名前:名前は開発中のものです。 mailto:sage [2006/05/07(日) 14:17:41 ID:5a9PuC3k]
- 注意事項としてウインドウモードとフルスクリーンモードで
色深度が違う場合テクスチャキャッシュとか全部作り直してね 異なる色深度で転送を行うとすごく遅くなる
- 293 名前:285 [2006/05/07(日) 14:20:50 ID:W2WiM6Ar]
- ソース、ありがとうございます。
確認してみます。
- 294 名前:285 [2006/05/07(日) 15:30:17 ID:W2WiM6Ar]
- >292
先ほどのソースありがとうございました。 フレームの非表示をフルスクリーンとウィンドウ毎にきりかえりため 毎度フレームをdisposeし、再作成していたが原因でした。 ところで、上記ソースのやり方でフルスクリーンのときにだけ frame.setUndecorated(true); を有効にしたいとおもい、いくつか試しているのですがうまくいっていません。 作成していたソースを載せておきますので、再度も一度だけご指摘いただけますでしょか?
- 295 名前:285 [2006/05/07(日) 15:33:08 ID:W2WiM6Ar]
- 以下がソースです。
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice device = ge.getDefaultScreenDevice(); GraphicsConfiguration gc = device.getDefaultConfiguration(); DisplayMode mode = new DisplayMode(800, 600, 32, DisplayMode.REFRESH_RATE_UNKNOWN); JFrame frame = new JFrame(gc); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); System.out.println("初期表示"); frame.setSize(800, 600); frame.setResizable(false); frame.setLocationRelativeTo(null);//中央配置 frame.setVisible(true); Thread.sleep(10000); System.out.println("フルスクリーンへ"); //frame.setUndecorated(true);//フレームの非表示 device.setFullScreenWindow(frame); device.setDisplayMode(mode); Thread.sleep(10000); System.out.println("ウィンドウモードへ"); device.setFullScreenWindow(null);
- 296 名前:名前は開発中のものです。 mailto:sage [2006/05/07(日) 16:01:17 ID:5a9PuC3k]
- >このフレームの装飾の有効化と無効化を切り替えます。
>フレームが表示されていない時にだけ呼び出すことができます。 マニュアルどおりだと思うんだが タイトルバーの表示、非表示はフレームが表示されているときは駄目 一度非表示にする必要があるよ
- 297 名前:名前は開発中のものです。 mailto:sage [2006/05/07(日) 16:03:32 ID:5a9PuC3k]
- GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = ge.getDefaultScreenDevice(); GraphicsConfiguration gc = device.getDefaultConfiguration(); DisplayMode mode = new DisplayMode(640, 480, 32, DisplayMode.REFRESH_RATE_UNKNOWN); JFrame frame = new JFrame(gc); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setUndecorated(true); device.setFullScreenWindow(frame); device.setDisplayMode(mode); for(int i=0; i<10 ;i++){ Thread.sleep(1000/2); //ウインドウモード frame.setVisible(false); frame.dispose(); frame.setUndecorated(false); device.setFullScreenWindow(null); frame.setVisible(true); Thread.sleep(1000/2); //フルスクリーンモード frame.setVisible(false); frame.dispose(); frame.setUndecorated(true); device.setFullScreenWindow(frame); }
- 298 名前:名前は開発中のものです。 mailto:sage [2006/05/07(日) 16:06:27 ID:5a9PuC3k]
- あ、最後フルスクリーンモードで終わってるんでALT+F4な
- 299 名前:285 [2006/05/07(日) 17:03:17 ID:W2WiM6Ar]
- 丁寧な反応、本当にありがとうございます。
setVisible(false); の後でdisposeが必要なのですね、 わからずに数ヶ月引っかかっていました。 297でいただいたサンプルなのですが、最後のフルスクリーンの状態で 解像度が640, 480ではなく元に戻っていませんでしょうか? これを何とかできないかなと //フルスクリーンモード frame.setVisible(false); frame.dispose(); frame.setUndecorated(true); device.setFullScreenWindow(frame); device.setDisplayMode(mode); としてみたのですが、今度はウィンドウモードの解像度が戻らなくなってしまいました。 これが一番最初の質問と同じ状態のようです。
- 300 名前:名前は開発中のものです。 mailto:sage [2006/05/07(日) 17:32:54 ID:5a9PuC3k]
- ウインドウモードのタイミングが指定がおかしかった
//ウインドウモード device.setFullScreenWindow(null); frame.setVisible(false); frame.dispose(); frame.setUndecorated(false); // device.setFullScreenWindow(null); frame.setVisible(true); としてごらん
- 301 名前:285 [2006/05/07(日) 18:08:49 ID:W2WiM6Ar]
- ありがとうございます。
切り替え動くようになりました。 動くようになったので調子に乗って切り替え100回とか試してみたら java.lang.OutOfMemoryError がでてきました。最初におっしゃってたように、あまり頻繁に切り替えるもんじゃないって事なんですね。
- 302 名前:名前は開発中のものです。 mailto:sage [2006/05/09(火) 15:25:13 ID:ii7Fciy7]
- ソース見直してたらstaticでいいのにインスタンス生成してる部分が結構あった
インスタンス生成よりstaticの方が軽い、速いかな?
- 303 名前:名前は開発中のものです。 mailto:sage [2006/05/09(火) 16:50:48 ID:BdqQPpYt]
- Java的にはstaticはできるだけ使わないほうがいいらしいけど
- 304 名前:名前は開発中のものです。 mailto:sage [2006/05/09(火) 17:54:55 ID:oSIIzbHZ]
- オブジェクトはプールしないで積極的に生成破棄してくれ
世代別GCとの相性を考えるとこれ
- 305 名前:名前は開発中のものです。 mailto:sage [2006/05/09(火) 22:27:04 ID:p8kDUjWo]
- >>303
実装するにあたって、static変数が必要なデザインパターンもあったんじゃね。
- 306 名前:名前は開発中のものです。 mailto:sage [2006/05/09(火) 23:23:28 ID:j9harUZK]
- >>303
そういう覚え方はよくないよ。勉強しなおしたほうがいい。
- 307 名前:名前は開発中のものです。 mailto:sage [2006/05/16(火) 11:01:52 ID:oJeJmTzF]
- ドラクエってさ、コマンド選ぶと前のコマンドがバックに表示されたまま
次のコマンドが出るじゃん それでキャンセルで現在のウィンドウが消えて 前のコマンドに参照が戻るよね あれってそれぞれにバッファ用意してやるしかないかな? たとえば道具→使う→誰に なら 道具を表示するバッファ 道具、使うを表示するバッファ 道具、使う、誰にを表示するバッファ みたいに
|

|