1 :
JAVA初心者・・・ :
04/01/17 22:47 ID:eiE+Mw3o はじめまして!! 今年に入ってからJAVAでゲームを作ってみようと勉強しています。 どなたか宝さがしゲームを作るうえで参考になるゲームとツール知りませんか?? 知っていたら教えてください。<(_ _)>ぺこり
<!-- ↓ここから広告領域なので読む必要なし↓ -->
仕様くらい書けば
4 :
JAVA初心者・・・ :04/01/17 23:40 ID:eiE+Mw3o
仕様としてはキャラクターを動かして宝を掘り出すもの。 簡単に言ってFF9の「ここほれチョコボ」みたいなゲームを作ってみたいんですが・・・
javaキタ━━━ヽ(∀゚ )人(゚∀゚)人( ゚∀)人(∀゚ )人(゚∀゚)人( ゚∀)ノ━━━!!!!
<!-- ↑ここまで広告領域なので読む必要なし↑ -->
なんでわざわざJavaでやる必要が
9 :
JAVA初心者・・・ :04/01/19 04:18 ID:7ZOz3AkQ
まずは基本からということで・・・ といってもJAVAの初心者っぷりもさることながら他の言語はもっと初心者なんですよ・・・
初心者というのは免罪符みたいなもんだよな
12 :
名前は開発中のものです。 :04/01/19 13:33 ID:qF6v1RAu
{ {{ } } }
>12はコンパイルとおるのか知らないが Javaだと逆コンパイルされるから 困るのだが
>>8 javaよりゲーム製作に適した言語て何? C? LGP?
教えてエロイ人。
>8 のわざわざの意味がよくわからん
16 :
名前は開発中のものです。 :04/01/19 17:33 ID:OR3w5krE
>>14 シーピッピッ
まぁ俺も初めはJAVAでもいいと思うよ。
>>13 見られて困るようなコード書くことあるんか? JAVAで。
17 :
名前は開発中のものです。 :04/01/19 18:23 ID:KiZt+2Kr
javaは遅いからでしょう。>わざわざ しかしハードウエアが十分高速になっているいま、 小手先の高速化の意味もなくなり、JAVAでファミコン程度の ゲームが作れるのではないかと。 >1さん はどんなゲームが作りたいの?
18 :
13 :04/01/19 18:32 ID:PrE1yRFQ
>16 謎解きのような要素があるゲームの場合、 見られたくないと思う。 曖昧化で読みに<<なるとは思うのだが。 gcjに期待している。 しかし、本気でやろうとするなら、 C++かとも思う。
19 :
14 :04/01/19 19:51 ID:zdd2LOg2
本気ならC++か・・・ 漏れにはムリポ。
C++が一番ゲームを作るのに適した言語というのは禿げしく同意だが ホンキでと言うのはまた意味合いが違うんじゃないかなぁ? 言語とゲームの質は必ずしも比例しないし。 以前は市販のゲームでもVBが使われたりしてたし。 今のよりも面白いのも多い。 まぁグラフィック重視なら言語の質が大きくゲームの質に左右されるが。
21 :
JAVA初心者・・・ :04/01/19 22:11 ID:7IYz/cdm
>17 ぼくは宝探しのゲームを作ってみようと思ってます。 FF9に「ここほれ!チョコボ」ってあったじゃないですか。 あんなかんじの仕様にしたいんですけど初心者にもできますかね?
FF9は知らないが わたしが考えるほとんどの面白いゲームは JavaでもVBでも十分実装できると考える。 Javaを勉強してからなら C++に移行することも容易だろう。 FF9を知っている人、Javaでもできそうですか?
>あんなかんじの仕様 ここがさっぱり分からねえ
1.4をベースにやれば、 Javaでもそれなりの物は作れるよ。 ただWeb上には、1.4やJava2D,3Dに 関する情報は少ないね。
おら、はJavaでとりあえず動く見た目貧弱Verを作ってから C++で本格的に作ってる
よ〜し、Javaで作ってみるか。
ところで、1はどこ行ったんだ? まさか、この程度で挫折したりしないよな? まだいるなら、ちょっとなら教えてやってもいいぞ。
1じゃないけど参考になった。 ただ参考書見ながらやってるけど結構ムズイ。
31 :
JAVA初心者・・・ :04/01/25 23:03 ID:ZzuGhGCl
風邪ひいてダウンしてました。皆さんも風邪には気をつけてください。 ゲーム作成のほうは全くもって進んでいません。 もう少しがんばってみようと思います。 あきらめるのはまだ早いですよね☆
どうやって配布するか悩むね やっぱりappletが気軽でいいかな
33 :
名前は開発中のものです。 :04/01/27 01:32 ID:sQv8HBub
Javaで作るメリットは実行するプラットフォームを選ばないこと。 (Microsoft J#.NETは別物だが) VM上だったら、WinでもMacでもLinuxでも動くから、大勢の人に 見て貰える。
シェア的にはWinで見れれば充分すぎるほど大勢だと思うけどね
わーい。Javaスレだ−。 もう一年も放置しちゃった作りかけのゲーム、再開しようかなあ。 初期1.4で作り始めてたけど、しらんまにJava3Dリリースされちゃってるし、 1.5とか出てきちゃったあたりが悲しいけど。 でも一から作り直そうとすると、またきっとどこかで挫折するし(根性なし)。
36 :
デフォルトの名無しさん :04/01/27 21:07 ID:pftlihys
>>33 さいしょっから JRE入ってればそうね。
マ板の14才か?
WindowsでコンパイルしたものもMacで動かせるんだっけ?
>>35 なんか作ってみれ。
好きなもの作れるのは今だけだぞ。
やってみます。まったりと。 古いソース引っ張り出してきました。 懐かしいなあと思いつつ、内容忘れまくり。 たいした量書いてたわけじゃないけど。 ついでに、ツクール2000の支援ツールがまるごと消滅しているのに気づいた。 いつ消えたんだろ。……スレ違いだけどショック。
>38 できますよん
いまいち盛り上がらないね。 あんまりJavaでゲーム作ろうと思う人いないのかなあ。 私はマカーだから、いろんな人にやってもらおうとか思うと自動的にJavaになるんだけど。 Winの人は環境いっぱいあるし、やっぱ興味ないのかな。 >37 そうですよ。最近あんまり行ってないけど。 すっ飛ばしててごめん。
お休みだ−。やたー。 この週末にメイン関数かけるようにがんばろ。
がんばれー
>>42 私はWinですがSDL,OpenGLのJavaラッパーを使って何かゲームを作ってみようと計画中ですyo!
>>42 Javaでゲーム作ろうと思う人は
あんまりいないだろうな。
俺は、作ってるけどな。
なかなかメインにたどりつかない……。 モノ作るのって大変だね。わかってはいたけど。 最低スペックの目標はセレロン400MHzくらい……にしたいなあ。 挫折したらG4-700MHzくらいの予定。
私も久しぶりに何か作ってみようかな… いつも悩むのは、速度調整をどうするかってところ。 ミリ秒単位で確実に時間を計る方法が見つからなくて、 30FPSとかで安定して動作させられないんです。
ああ、今日もメインにたどりつかず……。 >49 普通はTimerでだいたい10msecくらいまでは測れるんじゃないかな。 それ以下は物理的に無理なハードが多い気がする。 安定動作は、う〜ん。 遅延時間が大きくなったらFPSを落とすとかはダメかしら?
仮にアプレットなどで公開をするつもりなら、 初めから10〜15FPSで遊べるように作ればいい。 2Dでムリに30、60FPSと出す必要なし。
>>49 ハードウェア依存なので不可能
FPSに依存しないように作るべし
たしかBio100%の人が「マリオは偉大だ」って言ってたけど、 今、わたしはツクールも偉大だと思っていたりして。 ……来年の夏ごろの公開を目指そう。
普通、ゲーム開発するなら、まずツール類を作るものだ。 というわけで、ツクール程度が作れなければ話にならんよ。
そうだよねぇ。 先は長そうだし、まったりまったり。 ツクールはDelphiだよね。 あのデータファイルの圧縮は単純だけど意表をついていて、チョット感動した。
がーん! Javaを1.4.1から1.4.2にアップデートしたら、ゲーム中で描画される文字の色が変わった! どこかで初期化忘れてるんかなあ。あうあう。
配列作ったくせに、要素newするの忘れてた。超おバカ。 でもついでに文字色変更のエスケープシーケンスのバグ退治完了♪
58 :
49 :04/02/04 21:07 ID:6w0e1fuL
ちなみに過去に作ったプログラムではこうしていたよ。 メイン処理を半無限ループでぶん回す昔ながらのやりかた。 その1は実行環境によって極端な誤差が出でしまうんだ。 その1 スレッド1 while(終了条件){メイン処理;wait();} スレッド2 while(終了条件){wait(33);notify();} その2 while(終了条件){ メイン処理; sleep(待ち時間); if(1秒に1回){ 直前の1秒間の描画回数をチェックして待ち時間を調整; }
>49サンのやりたいことはTimer#scheduleAtFixedRate()でできると思うんだけどどうかな。 わたしは画面の描画これでやってます。 アクションとかじゃないから正確である必要とかゼンゼンないんだけどね。
60 :
49 :04/02/05 21:29 ID:Qsr/iS2M
ありがとう。早速Timer、TimerTaskクラスをチェック、 どれくらいの精度が出るかテストプログラムを組もうと した矢先、気が付くと > 導入されたバージョン: > 1.3 _l ̄l○ アプレットで作ってるんだった… exception: java.lang.ClassNotFoundException: java.util.TimerTask ※IE6.0 + MicrosoftVM で実行
そっか。アプレットじゃ使えないんだ。 知らなかった。ごめんね。
63 :
49 :04/02/07 00:08 ID:UiLI4Lv9
重ねてありがとう。
ヘタレな自分には即実装というわけにはいかないけど、TimerTask自体の
性質についてテストしてみます。
スレッドの作成を乱発しているせいか、「動きがカクる」頻度が
>>58 の2よりも
高いような気がします。
ドキュメントに「固定頻度実行」と書いてあるとおり、処理落ちが発生した
直後は遅れを取り戻すために速い回転でrun()が呼ばれるようです。
import java.applet.*; import java.awt.*; class TimerTaskA extends java.util.TimerTask { public Component compenent; public int count; public void run(){ Graphics gr = compenent.getGraphics(); if(gr != null){ gr.clearRect(0, 0, 100, 16); gr.drawString(count/100+"."+count%100, 4, 14); gr.drawRect(count%100, count/100+20, 1, 1); count++; gr.dispose(); }}} public class TimerTestApplet1 extends Applet { java.util.Timer timer; TimerTaskA timerTask; public void init(){ timer = new java.util.Timer(); timerTask = new TimerTaskA(); timerTask.compenent = this; timer.scheduleAtFixedRate(timerTask, 0, 10); } public void destroy(){ timer.cancel(); }}
さあ気をとりなおして、今日こそメイン!
66 :
名前は開発中のものです。 :04/02/08 20:53 ID:P+SbX93B
Javaで作る2Dゲーで床とか壁の判定する時って、やっぱしifの類で 「自キャラ座標が壁の座標と一致したら、ボタン操作無効」 として一個一個地道にやってくしかないんでしょうか? 質問系スレが無いんでここで・・・。意見聞かせて下さい。
答えはYES。ただ、どれだけ簡単にできるかはその人しだい。
>>49 ゲーム処理用のスレッド内で、System.currentTimeMillis()を監視する、とか。
うーん。歩くのって意外と難しい。 どうしてもスケートやってるみたいになってしまう。
ようやく自然に歩くようになったけど……重い。 10キャラを10fpsで歩かせると、すでに800M〜1GHzクラスのハードがいるなあ。 やっぱりJava3Dやらないと厳しいかしら。
うう、夜更かししすぎた。今日はもう寝よ。
MacとWinでCPU利用率が倍くらい違うなあ。Winで実行するなら1.8GHzくらい必要っぽい。 何でこんなに違うのかしら……?
sleepを上げれば改善される可能性がある
74 :
49 :04/02/09 22:57 ID:/GqD/yBB
>>66 ボンバーマンのように壁の大きさが全部同じなら、
2次元配列に壁データを入れておくことになるね。
進行方向の要素を数点調べて、全部空なら移動
できると。
ドンキーコングの1面のような面構成だったり、
動く床がメインの構成なら、66のように総当りで
調べていくのが良いと思います。
>>68 System.currentTimeMillis()
ミリ秒単位の時間をきっちり返す実装には
なっていないようです。
>>64 スケジュールやるときfixedはやめとけ
スワップ入ったときいっきにはやまわしになるから
1.4でいいのならTimerTask+フリップやればほぼ垂直同期とった綺麗なの動いてるよ
垂直同期はビデオの設定によるけどね
俺作るとjavaのゲーム(1.4.2なら)全然おもくないんだけど
500MHzもあれば大概40fps以上はいける
あ、スワップのことぜんぜん考えてなかった。 固定遅延で、自動調整しよっと。 でも40fpsってすごい……というか、わたしがオバカなコード書いてるだけか。
どういったゲームかにもよるね ゲーム自体の処理が重いのならそれの改善は厳しいかもしれないけど 描画自体は思ったよりネックにならない 2Dゲームの場合はね 600MHzあれば60fpsもだいたいCPU使用率70%以下で回る ポイントはVolatileImageつかわないことか あれは透過関連うまく動かないはずだからスプライト量増えれば増えるほど厳しい メモリの中で処理して結果をバックバッファに書き込み、フリップとすればいい そしてそのメモリの中で作るバッファの作成は Image work = gf.getGraphicsConfiguration().createCompatibleImage(320,240,Transparency.OPAQUE); って感じで作ればいい 速度を重視するなら16bppあたりのフルスクリーンモードに切り替えてこの320*240のバッファを 2倍にして書き込むだけ 640*480のソフト描画はDirectXでも厳しいのでやめるがよろし フルスクリーンモードとウインドウモードの2つ用意した方がいいよ
VolatileImage、こんな便利なImageがあったなんて! ……存在知らずに、自分で作っちゃったよ。すごいマヌケ。 重たいのは多分透過色を含む大きなImageをガンガン重ねて合成してるからだと思います。 きちんとクリップして無駄な描画省けば、少しは軽くなるかも。 640x480はDirectXでも重いのかぁ。困ったな。ていうか、見透かされてる……。 助言ありがとうございます。 画面サイズだけは絵描きさんの要望で削れないのですが、がんばって工夫してみますね。
作っちゃったよ、とか言って、大嘘でした。 説明よく読んだら、VariousImageは作ってたものとはぜんぜん違うものだった。ふう。 直描画できたんですね。URLありがとうございます。勉強しなきゃ。 ぜんぜん知らなかったです……って、SDKドキュメントの新機能の章にもしっかり書いてあるなあ。 読んでないのバレバレじゃん。 明日一日かけて、画像周りのクラス書きなおそっと。 わたしが作ってるのは2DRPGです。一応ツクール+αレベルが目標。 とりあえず、Javaだから遅い、とか言われないようにがんばるつもり。
×VariousImage ○VolatileImage Variousは自分で作ってた方だった。うー、ボケすぎ。
2DRPGなら30fpsでもいいし むしろ戦闘エフェクトあたりは重い方が溜があるかんじでいいかも バテンカイトスは絵は綺麗でもそのへんがイマイチなのが大杉なんだよね Java2Dのαブレンドは通常合成はあっても加算合成はないようなので 自分で実装することになるかもしれない
83 :
49 :04/02/10 20:23 ID:anba1aLx
イメージが湧かないのでサンプルを作ってみました。アプレットです。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/6003/sample/wall1/ 描画周りは最も単純な手法で、アプレットのgetImageで読み取ったGIFファイルを、
同じくcreateImage(width,height)で作成したバッファに描画しています。
私は「フラっとページを訪れた人が軽く遊んでいくゲーム」を目指しているため、
初心者がオールインワン型のWindowsパソコンを買って何も設定を変えていない
状態で、追加プラグインをダウンロードせずに動かなければならないという
条件を自分につけています。
そこで、描画効率、動作速度の安定、効果音・BGMの再生、セーブデータの保存方法
にはいつも悩まされます。
みなさんが想定しているターゲットユーザ・配布方法はどんな感じですか?
>>83 Pen3 1GHzでもJ2SDK1.4.2だとFPS=32, INTERVAL=24出たよ。
あと、隊列を組むのは正面衝突したときに先に処理した方だけが反転するからでは。
↓な感じ。
衝突前:人→←人
衝突後:人→人→
超低電圧版PentiumM1GHzで J2SE1.4.2 fps32/interval29 CPU使用率10%くらい 軽いやね
86 :
49 :04/02/10 23:14 ID:anba1aLx
画像はごまかしごまかしでも1.1で扱えるからいいけど サウンド周りがまともになったのは1.3からだしなぁ きびしいやね
88 :
49 :04/02/10 23:24 ID:anba1aLx
>>84 なるほど、二人とも振り返るようにまじめに処理しないと、
自然に動き回ってるようには見えないわけだ。
89 :
49 :04/02/10 23:30 ID:anba1aLx
>>87 周波数も8000Hz固定だし、なんだかブツブツ音が途切れる感じ。
短い音を連続再生すると遅延も発生します。
ミニゲームを作る分には、それでも十分なんですけどね。
実行環境がヘタレな方がライトクリエイター(?)には有利というし。
FPS 28 INTERVAL 1くらいでした。 で、描画周りを全部書き直して、かなりの高速化に成功。 というか、元のが無駄が多かったんですけど。 400MHzくらいあれば10〜20FPSで普通に動きそうな感じ。 これから処理増やしていくとどうなるかわからないけど。 VolatileImageでもう少し早くなりそうなんですが、 わたしのところではcreateCompatibleVolatileImageの中でなぜか しばらくするとOutOfMemoryErrorが出ます。 他のパソコンで試したらエラーは出なかったので、とりあえず相性かなぁ とあきらめました。 BufferStrategyも試してみたけど、かえって遅くなっちゃったので保留です。
ループの中ででかいVolatileImageガンガン生成してるとか? その変数のスコープをみてみるべし BufferStrategyはバッファサイズを2にしてフリップ処理をしてますよね? これ、DirectX・・・というかビデオまあ割の知識あるならわかるけど ほとんどの環境で垂直同期とります 単純にベンチとるとマシンパワーが低い場合fpsは少し落ちますが ティアリングのない綺麗な描画になります
最初はでっかいVolatileImage作りすぎたせいだと思っていろいろ変えてみたんだけど、 どうやらそうじゃないみたい。 最終的には640x480を毎秒10回だけ生成して、古いのはすぐにflush&null代入 としてみたんだけど、やっぱりおんなじエラーになりました。 描画方法変えてBufferStrategyを使えばVolatileImageは使わないですむようにしたので、 とりあえず問題解消です。解消というか、逃げただけだけど。 話し変わりますけど、MacのVMはダブルバッファリングとかしなくても 画面がちらつかないんですよ。 パフォーマンス調べようと思ってバッファリングしない版を試しにWinに持って いったら、画面ちらちらでひどかったのでびっくりして元に戻しました。
VolatileImageでの不具合がでた環境って具体的にはなんだ? ビデオチップあたりが聞きたい MacってMacOSXか? あれはOS自体がウインドウバッファをちらつかせないように描画しているから Windowsみたいなのとだいぶ違う OSXのほうがシンプルでいいけどね つーか、今GUI新設計したらだれでもそう作ると思う
カードはGeForce FX 5200です。32MB。 やっぱりMacOSXのVMの問題なのかなあ。WinのSunVMでは問題でませんでした。
がーん!名前が化けた。
基本的にヒープメモリが不足してなければ大丈夫 VolatileImageはVRAM足りないとヒープメモリ使うから vi.getCapabilities().isAccelerated() って感じで調べてみるといい MacOSはその辺の実装が違うのか、デフォルトのメモリMAXサイズが小さいのか MacOSの起動時のオプション違うかもしれないからわからないけど ヒープサイズの可能性も高そうだから -Xmx128M とヒープメモリの設定してみては?
ヒープの方は大丈夫だと思います。 Runtime.freeMemoryの戻り値は、OutOfMemory出るときも十分あったし。 なんでエラーになっちゃうのがわたし的には不可解。 isAcceleratedとかヒープの設定は後で試してみますね。
isAcceleratedを試してみました。 残念?ながら常にtrueで、OutOfMemoryが出るときもfalseにはなりませんでした。 貼ってもしょうがないけど、こんな感じ。 java.lang.OutOfMemoryError at java.nio.Bits.reserveMemory(Bits.java:619) at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:95) at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:285) at apple.awt.DataBufferNIOInt.getBufferOfSize(DataBufferNIOInt.java:135) at apple.awt.DataBufferNIOInt.<init>(DataBufferNIOInt.java:31) at apple.awt.IntegerNIORaster.createNIORaster(IntegerNIORaster.java:26) at apple.awt.CGraphicsConfig.createCompatibleImage(CGraphicsConfig.java:54) at apple.awt.OSXOffScreenSurfaceData.createData(OSXOffScreenSurfaceData.java:33) at apple.awt.OSXVolatileImage.createHWData(OSXVolatileImage.java:77) at apple.awt.OSXVolatileImage.initAcceleratedBackground(OSXVolatileImage.java:87) at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:98) at apple.awt.OSXVolatileImage.<init>(OSXVolatileImage.java:70) at apple.awt.CGraphicsConfig.createCompatibleVolatileImage(CGraphicsConfig.java:48) at jp.gr.java_conf.nocon.reday.base.UserInterface.paint(UserInterface.java:116) //JFrame.paintをオーバーライド at javax.swing.JFrame.update(JFrame.java:392) まだ続くけど以下略。 これはバグパレード行きかも。
paintってもしかして毎フレームVolatileImage確保してるの? それは問題ある希ガス
がーん!毎フレーム確保しちゃいけないの? ……使い回しやってみます。
同じVolatileImage使い続けるようにしたら怒られなくなりました。 ああ、ぜいたくは敵だったのね……。 エラーも出ないし、処理も速くなりました。 本当にありがとうございます。 がんばって完成めざしますね。
日記を書いているような気がする今日この頃。 今日は画面のスクロールに挑戦中♪ あっさりできるかと思ってたら、意外と強敵。 画面更新通知のイベントがループしてハングしてるし……困った。
イベントって自分のフレームワーク内のことだよね? Swingの描画イベントは無視していいよ
あ、そうです。自前のイベントです。 Swingのイベントはぜんぜん見てなかったり。 スクロールの契機に「絵が移動しました」イベント流用してるからいけないんだなあ。 「わたしを見て!」イベントを新設しよっと。
イベントはいまいちイメージがわかなかったので、 Cameramanインターフェース作成ちゅう。 我ながら安直なネーミングだなぁ。 そんな感じで、明日くらいにはぐりぐりスクロールできる予定。 ……進みが悪い日はいまいち書くことがないね。
スクロール完成♪ 今気づいたけど、topを見てるとメモリ消費量が毎秒40kB位ずつ増えていくのが危険な予感。
メモリーリークじゃなければメモリ使用量は気にしなくていいと思う RuntimeのFreeMemoryあたりでGC動いてるか監視するのがいいね
freeMemoryみてるとGCはちゃんと動いてるっぽいのでとりあえず大丈夫かなあ。 totalMemoryが変わらないのに、topの表示だけが……謎。 明日はマップでもつくろ。
すいません……Xcode使いなもので。 付属のSampler使ってみたら、VM自体の解析してくれてガッカリ。 今夜はpopcapで遊んでました。ああ、わたしのおさかなさんが……!
全然関係ないけど、今日は宿題忘れてピンチだった。 >112さん、どうもです〜。 PureJavaのもあったのね。今度使ってみます。 今はマップエディタ作るか悩み中。 ツクールのマップ読めるようにしようと思ったけど、 実際読めるように作ったらたら使用許諾違反だしなあ。 テキトーに作ってXMLか何かに落とせばいいかしら(←安易)。
たらたら♪
マップ作りは置いといて、GarageBandで遊んでました。 で、思ったんだけど、JavaってそのまんまじゃMP3とかの再生できないよね。 無条件に使えるMIDIのデータはいまいち手に入んないしAIFFはデータばかでっかいし。 JMFの追加必須とかはヤだしなあ。
地面の上に芝生があってその上にわたしがいて、 わたしを操る運命は神様が作り、時の流れが握っている。 隣の芝生が青いのも運命のチカラで、 隣に行ったわたしは元のわたしじゃないかもしれない。 でもそれは結局運命。 運命とわたしの関係で悩み中。おぶじぇくとしこう? ……てゆうか、新しい宗教みたい。Java神様。 へんな宗教のおばさんがきたら教えてあげよ♪
?(゚Д゚;三(;゚Д゚)??
ついにデムパか・・・
ここまでまじめにつきあってきたがとうとう悟りを開いたか
がーん!わたしすっごいマジメだったのにぃ。
まったりの日々……。 ところで、二点Point a = new Point(aX,aY)とPoint b = new Point(bX,bY)があるとき dx = b.x - a.x; dy = by - ay;であるベクトル(だっけ?)dを作りたいんですけど、 dは何のクラスで作るべきなんでしょ? 最初dつながりでなんとなくDimensionにしてみたけど、みょ〜に違和感。 結局Pointにしちゃってるんだけど、これも微妙に違うような……。
2値だけならPointで問題ない が、名前が気にくわないとか拡張しちゃう予定があるとか考えると Pointを内蔵するか継承、もしくは新規に作ってしまうほうがいいかも
muu
124 :
名前は開発中のものです。 :04/02/24 13:02 ID:a+AOgXxf
Java3D悪くないね。Direct3DRMみたいで。 これからはJava3D+VRMLでいくなり。
125 :
名前は開発中のものです。 :04/02/24 13:05 ID:a+AOgXxf
>>電波御釜 Vector2dとか
電波はしょうがないかなとか思うけど、オカマはちょっと悲しい。 ていうか、もしかしてさらし上げ? >122さんのいう通り、Pointの名前変えて使おうかな。 Vector2dも手だけどdoubleまではいらないし、winの人とかはvecmath使える環境の人少なそうだし。 みなさんどうもでした♪
127 :
名前は開発中のものです。 :04/02/25 14:04 ID:m/Y8IXxl
Javaって演算子オーバーロード出来ないのな。 vector1.add( vector2 );ってダサすぎ。かなりガッカリ。 XMLみたいにプリミティブ型を定義出来るようにするとか せめてfloat4とかfloat4x4とか用意するようにすてほすィィ
クラス設計ヘンだったかなあ。地面をうまく管理できない……。
>>127 1.5でできるようになってなかったっけ?
うろ覚えなので自信なし。
>>129 演算子オーバーロードはない。
しかも、SUNは今後の導入にも否定的。
131 :
名前は開発中のものです。 :04/02/26 14:10 ID:wf+RKCVI
>>130 本来複雑すぎるC++に対し〜っていうポリシーはわかる。
まあ仕方ないかって感じだね。(その割にはGenericsとか入れてるが。)
つうかfloat4などのプリミティブなベクトルクラスはどの言語でも必須だと思うなあ。
せっかくどのCPUにもSIMDユニットが付いている時代になったんだし。
仕様もCgをまんまパクれば問題なし。
まあ、ゲーム作るヤツも含めて、数値計算するヤツは 大人しく他の言語を使えってこった。 by iアプリ開発者_| ̄|○
>>131 >float4などのプリミティブなベクトルクラスはどの言語でも必須だと思うなあ。
その辺りはJITで片付けるべき、というよりその為のJITでしょ。
まあ、JITの掛け方に関する指定も出来た方が嬉しいんだけどね。
Genericsの場合は型をより強化するためのもので 自然じゃないのかなぁ
>>133 いや、単にfloatやdoubleなどスカラー型だけを使う言語のプログラムを
SIMD使ってコード生成しろってのは厳しい話。つーか無理だよ。
>コマンドラインオプション「-XX:UseSSE=0」を指定します。 こんなのもあるみたい、後で実験しる。
jxta使ったゲーム出しても 初期設定できるかな?
飲酒運転の車に特攻されてムチウチになりました。 しばらくお休みします。 はあ……うつだわ。
うわーお大事に・・・
アプレットの領域内を一回クリックしないと 動作しないのですが、どうにかなりませんか?
キーボードのこと? フラッシュも同じだけどカレントオブジェクトがあわないとどうしようもないやね 1つのhtmlに複数のアプレットとかflashおけるから 一番手っ取り早いのはスタートにクリック使うこと java2使うのならwebstart使えばもっといい
144 :
名前は開発中のものです。 :04/03/03 20:19 ID:80+x+sMk
製作者様、携帯アプリ版にて活躍してください
マルチポストうざいよ
>>142 ページ内にアプレットが1つしかないなら、
public void init()
{
・・・
requestFocus();
}
147 :
名前は開発中のものです。 :04/03/10 19:03 ID:p7KT4QmV
アプレットを使ってゲームを作ろうと思うのですが、 ブラウザに標準ではいってるVMって相当昔のバージョンのやつですよね? Swingは使わないほうがいいですよね?
>>142 >>146 に加えて、フォーカスがないときは
アプレットをクリックしると表示されるようにする。
>>147 MSJVM Removal Tool 1.0
http://slashdot.jp/article.pl?sid=04/03/09/2053231&topic=43&mode=nested > SuperSouya 曰く、 "2004年3月6日(現地時間)にMicrosoftからMSJVM Removal Tool 1.0
> 英語版がリリースされました。対象製品はWindows95以降で3802,3805,3809,3810の何れか
> のMSJVMがインストールされている製品。(ダウンロード先) 近々日本語版などの各国版も
> リリースされそうですが、MSJVMはもともとJRE1.1ベースで動かしているものですから、や
> はり古いのは否めません。早くSunの純正Javaをダウンロードして、MSJVMとはお別れした
> ら如何でしょうか?"
こんな情勢なので、ブラウザ搭載のVMはもはや切り捨て可。
というかXPの細かいバージョンですでに入ったりはずれていたり 大手メーカー製はsunのが入っていることも多い awtにこだわってへっぽこなものができあがるよりは ランタイムを入れさせようと思わせるくらいいいものができればいいだけ ゲームならスタンドアロンアプリでいいのでは? バージョンアップやキャッシング、アプリ保存先など ユーザーに意識させないのならwebstartが一番いいだろうね
でもなんだかんだで、MSVMは普及しているから、 そっちに束縛されちゃうんだよなー MSVM用とSun用のやつをつくりゃいいんかな。
152 :
マンドリルGG :04/03/12 04:07 ID:REoMxxxE
全画面にする方法があるんですって?どうやるんでしょう。 JAVAが全画面になったらそれでブラクラ作れちゃいそうなんですけど それもどうなんだろう・・・
>>152 JAVA=アプレットって勝手に思いこんでないか?
アプレットは一形態
Java≠アプレットはもちろんだけど、 Javaゲーム≒アプレットな気がする。 Javaアプリのゲームってあまり知らんのよね。実態を。
>>155 ビジネスになっているのは携帯のだけだからね。
その携帯も台数を考えると対応アプリはとんでもないという javaのゲームでもGR3あたりは有名でないか?
Javaゲーム≒携帯アプリ だね。アプレットはすでに忘れ去られた技術。 ブラウザでやりたかったらFLASHでもやっと毛。 というか、前この板のJavaスレのどこかでで全画面の ガンダムシューティングのJavaゲームが紹介されてたよ。
159 :
155 :04/03/12 23:28 ID:VtIucxmf
そうか、携帯アプリか。 そういやそうだね。 Vアプリを作ろうとして挫折した記憶が…
しかし携帯はjavaであってjavaでないからなぁ
どっちだよ!
162 :
名前は開発中のものです。 :04/03/13 11:34 ID:srIyiQ4d
サウンド関係のプログラムについて調べてるんですけど、Javaでmp3再生ってできるんですか? どなたか参考になるプログラム教えてください。
>>164 参考資料ありがとうございます。
調べてみます。
Javaは結構長いことやっているものの、ゲーム製作には未だ手を付けた事がなく このスレッドを読んで作ってみたいと思い立ったのですが 作る場合の設計の定石やノウハウが全くなく、これから色々調べようと思っているのですが スレッドや描写などのゲーム製作関係のサンプルや技術が載っている本やサイトでオススメはありませんでしょうか?
ゲーム自体をjava以外で作ったことあるなら何も悩むことはないはずだ ゲームのコアの処理は言語はあんまり関係ないから ゲームというものがどういうものかわからないのであれば 大量にあるC言語とかのサンプルを参考にすべし
個人的に、JavaよりC++やPerlの方が覚えるのが楽でした。 オブジェクト指向はやっぱり後回しの方がいいのかも。
ゲームだとリスト構造とか大量にでてくると思うけどここがjavaは使いやすい Cとかだとメモリ管理で死ぬときがある
ゲームプログラミングを始めようと思って、今年の3月発売の、 Javaゲームプログラミング アルゴリズムとフレームワーク という本を買ってみました。 ソースはあまり読み易い物では無かったのですが、ゲーム制作に必要な 要素(処理)を知る事が出来た(かも
そろそろ復活。 心配してくれた人、どうもでした。 怪我はもっと前に治ってたけど、いまいちやる気でなくて。 復活だけど、このスレ普通に伸びてるから、別のところに引っ越します。
>172 復活おめでとうございます。 久しぶりにきてみたら、14才さんがいてびっくり。 って引っ越しですか・・残念です
こんにちは♪ていうか、どなただろ。 はっ!まさかママン!……なわけないか。
>>174 さん
ただのロム人です(^_^;
14才さんのゲームは何処に行けば見れるんでしょうか(?_?)
ごめんね。まだ公開してないからどこいっても見られないの。 キャラクターがてくてく歩いてるだけだから、ゲームになってないしー。 もう少し進んだら公開したいなーと思ってるんだけど、このペースだといつになることやら。
もう、進行の終わったスレかもしれませんが… 名無しさんは14才 さんは、どのスレに移動したのでしょうか? 知ってる方、教えてください。
漏れがこのスレ再利用しようかな...
やる気があるのならレス番800以上もあまってるんだから再利用したほうがいいかもね。 1.4使っていれば2DゲームならJAVAを利用するメリットも大きいし JREを組み込めばユーザーにはネイティブアプリと違いは分からないし、 Swingとかのコンポーネントだと重さとかネイティブじゃないのがばれるかもしれないけど、 フルスクリーンアプリならその心配もないし。
>177 厨房スレですよん。でもあっちもまったり放置中。 ちまちまかいてるけど、もう半年近く見た目が変わってないので滅入り気味。 夏休みになったら、もうちょっと進む……予定。
ぶっちゃけるとRPGは時間ばかりかかるのでアクション系パズル系といった 小粒をたくさん作って技術磨いた方がいい まぁ、マップシステムは一度は手を出しておいた方がいいとは思うけどね
182 :
名前は開発中のものです。 :04/07/10 22:09 ID:v2MyCjQy
ダブルバッファリングというか、createImageについて聞きたいんだけど アプレットじゃなくてアプリケーションで コンストラクタに doubleBuffer = createImage(640, 480); gBuffer = doubleBuffer.getGraphics(); 〜裏バッファに描画〜 と書いて paint関数内で g.drawImage(doubleBuffer, 0, 0, this); とやっても何も表示されないんだけど、どうしてだろう? 全部をpaint関数内に doubleBuffer = createImage(640, 480); gBuffer = doubleBuffer.getGraphics(); 〜裏バッファに描画〜 g.drawImage(doubleBuffer, 0, 0, this); とやると上手くできる。 createImageをpaint関数内で使わないとどうやってもできない。 検索でよく出てくるアプレットのサンプルでは init関数内でcreateImageしてるんだけどなあ・・・。
アプリケーションならBufferedStrategy使え
せっかく垂直同期とれるんだし
あとcreateImageで作るイメージは高速描画されないよ
DirectXによるアクセラレーション期待するなら
BufferedStrategyやVolatileImage使うべし
そこまで行かなくてもそれなりにDDB等で高速化したいのなら
createCompatibleImageでやるべし
>>182 のレベルから考えるとそれ以前の話気もするが
裏バッファに描画は本当に出来てるの?ImageIOあたりで
ファイル書きだししてごらん
仕様を 用意 しよう
185 :
182 :04/07/11 02:40 ID:4Tmsd7Ye
>>183 コンストラクタでの処理を止めて、専用のメソッド作ってやってみたら出来ました。
ありがとうございます。
ところで、BufferStrategyが作るバッファというのは、どこでサイズを指定するのですか?
検索してみても、サイズを指定していると思われる部分がないのですが。
>>185 それってたぶん解決してないぞ
コンストラクタでやってもまったく問題ないし
マシンとかによってタイミング的にたまたまうまくいっただけかと
描画がうまくいかないってのはイメージを描画してるの?
よくある話としてイメージのロードを待っていないとかはどうかな?
バッファはウインドウサイズ
通常フルスクリーンだから640*480とか800*600とかになる
ウインドウモードならウインドウのサイズになるがinsetsがあるので
初心者には単純にはお勧めできない
ダブルバッファというのは表の描画面と同じサイズを用意するものだからね
そして切り替えはフルスクリーンだと自動的にフリップに、ウインドウモードだと
ブリットになってくれる
187 :
182 :04/07/11 19:17 ID:4Tmsd7Ye
>>186 あれから色々考えてみましたが、やはりコンストラクタが原因のようです。
コンストラクタ内だと、まだインスタンスが生成されていないために処理が上手くいかないようです。
Image、VolatileImage、BufferStrategyの全てでダブルバッファリングを行い
640*480ほどの画面を1ドット単位でスクロールさせてみたのですが、なんか
どれを使っても画面がたまにちらつく感じになるんですけど、こんなもんですかね?
640*480だと大きすぎるのだろうか。
常時ちらつくわけでもないんですが。たまにチラチラとなります。
コンストラクタというだけではなにをしたいのかがわからんぞい コンストラクタだからダメということはない 640*480でスクロールだけならCPU使用率2,3%くらいですむよ ちらつきは垂直同期取るのでまったくなし 使い方おかしいと思うけど?
Java3Dをインストールしてみたが、 これって、配布に問題あるんじゃない? サンマイクロに登録しないといけない。しかも英語で。 まだ実用化できるレベルではないと思うのだが…
今はおとなしくJava2Dで収まる程度で我慢しましょう もしくはSDLあたりとかJNIで組みましょう
192 :
189 :04/07/13 22:09 ID:Ppv9qnfp
>>191 おお、すごいですね。
ただ英語なので少しずつ翻訳しながら読んでみます。。。
Xith3DやAviatrix3Dって、3Dグラフィック機能だけに注目すれば joglをもとにしたOpenGLラッパーライブラリだと捉えられると思うのですが、 Java3Dと比較するとそれらを採用するメリットはどのあたりにあります?
数ヶ月前位にJAVA始めた(標準API位はそこそこ使えるくらいです)んですが 何年か後でもゲーム作れるようになりたいな等と考えているのですが まずはGUI(SWINGとか?)あたりから勉強すればよいのでしょうか?
>>194 標準なAPIがそこそこ使えるんだったら、GUIを勉強するのもいいんじゃないでしょうか。
>>194 ゲーム作るんだったら、Appletかフルスクリーンの一般的なゲームか携帯アプリの3タイプぐらいに
分かれるけど、流行の携帯アプリなんかはどうでしょう?
正直携帯アプリはオススメできないな キャリアで3種類に分かれるし そのキャリアごとでも複数のバージョンに分かれる なにより大概開発環境は1.3.1を用意しないといけないこと 速度もメモリも制限多すぎて初心者が手を出すのはどうだろう 一般的な普通のゲームつくればいいんじゃない? javaっていわれないとわからないようなやつが理想
198 :
194 :04/07/17 01:04 ID:Fmqvf01D
こんばんは
>>194 です。
レス遅くなってすいません。
携帯アプリも楽しそうなんですがいかんとも漏れの携帯JAVA動かないっす_| ̄|○
Jポンだし・・・
何からやっていいかわかんない位の素人なんで
これをやるには何を学ぶってのがいまいちぴんとしてませんが
とりあえず明日は休みなんで最近Java書籍コーナーにならんでる
ゲーム本開発系の本でもいろいろと立ち読みするとこから始めて見ますね
レス下さった皆様ありがdです。
そういやどこだったかでjavaの知識あまり無くてもすぐにゲーム作れるライブラリってのみたな
JAVA検定2級受けてきた。やばい、落ちるかも。
eclipse使ってしこしこゲーム作ってるんですが、 ひとつ重大な疑問が。 exeファイルを生成するにはどうしたらいいんでしょうか? 元VB派だったので、実行ファイル化する機能がeclipseにも 付いているものとばかり思ってました。
vbできるならそれでjavaw.exeをよぶの作るとかすればよろし どっちにしろjreが必要なのでインストーラセットにするか 同梱するかが必要だけど、この質問くるということはかなりのjava初心者とみた java初心者スレの過去ログにこの質問大量に見つかるはずだから見てみるといい
exeにしなくてもダブルクリックで起動できるよ。
>>202 >>203 ありがとう。でも考えてみると、Javaって
ゲーム製作に向いていないのかもしれない。(携帯、アプレットを除いて)
どうしよう。他の言語に乗り換えようかな。
「ゲーム製作に向いているかどうか」を基準にするならツクール系専用ツールを使えばいい。 要はその言語で「作り上げる気があるかどうか」だよ。 実際「向いている」とは思わないが、最近は作りやすくなってるよ。 ゲーム向きな資料は他の言語に比べて探しにくいかも知れないけど、がんがれ。
言語でゲームに向いてる向いてないってのはあるのか? HSPやVBのようなものでゲームがたくさん作られていることから Javaだから特別向いてないってことはない そもそもダブルクリックレベルの話をしていることから むしろJavaのほうが取っつきはいいと思うぞ とりあえずどの辺が向いてないか考える前にやってみることだ たぶん99%は間違ってる
でもJavaは配布が面倒そうだね。 JREごと配布して、ユーザには起動用の.batか.exeを叩いてもらうのが使いやすいかなあ。
俺はゲーム以外もexe起動で同梱のjreをよぶようにしてる 一般ユーザーからはネイティブとの違いには気がついてないようだ batでほとんど足りるんだけど、batを知らない人もいるからね
考え抜いた末、PHPでゲームを作ることにしますた。
210 :
204 :04/07/28 01:12 ID:pigNDSyn
204ですが、いろいろ他の言語もあさってみたけど、 やっぱりJavaでいきます。今eclipseの本かって来ました。がんがります。
javaといわなきゃわからないようなゲームもあるしなんとでもなるさ 言語は問題じゃない
肝心なこと書き忘れた がんがれ
JAVAでマップパーツをまとめた画像を読み込んで それをバラバラにして特定のパーツを呼び出すのは どうすればいいのでしょうか?
>>213 Graphics.drawImage(Image, int, int, int, int, int, int, int, int, ImageObserver)じゃダメなのか?
>>214 public void abc(int x int y){
Graphics.drawImage(Image, 0, 0, 30, 30, 0+30*x, 0+30*y, 30+30*x, 30+30*y, ImageObserver)
}
30*30のパーツだとするとこれでいいのですか?
abc(0,0);
これでImage[0][0]が呼べるのかな。
>>215 いや、そういうことじゃなくてチップ番号と座標を対応させて一枚の画像から必要な部分だけ
その都度スクリーンに描画するようにすれば、読み込んだ画像をバラバラにして管理する
必要はないんじゃないのか?
>>215 そのやり方がよく分かりません。
まだまだ勉強不足のようです。
Javaでネットワーク2DRPGを作成しています。 サーバプログラムは参考になるソースを見つけたのでそれを元に作成しています。 クライアントプログラムはいまいち参考になるソースが見つからず、 自己流で作成していましたが、停滞気味です。 クライアントプログラムの作成の参考になるソースや記事等有りましたら、 ご提示いただけると幸いです。
サーバープログラムの参考になるソースどこか教えてください。
>>219 どの部分で行き詰まっているのかかいてもらわんとなんともいえん
>>220 ネットワークの仕組みが分かってるかどうかだよな
まずはTCPベースでいろいろやってみるといいよ
小規模やリアルタイム性が問題にならないのならそのままでもいい
この2者ともまだ言語的にJavaかどうかのレベルではないなー
そこまでできているならあとはそのパケットの種類を増やすだけじゃないの? とにかく機能をプラグイン的に開発で追加できるようにしておいたほうがいい 特に大規模になるRPGならなおさらだが、STGや格闘なんかもこのプラグイン開発が非常に有効だ だらだら書いたコードは自分の書いたものであっても後からはかなり追いにくくなるしね
224 :
名前は開発中のものです。 :04/09/01 00:52 ID:jkCSki8i
クライアントの作り方が良く分からないという段階で、 このような大規模(に見える。ソースを見たわけではないので) サーバのアプリを参考にしてもどうにもならんと思う。 まずは、サーバとクライアントにどのように分けられているかを考えて見ることをお勧めする。 ゲーム作る前に、チャットサーバとチャットクライアントをTCPで作ってみなされ。 それが出来れば、そこに書いているようなプログラムは ある程度想像できるとおもうが。 要するにチャットでクライアントから送信する文字列の代わりに クライアントでのキャラクタの操作を送ればいい。 サーバはクライアントから受け取った全ての情報を 全てのクライアントに送り返すだけ。 (ここでは敵キャラとかも居ない前提だから) まぁ30人ぐらいなら問題なく動くと思うよ。 ちゃんとクリッピングする必要はあるけど。
>>223 ご指摘の通り、だらだらとその場限りのコードを書いているので、
コードが難読化してきました。
プラグインですか。そういう方向性も考えて、
できるだけモジュール化して少しでも読みやすい形に変えていくしかないでしょうか...
>>224 以前、多人数チャットプログラムは作成したことがあります。
チャットとネットワークゲームのギャップは大きいです。
今は全員にブロードキャストしていますが、そのうちAOI (Area of Interest)も考えていきたいと思います。
226 :
名前は開発中のものです。 :04/09/01 17:01 ID:ISPB1QLl
単発質問スレだろ。 とっとと削除依頼出して来いよ。
お前が出してこればいいだろカス
いや、有用です。 jreって同梱して配布してもいいんですか?
ライセンスにちゃんとかいてあるだろ アプリと一緒なら大丈夫と 細かいところはちゃんと自分で読めよ 日本語でかいてあるんだから
230 :
名前は開発中のものです。 :04/09/05 18:37 ID:JFvG5Cpo
そもそもjreってどうやって添付するの?
jreってのはwinでsunのインストーラしか使ったこと無いやつはわからんだろうが 一定のディレクトリ構成で解凍できていればそれだけで動く jreのパス/bin/javaw.exeを実行すればそのjreのファイルを使って動いてくれるよ
起動するだけならManifest入りのjarじゃ駄目? jre+exeにするメリットがよくわからない。誰か教えてプリーズ。
>>233 クリックだけで起動できるようにしておけば十分だというのはプログラマ側の意見。
Winユーザは「起動はhogehoge.exeをダブルクリック」とかいうイメージを持っているから、
Win向けならexeも用意しておくのが親切だろうと思う。
>>234 あるいは、JWS使ってデスクトップにアイコンを置くか、かな。
236 :
名前は開発中のものです。 :04/09/06 11:28 ID:i7I+EB4B
winユーザなんて低脳は相手にしてないからいいよ
FPSを実装する場合、Threadのrun()の中でThread.sleep()使うだけでもいいんでしょうか? たとえば、sleep(10)とすれば20msごとにrun()(1フレームの処理)が実行されるので50FPSになりますか? それともrun()の中を無限ループにしてThread.sleep()を使わずif文で if (System.currentTimeMillis() - temp > 20) { temp = System.currentTimeMillis(); 1フレームの処理 } とした方がいいでしょうか? どんな性能のマシンでも大体50FPSを保つようにしたいと思っているんですが。一般的な 方法はどうやるのでしょう。ヒントお願いします。
>>233 ユーザーにJREが入ってるのを期待するという時点で使いにくい
ネイティブアプリと同じ感覚で使うならコレ
しかも、ユーザーのJREを無理矢理上書きしないことと
稼働確認したバージョンが入っていることで安心感がある
セットアッププログラム使えば簡単にデスクトップにショートカット作ったりできるしな
>>237 タイマ管理ならメインルーチンはなんらかのObject.wait()で待機
そしてTimerTaskのFixedのほうでnotify()
これで一定間隔で綺麗な時間管理が可能
いろんなのをためしたがコレが一番fpsの安定度が高かった
whileなどのループで監視し続けるのは実は安定度がイマイチ
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●きなこ●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● これを見た人は確実に【きなこ】です。これをコピペでどこかに1回貼れば回避できます。 これは本当です。やらないときなこ無駄になります
きれいで見やすいソースだと思います。 Runnableをインプリメントって昔の手法のようなきがしますが、 ゲームでは普通なんですかね。 ゲーム作ってないJava使いの戯言なので、気にしないでください。 あと、マップデータの保存方法が面白かったです。 これなら、エンコーダ、デコーダが必要ないですね。 こんな発想は私にはありません。 さらにがんばってください。
>>243 ありがとございます。
マップデータは最初アスキーコードでファイルに書き込んでたんですが、最近オブジェクトのシリアライズ機能を知ったので使ってみました。
アニメーション入れるときはRunnableをimplementsするか別にThread拡張したスレッドクラス作るかだと思うんですが新しくスレッドクラス作るの面倒くさかったのでimplementsしちゃいました。本当はアニメーション用のクラス作ったほうがきれいだとは思います。
>>241 TimerTask使え
動作が一定にならんぞ
>>245 スレッドの代わりにってことですよね。
動作が一定にならないってのはどういう意味でしょうか?
性能が違うマシンで実行すると移動速度が変わるってことですか?
上の方に書いてありました。
>>241 すごい。ドラクエっぽいですね!
ブラウザにつなぐだけ、携帯にものってるjavaって
良い言語だねー 自分も色々作れるように調べてみようかな
>> 239 TimerTask でためしに組んで見たけど、アプレットだと描画が行われない。 アプレットじゃなく普通にフレーム作ってやると動くのだが。 メインスレッドは止めちゃいけないのかな。他にスレッド用意する必要があるとか。 class App extends JApplet { public void start() { timer = new Timer(); timer.scheduleAtFixedRate(new WakeTask(this), 0L, 20L); run(); } public synchronized void run() { while (true) { try { this.wait(); } catch (InterruptedException e) {} Graphics g = getGraphics(); g.drawString("hogehoge", 100, 100); g.dispose(); } } public synchronized void wake() { notify(); } } class WakeTask extends TimerTask { App app; WakeTask(App app) { this.app = app; } public synchronized void run() { app.wake(); }; }
250 :
249 :04/09/19 01:44:48 ID:SSes8fIu
自己解決。スレッド作ってそちらで回したらうまくいった。 こーゆーやり方が正しい作法なのかは知らんが。 class App extends Japplet implements Runnable { public void start() { timer = new Timer(); timer.scheduleAtFixedRate(new WakeTask(tins), 0L, 20L); new Thread(this).start(); } public synchronized void run() { ・ ・
start()をオーバライドしちゃだめだろ
横から失礼。 public class App extends Applet{ : class task extends TimerTask{ public void run(){ メインの処理; repaint(); : ではどうなんでしょうか?
よく分かってないのならrunのなかで各種初期化処理やれ ゲーム自体独立したスレッドでいい
TimerTaskを使った絵画ループの書き方としては TimerTask task = new TimerTask() { public void run() { canvas.repaint(); } }; timer.schedule(task, 0, 1000/fps); これでいいのかな。 誰が参考になるコードキボンヌ(2D対戦格闘もイケるとか、640x480で30fpsはいけるとか、これ本当?)
GraphicsConfiguration#createCompatibleImage(width, height, Transparency.BITMASK); を使用すると恐らくハードウェアアクセラレーションがかかる状態で描画が出来る予感。 OSとJavaVMによりけりだけど。 実はSWTのGCを使うほうが安定して上記とあまり変わらないスピードで描画が出来る罠があったりする。
>>239 おまいさんが実験したJavaのソース キボンヌ。
>>254 640*480-60fpsいけるよ
ただしアルファブレンド拡大縮小回転を使わないという前提
1.4.2ではこれらはアクセラレーション効かないからね
アクセラレーションはいろんな場合に様々な要素で効いている
Windowsならメモリの確保の仕方でDDB、DIB、DirectXを使って実装している。
G400とかMatrox系はDIBやDDBはすんごい早い。
DirectXはRIVA128以降〜最新チップまで比較的安定。
>>255 それであってる
描画先がVolatileImageやフルスクリーン時のバックバッファならDirectXが積極的に使われるっぽい
描画先もコンパチブルイメージだとDDB
通常のBufferdImageはDIBになる
>>256 あの説明で分からないのならやめとけ
>>257 実装は出来てるよ。
だけど人のソース見るのって楽しいじゃん。
ちゃんと動いているのならそれでいいだろ
260 :
241 :04/09/21 22:03:43 ID:og0kzD+1
がんばれ 個人的にはMSVMの新規配布がもはや不可能な現状では Java2対応にしてスタンドアロンアプリケーションのほうが いろんなことできて面白いと思うんだが がんばれ
>>261 ありがd。
アプリケーションにすると余計な処理が増えて、少しわかりにくくなると思ったんでアプレットから書きました。
一応、Java知っている人向けに書いてるのでJDK入れてあることを前提にしてます。
今後はアプリケーション版も追加していこうと思います。
というかアプリケーションの方が大概なめらかで高速 しかもアプレットより簡単だぞ
>>263 >しかもアプレットより簡単だぞ
そうなんですか?
私のアプリケーションの作り方だと
public class FrameClass extends JFrame {
public FrameClass() {
MainPanel panel = new MainPanel();
getContentPane().add(panel);
}
}
class MainPanel() extends JPanel {
public void paintComponents(Graphics g) {
// アプレットのpaint()と同じ
}
// キーボード・マウス処理・スレッド等の実装
}
っていうようにフレームとパネルの2部構成にしてるんですが結構面倒なような。
あとアプレットの方がダウンロードしなくても手軽に見てもらえると思ってます。
完成品はアプリケーションの方がいいのは同意しますが。
いやそれだとSwingつかって描画してるだろ そんな面倒な手続きはいらん
Swing使いたいんで。というかSwingから入ったのでFrame使ったプログラム知らないです・・・ よく考えた結果アプレットやめてアプリケーションにしました。
別にSwingつかってもかまわんよ RPGみたいなのはうまく使えば便利に管理できるだろう たとえばウインドウはレイヤー使えば綺麗に重ね合わせされるわけだし でも重ね合わせの処理とか絶対的な速度はSwingまかせなであぶないので STGとかアクション系ならフレームの生成くらいしかSwingつかわないんじゃないかな アプリケーションならおとなしくBufferStrategyつかっとけ
アドバイスありがとうございます。 勉強させてもらいます。
ゲームってゲームの雰囲気に合ったUIがあってこそだと思うんだよ Swingなんてクソ重いライブラリ呼び出すなんてNO ゲームに必要な分だけのシンプルなUI widgetを作るのが漏れは好きだ。
>>270 JComponent継承して作れよ
どのみちゲームでやるなら特にアクション系は垂直同期とるだろうし、
バッファリングをSwingにまかせるのはRPGやAVGならありだと思う
>>271 漏れはゲームのデザインはユーザインターフェースのデザインでもあると考える。
A列車で行こう4っていうゲーム、ユーザインターフェースがWindows標準の(しかしVBで作ったようなダサい)
ウィンドウシステム使ってた。あれでどれだけゲームの削がれたか。
>>272 いや、Swing誤解している
あれまじめにいじればわかるけど、ゲームのインターフェース並のことができるぞ
Swing作ったやつはいかれてると思った
>>273 だろうけど、よくよく考えると自分で必要最小限のもの作ったほうがスマート
せっかくJavaのパフォーマンス上がっているのに、Swingなんざ、いろいろ制約あるし重いし。
重いってコンポーネントが?描画が?
>>275 コンポーネントじゃないかな。起動が重いのは確かだと思うけど。
ただ個人で作るミニゲーム程度なら全然問題ないと思うけど。Swingの重さが目につくレベルのゲームってどのくらいの規模かな?3DMMOとかその次元の話?
というかSwingのコンポーネント(ボタンとかテキストボックス)とか普通のゲームでは使わないじゃん。
ボタン、リストボックス、パネル、テキストボックスあたりはMMORPGとかでふつーに使うね
278 :
名前は開発中のものです。 :04/09/25 14:32:41 ID:VXdMSo9v
作りたいゲーム次第だろ。 しっかり作り込んでまともなゲーム作りたいならSwingは使わないだろうし、 ちょっとしたミニゲーム程度ならわざわざUI自作するのはだるい。 適材適所って奴だな。
279 :
名前は開発中のものです。 :04/09/25 16:28:11 ID:piik0Rlz
わ、早稲田を馬鹿にするなーーーーーー。 で?これ本物の写真なの?
281 :
名前は開発中のものです。 :04/09/27 00:04:06 ID:aLBna6ae
質問です。 Javaアプリでゲーム作ってますが、どうしても逆コンパイルかけられて ソースを覗かれるのがいやなのです。 何か良い方法はありませんか?
Javaで書かない。
>>281 JETとかTowerJとかGCJとか。
ってマルチだったのか。 ……ってのまで見てしまった。
>>281 難読化ツール使え。
それでも、がんばれば覗けるから、
結論は
>>282 商用のものはループ改変までしてくれてすごいよ。
別のソースのように逆コンパイルされる。
まぁ、完璧って言葉はこの業界にはないからね。
オレも「マルチだったのか」って書いた一人なわけだが。 あちこちで、「マルチだったのか」って書き込みがあって、 なんか笑える。
俺もマルチだったのかと書いてしまった Javaとつくスレすべてにかいてある壮絶なマルチなんだもん
('A`)?
宝さがし
いきなりダウンロード直ではウイルスと思われても仕方ないな こういうのはスルーで
292 :
名前は開発中のものです。 :04/09/27 20:45:36 ID:on1oRaja
ゲームを作るのなら C→javaかjava→Cのどっちの順番の方がいいですか?
御前が何で作りたいかで変わるだろうが・・・。
言語は手段であって目的ではない どっちの言語もなれればそれなりに応用は利くものだ 言語自体が未体験ならHSPあたりでプログラムというものについて 勉強したほうがいいかもしれない
295 :
292 :04/09/27 22:37:39 ID:on1oRaja
ありがとうございます! HSPの勉強から始めたいと思います
296 :
名前は開発中のものです。 :04/09/28 12:56:38 ID:DMH4xDMY
HSPでRPG作りたいんですが、正直難しいと思います。 でもやりたいんです!!僕はHSPで文字表示ぐらいならできます 今のところ、オープニングまで作ったのですが、どなたか僕に HSPの基礎からすべてを叩き込んでくれませんか?? お願いします。
そのテンプレJavaのスレで張られても・・・
面白いテンプレでもないのに、なぜ張るんだろう。
299 :
名前は開発中のものです。 :04/09/29 06:30:32 ID:2psQOMW0
HSPはプログラミングの悪習慣が身についてしまう最低最悪の言語だ OOが強力な言語でやると自然にいい書き方が身に付く
昔はみんなBASICやアセンブラだったんだから まずはプログラムの基礎知識を付けるというのが大事かと 本当にプログラムが出来ない、論理的に考えれない人ってのはいる 何か一つでも言語覚えたらあとは応用の範囲だと思うけどなぁ さっきからJavaと関係なくageてる時点でお察しくださいか
>>300 BASICやアセンブラでコード書いてきた人のコードは、汚いことが多い。
なんで奴らは、あんなに変数名に、2、3文字のものを使うのか。
グローバル変数大好きだしさあ。
>>299 Ruby/SDKとか、ご希望に沿うだろうか?
自分はrubyの書式が肌に合わない & スクリプト言語なのにタイプセーフなので、
いまひとつ好きになれんのだが。
>301 自分はBASIC,アセンブラでプログラミングを覚えた世代だけど、同意。 BASICの悪い癖を捨てて、まともなコードが書けるようになるまで苦労した。 これからプログラミングを始める人なら、Javaも良いと思う。Javaで学んだ ことは C++ でも応用できるし、今時のPCなら遅いと言われるJavaでも 2DのアクションRPGぐらいなら、充分遊べるものが作れる。
>>302 問題はWinXpにデフォではJavaVM入ってないことだな。
>>303 どうせ開発にはJ2SDK入れるんだからあまり関係ないと思うが。
JREをzipで固めたものを渡せば大丈夫ですよ。 インストールしなくても、C:\hoge\java.exe -jar hoge.jar で動きます。
開発がどうこう言ってるんじゃなく、成果物を無条件で見れない初心者が けっこう存在するってことが問題なのだが。
>>302 3Dも出来ますよ。
海外だとJava用3Dエンジンとかあるけど、
動かしてみるとネイティブ版と見た目変わらない。
>>306 一つ上のレスぐらい見ようよ。
JREと起動ランチャー付きの物を自動解凍EXEで配布なら大丈夫ですか?
クリックして自動解凍、中にある起動ランチャーをクリックで動くと思いますが。
>>301 ん〜どうだろ
昔からやってる人はピンキリだけど
基本的に職業プログラマならコードは年々綺麗になっていくと思うよ
俺もさすがにJava8年くらいおいかけてるんで
昔の自分のCのソースとかみれたもんじゃない
jre同梱についてくわしく説明しているサイトを 教えてください。ググッたけどうまいの見つからないのです。
普通にディレクトリ構造あのままで一緒に展開するだけ 特にWindows版以外のjreみればわかるけど、本当にそれだけなんだよ また、jre配布のドキュメントにもかいてある 何を削っていいかとか何を足していいかとか まずはそれをよんでからだな
J2SE5きたね Windows以外の環境でもJava2Dが高速化されてるのがウリなはずだから気になるな
Java2DのOpenGL実装が動かない・・・うちの環境だけか
何このスレ? 凄く参考になる。
>>313 うちも動かない。
Swingの動きは速くなったんだけど。
とりあえずWindowsに関してはゲームに影響する部分は 1.4.2から5.0で大きく変わる部分はないな もちろんGCの大幅高速化は影響がでかいが LinuxなどはOpenGLでやっとアクセラレーションできるようになったけどね
Swingが速くなったけど、それはゲームには影響しないかな。 まだ全然試してないんで、よくわからんけど。
Swing使ってゲームなら大幅に早くなるだろうね 自分でウィジット作れればRPGとかAVGとからくちんになる とりあえずレイヤー勉強してみそ
保守
SWT
>>322 SWTはグラフィック弱いからねぇ。
といいつつ、SWTでちょこちょこ作っているけど。
BufferedStrategyとJava2Dでいいだろ
Visual Editorは使いやすいですか?
JavaのGUI構築に関しては NetBeans>JBuilder>OracleJDev>VE でほぼ間違いない パネルのクラスを作成してそれをフレームにはりつけて簡単に作れるのが強み>NetBeans
327 :
名前は開発中のものです。 :04/11/07 10:45:20 ID:2nTxjdtC
>>285 商用のものの値段教えてほしいです。
あと、なんにも偽装してない状態で、
逆コンパイルすると、変数名とかも分かってしまいますか?
あと、偽装化する方法にどんなものがあるかも知りたいなぁ。
JAVAでプログラミングするときに、コアとなる部分は、隠したいので、
C言語だと、色々思いつくんだけど、JAVAはあまり経験がないので・・・
i
nt a[] = { 1,2,3,4,5,6,7,8,9,10 }:
int b[] = { a,b,c,d,e,f,g,h,i,j,k,};
main(){ int hoge = b [ -1 ]; }
関数のポインタ a[] = { hoge1,hoge2,hoge3 };
main () { 関数のポインタ p = f[ x mod y * 3 + z ];
てな感じで、意味不明な演算で関数を呼び出すとか
(もちろん、 x ,y,z意味不明なロジックで導出させる)
goto文多用するとか、グローバル変数多用するとか
演算子のオーバーロード使いまくりだとか、
再起呼び出し多用するとか、
JAVAだと、どういうのが、考えられるのかな?
HSPでRPG作りたいんですが、正直難しいと思います。 でもやりたいんです!!僕はHSPでブロック崩し(アルカノイド) ぐらいなら作ったことあります。 今のところ、オープニングまで作ったのですが、どなたか僕に HSPの基礎からすべてを叩き込んでくれませんか?? お願いします。 これと同じレベルだな。
ぶっちゃけるとCもコンパイラの癖わかれば 逆アセンブルして楽にのぞけるようになるよ
>>328 うーん、じゃ、どうやって、勉強したらいいか教えてちょ。
URL貼り付けてくれたら、勉強するなり。
うーん、今、思いついたのは、JAVAのバイトコードを
クライアントとサーバー間でリアルタイムで暗号/複合しながら、
キーもどんどこ変えていって、debug等で、やりとりがとまったら、
即座に実行中止するとか、そんな感じかにゃ。
いじわるしないで、教えて、ちょ。
>>329 最適化の話?最近のCコンパイラは、偽装までするなりか?
最適化されたくらいなら、自分もx86は、読めるから、
なんとかなると思うけど・・・
通信の暗号化だけでいいんじゃね?
>>327 リフレクションを使いまくるとかかなあ。
あとは、Javassistで実行時にバイトコードを書き換えるか。
AspectJを使って、不思議なバイトコードにしてしまうとか。
333 :
名前は開発中のものです。 :04/11/08 08:59:43 ID:GgfK61Gh
JAVA3Dを使っているのですがHTMLとの連携って取れますか? 例えばカラーキューブをクリックするとホームページにリンクするとか。
>>333 アプレットで作成しているなら
AppletContext context=getAppletContext();
context.showDocument(new java.net.URL(getCodeBase()+"ホームページ.html"), "対象フレーム名");
でページを切り替えられるよ。
ところで質問スレに同じレスしたのは本人か?
>>330 だから、キミのスキルがどうこう以前に、「原理的に無理」。
クライアントで複合化できるなら、その複合化ルーチンをデコードしたら終わりでしょ。
その複合化ルーチンを暗号化しても、それを複合化するルーチンを(以下無限ループ)
336 :
名前は開発中のものです。 :04/11/09 03:08:11 ID:ytFO0TQ5
>>335 その複合化ルーチンのみ邪道かもしれんが、JNIを使って、ネイティブコード化
したモジュールから呼び出せるクラスで実装してみては?
誰か暇な人試してみて。
馬鹿馬鹿しい。 まず、何でそこまでしてソースを見られたくないのかを話すべきだろうが。
>>336 そのネイティブコード化したモジュールを逆アセンブル/デコンパイルしたら(以下略)
339 :
330 :04/11/09 06:32:39 ID:j0Al8RV2
というか、コアのルーチンは、サーバーサイドにおけば、 いいだけの話だったのかな? サーバーサイドのロジックまで、デバッカで追えませんよね。 サーバー/クライアント間での通信内容については、 みられても問題ない場合
>>337 具体的には、書けませんが、たとえば、
divX : メディアプレイヤー
GIFファイルの作成とか(今は、この特許なくなったみたいだけど)
特許侵害の可能性のあるソースを隠すためwww
もちろん、特許侵害のロジックについては、回避する努力をしていきますが・・・
全部回避するまでの時間かせぎに使いたいのです。
>>340 ゲームを作っているんだっけ?
正直、本体を完成させることに全力を傾けた方がいいと思うよ。
ソースを隠せば特許に引っかからないと思ってるのかひょっとして
343 :
名前は開発中のものです。 :04/11/09 22:03:57 ID:ytFO0TQ5
>>338 それはさすがに諦める。けど、jadやmochaなどのツールで誰でも手軽に
ソースを覗かれる行為だけは避けたいのさ。
>>339 ゲームプログラムを作成すると、
どうしてもクライアント側にゲームのコアとなる部分が偏ってしまう。
ゲームアルゴリズムは盗まれたくないのさ。
釣れたら「フィッシュ!」と元気良く発声。
Appletでゲーム作ったことある人に聞きたいんだけど、FlashとAppletとではどっちが軽い? 対して変わらないならFlashでざっくり作ろうと思うのだが(作る予定なのはドラクエ系のRPG)
>>345 アプレットのほうがはるかに軽いよ
どうせ無料で統合環境含めてすぐ試せるんだからやってみればわかる
ドラクエ程度ならCPU使用率は常に5%以下だろう
長時間すると思われるRPGならアプリケーションにしたほうがいいんじゃないのかね
>>346 thx Applet行きます
>>347 ブラウザならではの何かを考えるさ(後付けかよ)
349 :
345 :04/11/10 18:30:15 ID:fyGIsVUe
WWAとRPGツクールを足して2で割って0.7掛けした感じのにしてみよう Graphics2Dってクラス見つけたので作業効率はFlashの3倍程度に抑えられそうだな
350 :
330 :04/11/10 23:56:00 ID:u7v99fS7
>>342 特許はもちろんアウチですが、ソフトウェアは、著作権で保護されていて、ことなる実装であれば、
著作権の侵害には、あたらないという認識です。
>>343 微妙に違いますにゃ。たとえば、スロットマシンのゲーム性をぱくって、コンピーターで似たようなゲームを作ります。
スロットマシン関係の特許は、スロットマシンに関するものが大部分で、
コンピューターのソフトウェアに対しての特許侵害には、あたらないとは、おもうんですよ。
しかし、ダークだから隠しておきたいと。
まぁ、弁理士さんに、相談かな。1時間5000円也
それで、あっさり、問題ないと言われたら、いいんですが、
もし、もっと、詳細な調査が必要とかになると、結構なお金がぶっとんじゃうんじゃないかと思うんですよね。
趣味で作るゲームにそこまで、お金は、かけられないなぁと。
あと、民事訴訟起こす程の損害は、与えないだろうから、ほったらかしになるだろうという楽観的な読みもあって、
隠しておけばいいかなと思うわけですにゃ。
(;´Д`)
なんだ頭のネジ飛んでるのか
なんかコンテストみたいのやってない? なかなかいい出来に仕上がったからさ。
open.orgは、マイクロソフトに特許料払ってるのかな? もし、そうだったら、頭のねじとんでるのみとめるよ。 ファイナルファンタジーは、ドラクエに特許料しはらってるの? ヤフーのアバターシステムは、ハンゲームに特許料しはらってるの? 秀丸は、emacsに特許料支払ってるの? linuxは、以下略
(;´Д`)?
>>354 そろそろ名前付けるか、いなくなるかしてくれ。
>>354 いなくならなくてもいいから、コテハンつけて欲しい。
ほい。そちらの電波受信状況はいかがでつか? ちなみに、ハンゲーム作ってる会社、日本で特許検索かけたが、ヒットしなかった。 アメリカでアバター(avator)で検索したら、300件ヒット、読み気になれんてwww あと、ハンゲームにアバを売る行為に類似特許(結構、ずばりコナミのもの)があり、 メールで聞いてみたwww --- ハンゲームジャパン・ユーザーサポートでございます。 お問合せありがとうございます。 恐れ入りますがお問合せに関する内容には一切 お答えすることが出来ません。 ご理解いただけますようお願い申し上げます。 > xxxです。 > たびたび、申し訳ありません。 > > ソフトウェアは、著作権で保護されており、ことなる実装であれば、真似しても かまわないという認識であるのですが・・・ > 例:DivX と メディアプレーヤー等 > 御社か他社が(おそらくはビジネスモデル)特許をもっていれば、明らかに真似 することは、 > 特許侵害なので、駄目だとはっきり分かるのですが・・ --- まぁ、もともと、答えがちゃんと返ってくるのは、期待していなかったのだけど・・・
>秀丸は、emacsに特許料支払ってるの? >linuxは、以下略 これ、unixは、オープンソースだから問題ないよね。 ただ、商業化していいんかよという疑問は残るが・・・
Javeのゲームが出来ないんですけど、何故だか教えてください IE6やSleipnirでも動きません 10作ほどゲームをやろうとしましたが、全部駄目でした ちなみにWindowsXPで回線速度はADSL8M、インターネットオプションでのJavaアプレットも有効にしているのですが…
JREはコンパネに登録されてる? インストーラ付きのものでインストールしないとブラウザに関連付けられないと思うよ(たぶん) 1.5か1.4か知らないが、一度削除してDLからインストールまでやり直したら
まず本当にJavaがはいっているのか コマンドラインで >java -version とうってみなされ
363 :
360 :04/11/18 18:52:23 ID:sU1bTFr7
>>361 ,
>>362 入ってませんでした!
デフォで入ってるものかと思ってたんです…
ありがとうございました!
appletを使ってちょっとしたネトゲーみたいの作ってたら、どうも他のPCとの通信が出来ないらすぃ・・。 サンドボックスだと。ローカルホストで動かしてたから気づくのが遅れてしまった_| ̄|○
サンドボックスはダウンロードした鯖しか信用しないからな ネトゲつくりたいなら鯖経由が必須
鯖にapplet用のポート空ければいいんじゃなくて?
>>366 レスはやー。
そうなんだ。対戦相手を見つけるまではサーバを使用して対戦相手が揃ったら
その中でホストに適したPC(回線とか性能とか)に仮ホストをしてもらって、
サーバからは独立したネットワークの中でゲームを…ってのを考えてたんだけど無理クサイね。
嗚呼じゃんねんだ
>>367 いや、サーバとは別のPCとPC間で通信できんもんかなーと。
署名がなんたらと聞いたことが
もちろん署名入れればフルアクセスは可能 ベリサインとか契約せんと警告出るしそれやるとお金かかるけどなー アプリケーションじゃだめなのか?
Webページ開くだけで、どこの誰かも分からない人とゲームが出来る。って手軽さがいいなぁと思って。 保守
>>372 appletは、ブラウザの窓を閉じたら閉じちゃうよー。
まあ、appletをスタンドアロンアプリにするのもその逆も簡単だから、いまはあまり気にせず頑張ればよかですよ。
375 :
名前は開発中のものです。 :04/12/15 09:49:14 ID:kz2DYtHn
保守ついでに質問です Javaでサウンドを再生させる方法なんですが private AudioClip oto = Applet.newAudioClip(getClass().getResource("wavfile"); oto.play(); だと連続して再生しようとすると鳴らない場合があります。 ゲームでサウンド使う場合同時に連続して再生できるAPIは何を使うんでしょうか?
javax.soundはどうなんですかね・・・
普通はJavaSoundつかうね・・・
>>377 やはり・・・
AudioClipしか知らなかった。java.sound勉強してみます。
379 :
名前は開発中のものです。 :04/12/15 23:40:33 ID:hUtOBgwl
携帯のアプリ作成って、javaの「なにか」使うんですよね? 何をダウンロードすることから始まるんですか? 叩かれてケッコーですから、まじで教えて下さい。 高校生です
381 :
名前は開発中のものです。 :04/12/16 00:13:37 ID:RcG4F+66
どうもすいませんでしたm(_ _)m でも… 「携帯のアプリ作成って、javaの「なにか」使うんですよね? 何をダウンロードすることから始まるんですか?」 この答えだけ教えて下さい。お願いします
JavaのPC版というかスタンダードなのがJ2SE 携帯やODAなどの小さな組み込み系はライブラリや仕様を絞って小さくしたのがJ2ME 開発はJ2SEの上でJ2MEのツール類(エミュやキャリアの独自ライブラリなど)という構成で 作り方は各キャリアのところにかいてあるはず そして携帯用のお話は場所が違うってことさ
PDAの間違いゴメーヌ
385 :
名前は開発中のものです。 :04/12/16 00:47:43 ID:F/4lyg8x
ありがとうございます(^^) では携帯板に行ってきますので(.。)
ム板もチェック汁
日本のJava関係のページはほとんどあさったけど海外はまだまだすごいのいっぱいあるね。 知ってたらどんどん紹介キボンヌ
390 :
名前は開発中のものです。 :04/12/18 18:16:12 ID:0Pkivd1+
期待あげ。 昔JAVAのサンのhpからゲームが大量にアップしてある 頁に行けたような気がするんだけど、今は出来ないのですね。 英語だからどこへ行ったかわからないし。 それともうろ覚えの記憶では、会員制になっちゃったのかな?
Javaは永遠に不滅 あげ
Javaが簡単だからかしらんけど、 Javaをもっぱら使う香具師ってバカが多い気がする。
Javaをつかいこなせないあほなら多いが
>>393 大量にSEを仕立ててるからじゃないかな
あげ
396 :
名前は開発中のものです。 :04/12/25 23:43:31 ID:2h/t8t08
GCJ遅いしすべてとおるわけじゃねーしな 1.1とかの時代ならいいかもしれんが・・・
がんばれJava負けるなJava
>>396 URLの末尾に閉じカッコ")"つけるの良くない
why
( ・∀・)つ〃∩ ヘェーヘェー じゃあこのブラウザは規格無視ってことか
Javaで作ったゲームの配布の仕方なんですが相手のPCにJDKもJREも入ってない状態で実行させることはできますか?
ちなみにJETっていうのは知ってます。フリーであったら教えていただきたいのですが。
すいません。JET調べたら無料のパーソナルエディションありましたorz
>>399 ってXML大好きそう。
糞規格逝って良し
>>403 WebStartとアプレットなら、JREを自動でダウンロードするように
出来たはず。
あと、JREをゲームに同梱することも可能。
>>407 WebStartは別途インストールですよね・・・JRE入れてる人よりすくなさそうなんですが。
>>JREをゲームに同梱
これよく聞くんですが、C:\Program Files\Java\jre1.5.0にJREが入っているとするとこのディレクトリ丸ごとゲームのディレクトリに保存するってことですか?
ゲーム起動するときはこのディレクトリにパスはってjavawであってますか?
jarならオプションをつけて javaw -jar hogehoge.jar (または java -jar hogehoge.jar) でいいみたい
JREのディレクトリ構成そのままでJava.exeとか起動するとそこからの相対アドレスでバイナリが使われる 一部のソフトは環境設定使うけど、それは起動時のスクリプト等での設定の問題だから まったく問題なし JREが入ってないマシンでJREを自動でダウンロードってのは無理だし、 複数バージョンでのプラグインの動作保障はSUNはしないしね
新年明けましておめでとうございます。 みなさんはどうやって自分の作ったゲーム(など)の fpsや1ループの処理時間を調べているのでしょうか? System.currentTimeMillis()を使っているのでしょうか? これだとどうもアバウトな気がして。。。 何か良い方法があればご教授いただければ幸いです。
>>411 Java API 仕様より
>public static long currentTimeMillis()
>現在の時間をミリ秒で返します。
>戻り値の時間単位はミリ秒ですが、
>値の粒度は基本となるオペレーティングシステムによって異なり、
>単位がより大きくなる場合があります。
>たとえば、多くのオペレーティングシステムでは、
>時間を 10 ミリ秒の単位で計測します。
> これだとどうもアバウトな気がして。。。
その気持ちはわからなくもないし、実際に精度はあんまりよくない。
が、まさか1ループ毎に時間を計ったりしてる?
fpsのような重要でない値なら1〜2秒間隔で平均取れば十分だと思うよ。
JDK5.0のSystem.nanoTime();に逃げてみるとか
1ループの処理時間は、ループ処理をTimerTask.run()に記述すれば TimerTask.scheduledExecutionTime() で取れるかな fpsの値はSystem.currentTimeMillis を使って 一秒ごとのアバウトな値を出すようにしてる
>>411 私の読んだ本だとJava3DのJ3DTimer使ってたよ。ナノ秒精度だそうです。
そこまでFPSにこだわらなくてもいいと思うけど。
最近のJavaはC/C++に匹敵するほどの実行速度らしいけど、 やっぱ描画が遅くてアクションゲームにはツラい。 標準でOpenGL使えればいいのになあ。
417 :
411 :05/01/02 20:05:56 ID:xWBHNcVz
>>412 〜414
どうもありがとうございます。参考にさせていただきます。
>>416 2Dならばアクセラレーション聞く描画もそれなりにあるし
問題ないけど2Dだとたしかにきついね
Java3Dが標準APIになってくればちがうのかな
環境によってアンチエイリアスが勝手にかかったりして drawLineとかで絵を描いてると致命的に困ることがある。
PureJavaを捨てて、WindowsやLinux限定にすれば、便利なネイティブ3D ライブラリが使えるのになぁ。
それじゃあJavaの利点が・・・
ゲームの場合なら、そのライブラリがWindows,Mac,Linuxに対応していれば それで十分でしょ。
>>421 Javaでゲームを作る利点と欠点ってなんだろ
利点
・ネットワークゲームとかだとアプレットやWeb Startでクライアントのバージョンを統一できる
・Web StartならJava3D等のライブラリとかを自動で拾ってくれる
・Web Startならインストール、アンインストールがプラットフォームに依存せず使える。
・Write once run anywhere(でも携帯のアプリだと変換が必要、また制約が多い)
・フリーで使える開発ツールが優秀(?)
・メモリリーク等の心配がない
欠点
・一概には言えないが一般にネイティブコードに比べメモリを食う、速度が遅い
・ネイティブコードが使用できない
・AWTを使用した場合は描画が遅い
・どんな場合であれJREはクライアント側で手動でインストールしなくてはならない
と、適当に考えたけどこのくらいか?
424 :
423 :05/01/05 08:14:00 ID:J41LgYHD
あ、欠点の「ネイティブコードは使用できない」は本当に使えない訳じゃなくて 使ったらJavaの意味がほとんど無くなるって意味ね
JavaVMをCPUやビデオカードに合わせて最適化するだけで その上で動くアプリケーション性能はすべて向上する という記事を読んだ事があります。 アプリケーションごとに最適化するよりも プログラマの負担が少なくていいですね。
>>425 建前はそうなんだけどねぇ。
いつになったら、実行時コンパイル>>>>>事前コンパイルになるのやら。
実際には>でなくて≠になれば十分。 そして実行速度に関して言えばかなり≠に近づいている(らしい。
Javaの最大の欠点はJREの手動インストールだと思われる。
>>425 まぁほぼ現状ではイコールに近いのがサーバーVM
ただし、コンパイル速度が結構かかることやHotSpotの仕組みわかっていないと
どのタイミングでコンパイルされるかわからずにがたがたになる
javaコマンドのオプションいじれば大概問題ないけどね
>>423 .NETとJavaとC/C++でゲームそれぞれ作ってるけど、
.NETやJavaはゲームの処理だけに集中して作れる(フレームワーク等が作りやすく、
コンパイルチェックが強力なためにバグも少ない)のが利点だよ
開発効率がゲーム開発で求められる分野で対象がPCならすでに十分置き換え可能
ただ、Javaにくらべて.NETのほうが最適化とか(情報が少ないためか)癖とかつかみにくくて
パフォーマンスチューニングとか多少しにくいかな
1GHz以下のマシンや3DバリバリならCのほうで組んだほうがいいかもしれないけど
開発効率は間違いなくこれらダイナミックコンパイラ技術つかったやつらは
2倍程度の差はある
でも、実際ゲーム開発で負担が大きいのは作り終わった後のバランスとりとか
チューニングや絵や音楽の用意だったりするからさほど大きくないかもしれない
Cなどにこだわってバグ大量に抱え込むプログラマなら言語環境かえたほうがいいかもしれないけどね
>>428 まずJRE同梱でネイティブバイナリとばれないよ
JRE同梱の方法教えておくれ。ググっっても見つからないorz
JREディレクトリそのままこぴ そしてそのjavaw.exeを使うように相対パスでbatかexeつくるだけ JREは相対パスで各種ライブラリを使うから ちなみになにをはずして追加できるなどはドキュメントに書いてあるからそれを参考に わからないのならそのまま、せいぜいWebStartをはずすくらいかと Win以外でJavaつかってるならJREがたんなるファイルの集まりに過ぎないことを 知ってると思うけどね .NETのほうもおなじようにできればいいのだけれども、いまのところ無理
>>431 d試してみます。
>>432 Web Startもインストールしないと使えないんですよね。JREさえいれてない人がインストールしてるとは思えないんだけど・・・
>>431 + test
- jre1.5.0 (コピーしたフォルダ)
- test.jar (実行型JAR)
- test.bat
という構成にしてtest.batに
jre1.5.0\bin\javaw -jar test.jar
って書いてbatをダブルクリックすれば実行できました。ただJREって70MBもあるんですね・・・
アプリは30KBしかないのにorz
>>435 JREの中でも省ける場所もある
ドキュメント嫁
あと圧縮するならDGCAおすすめ
JRE同根でアプリにもよるが10Mくらいになるから
438 :
432 :05/01/07 15:37:31 ID:XcvBhScQ
>>438 JREが入ってないのが前提での話をしていると思われ
だからインストーラを使わずに使える同根の話かと
Javaでゲームを作る際の最大の欠点は、ガベージコレクションが いつ始まるかプログラマーが規定できないから、変なところで 処理落ちしたりするって事じゃなかったっけ? 今どうなんだろう。公開されてるシューティングゲームを 試してみたいけど、平均的に30fps出ていたような…。
見してー
442 :
440 :05/01/08 08:35:32 ID:KZPOhWIL
>441 書き方悪かった。「Web上で公開されてるシューティングゲームを (自分の環境で)動かしてみたら、特に問題はなさそうだった」という 意味です。 >437で公開されている、ボールが150個動くデモではときどき 重くなりますが、この原因がガベージコレクションかどうかは 分かりません。
>>442 サンプルソース見ればわかるけど、それスプライト500こな
batやshのオプション見ればGCとかのチューニングしてないわけだし、
そもそもノーウエイトだとC++ネイティブでもそういう現象おこるね
まぁ細かいことを言えばリアルタイムOSでないかぎりどうしようもないさ
Javaとかそういう範囲での話じゃないと思うけど… いま、マリオのような横スクロールアクションゲーム作っているわけだが 坂道がどうすればいいかわからんのよ。 仕組みでいいから教えてくれないか?
坂道の角度からxに加速する量とyに加速する量を求める。
???
高校物理で「重力加速度」ってのを習うんだけど、空中だったり平らな場所だと真下に力がかかるってことなのね。 それが坂道に立っている状態だと、横方向と下方向に分かれるのさ。 角度が急になればなるほど横方向への力が強くなる。 分ける比は坂の角度を使って三角関数でうまいこと計算してやればいい。 そんなに厳密に計算する必要がないんだったら、 坂の下方向に向かって滑らせるだけでそれっぽい動きになる。 スーパーマリオもそんなに厳密な計算してないように見える。
重力加速度より垂直抗力の話じゃ? それ以前に、具体的に坂道のどういう処理に困っているのかが気になる。 445と447は『坂道で滑る』処理だよな?
>>444 単純に思いつくのは
1、地形の形状データをすべてベクトルデータで表現する。
2、角度ごとのブロックを沢山用意する。
3、ブロックの基本の大きさを小さくしてキャラクターがそこを通るときに線形近似をする。
くらいか。
1はそれなりの数学と物理の知識が必要になるし
無駄に厳密になりすぎると思う。
詳しくは考えてないけど2と3の複合になるんじゃないかな。
そういやソニックの坂道の処理ってどうやってたんだろうな。
ベクトルとかそんな面倒な処理はいらねーよ
X座標に比例してY座標も変える的な感じで作ったら、 坂道とブロックの繋ぎ目で問題出た
452 :
名前は開発中のものです。 :05/01/29 23:09:00 ID:tWobEU3H
>>452 面白そう。早速いじってみます。情報ありがとう!
>452 HPを翻訳で訳して読んだのですが、ライセンスは本当のところ どうなってるでしょう。フリーとなっていますが、 登録が必要とかありそうでしょうか。
458 :
名前は開発中のものです。 :05/01/31 15:54:15 ID:V1XG9IBr
ロープレのマップに使おうと思っているんだけど、画像の一部を表示させるのはどうすればいいんだ 例 32×32の画像の(5,7)〜(20,30)の部分を表示する
APIよんだか?
>>456 壁にめりこんでるのがちょっとあれだけど面白いな〜
Java Web Startけっこういいな
>>458 g.drawImageの
drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
のバージョンを使う
>>456 動きが途切れ途切れでゲームにならん。
ウチの回線が細すぎるのか?
463 :
名前は開発中のものです。 :05/01/31 21:20:58 ID:+V/3Dkj9
つ―か、iアプリのFFTって何であんなにたくさん画像使っているのに、100kbに納められるんだよ オレなんか画像50個くらいで50kbもいっちゃうよ
>>462 たしかにログインするとまともにゲームできる人と
できないくらい途切れ途切れになっている人がいるようです。
アフォなことどのくらいの転送レートが必要なのかまだ測定してなかったりします。
多くても1kByte/secは越さないとは思うのですが・・・
>>463 100KBって800Kビットだろ?
それにjarはZip圧縮だし、Javaのバイナリは最初から小さく作ることを考えている
あのサイズは別に不思議ではないぞ
あとスクラッチパッドにロードしてるんじゃないかな
467 :
名前は開発中のものです。 :05/02/01 04:50:32 ID:ijJ+D9OG
iアプリは800kbも作れるのか
Vodaって256KBじゃなかったっけ? 1.5Mbitじゃん。すげー。
あと仕様公開されてないがVoda冬3Gは1M(メガアプリ)だからな jarやJavaの構造的に2HD2枚位の容量あるとおもえばいい わかりやすく言えば昔のX68のソフトがほぼすっぽりおさまるというわけだ
470 :
リルム :05/02/01 14:48:04 ID:/sjbLrZF
>>469 そんな大規模なものを作るわけだから、当然、有料アプリだろうな。
1Mアプリの麻雀ファイト倶楽部なんか半荘一回につき100円いるからなぁ。
>>462 転送量計ると
送信が瞬間最大1kByte/sec、受信が瞬間最大2kByte/secくらいでした。
普通くらいと思える動きで
送信が300Byte/sec、受信が800Byte/secくらいでした。
これだとモデムとかだと辛そうです。
とりあえず通信を圧縮してみたら30%くらいまで圧縮できました。
476 :
名前は開発中のものです。 :05/02/21 02:55:12 ID:SgKJcldM
質問です。 JNIで作成したDLLファイルはアプレット上では機能するのでしょうか? MacやUnix上では動作できないような気がするんですが・・・。
固有の部分は各機種ごとに用意する だからネイティブライブラリのロード命令は抽象的になっている
478 :
名前は開発中のものです。 :05/03/05 14:28:03 ID:RgI1qaiB
>>477 じゃあ、MacやLinux、Winはそれぞれネイティブコードのモジュールを
用意しておき、プログラム上ではシステムクラスでOSを区別させ、
ロードするライブラリをそれぞれのOSに合わせるようにすればよいのか?
ロードするところのコードは同一でいい ライブラリをロードできる場所はOSごとに違うからそのセットアップをするだけで プログラムは一切変える必要はないよ たとえば System.loadLibrary("abc"); ってやるとWindowsなら abc.dllを探すし、Linuxならabc.soを探すといった具合にね
480 :
名前は開発中のものです。 :05/03/06 21:58:56 ID:liOrnQvP
なるほど。ロードするべきモジュールが soかdllかは自動で判別してくれるということか。 macのネイティブモジュールはなんだ? 拡張子ないんだっけ?
MACはFreeBSD5系統
483 :
480 :05/03/12 23:27:34 ID:av7rObsw
>>482 サンクス
Javaゲーム作成した事ある方知ってる方教えてください。
マップスクロール関係の描画処理になんとか完成までこぎつけたのですが、重たい。
チップ画像ファイルって1枚で用意するのと複数枚用意するのとでは
処理速度が変わるのかな?
1チップあたり32*32ドットで、10*10個分のチップ画像をImageクラスに
10個分格納するのと、
1チップあたり32*32ドットで、100*10個分のチップ画像をImageクラスに
1個分格納するのとでは、どっちが重たい?
重たいというか処理に時間がかかるのはどっち?
実際に試せばいいと思うよ
485 :
480 :05/03/12 23:52:43 ID:av7rObsw
>>484 まあ、そうなんだけどね(^^;)
ちょっと明白な答えが返ってきたら、検証しなくてすむかなー
とたくらんでました。
何も今作っているゲームで試さなくても簡単なアプリ作って
試せばよいか。
マップ描画はアクセラレーションがきけば オンボードのUMAのチップでも60fpsで CPU使用率5%以下ですむね
488 :
483 :05/03/13 12:02:23 ID:nyqjREnh
>>486 >>487 アドバイスありがとうございます。
このスレに今まで記載された技法はすべて試すつもりです。
基本的なマップ描画に関する知識を深めてからそちらの処理も考えようとしています。
今、ハードウェア系の制御に手を出すと、無駄な処理を行っている部分
を探すのが面倒になるので・・。
>>483 試してみたら、前者のほうが、処理に時間がかかりました。
詳しく計っていませんが、その差は歴然でした。
メモリ上同じサイズのイメージ情報を格納しているはずですが、
配列で持たせるのは、極力さけるべきなのでしょう。
DirectXも確か、DirectDrawで一度にbmpファイル読み込んだ方が
処理が速かったっけ。
・・そうなるとテキストデータもコレクションAPIやString配列で
データテーブルを構成するより冗長性をもたせた1つのString変数で・・。
いやな結果が出そうだから、考えるのやめよう。
490 :
488 :05/03/13 13:49:30 ID:nyqjREnh
>>489 ImageクラスとImageクラス配列とでは同じサイズの画像ファイルを読み込んでも
処理に差異があるかという事を質問してみたんですが、
文章がまわりくどかったですね。
配列と配列なしでのロード時間に差はとくにないぞ
492 :
488 :05/03/13 14:02:57 ID:nyqjREnh
>>491 失礼しました。
ロードしたあとの画像描画処理の事です。
getImage()で画像ファイルをロードするのは差は見られませんでした。
drawImage()で描画処理を終えるまでの時間は極端に差が出ました。
それ作り方が悪いんじゃないのか? まった差はでないと思うのだけれども 部分的でいいのでコードだしてもらわんとなんとも
494 :
488 :05/03/13 14:54:48 ID:nyqjREnh
>>493 では一部だけ。ここ以外は同じソースをりゅうようしましたので、問題
ないと思いますが。。出かけますので、18:00頃またきます。
配列あり
private void MapDraw( Graphics g ) {
int imgno = 0;
int chipno = 0;
int widthno = 0;
int heightno = 0;
for( int j=0; j<10; j++ ) {
for( int k=0; k<10; k++ ) {
imgno = intBuf[j*10+k]/100;
chipno = intBuf[j*10+k]%100;
widthno = chipno/10;
heightno = chipno%10;
g.drawImage( imgBuf[imgno], 4+k*32, 30+j*32, 4+k*32+32, 30+j*32+32, widthno*32, heightno*32, widthno*32+32, heightno*32+32, this );
}
}
}
495 :
488 :05/03/13 14:55:12 ID:nyqjREnh
配列なし private void MapDraw( Graphics g ) { int imgno = 0; int chipno = 0; int widthno = 0; int heightno = 0; for( int j=0; j<10; j++ ) { for( int k=0; k<10; k++ ) { imgno = intBuf[j*10+k]/100; chipno = intBuf[j*10+k]%100; widthno = chipno/10; heightno = chipno%10; g.drawImage( img, 4+k*32, 30+j*32, 4+k*32+32, 30+j*32+32, imgno*320+widthno*32, heightno*32, imgno*320+widthno*32+32, heightno*32+32, this ); } } } ※intBuf配列には数値が0から999までの乱数が100個格納されています。
どっちのコードも部分切り出しの描画だな これらは遅い描画だったはず 場合によってはソフトウェア描画になってるだろうからキャッシュにおさまってるとかそんなことじゃないの? まぁ使うときは切り出しなしでつかえ
つーか、よくみるとImage以外の引数のところがちがうな で、どっちが何msで遅いほうは何msなんだ? この程度の描画どっちも5ms以下だろうし
498 :
名前は開発中のものです。 :05/03/14 14:51:58 ID:g8fcKLDU
作ったゲームをjarで固めて配布したいのですが それでも結局VMの入ったPCでしか動きませんか? jarにVM一式入れないと駄目? それと、インストーラーもsetup.exeとかそういうファイルにしたいのですが。
インストーラにVMいれてしまえばいいじゃない
500 :
名前は開発中のものです。 :05/03/14 18:11:18 ID:g8fcKLDU
なるほど、自動的にJRE1.4がインすとされるようにして ゲーム起動時にはjarを叩くようなbatかexeを作ればいいのか。 さんくすこ
JREはJREのディレクトリ構造そのままコピーしてそのbinの中にあるjavaw.exeから起動するようにするといい そうすればユーザーにはJavaを使ってることすらわからない
聞きたいのですが、JREの中のrt.jarの中の使って いない機能とかは削除してもいいのでしょうか。 なんせこれだけで13メガバイトもあるので。 そもそもrt.jarからファイルを取り出すのは SUNが禁止してないかも分からず… 自分が使っていない機能を特定する方法もわからず…
READMEみればどれをはずして追加してもいいとか書いてある
話題がループしすぎ
505 :
488 :05/03/14 21:57:24 ID:kZ32SfVH
>>496 レスありがとうございます
>まぁ使うときは切り出しなしでつかえ
詳しく教えてください。
チップ画像をすべて1つづつファイルに分けて用意するわけではないですよね?
>どっちが何msで遅いほうは何msなんだ?
↓こんなんで正確な処理速度が計れないかもしれませんが、、、
public void paint( Graphics g ) {
long l = System.currentTimeMillis();
MapDraw( g );
long l2 = System.currentTimeMillis();
System.out.println( (l2-l) );
}
結果です。
・スリープなし
配列あり 平均 63ms 最低 0ms 最高156ms
配列なし 平均 64ms 最低 0ms 最高156ms
・スリープ100ms
配列あり 平均217ms 最低 0ms 最高281ms
配列なし 平均120ms 最低31ms 最高188ms
・スリープ5000ms
配列あり 平均188ms 最低 0ms 最高18.8ms
配列なし 平均 62ms 最低 0ms 最高 6.2ms
※スリープを5000msにしたら、初回だけ最高値が計測でき、
2回目以降は配列有り無しに限らず0msでした。
ソフトウェア描画によるキャッシュ?っていうやつが原因なのでしょうか?
506 :
488 :05/03/14 21:59:34 ID:kZ32SfVH
↑まちがいでした。 ・スリープ5000ms 配列あり 平均18.8ms 最低 0ms 最高188ms 配列なし 平均 6.2ms 最低 0ms 最高 62ms
Javaは動的コンパイルするのとメモリ設定してないとFULLGCでヒープ拡張が多発 このへんのうごきがわかればその最低値という部分だけがほぼ出るようになる あとマップチップが32*32のようだけれども、これは某所の日記によれば60fpsで 3000個くらいは出るようだ
たまに酷く軽いexeとともにjarが添付されたゲームを見かけるんだけど あれってexeのなかでxmx, xmsを設定してから起動してるのかな?
メモリ使用量把握してmsmx固定でヒープ拡張なしにするのは基本だね あとはメモリの使い方把握してnew領域とold領域を決めるとGC時間が非常に短く出来る
510 :
488 :05/03/15 01:39:04 ID:9QqODPsg
なんだかJavaVMパラメータ一つで実行処理速度に差が出ることが 判ってきました。配列ありなしは関係ないのかもしれません。 アプレットやWebStartはVMのパラメータをあらかじめ設定できるのでしょうか?
>>509 チューニングするコツってなんですか?
-XXを弄るんですよね?項目がいっぱいあって手の付け方がわかりません。
GCやメモリ使用量を把握すること とりあえずマニュアル嫁
513 :
名前は開発中のものです。 :05/03/16 21:44:35 ID:g8Ve26Pq
>>501 そもそもユーザーはJavaなんてわからない人が多い
sage忘れたスマソ
>>513 違いには結構気づく。
ウインドウ色がよどんでいるので、調査してくれとクライアントに言われた。
Javaプログラム開発チームの島の周りの空気もややよどんでいた。
SWTなら救えるのだろうかw
Javaを知らないクライアントに新しい製品やシステム構築にJava製品 を紹介するときって、なんか下手にでてしまうのは私だけ? 先にデメリットをぶちまけて開発効率が上がるので、ご了承ください ご理解ください。発展途上の段階だからetcetc...
>>517 ビジネスアプリはVBランタイムを始めとするRADが〜を分かりやすく説明して
MSOnly技術だとすぐにサポート対象外になって、保守すらやばくなるけど
Javaは複数の会社がランタイムを提供していて、長期に安心してサービスを提供できて
おまえんとこも結局Happyって真面目にプレゼンしてみれ
そういう話はマ板でやれ
>>519 そか。ゲ板だった。ごめん。
じゃあ、WebStartでゲームを製作し、販売&その他サービスを運営
ってのは、なぜ日本は流行らぬ?
海外では数えるほどだがそんなサイトを見つけたが。
>>520 日本だとアプリケーションのほうがローカル資源にアクセスしやすくていいんじゃね?
フラッシュみたいにブラウザだけで手軽にゲームできて、 それでいてローカルにセーブデータなども保存できるんだから 結構需要はあるんじゃない?
FlashのEXEがセーブ可能だったらなぁ。 FSCOMMANDっていう荒業があるけど、セーブまで出来たかどうか
アプレットの有名どころっつーと爆裂ブロック崩しくらいしか知らんが あれ相当レベル低いと思うんだけどな・・なんであんなに流行ってんだろう
ゲームはレベルじゃなくて遊び方の問題だから。 素人萌え絵描きがちょっとエロいコンテンツ作るのにちょうどよかったんでしょ。 一度認知されればあとはシェアの問題。
>523 アプレットでローカルに保存できた? アプリケーションのときだけだと思ってたけど。
WebStartの話だから限定的ではあるができる
個人サイトでみかけるWebStartはAllPermission権限を付与した アプリがほとんどだが、みんなこの危険な非セキュリティ状態のアプリを 使用することに気にかけたり問題にしたりしないのはなぜだろうか? ここでもう一度セキュリティについて話し合おうじゃないか!!
531 :
527 :05/03/19 04:54:59 ID:lwKeH+t/
>>530 漏れもそれは思った。
けど、Vectorとかでダウンロードして実行するのは気にしないのに
Web StartのAll-permissionは気にするというのはある意味変だよなぁ。
まあWeb Startはそれだけ危険に対して警告をだしているというこになるんだろうけど。
Windowsは最近まで警告なしでexe実行してたし。
あと漏れはsecurityのタグはAll-permissionしか知らないんだけど他にあるのかな?
存在はしてるのだろうけど
何処を探してもAll-permissionしか見つからない。
実際のところ通信だけ許可してくれたらいいから
All-permissionを外せるなら外したい。
かといっていちいち許可要求だすアプリ触りたくないしな。
533 :
名無し :05/03/19 06:53:31 ID:rTN9pn5h
j2ee-application-client-permissions
通信対戦型のネットワークであれば、権限なしでも十分。 ゲーム初回起動時にログイン要求する際に、サーバへローカル情報 を送信し保存させればよい。 次回からのアプリ起動時にはローカル情報をサーバから取り出せばいい。 ※ここで「ローカル情報」といっているのはゲーム上で必要な パラメータの設定値や各ユーザ毎に異なる値を用意しておくべき 情報のこと。
私が作成したC/S型のゲームでの通信方法は urlLoad = new URL( "サーバアドレス" ); urlConnect = urlLoad.openConnection(); urlConnect.setDoInput( true ); urlConnect.setDoOutput( true ); urlConnect.setUseCaches( false ); dos = new DataOutputStream( new BufferedOutputStream( urlConnect.getOutputStream() ) ); dos.writeUTF( strLoadReqMsg );//データ送信 C→S dos.flush(); dis = new DataInputStream( urlConnect.getInputStream() ); strLoadResMsg = dis.readUTF();//データ受信□C←S なんか文句ある?
サーバーが用意できる場合は誰もたたいてないんじゃないか? そもそも鯖がJava系でないことを前提に書くならば16bitサイズが限界のUTF8もいまさらだな シリアライズはもうXMLにいってるから無視なのかね>Sun
最初っから多国語対応しっかりして欲しかったな
>>537 俺が言ったのはUnicode4.0のことじゃない
文字列の長さが16bitまでしか扱えないシリアライズのことだ
先頭2バイトに文字列長いれてるからね
>>538 Unicode4.0が決められたのは、Javaが生まれた後だからエスパーじゃないと無理。
.NETもcharは16ビットと決めうちなわけだが、あっちはどう対応しているのだろう...
Java3Dってどれくらい使える状態? openGLの高級化ラッパだよね?
>>541 Direct3Dベースもあるっちゅうねん
とりあえずどうせJava3DもJ2SE SDKに標準で入ってないから
JOGLの方がいろいろとやりがいがありそうだ
>>539 結局シリアライズの時は2文字のフリをして格納して
実際の文字の長さを調べたいときはcodePointCountで調べる
という方法しかないんじゃないか?
>>542 Java3D使ったソフトはJREしか入ってないマシンでは動かないってことですか?
3D関係ってたいていビデオカードがらみでトラブルおこるのが常
Javaで3Dっていうけど、メリットある? 作り手がJava言語しか分からないから? 実行環境を気にしないアプリにしたいから? 実行環境はOSレベルでもうだめだよね? あれ?MacやUnixでもJava3Dは動くんだっけ? Cで作成した3D用のモジュールを呼ぶだけで、 かつWin専用ならC言語のEXE形式で作ったほうがスマートな気がする。 ま、メリットあげるならWebStartでバージョン管理だけして、 Runtime.exec()でEXE呼び出しぐらいか?
openGLサポートされてりゃJava3Dは動くっしょ。
Java3D以前にJava2DのOpenGL実装がATIとnVIDIA以外でもちゃんと動けば問題ないんだがなぁ 3DがJavaで動くメリットは割と多いぞ SDLだってかなり限定的なクロスプラットフォームだと思うがそれが支持されているんだからな
>>544 別途Java3Dをインストールする必要があるって話
>>547 だから〜、
DirectX版もあるし、どっちにしても別にインストールする必要があるんだってば
552 :
551 :05/03/20 15:44:58 ID:FmRrIjgJ
日本語ドキュメントねぇとつかいにくいなぁ まずはゲーム作成を本当にSunが考えているなら標準APIで加算合成と ジョイパッドまわりを追加してほしいものだな
ガベージコレクタのプログラムからの制御も必須
・キー状態をポーリングできるAPI ・簡単に確実にフレームバッファを操作できるAPI ・簡単に確実にフルスクリーンにできるAPI ぐらいか。 キー状態をポーリングできないのが痛い。
>>554 たしかにnew領域の専用のGC命令ほしいよな
いまだとFULLGC発行する実装だし、軽いGC操作というイメージがない
System.lightGc()とかってのがあればねぇ
1フレームごとに1回new領域のGC発生させたいところだが、殿堂入りも早くなって
メモリ管理はますます重要になるかもしれないが
>>555 キー状態に関してはダウンとアップのイベントからやるしかなかろう
Linux等X系は(ウインドウシステムの?)実装上の問題があるけどなー
フレームバッファとかフルスクリーンに関しては非常に簡単にできるだろ
ほんの2,3行書くのが面倒だったらそれラッピングすればいいだけ
これでできないのだったらDirectXなんて異次元だろうに
>>555 >・キー状態をポーリングできるAPI
それって、どのキーが押されたか判別するためのAPIの事?
KeyListenerでキーの入力情報を逐一フラグで管理してもだめ?
>>556 擬似的に行うと、微妙にズレがあるからなぁ...
フレームバッファやフルスクリーンに関しては、
自分のPCだけ動けば良いのなら数行なんだがな。
本当にすべてのプラットフォームで動かしたいのなら、
試行錯誤してようやく大半のプラットフォームでも動くコードができると思うが。
実際、Java Games ForumsでもWindows2000,XP以外のOSだと実装が不完全とか言われているし。
ウインドウモードも用意すればよろし XWindow系は解像度かえれないし、短いコードでもそれらを判断して対応できるよ そもそもフルスクリーンモードのみはOS固定のゲームでもきらわれる
>>559 ウンドウモードでも、結構微妙。
しょぼいコード書くと、タイミングによって固まったりするけどなぁ。
というかWindows, Linuxだけでも動くように作成したことがあれば経験あると思うのだけど。
>そもそもフルスクリーンモードのみはOS固定のゲームでもきらわれる
フルスクリーンモード*のみ*とは一言も言っていない。
大体デバッグ面倒だから、ウィンドウモードで作成してから後から対応してたりする。
Javaで作成しているのだから、
Windowsだけしかフルスクリーンモード対応していませんとか言うのも悲しいだろう。
とりあえず、Sunはゲーム作成を本気で流行らせたいのならSDL位の機能は標準で用意汁。
OSによって解像度変更やフルスクリーン動作ができないものがあったり 環境依存する以上Sunにはどうしようもないだろう Windows以外のOSにWindowsと同じ機能をもたせるかどうかは会社やコミュニティ次第 俺はWindowsのように解像度変更が出来る環境はフルスクリーンで、できなかったら Windowモードにと作ってるがそれはへんか? 固まるってやつはスプリアスまわりかもしれんがそれ以外なら できるだけ新しいバージョンのJRE使うことでだいぶ回避できるかな 個人的に1.4.2系は結構とまる気がする 5.0はいまのところ固まった記憶がない
あと逆に俺はSDLはJava並みの機能がほしいと思ってるんだが まぁこれらは各種オプションで何とかなってる感じだな SDL自体機能ほんとなにもねぇ
>>562 Javaでどうしようも無いのはジョイスティックくらいじゃないかな?
それ以外は速度を気にしないのならなんらかのAPIが用意されてたはず(でもそれじゃ意味ないよねw
Javaでどうしようもないの?<ジョイスティック
いまは各自JNIで実装してるね sunはゲーム関係にも注目していますとかいってるけど、同考えても無視だよなぁ フルスクリーンはゲームより組み込み想定だろうし
>>565 いちおうJavaGames(JOGL,JOAL,JInput)やらLWJGLやらはあるけどねぇ・・・
>>549 そうなんだ
じゃ、Java3Dでゲーム作ってもしょうがないな・・・
入れてる人なんていないだろうし
>>568 おー、おでの環境ではトラの頭とかいきなり問題なくグリグリ動くぞ
かんどー(・∀・)
Win2000 JDK1.5
Pentium4 2GHz メモリ512M
571 :
名前は開発中のものです。 :2005/03/22(火) 21:21:58 ID:Xv3FJhIm
sdljavaのSDLImageで画像ファイルの読み込みに成功された方はいませんか??? sdljava付属のサンプルでSDLImage以外は動くのですが何故かこのサンプルを動かそうとす ると「序数78がダイナミックライブラリjpeg.dllからみつかりません」とエラーが出て起動できません。もちろん、jpeg.dllはsdl_imageに付属してきたものを実行ディレクトリーに入れてあります。 sdljavaのcソースを調べてみるとやっているのはSDL_ImageのIMG_Load()呼んでいるだけでしたので自分簡単なnativeコードを書いて同じくIMG_Load()を呼んでみたのですが同じエラーが出ました。 どなたかヒント又は原因がわかりましたら教えてください。 (java 1.5.0_02 os windows2000)
573 :
名前は開発中のものです。 :2005/03/22(火) 21:46:01 ID:Xv3FJhIm
>>572 英語のサイトでしたのでまだしてません。
誰か、日本でもわかる人がいるかという甘えで質問してしまいました。
zlib.dllがないとか
575 :
名前は開発中のものです。 :2005/03/22(火) 23:03:18 ID:Xv3FJhIm
>>574 そもそも、SDL_Imageがおかしいかと思いSDL_Image.dllを自分でコンパイルしてみました。
その時付いていたdllは全部実行ディレクトリーに突っ込んであります。
ご指摘いただいたzlib.dllですが付属していたのはzlib1.dllとなっていたのでそのまま突っ込みました。
今、zlib.dllにして試してみましたが駄目でした。
ちなみに自分で作ったSDL_Image.dllはSDL_Image付属のcのサンプルでは使えました。
JDK1.4だと動いたりして そんなことないか(*´Д`)
そうだzlib1.dllだった。すまん。 jdk1.5.0_02/winxp/最新のSDL1.27,SDL_imageでtestimageは普通に動いたなぁ。
JNIつかってるのならJNIのほうのDLLが問題かもな SDL程度なら実はラッパ自作したほうが早いかも
579 :
名前は開発中のものです。 :2005/03/23(水) 14:59:50 ID:9xJqmPgd
>>576 試してみたところclassのバージョンがサポート外と言われてしまいました。
ライブラリーごとコンパイルし直せば良いのかもしれませんが本家でも5に対応と書かれていますしそれ以上試してません。
>>577 動きましたか。
じゃあ、やっぱし私の環境に問題があるみたいですねぇ。
>>578 jniの方のdllも自分で構築してみたましたが駄目でした。
仕方ないのでcのコード内でIMG_Load()を単純に呼んでみるコードを書いて試したのですがやっぱし同じエラーが出ました。
SDL関係のDLLをシステムフォルダに入れてみるっていうのは?
>>568-569 Java3Dを使ってるページじゃないから注意ね。
独自に三次元表示ルーチンの実装をしてる。
もう五年くらい前からあるんじゃないかしらん。
582 :
名前は開発中のものです。 :2005/03/24(木) 18:07:03 ID:GOOM1R8j
1がいなくても有意義な内容になればかまわん
再利用きくタイトルでよかったね
570が完全スルーされている件についてorz
じゃあどうしようかな・・・Java3Dとの実装の違いを教えて。
>>586 JGL(
>>570 )は全部Javaで実装してるOpenGL
Java3Dは内部でOpenGLやDirectXを利用したシーングラフベースの3Dライブラリ
JGLは単純なOpenGLライブラリのラッパーかと思っていたけど、 JavaでOpenGL互換のライブラリを書いたのか。なかなか凄いね。
589 :
名前は開発中のものです。 :2005/03/25(金) 22:01:32 ID:+PDQU0mK
>580 やっぱし駄目でした。
Javaを勉強してみたいと思って本までは買ってるんですけど、パソコンがなくて、ここにもK帯からアクセスしている状態なんですけど、、ここの人たちだけが頼りなんで1から教えていただけませんか…無謀なお願い&長文ですいませんm(__)m
パソコンなければ無理 机上デバッグできるけど、まずはネットにつなぐ前に本みてオフラインでやれ
593 :
名前は開発中のものです。 :2005/04/26(火) 20:35:40 ID:5ALJZB77
自分今高校3年でこの春から課題研究で何か制作することになって考えた結果、 JavaかHSPなど使ってアクションゲーム作ろうと考えたんですけど、 初心者が一年間でそれなりのもの作れますか?
全然わかんねー!って人は携帯アプリも良いかも。 1年ありゃそこそこ理解できるようなレベルだし。 まぁ、ここじゃスレ違いっぽいけど。
>>591 携帯電話を解約して貯金。パソコンを買う。
>>593 DirectX覚えようとしていきなり挫折するよかJava + ゲームフレームワークの
方が遥かにシンプルだと思います。
まずJava言語自体を覚えているかどうかだな 言語自体も分からないということであれば厳しいが
やっぱりパソコンないと無理ですよね…(..;) みなさんはJavaをどうやって覚えたんですか?それと、よろしかったら、みなさんがプログラム始めた年齢を教えていただけませんか?
>>597 18。つーか、本とパソコンを買ってからまた来なさい。
分かりました(^^)v そのときが来たらよろしくお願いします
>>600 ありがとうございます。頑張ります!!!!
>>597 10
当時はマイコン言われることが多かったし、
パソコン触っています=変体扱い
ソフトが無いから自分で作るのが当たり前だったしねぇ
BASICからアセンブラ、Cとか構造化BASICとか順にいってたからね
Java触った時点ですでにパソコン歴10年以上だったし
>>593 時間との勝負で、作りこみとかゲームバランスなどのほうににひたすら時間をかけるのなら
2DSTG一択
>>602 じゃあベテランさんなんですね(**≧v≦)ノノノ
パソコンの基本操作ぐらいしか分からないような状態から、Javaを軽くいじれる(理解?)状態になるまでどれくらいかかりま(..;)
変な質問すいません
やる気と才能次第
昔のマイコンなら、電源を入れたらプログラムを書いてすぐに実行できたけど、 今は例えばJavaだったら、Sunに行ってJDK探してダウンロードしてインストールして、 パス通してメモ帳でソースを書いて保存して、コマンドプロンプトを立ち上げて コンパイルしたら「ファイルがありません」と言われて、調べたらメモ帳に勝手にtxtを付けられて いたことが分かり、「拡張子を表示する」にチェックを入れて改めてコンパイルするまでに 挫折する人が多い気がする。
Cコンパイラ買うのにバイトで6万稼いだのだが そんな時代よりはよかろう ネットで検索でなんでもわかるのは正直楽すぎ その分作業効率は求められるんだがね
最近は手取り足取りプログラミングのやり方を書いている本もたくさんあるから 大丈夫だと信じたい。
>>608 逆にたくさんありすぎて間違った本を探して挫折するのもまた事実。
漏れは立場的に人に教えることが多いけど
「どの本がおすすめですか?」というのはよくある質問だったりする。
正直ゲームプログラミングとかは敷居は上がったと感じるけどね 技術雑誌による連載が無いのが痛い あったとしても今はCマガくらいか 昔は機種がたくさんあってそれぞれ対抗意識を燃やしながら 熱心な記事が多かったのだが 環境が固定化されてないのを最初に知らないといけないというのは 結構な負担かもね
やらなくちゃいけない事が増えて、敷居が上がってると思う。 MS-DOSとか、ポケコンで作るのは割と簡単だったけどなぁ。 面白さとか別として。
求められるレベルが上がったというのがある パソコンやコンシューマの性能が上がりすぎたからね いまじゃ市販ゲームを一人二人で開発していた時代があった とは思えない状況で、同人レベルでもまっさきに絵の質が求められるしねぇ 内容はともかくパッケージを手にとってもらえないといけんというわけだが まぁなんにしてもスレ違いか -------- 以下Javaのゲーム作成の話題をどうぞ まぁ、これも板違いなんだが・・・
じゃあJavaでゲームの話題。 GTGE触ってる人いる?
なにそれ
せめて具具ってみようぜ で、これなに? 2Dゲーがメインターゲットなフレームワークってことかね
英語がよめねぇ
617 :
593 :2005/04/28(木) 20:31:53 ID:hKtsUv4d
携帯アプリは普通のより簡単なんですか?
制限が多くて難しいんじゃないかと あと、ケータイのJavaはパソコン用のJavaと違うものだし
所謂「有料モノ」に一番到達しやすい分野ではあるよ。
ところで、MacOSXはJava5.0対応だったっけ?
>>620 昨日発売のMac OS X 10.4には従来通りのJ2SE 1.4.2が付いてきました。
1.5はもうすぐ出る筈。
thx. Mac OS X のことを考えると、Java1.4で書いておくのが良いみたいだね。
Macに5.0でますた
おー上手い具合にJava5.0出たみたいだから、心置きなくJava5.0で進めよう。
625 :
名前は開発中のものです。 :2005/05/02(月) 12:06:43 ID:KrHr8vIX
私は、Win派なんですが、やはりネイティブコードで一部の画像処理を コーティングするには、各OSが必要になるのですが、 みなさんはどうやってこの問題をクリアしてらっしゃいますか? 私は、PCが2台あるので、WinとUnix(Solaris)は自前で用意して、 Macはもっていないので、仕方なくネットカフェでMacPCを探して、 そこでモジュール作成と動作確認をしようと思っています。
ほとんどの人はPureJavaかとおもわれ
GTGE、ダウンロードしたままになってたけど、サンプルをビルドしてみた。 自分はクラスパスが上手く設定できないので、ビルド用バッチファイル があったのは有りがたい。一発でビルド。遊んでみたけどいい感じ。 ソースだけのクロスワードパズルが動かすまでちょっと手間取った。 「ANT(アリ)」がどうしても選択出来なかったんだけど、実は 「PANTER(ヒョウ)」の一部だった・・・まあバグじゃないけど。
age
>624 Macの1.5.0はまだ開発者向けのベータ版じゃないかな? 一般ユーザー向けに出るにはまだちょっと時間があるかも。 でも、いまから1.5.0用のコードを書いておいて損はないよね。
Macだとシステム側でダブルバッファリングしてくれるので ちゃんとアニメーションできてるかわからんのが困る。
GUIのシステム側からすればOSがダブルバッファやるのがいい でもそれができるのは新しいOSだからさ
高いなあ。とりあえずサンプルコードを落とすことにしよう。
636 :
:2005/05/26(木) 16:33:48 ID:owFSRMuu
アマゾンで¥4,319 だからページ数からいって安い方だろう。
日本語版でないかなあ。
638 :
初期不良 :2005/06/02(木) 21:09:55 ID:1lixZ+mm
さすが、Javaのゲーム作成本が出るだけあってアメリカ(多分)は Javaゲームが盛んだね。日本は…携帯アプリだけ?なぜ日本でjavaゲームが 流行らないんだろうか。
日本だとJavaでのゲーム作成本は10冊くらいかな 1.1時代のが多かったり、アクセラレーションについてとか VMのバージョンによってパワーアップしたことなどまったく触れてない 1.4の時代に1.1のJavaのコードがでるのは違和感がある 音源周りでおわってるが 1.4.1以降をターゲットにするとアクセラレーションがきく描画が可能だし 1.3をいれるとJavaSoundが使えて便利 そして初心者をターゲットとすると5.0がいいだろうね JavaSoundだけでも大分楽になるし、オートボクシングも便利だろうね BufferedImageもアクセラレーションが多少ききやすくなってテクニックはあまりいらないし あとプライベートJREの説明とかJNIでジョイパッドを認識させるとか そういった現実的な、それでいて中級者あたりで必要そうな知識とかになるとまったくない
>640が本を出せば売れるんじゃねーの?
売れるならかいてますがな
>>639 実行環境整えるのが、素人にはまだ難しいというかめんどくさい
と思われてんじゃないの?
まずは面白い国産ゲームが出る事かな。先行者ゲームなんて面白いと思うけど、アプレットじゃないアプリケーションで面白いのある?
みんな開発環境はどんな感じ?
ゲーム作成用だとIDEはなんでもいいんでね? ライブラリは意見が分かれそうだ まぁJavaの場合ゲームならVMのバージョンを出来るだけ新しいのに市他方がええ 1.4系は正直5.0にたいしてメリットがねぇ
Appletで作ってるけど、なんかカツカツ処理が落ちるッス。 webで人様のjavaプログラムを実行しても同じ症状だからマシンかOSが腐ってるのか?
マシンスペックとOSは? あとアプレットはブラウザの上で動く以上 ある程度さまたげられる可能性があるかもね
>>648 最新のJavaランタイム環境使ってる?
アプレット上だと、DirectXが使われないから処理が遅くなるってさ。
そんなことはないはずだが
XPのSP1で、appletのランタイムは1.5.0_02のCPUはPen4の1.6AでRadeon9700pro。 > なんかカツカツ処理が落ちるッス。 舌足らずなとこを補完すると、30fpsでバッファリングしたImageを切り替えて ゲームのフレームワークを作ったのですが、カツカツ落ちると。 一定周期で1frame落ちするから、ディスプレイのVSyncとかみ合わなくて テアリングでも起こしてるのかなと思い至った。 経験則では解決策がない悪寒がする。 レスありがd。
ティアリングならどうしようもないべ
アプリケーションのほうは問題ないの?
テストでdrawStringだけ実行している状況だから負荷は問題ないと思ってます。 ただJavaに疎いので、Javaが裏で重い処理をするコードがどこかにあるのか、 という疑問はあります。定期的にガベージが発生しているのかも、とか。 webでもっと探さないと。 そんなのFAQレベルだぜ、ってちょっと教えて君だった。スマソ。 それとありがd。もうちょっと調べてみる。
658 :
名前は開発中のものです。 :2005/06/07(火) 02:11:29 ID:paRUAyMw
そういえばジャワティーってドリンクもう売ってないのかな? 本木雅弘がCMやってたヤツ
やってみる。これからだけど、とりあえずありがd。 > そういえばジャワティーってドリンクもう売ってないのかな? 近所じゃ購まだ売ってますぞ。
>
http://shin.cside.com/product/pw/index.htm これはナイスガッツ! てか楽しそうに作ってるなー。
ウィンドウモードでは自分のアプレットと同じで定期的にとまるッス。フルスクリーンはOKだ!
自分のアプレットもこのゲームも、漏れのマシンでは数フレームロックかかってる希ガしてきました。
ティアリングは嘘でした。
ほかの人はそんなことないのかな・・・
webでいまのところ同じ症状を見つけられないので漏れだけか。。。
今日は会社のpoorなマシンで試してみよう。
> -verbose:gc
だめぽ。
でもヒープ周りの知識はウェルカムだったのでありがd。
だがリーマンゲームプログラマは3:00に夢の国へ・・・おやすみ藻前らありがd。
ウインドウモードでかたつくならそれはティアリングであってる 垂直同期が取れない以上どうしようもない フルスクリーンは垂直同期とってるんだよ
EclipseのSWTってどうよ?
なんでゲームでSWTでてくるかな それとも便利なのあるの?
GUI使って作るとしたらさ
ゲームの場合GUIコンポーネントはまずつかわないからね 使ったとしたらSwingのカスタマイズ性が有利に働くかもしれない
> ウインドウモードでかたつくならそれはティアリングであってる
よくわからないのは、数INTロックがかかって見えるところですかね。
ただFlashコンテンツも家の環境では同じ見え方するのに気づいたので、
追求するなと内なる何かがささやいてます。環境っぽい。
> GUI使って作るとしたらさ
個人的には自前でやった方が見栄えするから使わないかな。
>
http://shin.cside.com/product/pw/index.htm リンクたどったらゲームライクなライブラリも晒してるね。
コードも晒してればコピ・・・参照したのに残念。
んじゃ続き作るや。じゃ。
>>667 ほのかにビデオカードと液晶ディスプレイ疑ってたり。
ただ止まる時間が長すぎるような、っていうのは検証したら正しい時間かもかも。
まあ調べませんが・・・敗北しときます。
669 :
初期不良 :2005/06/08(水) 04:06:27 ID:2y7ULdYu
670 :
名前は開発中のものです。 :2005/06/08(水) 17:57:47 ID:jswTX7uc
SWTで作る利点といえば Eclipse上にプラグインとして公開して、 仕事しているようにゲームできることか。 どうよ
>>669 OpenGL使いたいのならJOGL使ったほうが手っ取り早いかと
3D目的なら今の流れだとJava3Dのほうがいいかもしれんが
>>670 それならJBuilderでもNetBeansでもテキストエディタでも環境にあわせるだけでかまわんような
そもそもどうしてもゲーム画面が表示される瞬間があるわけでどーすんだよと
すごい...自分で作ったアプレット、変数名まで再現されてた。 てか実用的な逆コンパイラなんて初めて見た。不覚...
とりあえず難読化ツールでも使うしか
ところでクライアントサイドJavaでのゲーム作成入門の オススメページってどこかないかな。 検索してもアプレットばっかりだし。
アプレットをフレームに貼り付ければいい。
普通にあぷりけーしょんでどうぞ アプレットのほうが理解しにくいと思うんだけどなぁ フレームワークであるという仕組みが分からないとかね 理解しないでアプリケーションに移行して画像のロードが出来ないんですけど、とか アプレットじゃないと音楽が流せないんですけどとか よくある話だが
Good Job!! おもしろいページばかりだ!
つーかまぁ、とりあえずパネル出すとこまで行けば後はアプレットとほぼ同じだ
つーかアプリケーションなら積極的にBufferStrategy使おう
アニメーションで動きがカクッカクッとひっかかるのはガベコレのせいだよね これ防ぐ方法はいまのところ何もないの?
>>683 単純にGCのせいともいえない
ティアリングの可能性も高いし
綺麗に垂直同期とってもディスプレイのせいかもしれない
そもそもWinやMac,Linuxなんかは垂直同期とろうが
確実に引っかかりをとめる方法はない
Javaで垂直同期って可能なのか
>>685 おもしろいやつはけーん
もう数年前から可能ですが
どうやって
>>683 GCが原因ならJavaVMのオプションでVMのメモリの量を多くしたら
(一時的には)ひっかかりが解けます。
そうじゃなかったら他の原因だと思われ。
10.4以降というのが
>>683 簡単なサンプルで定期的に落ちるようならガベコレじゃないと思われ。
漏れもそれに困ってモニタのinf(だっけ?)を入れ替えたりしたけど、結局だめだった。
液晶ね。
関係ないけど、アプレットfpsが30以上にならないのはアプレットのせいだよね?
と便乗質問してみる始末。
アプレットでも60fpsでるよね
Mozillaとかだと描画にオーバーヘッドが起こってるのか微妙に重いことがある。 これのせいかfpsが落ちたりするよね。IEだと問題ないけど。
キャラクターどうしの当たり判定とかすごい回数になりそうなので オクトツリーとかいうのを使ってみようと思った。 なんかメンドクサス
何のゲームで当たり判定が必要になったとかによるのでは STGあたりならRectangleのあたり判定を使って自作でさくっと スーパーマリオのようなアクションなら多少考える必要があるが
696 :
691 :2005/06/25(土) 05:22:05 ID:c8XAIbYr
>>692 そか。うっとこではapplette viewerでも32fpsより短くならないんだけど、
教えてgoogleパワーでがむばってみる。
ありがトン。
>スーパーマリオのようなアクションなら多少考える必要があるが どんなこと考える必要ありますか? 敵(栗ボーとか)を配列に登録しておいてマリオが動くたびにすべての敵とあたっているか調べるってのじゃ遅すぎます?
地形とかの判定のことだな
>>697 最近のPCは力持ちだから極端に数が多くならない限りは
当たり判定処理を秒間10〜30回くらいなら平気でこなすよ。
もしこれ以上の精度が欲しいなら他の方法を使う必要があるけど
大抵はこれで十分だと思う。
昔から配列で手当たりしだい判定してきたし問題にならん 8bitのときは比較回数が100個くらいをこえるときつくなってきたな 16bit以上はもんだいにならんよ Javaが動いている時点でわざと遅くするコードやオプションにしないかぎりまず大丈夫かと
キャラクターが10体くらいで弾が200発くらいで地形が20個くらいで それぞれ画面内にいないときもAIで動いてるゲーム キャラクターどうし:9 回 キャラクターと弾:10 * 20 = 200 回 キャラクターと地形:10 * 20 = 200 回 弾と地形:200 * 20 = 4,000 回 1フレーム内で 4,500 回の判定・・・
4500回の判定程度たいしたことはねぇよ 100MHzいってないのならすまん
Javaというか、オブジェクト指向のゲーム制作の定石みたいなものは ありますか?日本語のJavaゲーム本だと、内容が古いか携帯電話向け ばかりで、英語なら結構出版されていますが、読めるかどうか…。 キャラクターはクラスにするのか?そのクラスは自身で描画する機能を 持つのか?持つなら対象のCanvasの情報はどう持たせるのか?など。 皆さんはどうしてますか?
クラス構造は人によって設計違うけど 多態を使うのとコレクションを使えるようになればいいんじゃないか
706 :
名前は開発中のものです。 :2005/06/26(日) 20:51:40 ID:R9cNrqzH
>>704 私もそこらへんすごく悩んだ。結局、キャラクターに描画機能もたせて、キャンバスへの参照はキャラクターのコンストラクタに引数で渡してます。
707 :
初期不良 :2005/06/27(月) 09:20:24 ID:sjyCFv/3
>>706 それで悩むなら Visitor パターンいいんじゃない?
いい具合に整理できるかも。自己満足レベルかも知れんが。
コンストラクタで渡すよりメソッドの引数でわたせばいいっしょ paintとかdrawとかってメソッドでGraphicsを引数に取ればいい そして呼び出し元がそれら描画オブジェクトをリストから取り出して順に描画させる プライオリティもここできめれるし
画像読み込みもタスクのクラスに実装すると メディアトラッカーに渡すモノが必要ですね。 他の人のソースを見ると、Appletで渡したり、Containerで渡したりしてる。 このへん意味も分からず人まねしてる。 クラスが一つしかない簡単なアプレットなら g.drawImage(.....,this);で済むのに。
つーかImageIO使ってるし 5.0ならアクセラレーション聞きやすい環境ではあるけどコンパチブルなVolatileImageを 意識的に作る場合もある イメージのロード命令ひとつでおわることはねぇな、ゲーム目的ならね
711 :
名前は開発中のものです。 :2005/06/29(水) 19:32:24 ID:tkZA2RNq
>>709 クラスわけするとそこらへんが結構無駄に複雑になる気がする
712 :
名前は開発中のものです。 :2005/07/17(日) 13:46:28 ID:Cex8NEqA
テクニックも何もJavaは普通になめらかにうごかせるものだが
>>713 > テクニックも何もJavaは普通になめらかにうごかせるものだが
ええーッ、僕が知っているjavaゲームは、敵の数に反比例して速度が低下するのが
多いのだが。
普通だったのか?
>>715 なんだよそれは
作り方が悪いだけだろ
60fpsで垂直同期取ったり滑らかに動いてるJavaのソフトだってあるぜ
正直 Java でフルスクリーンはぬるぽ
718 :
初期不良 :2005/07/18(月) 06:27:33 ID:pZiMlJXx
別にフルスクリーンでなくても滑らかにうごくっしょ
なんでAlphaCompositeには加算合成がないのよ!!
あ、正確には「なんで AdditiveComposite クラスがないのよ!」か
PixelGrabberを使うと加算合成できる?
JAVAを使って、ブラウザ上で自動的に画面が切り替わって行く、 サウンドノベルのような物を作るスクリプトは、 どこかで配布されていないのかな? 前に使っているサイトを見かけたんだけれども……。
724 :
名前は開発中のものです。 :2005/07/21(木) 11:42:34 ID:PX1CM5dL
>>723 おれも昔あったような気がする。
Javaでわざわざやる必要が無いから無いんだろうね。
Flashのほうがそういう用途では作りやすいし使いやすい。
気力さえあればHTML+JavaScriptだけで行けるし。
PixelGrabberって使う理由あるのか?
726 :
名前は開発中のものです。 :2005/07/22(金) 01:15:00 ID:34bxPQ7x
どなたか Graphics を透明色でクリアする方法を教えてください、お願いします。 2枚の Image から getGraphics() でグラフィクスを取得し、 それぞれに別の描画をしてから重ねることでいわゆるレイヤーみたいのを実装してみたんですが、 上に重ねるほうの Image のグラフィクスを まっさらに戻す方法がわからず行き詰まってしまいました。 単純に上に重ねるほうの描画の最初で clearRect() を呼ぶと、 下のグラフィクスまでクリアされてしまいます。 描画内容が変わるたびに新しくグラフィクスを取得しなおすのは パフォーマンス的にかなりデンジャラスでした(ゲームには致命的なほど)。
727 :
名前は開発中のものです。 :2005/07/22(金) 01:31:17 ID:34bxPQ7x
細かい訂正。Image でなく VoratileImage ですた。
あるVolatileImageをrgba(0,0,0,0)でクリアしたいってこと? 描画元がVolatileImageを使うということはJ2SE5.0だと思うけど まずピクセルフォーマットをコンパチブルで作っているのが条件 さらにアルファ0のピクセルを強制描画となるとアルファブレンドの設定をsrcに変える必要あり この辺分かってないのならスプライトはBufferedImageで作るのがいいよ 速度的にクリティカルでないのならね 5.0なら体外アクセラレーションがきくので描画先だけVolatileImageでよい
どうでもいいけど、VolatileImageは1.4からあって、このおかげでSwingが速くなった。
VolatileImageのコンパチブルイメージ作成は1.4では無理 スプライトには使えないのだよ
むう・・・グラフィックス関連は難しいのう
Javaの場合基本はImageで極度に抽象化されてはいるのだが、
アクセラレーションがきく描画とアクセラレーションがきかない描画とで
APIがわかれていないからノウハウが必要。
速度を無視さえすれば一応どうとでも動くけどね。
DirectXを使って描画されたときとソフトウェア描画になったときとの差はさすがに激しい。
分からないときは描画先はVolatileImageで描画元はBufferedImageのBITMASK指定
にしておけば基本的に問題はない。
ただ、アルファブレンドとか考えるとソフトウェア描画具合によって描画先もBufferedImageに
おいたほうがいい場合もある。
など
>>218 の過去の日記とか参考になる。
1.4.2と5.0とは基本的には速度は変わってないそうだね。
733 :
名前は開発中のものです。 :2005/07/27(水) 13:20:35 ID:ix/c6kOA
・・・ 何の事だかさっぱり分かんねー
Imageの既知のサブクラスくらいちゃんとみよう
処理を詰めるコレクションはどれを使えば いいのですか? シューティングを作っているのですが。
最近の若いもんはデータ構造の勉強も使用としないのか
しかも質問が曖昧すぎて何をやりたいのか分からない、ときたもんだ。
「処理を詰めるコレクション」って何だ? データ構造に関する事なのか?
739 :
735 :2005/08/07(日) 07:23:54 ID:YgzkFRJY
すみません。勉強不足でした。 出なおして来ます。
勉強不足じゃなくて日本語の意味がわからないといっておる
741 :
名前は開発中のものです。 :2005/08/07(日) 16:09:28 ID:gU2cgAEa
いや日本語の勉強不足なんだろ 彼は留学生なんだよ
在日だろ
関数ポインタの配列みたいなものを求めてるんだろ
>>743 すごい理解力だな
だとしても難しく考えず多態がわかればそれでOK
JavaだけでなくC++でもオブジェクト指向言語ならね
C++でも関数ポインタ使うようではお話になりませぬ
commandSeq.add(commandA); commandSeq.add(commandB); ... Command command = commandIter.next(); command.do(); みたいにして敵を動かしたいけど List とか Set とか Map とか色々あって どれ使ったらいいか分らんって話かな?
リストとセットとマップの使い分けができない人間に コマンドをオブジェクトにするなんて高級な発想ができるとは思えん・・・
1.5対応なのかな、その本
>>744 C++でもゲームだと普通にコールバック登録とかに使ってるね、関数ポインタ。
べつのスマートで高速な方法があるなら知りたいや。
C++ならポリモーフィズムでしょ。 関数ポインタ使うなとは言わないけど。
ただC++でおき楽にやるとキャッシュヒットが上手くいかないかな。 保守性と速度とでどっちをとるかなんだけど。
752 :
名前は開発中のものです。 :2005/08/15(月) 16:02:35 ID:UyuTTffG
過去レス読んでたんですがBufferedStrategyとかVolatileImageってJDK1.5のSwingで描画すれば何もしなくても実装されてます?
753 :
名前は開発中のものです。 :2005/08/15(月) 18:16:25 ID:C+etuN6I
Javaインストールさえ出来ない私です(・∀・`) DLのページって英語ばかりで良く分からないし安全かどうかも分かりませんよね(汗;
ゲームとは無関係ですけど static Game gam; と、宣言したもののメソッドを 使おうとしたらNullPointerException が発生してしまうのですが どうしたらよいのですか? staticで宣言したら newとかやらなくても使えるんですよね? もしかして自分間違ってます?
>>755 メソッドの宣言ではないなその書き方は。
フィールドの宣言だとしたら
それを宣言したクラスをHogeってすると
Hoge.gam
でアクセスできる。
ただ、staticにする必要があるかどうかをまず考えた方がいいよ。
758 :
755 :2005/08/16(火) 20:56:19 ID:m8tb6mCH
キャラクラスを作ったんですけど そのクラスを呼び出すコンポーネントをHogeとして static Hoge hoge; と、キャラクラスでフィールド宣言して そのHogeのメソッドを使おうとしてNullが 出てしまうんです。 こんな風にやってるのを参考にしてみたのですが、 キャラを呼び出すクラスをキャラの方で呼び出さないようにします。
>>755 ,758
おまいはすごい変な勘違いをしてる。
public class Test() {
static Hoge hoge;
..................
}
ってなクラスだったとすると、
hogeへのアクセスは
Test.hoge
になる。
でやりたいことは、Hogeのメソッドを使うことだとおもうんだが
その使いたいメソッドはStaticなのか?
たとえばキャラクラスが
public class Hoge() {
private int charPosX;
public int getCharPosX() {
....
}
とかだとすると
必ずhogeにはインスタンスを代入してあげないといけない。
hoge = new Hoge();
さっきのキャラクラスのメソッドが
public static int getCharPostX();
とかならメソッドにはアクセスできるはず。
ただ、Staicだからちゃんと考えて使わないと意図してないことになるぞ。
760 :
755 :2005/08/16(火) 22:31:39 ID:m8tb6mCH
自分の極僅かな理解力に依ると staticな参照型のフィールドの持つ メソッドを使うには、そのメソッドは staticである必要があるということですか?
>>755 ,760
違う。
staticについてかなり勘違いしてるな。
俺の書き方も悪かったかも知れない。
staticなフィールドへのアクセス方法 と
staticなフィールドのメソッドへのアクセス方法 とは別物。
方法は二つあるってこと。
hoge = new Hoge();
としてインスタンス化するか
アクセスしたいメソッドをstaticにするか。
このどちらか。
staticにするって事は、どの他のクラスからのアクセスでも、
参照できる値が同じであって欲しいって事だと思うのだけど、
そういうときはstaticを使わなくても実現できる。
Singletonパターンでググってみなさい。
ちょっと訂正 シングルトンでも内部ではStatic使ってます。
優しいやつがいるな いや、いいことだが
764 :
名前は開発中のものです。 :2005/08/17(水) 00:44:12 ID:K4BMijBi
ふつうは初心者質問スレに行けって一蹴されるもんね。
自分も理解したばっかりだから、教えたかったんだよ!(w
766 :
名前は開発中のものです。 :2005/08/17(水) 07:52:32 ID:aplD8U3k
staticにするのは基本型ばっかりだったから勉強になったよ
>>761 丁寧親切にありがとうございます。
実は初心者スレに最初に行ったのですが
上記の通り下手な質問だったので
まともに相手をされなかったのです。
初心者スレで聞けと思った方すみません。
答えて下さった方重ね重ねありがとうございました。
>>767 staticなメソッドってあまり使わない方がいいよ。
使うパターンは決まってて、
(static) finalな変数と引数だけしか内部で使わないような場合。
ユーティリティクラスとかでは多用する事になるかも。
そうじゃない場合は
volatileとかsynchronizedとかを使うことを念頭に置かないとまずい。
どういうときにこれを使うかがわからないなら
インスタンスを使う方法に統一するほうが変なエラーでなくて楽。
まぁスレッドとか使い始めたら嫌でも覚えるだろうけどね。
ところでうちのVSSサーバが飛んじゃってるんですが・・・・。
どうするんだろう・・・・。
でもゲームだといっそすべて static にしてやろうかと思うことが多々ある・・・
>>755 メソッドもstaticにして、
Game.メソッド
で、エラーが取れるような・・・
がーん シンプルな解決法かと思ったのですが・・^^;
ここは親切なインターネットですね なんか嬉しくなったので記念パピコ 今日、JAVAでゲーム作っていく上で頼もしいサイトが 2,3見つかって気分が良いってのもある
774 :
名前は開発中のものです。 :2005/08/20(土) 06:18:08 ID:JTmhmGeR
その頼もしいサイト、教えてもらえませんか?
完全にGUIクラス独立させてゲーム作りたいんだけど VolatileImageでバッファ処理しようとしたらpaint(g)内で作る分には問題ないんだけど 外で色々しようとするとバグるんだけど、なんで? 他のImage使えばいいんだろうけど、なんだか悔しくて。。。
そのバグったコードと結果かいてもらわんとなんともいえんだろうが
JREがせめてVectorに置いてあればなぁ・・・ JREの開発元がそもそも一般レベルに普及させる気がないみたいだし
>>778 Vectorにソフトを置くとして
そのためのプラットフォームをVector以外に置くというのは・・・
JREはアプリにつけれるんだが 単体での配布はJavaのサイトからのみ許されるが VBのランタイムも同じだべ
ん?VBは普通にVectorにあるじゃない。 PrivateJREって無駄が多くていまいち好きになれないし。 Java版RPGツクールでも作ってJavaそのものを普及させるしかないかな。
まぁprivateJREでなくてもJREは添付できるが Privateは細かいリビジョンで動作が変わる可能性があることを考えると 別に悪い選択肢ではない 特にゲームなら細かい動きに依存するしなおさら public使ってWebStartなら多少細かい設定が可能だけどサンドボックスだと 厄介なことになる場合もあるしな 同人ソフトとか数百Mとかわりとみるし、あまり気にならないかと
>>782 > まぁprivateJREでなくてもJREは添付できるが
マジすか。こりゃ要らぬ心配をしてまった。
> 同人ソフトとか数百Mとかわりとみるし、あまり気にならないかと
まあ置くのはVectorだから紹介サイトに負担はないよね(w
てかJavaのゲームオーサリングソフト開発したいな。
・PropertiesとClass#forNameを使い、画面制御クラスが拡張可能
・クラス、ECMAScript(Rhino)、XML SAXそれぞれでシナリオをスクリプト可能
・クラス、Rhinoのどちらかで機能をカスタマイズ可能
・HypersonicSQLとBase64によるリソースDBMS搭載
※画面制御クラス 戦闘ビュー、フィールドビュー、ノベルビュー、会話ビュー、ステータスビューなど
Javaはダイナミッククラスロードが容易(だからフレームワークが流行り)なために RPGとかSTGとかAVGとかのフレームワーク作るのはいいと思うよ 特定のディレクトリにjar放り込んでURLClassLoaderでロードしてくるだけだし まずはそれらのさらに下で動く描画とか音楽とかの薄い汎用のフレームワークを作ったほうがいいかも 本当に自由なスクリプトに関しては次バージョンでECMAscriptが実装されるからそれをまてばいいね HSQLDBはゲームに組み込むのには一番楽なサイズかな たぶんRPGやAVGあたりだとデバッグが容易になるかも 他の環境だとXMLでいいかな HSQLDBはJDBC2の構文が通らないからちとアレかもしれんがサブクエリーは便利 SAXに関しては勘違いしてないかい?
>>784 いろいろ有益な情報thx
共同開発者集められるくらいの基盤は作ってみるよ。
> SAXに関しては勘違いしてないかい?
タグ開始とテキストとタグ終了でXMLを解析するAPIだよね?
調べなおしてパースを一時停止出来なさそうなのには面食らったけど
それでも街やシナリオのインスタンスをレンダリングするには便利だと思う。
デバッグ中は逐次レンダリングして、リリースはレンダリング済みのをDBへ。
エンドユーザが情報交換しやすいフォーマットが他に思いつかない・・・
786 :
名前は開発中のものです。 :2005/08/20(土) 21:14:34 ID:hX3UwIsl
すごく初歩的な質問かもしれませんが、今、携帯のアプリを作ろうと思っています、、 携帯会社(NTT DoCoMo)のサイトを見ると何かソフトがいるようなコトがかいてあります、 JAVAだけで作ることは可能でしょうか??。。
確かに携帯のアプリもJavaだ だがそれはJ2MEといってPC用のJ2SEから機能を省いたサブセット ライブラリや使える機能を抑えたコンパイルをして吐き出させるもの 追加で必要なのはライブラリとシミュレーション、ドキュメントだが、これらもちゃんと用意されている プログラム板にいけばiアプリのスレがあるのでそちらでどうぞ
788 :
786です、、 :2005/08/20(土) 21:53:20 ID:hX3UwIsl
787>ありがとうございました。。 なにしろ、0から始めることなので、、
JPanelのFPSを保つまた表示するにはどうすればいいでしょうか。
すいません。Javaスレと誤爆しました。
791 :
名前は開発中のものです。 :2005/08/26(金) 22:24:25 ID:OqoSkLef
VolatileImageってスプライト用途では使えないってことですか?
分からない人は描画先にだけVolatileImage使えばいいよ スプライトはBufferedImageでもJ2SE5.0からはかなりの場合アクセラレーションがきくようになってる 1.4時代は100%スプライトに使えないと思っていい 5.0はコツがいる
>>792 あ、5.0ならできないこともないんですね。
それはシューティングに手を出しても高FPSが実現できるのでしょうか?
FPSが格段に向上するなら教えて頂きたいです。
無茶をしなければBufferStrategy&VolatileImage(offscreen)で十分なのでしょうが。
BufferedImage>VolatileImageでも秒間1万スプライトとかでるよ VolatileImage>VolatileImageをやるためにはピクセルフォーマットをあわせて転送元にBITMASK指定 逆にDirect3DでのアクセラレーションはVolatileImage同士かつOPAQUE指定のみ+オプション指定 Direct3Dはレンダリング品質に問題があるために現状では使い物にならないからやらなくていいよ クリッピング処理に問題があるけどこれは1.4からかわってない 1.4では透過がまったく出来なかったけどね 分かりやすくまとめると 通常のDirectDrawによるアクセラレーションはカラーキーだが Direct3DではAlpha値を使う、というのがわかれば自然とどういう指定が有効かわかるだろう 5.0ではOpenGLアクセラレーションができるようだが、ハイエンドのチップじゃないと動かないので 現状まったく意味を成さない WindowsでのOpenGLのようにアクセラレーションが聞かない部分はソフトウェア描画とかやってくれない模様
>>794 貴重な情報ありがとうございます。
環境依存に陥るのは勿体無いですね。
知識としてはしっかり抑えておこうと思います。
敵をベジエ曲線で移動させようと思ったのですが 敵の位置があらぬ値を示すのです。 計算式間違ってますか? int p0x=0,p1x=0,p2x=800,p3x=800; int p0y=600,p1y=0,p2y=0,p3y=600; //制御点四つ。数値は画面サイズ縦六百横八百 float move;//t:1-tのtに位置する。
public void move(){ int p4x,p5x,p6x; int p4y,p5y,p6y; p4x = (int)((p1x-p0x)*(move/100)); p5x = (int)((p2x-p1x)*(move/100)); p6x = (int)((p3x-p2x)*(move/100)); p4x = (int)((p5x-p4x)*(move/100)); p5x = (int)((p6x-p5x)*(move/100)); glx = (int)((p5x-p4x)*(move/100)); p4y = (int)((p1y-p0y)*(move/100)); p5y = (int)((p2y-p1y)*(move/100)); p6y = (int)((p3y-p2y)*(move/100)); p4y = (int)((p5y-p4y)*(move/100)); p5y = (int)((p6y-p5y)*(move/100)); gly = (int)((p5y-p4y)*(move/100)); //glxglyは画像の左上隅 move++; movehp(); hami(); System.out.println(glx); }
最近、Javaを勉強し始めたものです。
便乗ですみませんが、
>>797 のコードでは
(move/100)を各行で計算していますが、
これを
float pos;
pos = move/100;
p4x = (int)((p1x-p0x)*pos);
p5x = (int)((p2x-p1x)*pos);.
.
.
.
とした場合では実行速度に差が出るのでしょうか?
よろしくお願いいたします。
ローカルでの計算なら最適化の過程で綺麗になるけど 場合によってはメソッド呼び出しの速度がネックになる場合もわりとでるよ 所詮は頻度だけど 1フレーム内に100万回以上呼び出すかどうかが境目かな それ以下ならさほど気にならないかな
801 :
799 :2005/08/28(日) 14:10:11 ID:KSVPBhMr
>>800 やはりこの程度ならコンパイラ側で
対処してくれるのですね。
ありがとうございます。
Javaの場合コンパイル時と実行時で最適化が入るから 単純にこううごくとは言い切れない部分はあるけど、Cのように静的なだけだと GCやらなんやらが派手に動いてこの速度はでなかっただろうね
>>799 あとでコードを書き直すときに(たとえばmove/200に変更したいとか)
一カ所だけを変更すればいいから、開発がラクになる。
個人的には何度も使う変数は明示的に一カ所だけで計算しておくのが好み。
NetBeansで作ってたけどJFrame使う意味ってあんまりないって気づいた。 使うコンポーネントはひとつしかないんだもん。当然か^^;
Frameよりは融通が聞く分JFrameでいいかと
ああ、NetBeansでのGUIデザイナのことか アレは使わなくていい NetBeansの利点はやはりプロファイラだろう どのメソッドがネックになってるかとかわかるのは シビアなタイミングを要求されるゲーム作成時には非常に有利だ
>>805 GUIデザイナを使う意味がないってのももちろんだけど
paintComponentよりpaintを弄ったほうが早いんじゃないかなと
変わらないのかな?フルスクリーンにしたとき余計なものがあるのは怖い気もする
いや、ゲームではpaintイベントは使わないんだよ
1フレームごとにbs.show()ってするのでは? あれはpaintを使わないのか
その書き方は使ってないね
へー。じゃあJFrameでぜんぜんOKだね。 しったかしてレガシーに走るところだったw
自前での描画タイミングの場合setIgnoreRepaintを設定しておくといいかも
うーむMP3が使えないというのは結構痛いかも知れないなぁ MIDIをBGMに、WAVをSEに使えば問題ないんだろうけど MP3で全て賄いたい人も中にはいるよね
つーかMP3もつかおうとおもえばつかえるけど、ライセンス問題が絡む そしてライセンスがうるさくないOggが一番簡単に使える環境なんだから それでいいのでは? 俺は音楽はOggVorbis、効果音はWAVだ
>>814 ogg良さそうです。完全にフリーで同梱できるなら文句無くコレかと思いました。
これ落としてきてって感じに落ち着くなら今回はパスって感じでした。
もちっと調べてみます。
816 :
名前は開発中のものです。 :2005/09/03(土) 11:37:46 ID:lKpzKBXs
eclipse上で実行してるときとjarで実行するときの結果が違うんですがこれはデフォルトですか? たとえば、midiを再生したときの音量が違ったり、実行速度がjarの方が早かったりします。
実行してるJVMが違うんだろ 調べてみれ
midiってことはサウンドバンクが違う可能性がある 使ってるVMのサウンドバンクをみてごらん
819 :
名前は開発中のものです。 :2005/09/03(土) 20:49:51 ID:lKpzKBXs
d eclipseでは5.0だったんですが、jarで使ってるのは自動アップデートされたやつでした。 両方とも同じのにしたらちゃんと同じになりました。
820 :
名前は開発中のものです。 :2005/09/03(土) 20:55:23 ID:lKpzKBXs
というかJREの違いでこんなに違うのか・・・ 古いJREだと音が鳴らなかったりするんで困るな。
古い新しいは関係ないと思うぞ JDKいれるとサウンドバンクは入るが、JREには1.3を最後に収録されていない どうせ5.0はとんでもなくでかいのだから入れても罰は当たらないだろうに
822 :
名前は開発中のものです。 :2005/09/03(土) 23:58:54 ID:lKpzKBXs
スマソ 音ってのはmidiじゃなくてwavのことでした。なんかJRE5.0だとWAVを連続再生すると鳴らない場合もあるんだけどJRE5.0update4を入れたらちゃんと鳴るようになったから。
823 :
名前は開発中のものです。 :2005/09/04(日) 00:00:07 ID:lKpzKBXs
また誤解するような書き方してしまったorz
最初の質問はmidiのことでしたが、
>>820 の音はwavを指しているって意味です。
J2SE5.0の更新内容見てみれば分かるけど update2だったかでJavaSoundのバグ修正が入ってる 俺も古いJREだと不具合でてた
java.exeとjavaw.exeでも実行結果が違う罠。
俺は実行結果がwつきでかわったことないなぁ
コンソールが出る、出ないとか?
BufferStrategyを使って画面を描画する場合は Insetsを利用してクライアント領域を割り出すしかないのでしょうか? JWindowをcontentPaneにaddすると例外を出して叱られてしまいます。
元々BufferStrategyはページフリッピングが使えることから フルスクリーンモードでタイトルバーを非表示状態で使うものだからね ウインドウモードだとその設定は必要 最後の一行の意味がようわからんが
>最後の一行の意味がようわからんが JFrameの中にJWindowを埋め込めばクライアント領域にぴったり合ってくれるかなと。
831 :
名前は開発中のものです。 :2005/09/17(土) 20:54:12 ID:PBk0YJc+
javaでゲームを作る場合、どのコンポーネントに描画するのがいいでしょうか? アプリケーションでバージョンは5.0です。 フルスクリーンは考えていません。
フルスクリーンにする必要がないということはティアリングがでてもいいような アクション要素のないゲームということで何でもいいと思う 一番楽なのはJFrameに推奨サイズを指定したJPanelを貼り付けて JPanelからGraphicsを取得して描画 わからんようだったらゲーム用ライブラリとかさがしてくるのもいいかもね
緻密な差分描画をするのが辛いな・・・ 軟弱だけど毎フレームフルにレンダリングした方が良いのでしょうか
差分描画考える必要はないよ ゲームってことは一定レートで描画し続けると思うし
835 :
名前は開発中のものです。 :2005/09/17(土) 22:55:03 ID:PBk0YJc+
>>832 お答えありがとうございます。
作ってるのは思いっきりアクションゲームだったんですが・・・
ちらつきってでますかね?
一応ダブルバッファリングはしてるんですが・・・
ティアリングは垂直同期取らない限り必ず出るよ ウインドウモードとフルスクリーン両対応のゲームやってみればわかる
>>834 どもです。これで安心してループを回しまくれます。
5層レイヤーを仕様としていたので、どうしようかと思ってましたw
キー感度をビビットにするために、TimerTaskを専用に設けたいのですが 連打する人の都合を考えると、キーに対してフラグではなく、 キーそのもののTimerTaskが必要な気がします。 これだとキチガイ染みたnewの連発になってしまいそうなのですが 他にもっと上手い方法はありませんでしょうか?
ビビットというものがわからんがキー単位で状態もつと問題ある? WindowsをメインターゲットでXな環境でもそれなりにうごけばいいというのなら だいたい大丈夫
「キー感度をビビットにする」というのは 押しっぱなしにした場合の次のkeyPressの間隔を OSではなくこちらで管理しようという試みです。 (OSは押しっぱなしフラグが立つまでが長いため) ただ全てのkeyStateをひとつのループで探査すると 押しっぱなしの場合の2回目keyPressは わずかながら探査の間隔分遅れる可能性があります。 探査間隔そのものが数十ミリ秒レベルの精度なので ある意味問題ないと言えば問題ないのですけどね。
keyPressedってそんなにおくれてやってくる? 俺60fpsでやってるけど問題ないが そもそもOSを超えて自前でキーステート取得なんて出来ないわけだが
押しっぱなしかどうかを判定するのは遅いよ
ん? プレスもらったらフラグ立てるだけだよね?
>プレスもらったらフラグ立てるだけ 毎フレームでキーフラグを見るループで処理する方法ですよね? それは低FPSを考慮してキー入力専用のタスクを作って実装しています。 今は低スペックのマシンで高頻度のループを回す事を危惧しているので それを避け、OSの押しっぱなし処理を利用してkeyPressに直接処理を書くことを試しました。 ただこれだと2回目の押しっぱなしが遅く気になるといっているんです。
だから「OSの押しっぱなし処理」これってなに? 具体的なコードがないとなんとも フラグを見る方法は60fpsでまったく問題ないんだが これ以上のfpsが必要とされる場合はそうそうありえないと思うんだが
>>845 逆、低FPSだから問題。
テキストボックスでキー押しっぱなしにすればわかります
キーリピートのことかな
なんでキーリピートがここででてくるんだ
>>847 そういう用語なのですか?たぶんそれだと思います。
で、結局キーリピートの方法はキー感度をこちらで弄れないので
キー毎にタスクを持たせる方法はどうかという話になりました。
キーリピートを実装したいってことなのか?
一回押して、押しっぱなしの状態で、一定時間たったら、もう1回押したことにするってことだよね?
>>850 そうです。低FPSで一定のキーリピートを実装したいんです。
だからkeyPressed()でフラグを立ててkeyReleased()でフラグ降ろせばいいじゃん
ゲーム用途でキーリピートが欲しいってのは珍しい用件だから さすがに想像してなかったな どういうところで使うんだろう キーリピートが邪魔というのなら分かるが
>>853 それはやっています。
のんびりとしたキーループではタイミングにずれが出るんです。
>>852 予想してみるに、Timer使って、一定期間ごとの処理のときに
KeyStateのチェックでもしているんだと予想してみるが
(まぁ、自分がこれをやって、押すタイミングによって、
ムダ連打になったり、ならなかったりで、どうにかしたいと思った経験アリな訳だが
どうやって解決したかは忘れた。)
まぁ、複雑になってくると、あんまりTimerは向かないってのが一つ。
>>854 RPGのでいうコマンド位置の移動や
アクションで武器毎の連射速度の調整などです。
>>857 そういうのは入力側をいじるのではなくて
ゲームのシステムなりがやるものだとおもわれ
□←何もなし時間 ■←TimerTaskの処理 P←Press R←Release つまり □□■□□□□■□□□□■□□・・・て風に定期処理するプログラムのときに □□■P □□R ■□□□□■□□←だと4□時間、押してるのに1回 □□■□□□P ■R □□□■□□←だと3□しか押してない(チョイとしか押してないつもり)なのに連打になってしまう ・・・って、ことだと思う。
とりあえず、押されたらそのキーのクラスのPressed()とか呼び出して、isPressed=trueの間ループさせて 前の時刻から、一定時間たったらリピートが、良さそうかな。
ループでまわさないRPGでのコマンドとかならイベントでやっといたほうがええよ デザインパターンとか多少目を通したほうが楽かもね
こんな感じでそれぞれの処理を隔離したいんです。
これでキーリピートができると再利用性が向上して作りやすいんです。
・入力処理による行動キューへの書き込み
・メインループによる行動判定処理及びメモリスクリーンの更新
・FPSループによるディスプレイへの描画
>>860 キー判定ループを1つにするかキー分用意するかの違いなんですけどね。
キー判定ループを押される度に生成ではなく、押されるまで寝かせるとかだと改善するのかな
>>861 デザパタですか。なんちゃらファクトリーとシングルトンならよく使います。
なんちゃらって答えてる時点で分かってないって事なんですがw
>>862 リアルタイム系ではなくいわゆるウインドウシステムみたいなものを作りたいようだから
ディスプレイへの描画はループさせる必要はないよ
>>863 いや移動処理とかあるので描画ループは必要です。
もちろんトリガ式の描画モードも実装する必要はありますが。
移動処理もループさせなくてもイベントで処理できるよ たとえば現在のモードが戦闘モードなのか移動モードなのか判断してまわすだけ たとえばマス単位で動くなら動いた後にはキーイベントキューをクリアするとかの処理が入ればいいだけ たぶんゲーム作りなれてないのならループ処理よりこっちのほうがやりやすいかもね
javaじゃないけど、el.h(イージーリンクライブラリ) からそのへん学んだ。変数にフレームごとの状態を記録しておく。
それはまだわからない。 5.0から一応OpenGLレンダリングできることになってるけど、イマイチだし Windows環境ならDirectDrawやDirect3D使ってレンダリングできる。 オプションとか描画の種類とか多少知識が必要だけれども。 Imageの通常転送に関してはDirectDrawで安定して高フレームレートでてるよ。 SDL並みといっていいのでは?
現在通常ウィンドウとフルスクリーンを交互に表示すると1MBくらいのメモリリークをします。 その後アプリを最小化するとそのメモリリークしたメモリが一気に回復するのですが このリソースの回収を表示モードの切り替え直後に行う方法はないでしょうか?
>>869 System.gc()じゃだめ?
現在通常ウィンドウとフルスクリーンを交互に表示するプログラムのコード断片希望
public void setVisible(boolean b) { if (b == isVisible()) return; if (b) { if (isFullScreen) { if (alreadyFullScreen) return; final DisplayMode mode = new DisplayMode( screenWidth, screenHeight, 16, DisplayMode.REFRESH_RATE_UNKNOWN); if (isDisplayable()) dispose(); setUndecorated(true); super.setVisible(true); createBufferStrategy(numBuffers); device.setFullScreenWindow(this); device.setDisplayMode(mode); alreadyFullScreen = true; } else { if (!alreadyFullScreen) return; if (isDisplayable()) { device.setFullScreenWindow(null); dispose(); } setUndecorated(false); super.setVisible(true); createBufferStrategy(numBuffers); alreadyFullScreen = false; } } super.setVisible(b); }
あ、インデントが・・・
>>870 gcではびくともしませんでした。
ソースですが、isFullScreenを切り替えた後で
setVisible(false);setVisible(true);とすれば切り替わるようになっています。
createBufferStrategy(numBuffers); が一見無駄に見えますが
これはコメントアウトしても何の影響もありませんでした。
よろしくおねがいします。
そういやNetBeansで開発してたときもフルスクリーンに変えるとなぜかIDEのほうがリークしてたの思い出した たぶん仕様っぽいけど表示のON/OFFでdispose後再構築とかやらんとだめっぽいな 一見問題ないようでもネイティブのリソースであるVRAMを扱うのは ヒープのように単純にいかんよな いまじゃJava2DもDirectDrawでガンガンアクセラレーションされてるから
最小化を噛ませれば楽に対処できそうなんですよね。 最小化してから通常化に戻すというのをコードから書けるならですけど。
最小化とか普通にかけるだろ
え?書けるの? dispatchEventっての使ってみても何も起きなかった
setExtendedStateじゃダメなのか?
>>877 2日ぐぐったのに見付からなかったorz
リソースの開放も確認できて無事解決しました。
ありがと。
879 :
名前は開発中のものです。 :2005/10/09(日) 17:11:50 ID:fwcbNJiA
Java1.4以降ではダブルバッファリングがVolatileImageを使って自動で行われるそうなんですが、その場合は自前でダブルバッファリングの処理を書かないほうがいいんでしょうか? 1.4より前のバージョンを使ってるユーザのためにやっといたほうがいいんでしょうか?
自動で行われるってせいぜいSwingくらいじゃないか? 自分で処理かかないとダメだよ それにページフリッピングできるのは1.4以降だし
881 :
名前は開発中のものです。 :2005/10/09(日) 18:23:24 ID:fwcbNJiA
Swingらしいです。JPanelのpaintComponent()に描画処理書けばダブルバッファリングしなくてもちらつき起こらないんでどうかと思ったんですが。
ゲーム作成でSwingのダブルバッファを利用ってのはあまりありえないと思う まぁRPGとかAVGならありだけど あとかならずVolatileImage使われるともかぎらないから 速度とか考えたら自前でやったほうが管理は楽かもよ フルスクリーンや垂直同期フリップが使えるし
883 :
名前は開発中のものです。 :2005/10/09(日) 19:04:43 ID:fwcbNJiA
SwingのJPanelは使わないってことでしょうか? SwingのJPanelをキャンバスにしてpaintComponent()を使わずに自分でダブルバッファリング書く+アクティブレンダリングというのが一般的ですか?
いやいやいやいや、ここでもちょくちょく出てる戦略があるじゃないですか。
まずは一旦このスレをよんでみなされってことだな
このスレってJava関連とは思えないほど みんな親切だよね
おお、こんなスレもあったとは!
888 :
名前は開発中のものです。 :2005/10/11(火) 18:22:49 ID:mGlNrdBg BE:601908697-
ゲームのプログラミングのために覚えときゃならない言語ってなんですか?
889 :
名前は開発中のものです。 :2005/10/11(火) 18:24:29 ID:mGlNrdBg BE:95541252-
やっぱりJAVA?
JavaでもCでもなんでもいいから言語を一通りマスターするのがいい あとはその言語の思想とか癖をおぼえるだけ ただ、最低限の基礎はほしい 2の補数とか通じないのが最近多いんよ
Java→C++がお勧め 俺の場合はN88Basic→C→C++(挫折)→Perl→Java→C++ と勉強した。
892 :
名前は開発中のものです。 :2005/10/11(火) 20:11:11 ID:xz1uAK9j
とりあえずJavaでいいと思いますよ。 2年後には、携帯JavaもCLDCからCDC(Java SEのサブセット)が標準になる と言う話しだし。Javaは絶対に今後ブレークwする。 その次はコンパイラの勉強とか。
>>891 私は最初の言語がC++で就職してからやって、難しすぎてびびりました。
基礎は研修中(2ヶ月程)に何とか身に付けたけど。
UMLやれ。他の言語はイラン。 ちなみに、コンパイルは方法このスレにうp、多分たまに成功。
Java → C/C++ → PERL → Lisp(Python) → Python(Lisp) ハッカーおすすめの言語習得コースが確かこんなだった
UNIX ハッカーコースだな。 ゲーム系の場合 Lisp はやっといても損ないけど Perl と Python は飛ばしてもいいと思われ。
DB勉強しておくとなぜかオブジェクト指向ってのが分かりやすかった。
898 :
名前は開発中のものです。 :2005/10/12(水) 18:24:13 ID:1b0t0Zmx BE:401272676-
皆さんありがとうございました!!m(__)m もう1つ質問ですHSP(多分あってる??)ってゲームのプログラミングに必要なんでしょうか? ゲームのプログラミングに特化(言葉あってるかな?)してるらしいけど…
?? ホット・スープ・プロセッサ"HSP"でぐぐるべし。
Javaの2DゲームPGなら 「Javaでゲーム作りますが何か?」を読むのが一番早い。
低級言語 BASIC HSP ↑楽、ショボいプログラム向け 高級言語 C パスカル ↓複雑、大規模プログラム剥け 至高言語 C++ JAVA
HSPはさすがにスレ違い
904 :
名前は開発中のものです。 :2005/10/12(水) 22:15:33 ID:+pi2ltxj
HSP今コンテストやってるみたいだね 作品見ると結構すごいのあるな
905 :
名前は開発中のものです。 :2005/10/12(水) 22:56:10 ID:1b0t0Zmx BE:343948166-
やっぱりJAVAがいいみたいですね ありがとうございました
906 :
名前は開発中のものです。 :2005/10/13(木) 00:10:54 ID:YlI0WJBy
>>905 待ってくれ。
真面目に書き込んでる様だけど、
ゲーム作るのなら、JAVAは完全に場違いだよ・・・
場違いはおまいだ ばちがいというよりバカチンだな
>>905 俺も
>>906 に同意。
みたところ
>>905 はプログラム初心者だと思うんだが
ゲーム作るのにいきなりJAVA勉強しだすってのは
なんか違う気がする。
とりあえずここではなくてスレ立てる前に質問スレを読むべきかと。
このスレの名前を言ってみろ
910 :
名前は開発中のものです。 :2005/10/13(木) 00:37:10 ID:5vxaNiGa
確かにそうだな
>>905 は、まずはHSPぐらいからはじめた方がいいかもね
ゲーム向けと思われるようなフレームワークもHSPの数倍は揃ってると思うけどな。 問題はこの方面の日本語ドキュメントがすごく少ない事で。
>>909 JAVAでゲーム作成。
え、でもJAVAがゲームつくるには最適だぜVBなんて糞!って
そんなスレじゃないよね?JAVAでゲーム作ろうぜスレだよね?
え、漏れスレ違いだったのかずっと(´・ω・`)
HSPはWindowsAPI on BASICだからJavaよりは融通が聞くよ 6.0からは3Dにも力を入れるらしいから、Javaを捨てる機はないけどね
>>905 JAVAは、現在ではサーバーサイドのソフトウェア開発の為の言語ですので
ゲームには不向きです。
とりあえず絵を表示するのはらくだから
Javaは初心者には敷居は低いと思うけどな
無料だし
>>914 フルスクリーン可能とかDirectXやOpenGL使って描画されるとかしらんのだろうか
いやさすがに釣りだろ
なんか Javaを使ってすばらしいゲームが作れる、 Javaはゲームを作るのに十分なパフォーマンスがある ってことと、 Javaは初心者がゲームを作るのにお薦めできる言語 Javaは習得しやすい言語 を、 ごちゃ混ぜにして話しているやつがいるなぁ。 Javaを知っている人間がゲームを作るのにはいいのだろうけど、 初心者がゲームを作るためにJavaを覚えるのは効率悪いと思うがなぁ。 将来プログラマ(ゲームではない)になりたいのなら話は別だが。 ゲームを作るってことが主目的ならもっといい言語は別にあると思うが。
918 :
名前は開発中のものです。 :2005/10/13(木) 21:32:24 ID:sZ94hCLx
Javaが習得しやすい言語じゃなかったら どんな言語が習得しやすいんだろう
どうでもいいが、このスレは言語を探すスレではなくてJavaを使ってゲームを作成するスレだぞ
うむ。 他言語で作成したいヤシはその言語専用のスレへ池ということで。
922 :
名前は開発中のものです。 :2005/10/13(木) 22:46:23 ID:sZ94hCLx
JavaはつぶしがきくけどHSPはつぶしがきかないような気がする。就職にそなえるならゲーム作れてそれ以外にも役にたつJavaを覚えたほうが一石二鳥じゃないかな。HSPは履歴書に書けないらしいしね。
ゲ業界以外の就職は板違いだがな ゲ業界は java でもダメよw
別にどこに就職してもいいが、Javaでゲーム開発する話以外は該当するスレで
とりあえず言語関連ですぐに就職の話を出すのはやめたほうが良いと思う。 スポーツする人がみんなプロを目指すわけじゃないのと同じなんだから。
C++を勉強する前段階に、Javaを勉強するのはいいと思うよ。 プログラミングしたことがないのに、C++をやろうとすると多分挫折する。
自分以外でも多いと思うけど ゲームやある程度規模の大きなプログラムの場合 まず先にJavaでプロトタイプを作る事が多々ある 速度なんか度外視でバグを出さずに動く事を実証したり クラス設計やデータ構造を練る事がことが主眼 で、この完成したプロトタイプをC++へ移植する段取りだと開発効率が凄く良い で、このプロトタイプの動作性能で全く問題ないって事が判明して 面倒になって移植を中止する場合も多いよ だからとりあえずJavaを極めて、それで満足できなかったら他に移ったらいいかも
>>926 挫折はせんがWinAPIでGUI作るとノイローゼになる。
JavaはRADにも対応し始めてきたからアプリも行けるようになったね。
>>927 へー。参考になるな。
>>928 俺はC#やってJava勉強し始めたけど、色々似てるから楽かも。
RAD対応が遅れててなんかなーて感じだが、、。
C#のwebサービスやサーバーサイドJavaをゲーム開発環境構築に役立てたいナーと
漠然と思ってるんだが、トライしてる人いる?
ゲームアプリそのものはC++でいいじゃんと思ってる。
JavaのRADって8年以上の歴史がないか?
VBのようなポトペタをRADと呼ぶんだろう、
>>929 は
NetBeansとか試してみたらいいよ。
JBuilderってSwingくるまえからポトペタだったはずだが
>>927 漏れのところではPythonでプロト作って、
Javaで実装というパターンが多いかな。
あ、ゲームじゃないけどね。
Swingは手書きでもサクサク作れるので実はSwing自体がRADなのです。
937 :
名前は開発中のものです。 :2005/10/14(金) 21:49:47 ID:ydWCAyTF
JavaはEclipseがあるから最強。 Visual C++も書いたその場でエラー見つけて表示させられないし。
.NETなら表示してくれるんじゃないの? NetBeansも昔から書いたその場でエラー表示してくれてたよ Eclipseだけの特権ではあるまい しかしスレ違いが続くな
>>934 その通りw
で、結局どれが良いのかな?
NetBeansは初心者向けと書いてあったので、やってみるか。
上級者はRAD使わないて事かね?そういうもんか?
まあ、開発環境の話題はゲーム製作と全く無関係ではないと思うよ
上級者向けとか初心者向けというのは間違いだと思う GUI生成ツールとしてNetBeansは昔から現在でもJavaの中では最高品 Eclipse+VEとか話にならん そして肝心のTomcatとかWEBアプリやDB接続等はEclipseいれても いつもおなじプラグインしかまずつかわんよね なら最初からGUIエディタとWEBアプリ開発環境が整っていても問題はない しかもほとんどのEclipse本はそれらのプラグインをセットアップしたところで終わりだ ゲーム製作においてはなんのIDE使ってもいいとは思うけど、Windows95初期のRPG とかOSのコンポーネント使ってるのが多かったからそういうのをやろうとしたときは Swingが強力なNetBeansでいいだろうね 強みとしてはNetBeansのほうが最新のJava環境に対応しやすいということかな コンパイラにJDKのを使うようにしてるからね Eclipseの3はかなり遅かったでしょ? Javaでのゲームは最新のVMに対応してるかどうかはわりと重要 あとはプロファイラが簡単導入できるのでどこが速度のネックなのかをすぐに特定が可能なのも強みかな
今書店で勉強できる本やWebの情報が一番多いのもJavaでしょ。 初心者が入門用に勉強する言語に一番向いてると思うよ。
ゲーム作る奴にはHSPを勧めるね。 ただしHSPは入門言語としてはとても薦められない。 くそプログラマ育成ツールだと思う。
>>942 あれはあれでそれなりにいい言語だよ。
ただ、今は他の言語でも充分に環境が良くなっているのでアドバンテージは低下してる。
目的に応じて道具を変えられない人にはすすめたくないってのは確か。
ところで、Javaでゲーム作るときってどんな環境使ってる?
944 :
名前は開発中のものです。 :2005/10/15(土) 11:26:31 ID:RjGSFxGd
Eclipse
CPadとバッチファイル(コンパイルと実行用)
netbeans
まず最初はソースまるなげなんてしないで問題ありそうな箇所だせや んで、ちらつきあるか? たんにキャラが小さいのと垂直同期とってないからだけじゃないかな? ためしに640*480にきえりかえて2倍拡大したキャラを表示してみるとか あと作業用VolatileImageは最初に作るだけにしておけ 描画のたびに作っていたらもったいない
>>949 d
実行してもらって本当にちらついてるか確かめてほしかったので丸ごとあげました。自分でもちらつきあるかないか微妙だったんで。画像大きくして試してみます。
>>949 拡大してみましたがやっぱりちらつきはないようです。画像の模様のせいでちらついているように見えるだけのようでした。画像を別のにかえたら直りましたorz
ありがとございます。
952 :
名前は開発中のものです。 :2005/10/15(土) 21:21:17 ID:RjGSFxGd
836 名前:名前は開発中のものです。 [sage] :2005/09/17(土) 22:59:55 ID:l8JeEDP1 ティアリングは垂直同期取らない限り必ず出るよ ウインドウモードとフルスクリーン両対応のゲームやってみればわかる
垂直同期ってのはBufferStrategy使えってことですか?
>>954 ここでいうちらつきというのはティアリングのことをさしてるわけじゃなくて
キャラクタが小さい上にピクセル単位で交互におくような画像を使ってるから
変に見えるというやつだ
ティアリングはウインドウモードじゃ解決できないだろ
Javaでゲーム開発する人は、互換性を考慮して100%PureJavaにしているのでしょうか。
そうでないとJava使う理由がないっぽ ほんとに互換性があるかどうかはまた別問題だが
>>957 個人的には、PureJavaというより、
様々なOSで動かすことが出来るように作成している。
クロスプラットホームなネイティブライブラリに、
SDL、OpenGLがあるけど、
こういうライブラリは、ラッパーライブラリ経由で普通に使うことも多いよ。
960 :
957 :2005/10/18(火) 00:45:59 ID:bZC650OK
>>958-959 なるほど、ありがとうございます。
ゲーム開発に興味はあるものの、
Servlet&JSPばかりでGUIの経験はVBぐらいしかなく、
クロスプラットホームを保てるJavaで学んでいくべきか、
Windowsと割り切ってVC++、VC#で行くか、悩んでるのですよね・・・。
まあ、どの言語で行くにしてもまずはクラス設計からだと思うので、
言語は追々決めていくことにいたします。
961 :
名前は開発中のものです。 :2005/10/18(火) 01:15:15 ID:xwcI4XH7
IDかっこいいな それより先ず何を作るかだと思うが 3D不要ならPureJavaで良いのでは
962 :
957 :2005/10/18(火) 01:38:59 ID:bZC650OK
>>961 確かにカコイイIDだなあ。
3Dは・・・エフェクトとしては使用するかもしれないのですが、
スプライトでカバーできるのかも知れません。
PureJavaも含め、一度検証用(兼勉強用)の簡易ゲームを作ってみることにします。
仕組み作りも大変だとは思いますが、ゲーム本体に着手するよりはずっと楽でしょうし。
SDLはJavaでラッパー使ってやるくらいならPureJavaのほうがいいぞ 機能が貧弱でCでよくつかうようなOpenGLとかの連携とか未実装だったはずだが サウンドにしてもSDLミキサーよりJavaSoundのほうが融通が利く
OpenGLサポートされたのか 俺が触ったときはOpenGLプロバイダがごっそり将来実装予定となってたが ミキサーは標準実装されているけど使い物にならないのは本当
967 :
名前は開発中のものです。 :2005/10/20(木) 23:51:29 ID:oGtX14sN
MEは若干板違いっぽい・・・
968 :
名前は開発中のものです。 :2005/10/21(金) 04:14:32 ID:MjnK+wiF
今、PureJavaならどのぐらいのゲームまで実現出来るんだろう。 ・WinDepth ・洞窟物語 ・東方紅魔郷 ・Civilization3 ・RainbowSix(初代) ・HalfLife(初代) と並べてみたとして・・・
2Dだったら拡大縮小とアルファブレンド使わなければいける 3DはPureJavaだとソフトウェアレンダリングになってきついとおもわれ
ぶっちゃけ完全自由変形とαブレンドがないとかなり作り辛い。 まあ、αはなくてもいいか。透過色サポートしてれば。
>>969 あーこのリストのがJavaで作られてるわけじゃないのかorz
洞窟物語って面白そうだなと思った
973 :
969 :2005/10/22(土) 13:40:08 ID:Ez07novY
>>970-971 αブレンドは厳しいですか。
タイルを使えばある程度はカバーできそうですけど、
MSXやPC98の16色時代っぽくなりそうですね。
>>972 違います・・・
誤解させて申し訳ない。
このリストの中でどんなものなら実現できるか、の参考程度にでした。
下3つは商用ですが、グラフィックに限ればCiv3程度は可能なのかな・・・
洞窟物語は個人的に好きなフリーウェア。
プログラム面は独自のソフト音源以外はJavaでも可能なレベルかと思います。
絶妙なゲームバランスとか練り込みとか、センスとか、そういう部分は全く別にして。
上4つまでならPureJavaで余裕かと アルファブレンドは一応Java2Dで用意されてるけど、ゲームで多用する加算合成がないのだ しかも現在アクセラレーションがきかない どれだけのレンダリング範囲が必要かわからないけど小さいサイズであればソフトウェアでできる 神威やFinalForceって8bppでレンダリング範囲を狭くしてソフトウェアアルファブレンドしてるけどね そういうのでいいのならJavaで余裕で可能かと 16bppe/640*480とかだときついね アクション性が合ってそれなりにいじる場合320*240で作ってそれを640*480に引き伸ばすのと 640*480でそのまま描画するのとどっちが速いかテストするとよろし アルファブレンドはいらないのであれば後者のほうがすべてアクセラレーションきくから速いね
975 :
名前は開発中のものです。 :2005/10/22(土) 16:51:37 ID:GrmBRuwE
TIGERでゲームを作る為のAPI解説本とかないかな。 JAVADOCだけじゃ目的の物を探すのが大変だし、 正しい選択かわからないし。
基本的には5.0からゲーム作成で大きく変わったことはないぞ 1.4に比べてね 一番大きい変更点はいままでアクセラレーションが利いてないコードが きく可能性があるようになった>何もし手ない人は速くなるかも というのと JavaSoundが利用しやすくなった という点だけかと
BufferedImage、VolatileImageのメモリ消費量が、 もう少し改善されると最高なんだけどなぁ... これは、Mustangに期待かな。
VolatileImageは現在のピクセルフォーマットに依存だぞ BufferedImageだってピクセルフォーマットによって大きく変わる そういや、5.0でVolatileImage>VolatileImageの転送がやっと使い物になったな 1.4のときは描画先に指定するしか結果的に使い道がなかったからね
979 :
969 :
2005/10/23(日) 07:13:18 ID:O1xklrGm >>974 アルファブレンドはとりあえず無しで色々とやってみることにします。
なにせ、技術的な部分を一つ一つ検証していかないといけないと思いますので、
あまり無理しない様にします。
ありがとうございました。