- 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あたりを参照
- 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]
- ドラクエってさ、コマンド選ぶと前のコマンドがバックに表示されたまま
次のコマンドが出るじゃん それでキャンセルで現在のウィンドウが消えて 前のコマンドに参照が戻るよね あれってそれぞれにバッファ用意してやるしかないかな? たとえば道具→使う→誰に なら 道具を表示するバッファ 道具、使うを表示するバッファ 道具、使う、誰にを表示するバッファ みたいに
- 308 名前:名前は開発中のものです。 mailto:sage [2006/05/16(火) 11:35:56 ID:pNczDPI9]
- ファミコン時代にバッファがあったと思うか?
ひたすら上書き ウインドウが消えたらアクティブになったウインドウの描画 それだけだよ
- 309 名前:名前は開発中のものです。 mailto:sage [2006/05/16(火) 11:37:03 ID:pNczDPI9]
- 一応レイヤーという考え方もありだが、いまだとそっちのほうが楽だろ
それぞれウインドウ内のみの描画管理 画面全体の描画でそれらを適切に呼び出す
- 310 名前:名前は開発中のものです。 mailto:sage [2006/05/20(土) 04:48:56 ID:i7QcIrxX]
- >>308-309
遅くなったけどサンクス なんとなく分かってきた キャラやアイテムのリスト作るのが面倒臭いな・・・ 存在してるキャラ、所持してるアイテムを調べてリストにして 多ければウィンドウをスクロールさせなきゃならぬ 面倒だけどがんばるか・・
- 311 名前:名前は開発中のものです。 mailto:sage [2006/05/20(土) 09:04:00 ID:R0av8b56]
- 面倒か?
わからなければ先にUMLでもなんでもいいけど処理の手順を書いたほうがいい
- 312 名前:名前は開発中のものです。 mailto:sage [2006/05/21(日) 05:45:05 ID:BQPLtheI]
- 処理を考えるのが一番面倒だ
きちんと順序立ててやってみるよ・・
- 313 名前:名前は開発中のものです。 mailto:sage [2006/05/22(月) 04:54:34 ID:rAUj867u]
- 俺はデータモデルの設計が一番面倒だなぁ。
変更や拡張に強く、ネットワーク越しの同期の取りやすいデータモデルをとか考え出すとはまり込む。
- 314 名前:507 mailto:sage [2006/05/22(月) 19:16:41 ID:KUql4eEY]
- Javaを最近勉強しはじました。
とりあえず簡単なゲームを作りたいと思っているのですがどれ位勉強すればいいですか?
- 315 名前:名前は開発中のものです。 mailto:sage [2006/05/22(月) 19:27:29 ID:bgWiXtf3]
- ゲーム作りで勉強すれば
そういう本最近多いし
- 316 名前:名前は開発中のものです。 mailto:sage [2006/05/23(火) 14:28:37 ID:qGRGm1GF]
- if else で100近く分岐しそう・・
激重かな
- 317 名前:名前は開発中のものです。 mailto:sage [2006/05/23(火) 15:24:24 ID:5zoiL+RS]
- >>316
どういう風に分岐させたいんだ?
- 318 名前:名前は開発中のものです。 mailto:sage [2006/05/23(火) 15:30:17 ID:nyPWq5Mq]
- 100こくらいのifでおもくなるって10MHz切ってるマシンの人かな
- 319 名前:名前は開発中のものです。 mailto:sage [2006/05/23(火) 22:43:16 ID:qGRGm1GF]
- >>317
たとえばさ、魔法クラスがあって、そのメソッドに魔法No.をわたして そのメソッド内で渡されたNo.によってswitchで分岐させるとか 話がswitchになっちゃったけどswitchは数しかつかえないんだよね、たしか それ以外で識別したいならif elseしかないと思って あと、変数は少ないけどメソッドがたくさんあるクラスのインスタンスを 100個くらいつくるとメモリがやばかったりするかな?
- 320 名前:名前は開発中のものです。 mailto:sage [2006/05/23(火) 22:51:29 ID:wlFUtSp+]
- class Magic
{
- 321 名前:320はミス mailto:sage [2006/05/23(火) 22:57:01 ID:wlFUtSp+]
- abstract class Magic{
public abstract void perform(); } みたいにして、個別の魔法はこれを継承するようにするとJavaらしくなるよね 実際にゲームを完成させる気ならこんなことしないだろうけど メソッドはたくさんあっても問題なし
- 322 名前:名前は開発中のものです。 mailto:sage [2006/05/23(火) 23:14:15 ID:qo1KKw1q]
- デザインパターン立ち読みでもいいからおぼえとくといいぞ
制御とデータをわけるという考え方は Cとか構造化言語までのものだ
- 323 名前:名前は開発中のものです。 mailto:sage [2006/05/23(火) 23:18:59 ID:qo1KKw1q]
- >>321
いや、ゲームでも普通はそういうプログラムを書く それと識別させたいのならenumを使え switchもつかえるし
- 324 名前:名前は開発中のものです。 mailto:sage [2006/05/23(火) 23:34:50 ID:qGRGm1GF]
- レスサンクス
おかげで設計ができてきた enumすか・・あまり馴染みがないから学ぶよ ところで>>321の4,5行目が素でわからない アフォですまぬ 教えてもらっていい?
- 325 名前:名前は開発中のものです。 mailto:sage [2006/05/24(水) 00:05:11 ID:qo1KKw1q]
- ポリモーフィズムとかStateパターンとか
そのへんしらべてみるとわかるよ
- 326 名前:名前は開発中のものです。 mailto:sage [2006/05/24(水) 00:29:52 ID:0rz/nhQ6]
- おk、ゲーム作りながら勉強する
いろいろサンクス
- 327 名前:名前は開発中のものです。 mailto:sage [2006/05/27(土) 11:28:27 ID:MsTUcez+]
- VectorにStringとInteger入れて、取り出すときに
Integerの要素をStringでキャスト、変換したり Stringの要素をIntegerでキャスト、変換したら エラー出るかな 面倒くさいんでInteger、Stringで統一してるんだが 勉強すればわかることだけどもしよければレスちょうだい
- 328 名前:名前は開発中のものです。 mailto:sage [2006/05/27(土) 11:38:38 ID:EufEKVaf]
- それぞれIntegerとStringが対応してるんなら
class (名前) { public String getString(); public Integer getInteger(); } みたいなクラスを作る 対応してないんだったら、String用のVectorとInteger用のVectorを別にする
- 329 名前:名前は開発中のものです。 mailto:sage [2006/05/27(土) 11:49:40 ID:ryxQUfnb]
- キャストはかならずクラスの関連性がないと無理
かならず数字を含む文字列ということであれば格納前に返還すればいいだけの話だが この情報だけではどうしたいのかがわからない あとゲームということは多少パフォーマンス気にすることも多いのだろうから Swing部分使わないのならVectorよりはArrayListで シングルスレッドならパフォーマンスはまずかわらんけどな
- 330 名前:名前は開発中のものです。 mailto:sage [2006/05/27(土) 13:09:54 ID:MsTUcez+]
- 即&わざわざレス感謝
ArrayListの方がパフォーマンスいいのか・・・ 大分Vector使ってコード組んじゃったから、今度からはそうしよう RPGだからスレッドはマップのキャラ動かすのとアニメーションくらいしか使わないと思う Vectorの指定された要素がIntegerかStringかで 変換、キャストしたのちifで分岐させて処理を分けたいと思ったんだけど やっぱり元々のVectorを別にした方がわかりやすかった 対応してないし 話変わるけど、コマンドの実装が面倒だ・・ 移動コマンド、アイテムコマンド、魔法コマンド、使用対象コマンド・・ それぞれにクラス作ってそのクラスのキーイベント処理メソッドを 現在のコマンドモードによって呼び分けなきゃならん いい方法ないかな
- 331 名前:名前は開発中のものです。 mailto:sage [2006/05/27(土) 13:39:56 ID:8ehQx4Ia]
- よくわからんがキーイベントにゴリゴリ書いてるのか?
それならフレームワークの設計自体からやりなおしたほうがいいぞ
- 332 名前:名前は開発中のものです。 mailto:sage [2006/05/27(土) 13:57:59 ID:MsTUcez+]
- ゴリゴリ書いてる・・
とりあえず組んでみようとは思ったがマジで勉強が足りんらしい チラ裏スマソでした
- 333 名前:名前は開発中のものです。 mailto:sage [2006/05/27(土) 14:12:56 ID:8ehQx4Ia]
- キーイベントではキーの入力フラグを上げ下げするだけ
そしてゲームのループ内でそのフラグを読み取る これでおけ
- 334 名前:名前は開発中のものです。 mailto:sage [2006/05/27(土) 14:23:34 ID:MsTUcez+]
- ゲームループ内だとkeyTypedメソッドが呼ばれてから
時間差があるかもと思ってkeyTypedメソッドから 直接各コマンドクラスのメソッドを現在のコマンドモードで分岐させて呼んでた ドラクエみたいなのを再現しようと思ってるんだがゲーム作りって難しいな 俺のゲーム作りが終わるまでJavaが生き残ってるといいんだけど・・ ここの住人はレベル高いね スレ汚しスマソでした
- 335 名前:名前は開発中のものです。 mailto:sage [2006/05/27(土) 14:52:54 ID:8ehQx4Ia]
- ループ内は60fpsとか固定でチェックするから問題ないよ
というか、普通のゲームはイベントで処理するところはほとんどないから それを隠すためのフレームワークというかそんなもの まず言語的にJavaがどうのこうのというよりゲームプログラミングに対しての 技術がちょっと足りないかなぁという感じがする 10~20年前だったらゲーム作りとかいろんな本で毎月雑誌に載ってたんだけどな いまじゃ残ってるプログラム雑誌がなくなってるし、ユーザーが求めるものが 高すぎてギャップで苦しんでる人が多いのはつらい時代だな とにかくメインループで取得して状態に応じてswitchで戦闘時なのか移動時なのか キャンプコマンド中なのか分離するようにかけばおけ
- 336 名前:名前は開発中のものです。 mailto:sage [2006/05/27(土) 17:41:03 ID:MsTUcez+]
- ゲームの作り方か・・
一から設計見直すよ マジで参考になった、ありがとう
- 337 名前:名前は開発中のものです。 [2006/05/28(日) 16:35:03 ID:su6FTHmr]
- C++だとエフェクト(爆発とか)は加算合成を使うって書いてあるんですがJavaでも同じような方法で実装する手段ありますか?
- 338 名前:名前は開発中のものです。 [2006/05/28(日) 17:06:46 ID:oT4lybEG]
- Java2Dには通常合成はあるが加算合成はない
自前で実装するかJOGLとかで3Dで描画するしかない >>11とかのライブラリに単純な合成がある模様
- 339 名前:名前は開発中のものです。 mailto:sage [2006/05/28(日) 22:35:07 ID:L8EQs44V]
- >316
ifをバイナリツリーみたいな構造にすれば log2(100)の回数の比較だけで済むんじゃないか?
- 340 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 19:56:51 ID:AkbGbw5f]
- mpeg2のような差分圧縮形式のシーケンシャルアニメーションって負荷高いですか?
レイヤー可能でそれを実現できたらコンパクトになるなと思ったのですが
- 341 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 21:02:41 ID:bnvMLnBd]
- Javaの質問と関係ないな
効率がいい場合と効率が悪い場合があるっしょ
- 342 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 22:16:22 ID:AC7eOzy5]
- >>339
ポリモフィズムで解決という結論がとっくに出ていると思うのだが
- 343 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 19:31:13 ID:kqayNosp]
- みんなが配布物に同梱してるSPIってOGG Vorbisくらい?
これが便利ってのがあったら教えてください。
- 344 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 22:06:19 ID:H+lYwXra]
- だろうね
OggVorbisさえ再生できればだいたいこまらん
|

|