1 :
デフォルトの名無しさん :
03/08/31 15:09 初心者が集まって作りましょう。
まあ、一人でがんばれ
3 :
デフォルトの名無しさん :03/08/31 15:17
2で答えが出てしまったので終了
今宿題で忙しいんで無理だけど 終わってからでなら作ってみまふ。 2Dか3Dどっち?
5 :
デフォルトの名無しさん :03/08/31 15:25
2Dでいこうぜ
3Dやれよ
7 :
デフォルトの名無しさん :03/08/31 15:32
アスキーキャラでいいのなら作ってみよう
インベーダーでもいいよ。
さっさと作れチンカスども
既存ゲームは作らんでいい。 もっとこう、グワッと情熱となんかそれっぽいもので溢れる なんか凄い迫力とともになんかそういうやつ作れ
11 :
デフォルトの名無しさん :03/08/31 15:49
12 :
デフォルトの名無しさん :03/08/31 15:50
画像扱ったことないけどSwingとかSWT使うのか? それともJAVA2Dとか3Dとかいう奴?
13 :
デフォルトの名無しさん :03/08/31 15:51
メディアトラッカーで読み込んだのだが・・・
なんか俺、勘違いしているかも知れないのですけど、 スレッドのRunnableで作りますよね?
7行で作ろう
機種は505?
17 :
デフォルトの名無しさん :03/08/31 16:06
>>16 ジーパンかよ おれは、リーバイス派だ!
Java に特化して作るなら、こういうスレッドを立てるのも悪くないけど、 せめて1が何かネタを貼らなきゃなぁ
そもそも板違い。
23 :
デフォルトの名無しさん :03/08/31 17:08
ゲ製作避難所に繋がらなくない?
25 :
デフォルトの名無しさん :03/08/31 17:30
うぷろだは繋がるけど掲示板は無理
26 :
デフォルトの名無しさん :03/08/31 17:35
EnterpriseJavaBeans + Oracleでシューティングゲーム?
>>26 障害物の位置はデータベースに入っているのだな、きっと。
>>1 さんがマジなら、手伝いますよ。
JAVA好きなんで、JAVAで本格的なゲームができたらいいなと思ってました。
データベースか! むちゃくちゃおもろそうじゃん! データベースから障害物やら 敵機の情報取り出して・・・ むうう、たかがゲームなのに こんな大規模なシステム使うなんて わくわくしてくるな どうせならEJBも無理やり使ってみよう
で、トランザクションが働いて システムエラーならロールバック 凄い意味ないけど、
昔あったシューティングで、2Dの上方から見た視点で、 ネットワーク対戦になっていて、 数十人が同時に乱戦できるようなものがありましたね。 慣性で動いていて、なかなか面白かったのを覚えています。 そんなのどうですか? ネットワーク対戦なところがJavaチック?(こじつけ
>>31 複数のプレイヤーが、ある唯一のアイテムを奪い取ろうとする。なんて設定だと、
トランザクションやロールバックが必要になるかもよ。
『取ったぞー!』
『へへ、残念だったね。オレが先だったよーん』
>>33 なるほど、ネットワークなら
P2P2Pかサーバントを使いたいところだな
>>35 よく知らないのですが、RMIですか?
P2Pでどんどんステージと敵機が拡大していくってのは、面白いかもですね。
>>36 自機をカスタマイズできるとか
なんかロボコード見たくなってきた
>>37 ロボコードは面白いですよね。
でも、自分で操作する楽しみのほうがネットゲームでは大きいと思うので、
グラディウスで言うところのオプションみたいなのを、ロボコードちっくに作れるというのはどうでしょう。
>>32 自分が作ったしゅーちんぐゲームです。
この後発展できませぬ
40 :
デフォルトの名無しさん :03/09/03 03:20
構想するだけならゲ製。 ここでやるなら最低コードちょっとは書く気を見せれ。
42 :
デフォルトの名無しさん :03/09/03 03:52
1じゃないけどオレが作った鬼ヘボシューティングならあるぞ。 いるか!?
>>30 それだけじゃないぞ。RPGを兼ねたシューティングなら、
世界、建物などの形状、サイズ、座標、武器、防具、
などをデータベース化できる。火山が噴火した、
新しい世界を追加したなど、世界が変わればデータベースが更新される。
ネットワーク上で多人数プレイでこのようなVirtual Realityを兼ねた
RPGを実現するにはデータベースがどこかで必要になる。
当たり前だがユーザ管理にも使う。
>>30 つーか5万人くらいでできる箱庭諸島なんてどうだ?
46 :
デフォルトの名無しさん :03/09/11 13:09
そういえば、なに使って作る? runneble? マルチスレッドだよね?
>>45 なーるほど、Javaを使う意味があるねえ。
CGIなんて使わないから最高だ。
クライアント側はAppletにするか、JavaWebStart対応にするかだね。
じゃあよ、SOAPとかJMSでもいいから無理やり使ってみよう こうなったら、J2EEてんこもりアプリにしよう つーか結局、どんなゲームにするかが問題なのだが >RPGを兼ねたシューティング っていうのがイメージ湧かない 既存のゲームでこういうのあるの?
>>50 おいおい、応答性重視のアプリのSOAP使うな。
>>51 だからさ、そういう処理に使うって誰も言ってないじゃん
ユーザがオフラインの間にいろんなイベント起こさせたり
ユーザー同士のコミュニケーションにも使えるじゃん
public class ShootingGame { public static void main(String[] args) { System.out.println("Game Over"); } }
>>50 > じゃあよ、SOAPとかJMSでもいいから無理やり使ってみよう
> こうなったら、J2EEてんこもりアプリにしよう
>
> つーか結局、どんなゲームにするかが問題なのだが
> >RPGを兼ねたシューティング
> っていうのがイメージ湧かない
> 既存のゲームでこういうのあるの?
iDSoftwareのDoom, Quakeのような、擬似3D空間でマシンガンやショットガンで
シュートするならシューティングゲームというだろ。
ガンアクションシューティングというが。弾がなくなるとチェーンソーで切り裂いたり
拳でなぐることもあるが。
Morrowindという3D空間上を彷徨うアクションRPGゲームやってみいよ。
5000円くらいで秋葉原で買える。
あれで弓矢、クロスボウを持てば放物線を描いて矢を敵にシューティングできる。
マシンガンMODを使えばマシンガンも持てる。
まさにRPGを兼ねたシューティングだろ。
55 :
デフォルトの名無しさん :03/09/17 12:30
RPG要素を持ったシューティングというと 頭脳戦艦ガルが思い浮かぶわけだが。
銀河伝承だろ
キングスナイトだろ
ソウルハッカーズだろ
で、もうすぐ3週間たつけどまだできないの?やっぱりJavaでゲームはムリか。
Javaがどうとか言う前に 仕様が決まってないので どうしようもない
>>59 あまりに出来が良かったので、
売り物になりますた。
ちまちまとつくりはじめてまつ。 とりあえずMemoryImageSourceでソフトウェア3Dとスプライト描画の併用でやってみる。 がJavaはあまり使ったことないので、どれだけ速度出るのか不安。
まじでつくってるやついるのか
64 :
デフォルトの名無しさん :03/09/21 02:36
激初心者です thread.sleepで敵の動きを表現しました。段々降りてくるような感じ ですが、自分の弾が発射されて動くようにしようとthread.sleepを使用すると、 うまく行きません。 そもそもthread.sleepは乱用するものじゃないのでしょうか。
>>68 Timerクラスを調べろ。Threadクラスなぞ使わん
Timerクラスで敵、自機、弾、画面描画すべてマルチスレッド・非同期で動かせ。
普通Timerなんか使わんのじゃない?
>>68 FPS固定メインループで実行すれば簡単じゃないの?
そもそもsleepでウェイトをかける意味がわからん。
Timerクラスで解決しました。 ちょっと、かんどう(>_<) どうも有難うございました
>>70 ソースも全部一緒に入ってるよ
しかしなかなか落ちてこないね
75 :
デフォルトの名無しさん :03/09/24 01:24
ちょっとたまたまのぞいたので教えて欲しい Javaでゲーム作る時は 1スレッドで、自機、敵機すべてを同期させ Thread.sleep()で負荷調整。 ・・が普通だと思っているが間違ってる?(Timerクラスを使う・・という話が気になった) 何かのサンプルで見たのでそうしているが、実はThread.sleep()の動きがよくわかってなくて、ひょっとしてこれで負荷調整する事にはならない? たとえばThread.sleep(100)が必ず100msスリープするという意味だとすると負荷調整は不可だね。 1スレッドにかかった時間が40msの場合60msスリープする、、というように動いてくれるとOKだけど。 あと、注意点としてはガベコレが極力動かさない考慮として ゲーム進行中はnewを実行しない。くらいは気にとめているが、あとなんかある?
>>75 負荷調整が何なのかがよくわからんが、もし一定時間ごとに画面を書き換えるなら、
sleepが終了してから次にsleepするまでにかかる時間を見積もるか計測する必要がある。
Timerならいらない。
あと、WindowsではSystem.currentTimeMillis()は10ms程度の誤差があるから気をつけろ。
Thread.sleepやTimerの精度はたぶん1ms程度。
77 :
デフォルトの名無しさん :03/09/24 03:32
>>75 Thread#sleep()は、指定時間waitした後に、止めてたスレッドを
runnable状態に変更するだけ。直ぐ動いてくれるかどうかは、他の
スレッドの状態による。下手するとずっと動かないかも。
>あと、注意点としてはガベコレが極力動かさない考慮として
>ゲーム進行中はnewを実行しない。くらいは気にとめているが、あとなんかある?
暇なときに空オブジェクトをnewしとく。
暇なときに強制的にGCしとく。
>>76 >Thread.sleepやTimerの精度はたぶん1ms程度。
いいかげんなこと書くな。仕様上は「不定」。
78 :
デフォルトの名無しさん :03/09/24 03:34
>>71 シングルCPU環境が想定される場所でリアルタイムな処理が必要なの
に、マルチスレッドなんて危険では無いだろうか。
AWT使う限り描画はイベントディスパッチスレッドの仕事になってし
まうが、せめてそれ以外のユーザースレッドは、1こ(0ならなおよし)
にすべきでは。
javaのsleepの精度は10〜30ms程度。 Javaがゲームに向いてないと言われる所以
低脳煽りクンは巣にカエレ!
JavaでゲームだったらJDK1.1.8ベースでつくらない? んで、System.currentTimeMillis()の精度が悪いそうだけど 固定で30FPSとかでループさせたりできないのん?
冗談きついよ、JDK1.4はゲーム向けの機能満載してるのに。 volatileImageは一度使うと病み付きだよ。 今までとぜんぜん速度が違う。 あとsleepの精度だけど本当に10〜30ms程度だよ。 どんなにがんばっても10ms以下にはならん。 20msまでなら何とか使えるけど。 RT JAVAで6msまで改良されたみたいだけど 今のJDKに反映されているかは知らん
>>78 甘い。描画と各ルーチンのスレッドを切り離すことによって
描画を最低限に抑えて(描画は30ms、敵ルーチンは10msとか)
処理速度を最大限引き出すことができる
みんなありがとう、勉強になった。 処理を一定に保たせるためにThread#sleep()を使ってた俺は馬鹿だった Timerクラス使いまする
85 :
デフォルトの名無しさん :03/09/25 01:51
>>82 RealTime Javaは拡張ライブラリで実装配ってるよ。探して味噌。
>sleepの精度だけど本当に10〜30ms程度だよ
だから何度も言っているとおり、それは各スレッドの状態とか
JVMの機嫌とかCPUの性能その他もろもろの条件で、タマタマそ
うだっただけだってば。
>>83 コンテキストスイッチ分無駄じゃん。なんでマルチスレッドにす
るのよ???
>>84 Timerのソース読んで味噌。勘違い野郎がいることが判明するぞ。
86 :
デフォルトの名無しさん :03/09/25 02:34
Javaでかかれたシューティングゲームを探してみよう
87 :
デフォルトの名無しさん :03/09/25 02:50
88 :
デフォルトの名無しさん :03/09/25 02:56
自分でだしといてなんだけど、かなーりおもろい
>>85 あほか、コンテキストスイッチと描画処理のどっちのほうがコストがかかると思う?
マルチスレッドにするのはそっちのほうがコードが少なくすっきりするからだよ
lastTime=System.currentTimeMillis();
while(フラグ)
{
nowTime=System.currentTimeMillis();
if(nowTime-lastTime>実行周期)
{
ループ処理();
lastTime=lastTime-実行周期;
}
try{Thread.sleep();}
catch(InteruptedException e){}
}
厳密に一定間隔で処理実行しようとするとこんなコードになるわけだけど
こんなの書くよりもTimer使ったほうが楽だろ?
lastTime=System.currentTimeMillis(); while(フラグ) { nowTime=System.currentTimeMillis(); ループ処理(); try{Thread.sleep(実行周期-(lastTime-nowTime));} catch(InteruptedException e){} }
うお、最後に lastTime=System.currentTimeMillis(); 入れるのわすれてる
一部だけすっきりしても、肝心の部分に余計な事を考えなければ いけないならやらない方がマシだと思うがなぁ。 全てを分かっていてやるならいいだろうけど。 一定の処理間隔を作るには、タイマーやSleepの誤差を吸収する カラクリを作るべきだと漏れは思う。 VSYNC割り込みのようなものが使えるなら話しは別だが。
俺は素人があれこれ考えて実装するよりも プロの作ったクラスライブラリのルーチンを使ったほうが確実だと思う。 将来的にOSレベルで実行を保障してくれるかもしれんし
すまん、92じゃないや
>>92 むしろ、一定の処理間隔をあきらめるべきか。
でも、スクロール型シューティングでそれはつらいかもしれぬ。
>>96 漏れが言いたかったのは、60Hzのモニタで40FPSのゲームをしても、
気になる奴は気になるだろうけど、普通は余り気にならんと思う。
1フレームの問題としてではなく、長い目で見て問題を解決しようと。
完璧に同期出来ればそれで良いのだけど、無いものねだりをしても
しょーがないし。
JOGLでゲーム作ろうと思うのですが、JOGLで作られた面白いゲームはありますか? 参考にしたいです。
40FPS= thread.sleep(40)?
>>97 「vsyncと描画間隔の不一致」ではなくて「描画間隔がころころ変わる」
のを前提に作るということ。
60Hzで40FPSのゲームが気にならないだろうという点については俺も同意見。
>>99 いや。FPSはFrame Per Second
もし、40msの描画間隔なら、1000/40=25FPS
完全に一致する必要はないけど機種によって 実行速度が変わってしまうのは何とかしなければいけない
>>100 3Dなゲームだと殆どそういう作りが多いようですな。
漏れはdeltaTimeの導入は避けたいなw
保守カキコ
そろそろできた?
javaで作ったシューティングゲームをホムペに後悔して、他のパソコンから やろうとすると出来なかったりするんだが、最新のjavaがインストール されてナイトだめですか?
XPだとjava入ってないかもな
早く遊びたい。
シューティングゲームに使えそうな素材がみつからないのですが・・・ どこかいいトコしりませんか?
AGEさせていただきます・・
113 :
デフォルトの名無しさん :03/11/14 13:26
かえるの王国とさいたまインベーダが同じ人だったなんて 知らんかったよ
114 :
デフォルトの名無しさん :03/11/15 03:14
なぜJAVA
自機に対してのホーミング弾を作ろうと思うんですが、どうすればいいですかね? 自機x軸に対し、少しずつxに近づけるのでしょうけど。
>>115 ちゃんと角度でやった方が、より「らしい」ホーミングになります。
(のんびり誘導ミサイル系)
ジェミニ誘導でもするんだったらガンガン加速させる
のんびり誘導させると一生付いて来ちゃうんですけど。 加速させれば振り切れるけど。
>>117 誘導ミサイルの進行方向左右n度に自機がいるときだけ角度を調整する。
または最小回転半径を大きくとって、画面外まで飛ばして消す。
119 :
デフォルトの名無しさん :03/11/16 18:13
>>107 > javaで作ったシューティングゲームをホムペに後悔して、他のパソコンから
> やろうとすると出来なかったりするんだが、最新のjavaがインストール
> されてナイトだめですか?
んなことはない。
「get Java」とJava Web Startがあるだろ。
「get Java」で検索しれ
1.4ってどのくらい普及してんでしょうね。 一般の人はわざわざSunのページに行ってダウンロードしてくれるでしょうか。 JREだとプログラマ向け雑誌以外のCDなんかに入っているんでしょうかねぇ。
>>120 フラッシュが通用する相手なら大丈夫だろう
プラグインの自動インストールはJavaでも可
>>122 こんなのもあるんですか。ありがとうございます。
(=゚ω゚)ノ
125 :
デフォルトの名無しさん :04/03/17 15:51
こんな埋もれたスレにレスするのもあれなんだけどさ・・・・ なぜゲーム作るのにThreadやsleepという発想が出てくるのか疑問。 しかも会話を見ていると、いまいちスレッドとスリープの動作が、正しく認識されていないのが伺える。 そもそも、sleep()の誤差がどうこうという前に、sleep()は引数以上にスレッドを停止させる可能性がある。 スレッドも、優先度に関わらず、何時どのスレッドが動作するか保障されない事を知ってもらいたい。 それを理解していれば、ゲームの同期を図るのに、スレッドを利用することは不向きであることが分かるだろう。 まず、設計やクラスライブラリ云々の前に、javaの基本を正しくおさえる必要があるかと。。。
アプレットとかの小物ゲームならThread.sleep()で十分、 というか他に選択肢もないでしょ。 外部のネイティブなライブラリ叩くなら別だろうけど
>>120 Sunのページでなくても
AppletとかJNLPファイルを置いてあるサイトで
ちゃんとgetJavaへリンクするような記述をいれたり
MIMEタイプをしっかりサーバ側で指定していれば
そんなわざわざダウンロードしにいく手間もなければ
自分からインスコする手間もないぞ。
>>125 javaは知っているようですがゲームはしらないようですね
時間管理するのに結局Sleepしか選択肢ないんだよ
timertask系はいまいちな動作速度で綺麗に流れない
javaに限らず基本的な考え方はwinとかでも同じだぞ
本当のちゃんとしたゲームならばWinやMac、Linuxという環境を捨てて
スワップ無しの垂直同期確実にとれるようにするしかない
ティアリングで我慢するレベルならsleepでいいってこった
>>128 ふむぅ、、言い訳ではないけれど我流なもので申し訳ない
sleep()だと、ものすごい不具合を発生する可能性は否定できないと感じたもので。
>>126 で妥協してsleep()という考えも上がっているみたいではあるが。
Javaというか、オブジェクト指向の特性上、sleep()も隠蔽される要素が多いはずで
しかも元は、タイマーとしてのものではなくて、スレッドを管理するためのメソッドというものだから
確実に同期を取ろうとするならjava.util.Date(long)を利用して自分で単純なタイマーを作った方が
難しい作業が必要なわけじゃないし、精度が出るような気がしたのだけれども、どうでしょう?
それに何より、タイマーとしての安全性はこちらの方が上だと思いますし。
過去に私も昔1つのスレッドでsleep()をタイマー代わりにしてゲームを作った事があって
確かに目に見えた不具合は無かったが。2つ以上のスレッドを利用するとなると上記で説明した問題の危険が発生するはず。
話は少し外れるけど、何かこのスレを見ていると行き当たりばったりで作ろうとしすぎている気がしてならない
まずはシステムとしての足回りから固めるべきじゃないかと思う。
大体、オブジェクト指向言語の利点を生かそうとすれば、自然と設計を重視するはずなのに
その手の話が殆ど進んでないのが気になる。
せっかくJavaで作るなら、ここで製作したクラスが、他のゲーム製作に対しての汎用性を持たせられる
事を目的としてクラス設計をしても良いのではないだろうか。
スマソSage進行だったね。 まあ、俺も口だけを動かしてても仕方が無いと思ったし ちょっと興味もあるから暇を見て試作品でも作ってみる事にする
>>128 J2SE1.5のjava.util.concurrentなんかどうよ?
>>129 作り方が悪いだけでは?
俺はなんの問題も出てないし実装としてSleepとCalendar使うことになるよ
たぶん、Dateとやろうとしてることは変わらないはず
Sleepってのはスレッドをどうのこうのって話じゃないよ
マルチスレッドだろうが関係ない
>>131 結果は現状と変わらない
誤差が小さくなる程度で
>>128 で指摘した根本的解決ではない
>>132 いや、実際に作ったわけじゃないし、単純なものなら不具合は目に見えないと俺も思う
単純なレベルでは、もちろんsleep()は問題ないと思う
でも、sleep()はstaticだけれど、スレッド制御に使うものなんだよ。
だからタイマーとして使うには、その後機能拡張したときに起こる不具合の「可能性・危険性」を増加させる事に繋がると。。
動作としては、sleep()はスレッドを実行状態→指定時間の実行停止→実行可能状態→実行状態
と状態遷移させる機能を持っているけど、ここで注意するべきなのが
指定時間の実行停止から実行可能に移るまでの時間は保障されないところなんだよ。
これを見るだけでもsleep()がタイマーとして不適格なのは確かでしょ。
スレッドをどうこうじゃない、と言っててsleep()もstaticではあるけど
スレッド制御以外でsleep()使っても何も起こらないでしょ?
sleep()をタイマーとして使うために(ほかメインルーチンとしてのループ)としてスレッドを利用する事は
プログラムの自由度や拡張性を損なうはずだし
他のスレッドを使ったときに同期が取れなくなる根本の原因になるはずだから
メインルーチンはスレッドにしない方が妥当と思います。(あくまで私は)
>>132 いや、実際に作ったわけじゃないし、単純なものなら不具合は目に見えないと俺も思う
単純なレベルでは、もちろんsleep()は問題ないと思う
でも、sleep()はstaticだけれど、スレッド制御に使うものなんだよ。
だからタイマーとして使うには、その後機能拡張したときに起こる不具合の「可能性・危険性」を増加させる事に繋がると。。
動作としては、sleep()はスレッドを実行状態→指定時間の実行停止→実行可能状態→実行状態
と状態遷移させる機能を持っているけど、ここで注意するべきなのが
指定時間の実行停止から実行可能に移るまでの時間は保障されないところなんだよ。
これを見るだけでもsleep()がタイマーとして不適格なのは確かでしょ。
スレッドをどうこうじゃない、と言っててsleep()もstaticではあるけど
スレッド制御以外でsleep()使っても何も起こらないでしょ?
sleep()をタイマーとして使うために(ほかメインルーチンとしてのループ)としてスレッドを利用する事は
プログラムの自由度や拡張性を損なうはずだし
他のスレッドを使ったときに同期が取れなくなる根本の原因になるはずだから
メインルーチンはスレッドにしない方が妥当と思います。(あくまで私は)
とりあえず目先に捕らわれない設計を行うべきじゃないの?オブジェクト指向なら尚更
>>133 もちつけ
具体的なあんたのsleep使わないコードはどうなってるんだ?
sleepは指定スレッドを一定時間止めることでそれは変わらない
スレッドが待機状態から実際に動くまでの時間差は絶対にあるし
それはjavaに限ったことではない
非リアルタイムOS使ってる時点でその保証は絶対に不可能
ならばsleepがだめという結論はでないだろ
もしかしてあんたsleepを固定で60fpsなら16とかメインスレッドに書いてると思ってるのか?
前回の実行可能時間からのミリタイム取得して引き算使うのは常識だし、
もっと厳密にするならタイマ管理するスレッドでsleep16とかでぶんまわしてメインスレッドに状態を通知する
不都合の出るサンプルを作ればいいんじゃない? 結果が出ればいい世界で、品質を追い求めるような空論は必要ないっしょ。 どんな作り方がいいかどうかなんて人によって思想があるんだろうし、 実際に不都合が出ない限り、いくら言われても変えないんじゃないかな。
>>136 いや、俺もあの後そう思ったんだよな。なんぼ言っても無駄な感じがしたわ。
確かに、不都合が出るモノを作ろうが俺の知ったことじゃないんだよな。
>>135 やっぱり、あんまりJavaのスレッドの動作がわかってないみたいだからこれ以上言っても無駄だと思う。
sleepで前回の実行可能時間からのミリタイム取得して引き算使っても、俺の指摘した危険性は変わらない。
俺も幼い頃は、sleepで時間調節と思ったし、初心者向けにAppletとか載せてる参考書とかの
サンプルだとスレッドを使ってループとタイマの処理をさせているのが多いけど
ちゃんとスレッドの理解があれば、あのやりかたに疑問を持つのは当たり前。
と、こう言っても分からないと思うから、まずは書店にでも行って本格的な参考書でも覗いて見てほしいよ
あとSJC-P用の参考書なんかでも細かく説明されていると思う。
それを読んで理解できれば俺の言いたいことが分かるはず。。。。(多分)
実際にコード書いてるわけじゃないけど、俺としてはスレッドとsleep()使うなら(使わなくとも)
Appletのインスタンスが生成されてGraphicの引数がPaintで渡されたら
Graphic参照を他のクラスに引き渡して、メインルーチンとしてそのクラスを使えば
見易すいと思うし、作りやすさ(多人数での開発)も向上できると思うよ。
ここまではスレッドを使わない理由にはならないけど、そもそもスレッドを使う意味が無いと俺は思う
何故わざわざ無駄にコードを複雑にしなければならないか分からん、スマートな形にどうしてもしたくないってなら別だろうけど
それと俺の指摘しているsleep()の話
後は、確認はしてないけどスレッド処理は負荷が大きい部類に入ったはず。(とは言えたかが知れているとは思うが。。)
と、いろいろ言っちゃったけど、自分の納得できるように好きに作ってみたらいいんじゃないかと
文句言って悪かったな。俺も俺のやり方で、まずは作ってみることにする。
>>135 あとスレッドに状態を通知しようが何をしようが、スレッドが実行状態に移されるタイミングはVMが全部制御している。
>>77 なんでスルーされているのか分からないんだけど、強制GCなんてできない。(勧める事は可能、多分それを言いたかったのだとは思うが)
当たり前すぎるからシカトしてたのかも知れないけど
125、その問題にならないコードかいてみろよ
もしくは問題になるコード
>>137 の書き込み見る限り意味不明の逃げにしかみえんぞ
>>139 コード、コードって(w
俺が言いたいのは、sleep()はタイマーに使えるもんじゃないよって事(何回言わせるんだ)
コードなんてまだ書く段階じゃないから設計しかしてないよ。
と言っても俺が進めるのは、とにかくスレッドを使わないで
Graphicが生成されたら、その参照を使って他のクラスでメインルーチンを作るってだけ
それの説明でわかるでしょ?
いいから、ちゃんとJavaを勉強してから始めたほうが俺は無難だと言いたい。
発言見る限り、全然知らないとしか言いようがない、多分これ以上俺が説明した所で無駄
自分で納得してください。けど、どうするかはそっちの勝手。
sllep()をタイマーに使うと、自分が止めたい時間より、長く止まる事は普通にありえるんだよって事。
それでもいいなら何も言うことは無し。
普段どんな言語使ってるか知らんけど、Javaの場合上っ面だけで動作できるプログラムを作ることができても
細かな部分で、動作が複雑なところが多いんだよ(特にCをやってたなら注意すべき)
import java.applet.Applet; import java.awt.Graphics; public class X01 extends Applet{ public void init(){} public void start(){} public void stop(){} public void destroy(){} public void paint(Graphics g){ X02 x02 = new X02(g); x02.Y01(); } } ***************************************** import java.applet.Applet; import java.awt.Graphics; public class X02 extends Applet{ Graphics g; X02(Graphics g){ this.g = g; } public void Y01(){ //メインルーチンの先端 } } とりあえずスレッド使わなくてもこんな感じで始めればスレッド使わなくても 普通の作り方ができるっしょ。これ以上やる必要ってあるの?わざわざスレッドなんて使い出して意味あるの??
もしかしてSleepの動作が環境ごとに違うってこと言いたいだけなのか? そんなのだれでもしってるだろ VM依存もあるし、その下のOSやらにも左右される以上sleep4もSleep0も同じとか それはわかって使ってる これらはリアルタイムOSじゃない限り保証されるものではない 「それなり」に動くことを期待するわけ Windowsネイティブのsleepも「それなり」を期待しているだけだ マルチタスクOSでCPU100%でぶんまわすというふざけた実装はしたくないもんでね >Graphicが生成されたら、その参照を使って他のクラスでメインルーチンを作るってだけ Graphicsを他のクラスでもっていくってそれはSleepとなんの関係もない部分だろ >実際にコード書いてるわけじゃないけど、 こんなことかいてるから信憑性が全くないわけ だから、根拠を出すためにサンプルコードが必要 時計での時間管理だけならTimerTask使った方がいいだろう しかし、TimertaskはSleep以上に誤差が大きくなる fixedにすれば一瞬のHDDアクセスや他のプロセスの負荷が上がった瞬間に 早送り現象が発生するし、なくせば悪化 特にWin上で問題なくてもLinuxで問題が出やすい
>>141 俺はスレッドの話はしてない
ちみが問題にしているsleepの話をしているんだ
スレッドはどう使おうが自由
ゲーム作るのにはマルチスレッドつかおうがメインスレッド1つだろうが自由
>>142 いや、環境のことを言いたいんじゃないよ。そんな細かい話じゃない。
Javaの基本的なスレッド管理の事を言っている。
>sllep()をタイマーに使うと、自分が止めたい時間より、長く止まる事は普通にありえるんだよって事。
というのを分かって欲しい
スレッド1本なら問題ないけど、2本目を仮に使う可能性が出た場合思うようにタイマーが動かなくなる可能性があるって事。
sleep()を使うのは誤差以前に根本的な問題を抱えているって事。
確かに、「それなり」なら問題はないとは思うけどね。
信憑性がないってのは心外だね、コード書けばいいって話じゃない。
そもそもオブジェクト指向言語で開発しようとするなら設計を重要視すべき。
コードを書くのなんて単なる作業に過ぎない。
論理的に問題無い設計を十分にしたあと、ただコード化するだけ。
そっちのやり方は、拡張性を失うし、大きなプログラムを作ろうとするには不向き。
もし論理的矛盾が無いシステムを作ろうとするなら、Javaの仕様についての正しい理解が必要になる
逆に正しい理解をしていない人間が、その作業を行うのは不可能なんだよ。
俺が見る限り、
>>142 は、とりあえず作る、作った事のある、細かいところは無視、そういったレベルにしか見えん
スレッドを使わないで、sleepの話をしても意味は(ry
>>146 理解するために悪い例としてコードを書いてほしい、
ということだと思うよ。
>144 :デフォルトの名無しさん :04/03/19 13:28
>
>>141 >俺はスレッドの話はしてない
>ちみが問題にしているsleepの話をしているんだ
>スレッドはどう使おうが自由
>ゲーム作るのにはマルチスレッドつかおうがメインスレッド1つだろうが自由
スレッドあってのスリープでしょうが。
スレッドはどう使おうが自由って、何回も言うけど
マルチスレッドにしたときにsleep()を使ってタイマー制御してると問題なんだって(w
いい加減、勉強してこい。
>>148 そういうことか。。。
でも、それなら
>>141 が作ろうとしているやりかたで
マルチスレッドにしたのが悪い例になるだけ。
悪い例ではあるけど、それが正しく動作しないとは限らない。
精度は低いものの、それなりに同期はとれるはず。
でも厳密には正確に動作できていない。
その程度のレベルだろうな。
それで納得できるか、できないかだよな。
俺は納得できないってだけだなこれは。。。。
>>146 いや、sleepがjava固有の問題というかVM依存なんだよ
netscapeのvm(oemだけど)、あれはたしか0も4も同じ0だったはず。
下手するとWin95の問題だったかも
スレッドの数に限らずsleepは信用しないこと
これはvmかぶせてるjavaならさらに重要
javaはまっとうな時間管理が出来ないんだから妥協するしかない
ちなみにクライアントのほとんどはwinだろうけど、これなら大概sleep含めて綺麗に動く
Linuxはこのへんもたつくけど解決方法はなんとかある
シューティングゲームなんで多少フレームレート落ちても
それなりに安定したフレームレートさえでれば問題ないよ
winで60fpsがlinuxで55fpsだったとしても大きく損ねることはない
設計云々はべつに今回の問題とは関係のないところ
>>147 メインスレッドってしらんのか?
ゲームでは時間管理にシングルスレッドでもsleepを使うことはあるんだよ
>>151 そうか妥協することを前提とした話なら納得できるわ。
お互い、どの程度理解してるのか計れないから会話がかみ合わなくてスマン。
結論としてはJavaはゲーム向きじゃないんだろうな、、、やっぱり(それを言えば元も子も無いが)
当方は普段C++、DirectXでゲーム作ってますわ。VBのDirectXなんかも意外に良いかも、時間短縮できるし。
そっちはゲーム開発に詳しそうだから聞いてみるが
マシンに負荷がかかる部類のスレッドをあえて利用する価値についてどう思う?
winですらゲーム向きじゃない C&DirectXもやったがアレはちと酷いもんだった GameSDKと呼ばれてたころから追いかけていたが いくら待っても実装されないものや実装がビデオカード依存とか ゲームの処理がCPUがどんなに速くなったところで スワップなどの発生ででフレームが飛ぶ 昔から触ってきた人種ならビデオのアクセラレーションありで CPUがクロック100MHzもあれば余裕で処理落ち無しで 2DSTGなんか作れる 結論としてはリアルタイムOS以外はゲーム向きじゃない VSync切る人もいるけどティアリングなんてお話にならないし 最近はTV放送でもスタッフロールなどでティアリングしているのを 見ると激しく萎える まぁ、マシンパワーが上がってそのへんをすべて妥協するとした場合 javaは1.4からの新機能でだいぶ使いやすくなったのは確かだし ゲーム開発するにもちゃんとオブジェクト指向ですっきりしたコードが書ける分 C+DirectXでめちゃくちゃなコード書くより楽ということになった せいぜいDirectInputをJNIで使うくらいかな 2Dのゲームを見比べてjavaはダメだという結論はでないはずだ
>>152 スレッドは大量に生成をくりかえさないかぎりさほど負荷かからないよ
昔のjavaのグリーンスレッドはすごかったけどね
今じゃネイティブスレッド使ってるし、それこそjavaVM立ち上げた時点で
かなりのスレッド立ち上がってるし、hotspotのコンパイルログ見ればわかると思うけど
おもしろいほどバックグラウンドでガシガシネイティブコードにかきかわっていってる
スレッドが重いとはおもわないこと
winだって普段でスレッド500こくらい立ち上がってるし
それでも、GUIの操作しているとLinuxよりWinのほうがサクサク動く
ゲーム部分のスレッドとして1つ、サウンド周りのスレッドとして
1つというのはふつうにありえる実装だよ
たとえばjavasoundのデフォルトで1秒のPCMバッファがあったはずだから
何も考えずにsleep(1)をループにいれてその辺の処理をチマチマ書くというのも問題ない
このsleepがなくなるとサウンドの方で100%CPU使用率になるから注意と
CPU負荷率が上がるとノートはファンが回り出したり、CPUのクロック上昇、
そして温度によりクロック低下などバッテリの消費早めるとかいろいろあるんでね
すでにノートの方がデスクトップより遙かに売れている時代だ
そのへんも考慮してあげてもいいだろう
>>154 ゲーム部分と、サウンドでスレッドを用意ってのは分かるし
普通に思いつきやすい発想だとは思うけど
それこそプラットフォームによって思うように動かない可能性が高くなるんじゃないの?
全てのプラットフォームで一貫した動作は保障できなくなるし。(何を求めるかによるけど)
プリエンプティブとタイムスライスとか、どんなプラットフォームを使ってるかわからんわけだし。
その方法だと、動作をVMのスケジューリングに依存する部分が多すぎじゃないのかな。
それで、もし同期を取ろうとスレッド制御をしようとするのが面倒になってくるし。
>>155 いまのjavaでグリーンスレッドとか考慮する必要あるの?
すくなくとも現行のjavaの満足に動くプラットフォームではなんの問題もない
0.5秒以内のスライスならまったく問題ない
秒単位でスケジュールされるようなマルチタスクOSなんていらね
157 :
デフォルトの名無しさん :04/03/20 10:03
>>156 確かに、そう言われれば、そうなんだけどね。
昨日、ずっと考えたけど。結局、自分好みのつくりかたでいいよな。
というわけで自分の好きに作ることにした。
結論としては、スレッドとsleep()は使わない方針にして
・スレッドを多数使用したときに考えられる、タイマーへの影響を回避
・プラットフォームによるVMのスケジューリングへの依存を極力回避できる
・よりオブジェクト指向ライクなクラス設計がし易い傾向が現れる(説明は長くなるので割愛するけど)
のメリットを得て、その代償に
・タイマー制御をスレッド停止によって実現しないことでのCPUへの負荷
を選択することにしました。
>・よりオブジェクト指向ライクなクラス設計がし易い傾向が現れる(説明は長くなるので割愛するけど) これまったく文脈と関係ないだろ
話の流れを折ってすまんが、 各キャラクタのクラスに描画情報を持たせるのと アプレットで描画情報を一元管理するのと、 どっちがいいのかしらん? 前者のほうがオブジェクト指向ぽい香りがするが。
俺は各キャラが責任を持って描画するようにしている。 もちろんメインルーチンがそれを綺麗に呼ぶようなフレームワークづくりが先に必要だけどね。 たとえば抽象敵クラスを継承して実装していくのがふつーと思われるので そこにdrawとかというメソッド用意すると。
敵やら弾やらを生成する度にnewしちゃだめですか?
>>161 実際にやってみな
俺はぜんぜん体感できないよ
gcが頭よくなったのとマシンパワーがありあまってるからね
STGのオブジェクト程度まったく問題はない
>>159 >各キャラクタのクラスに描画情報を持たせるのと
オブジェクト指向的
>アプレットで描画情報を一元管理する
構造化技法
俺もそう思う
でも
>>160 の言うように、描画用などの基本動作のクラスを作って
各キャラクタのクラスに継承させるのが、よりOOP
class getter { public static void main(String[] args) { for (int i = 1; i <= 10; i++) { System.out.print(i + "getキタ"); for (int j = 0; j < i * i; j++) { System.out.print("━"); } System.out.print("(゚∀゚)"); for (int k = 0; k < i * i; k++) { System.out.print("━"); } System.out.println("!!!!!"); } } }
つうかVMのGCって一口で言っても オプションでいろいろな種類を選べるんだったよね? 誰かベンチ付き説明きぼんぬ。
167 :
デフォルトの名無しさん :04/03/30 01:37
hosyu
─、、 (゚皿゚ O) ガオー! / ̄/ >> | ̄| | | @/\ \@/ /'/ /'/ | | | | -┛ -┛
169 :
デフォルトの名無しさん :04/03/30 11:57
とりあえずsourceforgeに登録
スレッドは使わないほうがいいですね。 最初は数当てゲームなんかが良いんじゃないでしょうか? 所詮Javaなんですから。
コンソールで動くようなゲームにすれば、 Javaの実力を知らないですむし、これからもJavaと付き合っていけそうじゃないですか。 まずは、そういうところから始めましょうよ。 まして、いきなり3DやろうとするとJavaに絶望する危険がありますよね。 言語には向き不向きがあるわけですし、身の丈にあったところから始めたほうがいいと思うんですよ。
以前にMIDI作るソフト作ったんですよね。 これ、きっちり使えるんですよ。 友人なんかも、すごいなーって驚いてました。 Javaで、ここまで出来ると思わなかったんでしょうね。 でも、感心してくれる人はたくさんいたのに、 実際に使ってくれるひとは一人もいなかったんですよ。 当たり前ですよね。 考えてみれば、Javaで作ったからこそすごいのであって、 MIDIソフトだと考えれば使い物にならないですから。 ゲームなんかでも同じことがいえると思うんですよ。 やはりJavaは、CGI程度のことに使うのがいいと思うんです。
174 :
デフォルトの名無しさん :04/03/30 12:58
アフォれす晒しage
というわけで、一緒にオープンソースの数当てゲーム作りませんか?
このスレも8月で1年を迎えるわけですよね? 何とかそれまでには、作品の一つくらい完成させたいじゃないですか。 生産性の高いJavaですから、変な夢さえ見なければ、 今からでも十分間に合うと思うんですよね。 がんばりましょうよ。
177 :
デフォルトの名無しさん :04/03/30 14:00
>>173 175
確かにコンシューマライクなスタンドアロンのゲームをJavaでオープンで
作ろうとするのは明らかに馬鹿げてるというか、意味がないと思うんです。
またウルティマオンラインのようなMMORPGを作っても意味がないと思うんです。
要するにJavaでどこまでクオリティの高い「売れる」ゲームを作れるかと
いうことには興味がない。
僕は、「作品」としての「ゲーム」ではなくて、
「ゲーム」の外観をもった「巨大なネットワークシステム」を構築したい。
抽象的ですが、ゲームというものをもっと大きく捉えたものなんです。
でもそれって一体どんな感じなのか??
今アイデアとしてあるのは、コミュニケーションを根本的なテーマにしたものなんですが、
激しくスレ違いでごめんなさい。
>>177 経験的に言えることは、systemが完成したとしても、ネットワークは出来ないと思うんですよ。
使ってくれる人がいないから。
Javaで作ると、どうしてもプログラマ以外には敷居が高くなってしまう。
出来るだけミニマムで自己満足の範囲内で作ったほうがいいと思うんです。
どうでもいいがおまえらスレのタイトルを言って見ろ
>>179 スレタイはわかってるけど、もう結論出てるでしょう。
無理なんですよ。
少々路線変更して現実的な形にしたほうがいいと思います。
数当てゲームならたぶん完成しますよ。
>>179 作るのは "ナンバーシューティングゲーム" という事で・・・
今のスペックと言語仕様で作れないものなんてない あるとすればVMをインスコできないユーザーの啓蒙ぐらいだ
アプレットならプラグインをインスコさせれば良いだけじゃねーのか? Flashと同じく。
ちなみに、Java3Dは 3Dグラフィックスモデル、サウンド、デバイス入力などを一手にこなす なかなか優等生なライブラリだ。 これのおかげでJavaは、Win32や.NETよりゲーム向きなんじゃないだろうか。 まー使ったこと無いけど。
すでに2Dだけならjava2Dかなり便利だしな フルスクリーンやページフリッピングもDirectXで面倒な処理かくより手軽に出来る 実はフルスクリーンアプリをタスク切り替えとか最小化したときの 復旧を全自動ってのがかなりらくだ JavaSoundは通常のmidi再生やpcm再生はすでに十分なもの とくにJavaSoundはソフトウェアmidi内蔵しているので WinでもLinuxでもまったくおなじ音がでるのがすばらしい
ランタイムとかいるの? > Java2D、Java3D
>>188 環境によります。
やりたいことによっても変わります。
いずれにせよ、ファイルをコピーするだけなのでユーザが簡単に行えます。
どこにコピーすれば良いかは環境によるので一概に言えません。
バージョンによっても変わります。
何をコピーすれば良いかは、環境とバージョンによって変わるので一概に言えません。
いずれにせよ、ファイルをコピーするだけなのでユーザが簡単に行えます。
死滅スレより芸があって面白い。
>>190 宣伝ばかりしてるから、こうなるのですよ。
上の書き込み全部読んでみてくださいね。
作るスレなのに、夢を語るばかりで何も出来てこないじゃないですか?
夢も大事ですけど、出来ることからこつこつやりましょう。
まず、コードの1行を書く。そこから始めてみませんか?
ケータイでjavaで書かれたシューティングなんて腐るほどあるぞ。
>>192 携帯のJavaみたいな物でいいのですか?
だったらJNI使いまくってすばらしい3Dシューティングでも作りましょうよ。
J#でも良いかもしれないですね。
このスレの人は、出来るだけPureJavaでやりたいのだと思ってました。
Xith3Dで、ぐぐってみたら日本語リンクが皆無なのに驚いた。 Java3Dよりそっちの方がいいみたいだね。 Shaderも使えるみたいだし。使わないけど。
いつまでも脳内レンダリング。 永遠に脳内レンダリング。
しかし、普通のゲームに3Dを使うメリットってなんだろうな。 3Dシューティングならともかく、2Dキャラを3Dに置き換えただけのゲームは正直秋田。 まあ、1回モデリングすれば何十枚もドット絵書かなくていいから楽なんだろうけど。
コンソールで作るって決まったしね。
200
/ / } _/ノ.. /、 / < } ry、 {k_ _/`;, ノノ パンパン / / } ;' `i、 _/ノ../、 _/ 入/ / `ヽ, ノノ / r;ァ }''i" ̄.  ̄r'_ノ"'ヽ.i ) ―☆ {k_ _/,,.' ;. :. l、 ノ \ ` 、 ,i. .:, :, ' / / \ ,;ゝr;,;_二∠r;,_ェ=-ー'" r,_,/ ☆ 【ラッキーレス】 このレスを見た人はコピペでもいいので 10分以内に3つのスレへ貼り付けてください。 そうすれば14日後好きな人から告白されるわ宝くじは当たるわ 出世しまくるわ体の悪い所全部治るわでえらい事です
スペースインベーダー 界 界 界 界 界 界 界 # | # # ### ### ### A
203 :
デフォルトの名無しさん :04/04/02 22:47
それぐらいなら作れそう ところで、ミサイルやインベーダーは出現する度にnewするもんなんですか
オブジェクトの数とかによるな 通常のSTG程度の弾幕なら逐次new〜GCも問題ない 普通にJava2Dつかっていても300MHz以下ならまずいかもしれんが 大概描画関係の方がネック どうせならjavaらしく敵キャラやステージデータは完全にプラグインにしなされ 俺は自己満足といわれようがそうして作ってるけどな なんかSTGツクールでも作った方がいい気がしてきた
205 :
デフォルトの名無しさん :04/04/02 23:01
釣れた!
206 :
デフォルトの名無しさん :04/04/02 23:12
>>204 有り難うございます」」
>どうせならjavaらしく敵キャラやステージデータは完全にプラグインにしなされ
後スミマセン、これってどういう意味でしょうか?
javaはダイナミッククラスローダがうりなんだからという意味だ ひとつのjarにまとめるのもいいけど、わけてそれを差し替え可能にしとくのがいいかなぁと gamemain.jar stagedata.jar enemy.jar って感じで差し替え可能にしておくとパッチ配布が楽になるかもしれん 「URLClassLoader」ってのをしらべてみそ
208 :
デフォルトの名無しさん :04/04/02 23:18
>>204 あとSTGツクール(←死後?)って何のことでしょうか?
www
ツクールは製品名だな いろんなのがでている しかし、マイナーだったのか STG作るならプログラムもいいが まずはこういったツクール系を先に手を出すものだと思ったが ほかにはデザエモンとかシューティング68Kうんずとか 吉田工務店あたりも
>>209 ありがとうございます。
さっぱりわからないのですが?
www
つーか、ネットで検索すればいくらでもでてくるだろうに
シューティングツクールよりデザエモンの方が有名だな。 PC98時代にアスキーのツクールシリーズでSTG作るヤツも出てたけど。
ロードはできてもアンロードはできないjava
スレ違ってないか? たしかにjavaつかったSTGではあるけど、ここは既存のゲームを紹介するスレではない 参考にするならするでかまわんがなにを伝えたいのかがわからん ちなみにPCでできるSTGなど他のスレ関係では激しく既出 そもそも、このスレが場所違うが
んん? 夢独り言板とかいってマジ意味不明
221 :
デフォルトの名無しさん :04/04/18 20:17
つくりたい。
223 :
デフォルトの名無しさん :04/04/19 00:39
俺もJavaでゲーム作りたい。 誰かJBBS借りて、そこで話さない? ここだと、いろんな情報が一箇所にぶち込まれて・・・
そもそもゲーム作成なら板が違うしな ちゃんと計画とかをたてて説明して あっちでまずは立ててみたら?
225 :
デフォルトの名無しさん :04/04/24 02:22
そろそろ完成したかな?
名古屋撃ちムズー
229 :
デフォルトの名無しさん :04/05/30 00:47
ここって初心者レベルのSTGでいいの? なんかHDD整理してたら、俺が高校の時に作った 痛いSTGが出てきたんだけどアップしてみようかな。 ちなみに、ソースもあるけどJava2 1.4だとコンパイルできなかった。
修正してうpしる。 おれも痛いのがあるから。
>>227 JFrame使ってる理由が謎 Swingのクラスローディングの手間かからないFrame使っとけ
>>232 なんで? JPanelとかSwing系のクラス読み込みかかるはずだろ
FrameとJFrameの差がでる環境なんて今時あるのかよ
237 :
デフォルトの名無しさん :04/06/04 00:59
JavaWebStartもツールや業務アプリでは使い物にならんから せめてゲームで盛り上げてくれ
>>238 カッコイイ画面だけどムズイな・・・・
ソース見てなくて悪いんだけど、ダブルバッファリングしてないの??
あのチラチラしてる画面はいい雰囲気だけど、意図的?
あーしまった。 Mac用に最適化したからダブルバファリングやめたんだった。 出直してきます。
漏れはマックなので無問題だった。 独特の操作系統に慣れると走ってるだけでも楽しいね。 ただ敵を壊す爽快感よりも作戦とか緻密な操作に重点があるかんじで あんまシューティングっぽくないような。 あと難しすぎて1面クリアするだけで1時間かかった・・・。
ていうかもう完成の域に達してるんじゃ。 このスレでどうこう言ってもなあ。
243 :
デフォルトの名無しさん :04/06/27 03:06
保守しておこうか
ダブルバッファリング、って言葉自体がもう、懐かしい・・・。 社会人7年目。Javaメインにやってるが、Servlet/JSPオンリーで、 最近はとんとJavaのクライアントサイド、ってのに縁がないな・・・。 久しぶりになんか作ってみたくなった。ゲーム。 でも、ゲームは絵がなー。 いい素材探してくるか。
シューティングなら三角とか四角、丸だけでもそれなりにかっこよく作れる希ガス ABAさんところとかみてみたら?
スレッドって何で使うんだろう…
(;´Д`)
ごめんなさい、先生。 いいボケが思いつきませんでした。 勘弁してください。受け止めきれませんよ。
スレッド使わずに作れるけどな
ウインドウ開いたらそれだけでスレッド作られるだろ
ゲームでわざわざいぱーいスレッド使うのがなんでだろうなんだけどな
使ったほうが作者にとって楽(労力・管理)だから。 あるいは単に使いたいから。 といったところでいかがでしょう。 納得できるような一般解はなかなか得られそうにないかな、と。 特にゲームなんかだと。
綺麗な時間管理でスレッドは必須 というかJFrame作った時点でスレッド作られるし JavaSoundでも自動的に作られる そもそも負荷無しで厳密な時間管理にはスレッド必須
255 :
デフォルトの名無しさん :04/07/10 23:35
>>254 負荷ありでスレッド使わない方がいいよ
メソッドのスレッド.タイマーだけ使う
これが一番ゲーム的
いや、負荷がそれほどかかるゲームってJavaで作るか? よほどの思考系じゃないかぎり10%もいくことはないんじゃない? そもそもスレッドが問題になることはないし 逆にスレッドは厳密な時間管理で必須かと メインスレッドでwaitとTimerTaskでfixedの組み合わせは CPUパワー喰わずにフレームレートが安定動作する 時間のポーリングやる人いるけどあれはCPUパワー喰うくせに 実はsleep並に安定しない事も多い そもそも音関連いれたらスレッド必須だろうに
>>256 Javaで60fps over実現しようとするとやっぱそれなりに
2D程度ならJavaでたいしたことないっつーの 3Dはjava3Dがオープンになった今後の動き次第だろうね そもそもメインスレッドでポーリングしてると他の処理に負荷かかるので 結果としてなめらかに動かない hotspotはバックグラウンドでガリガリコンパイルするし場合によっては 並列GCで動いている可能性もあるかもしれない サウンド周りはLine使うので定期的に動くスレッドが必要 これらに負荷かけてまでポーリングしていたらJavaは重いって言われるの当たり前
>>258 ついつい従来通りに時間のポーリングをしてしまうが、
大半のVMでは最低でもメインスレッド、GCスレッド、ファイナライズスレッドの3スレッド構成になるからなぁ。
他のスレッドに影響を与えるとまでは考えつかなかった。
なかなか興味深いTips thanks
といってもsleep使うのは糞だけどな ポーリングするならsleep(1)をいれたほうがまだましという状況は あるかもしれんがその程度 メインスレッドをobject.wait()で止めてTimerTaskからobject.notify() で起動させるようにするとかなりなめらかになるぞ 特にLinuxでのフレームレートの安定度が段違い ポーリングはWinで一見問題なくても他の環境で問題が出ることもしばしばというわけだ
>>256-260 お前ら本気で言ってるのか??
まずJavaにおけるスレッドの動作を隅々まで調べたほうがいいぞ
>>260 は分かってるかは知らんけど近いこと言ってるな
>>261 どこをどのように修正すると正解なのか言ってみてクレ。
・sleepの粒度・精度は環境によって大きく変わる。 ・TimerTaskは内部的にObject.wait(long)で調整⇒sleepと大差ない。 というわけで、問題は実装の手間だけだろうと言ってみる。 細かくやりたいなら、大まかにSleep(long)/wait(long)で調整したあと 残りをSystem.nanotime()やJava3DTimerでポーリングするとよさげ。 (60fpsで試したらほとんどポーリングしていたが)
Javaはいつからスレッドの状態遷移を自分達でコントロールできるようになったのですか?(w
Objectのwaitってsleep呼ぶより遙かに精度高い・・・というかfixedRateが 定期的に回ってくれるのでちょうど使いやすい 最終的にはどうせ垂直同期とるんだからコンフィグでタイマー&bltを使うか 垂直同期のみかで切り分けるのがよさそう 世の中液晶ディスプレイばかりになったので以前に比べたら かなり状況はよくなってきた希ガス
漏れダイヤモンドトロン
>>265 気合で
すんばらしすぎる殿方達の脳みそのなかで
時間管理がどうこう言うのはJava使ってる時点でナンセンス
時間管理がどうこう言うのはWindows使ってる時点でナンセンス
System#nanoTime を使いませう。
自分のスケジュール管理もできないのに、時間管理なんて考えられないよウワーン つДT)
273 :
デフォルトの名無しさん :04/09/14 00:00:04
274 :
デフォルトの名無しさん :04/10/03 20:55:39
あげ
マルチスレッドで作ろうとしている時点でナンセンス
↑スレッド理解できないやつが一言
C++でもマルチスレッドで作成するのは良くあるそうだが。 入力処理スレッド、描画処理スレッドとか。
278 :
デフォルトの名無しさん :04/11/16 19:00:14
D言語スレにいくつかSTG上がってますが、 ああいうゲームすぐ作れますか?
PureJavaだけだと3Dは厳しいと思ったほうがいい。 2Dだけなら大概問題ないが、アルファブレンドでは加算合成が標準で入ってないあたりが 少しは問題になるだろうか。 あと拡大縮小回転アルファブレンドはアクセラレーションがきかず、ソフトウェア描画になる。 基本的にすぐに作れる。 というかDはまだいいが、CとかC++にくらべればJavaははるかに2DSTGは作りやすい。
描画手法にネックがありそうなJavaよりはマシに思えるんだが>C/C++
描画が普通の場合ネックにならない&SDLつかえるとかあるし 描画以外のところがプログラム組む上で最重要だからな 多態ってのを意識し始めるとどんどん効率はよくなる C++でもできるがある程度言語的に縛られる部分とかもあるのと プログラマのレベルによる品質の差が大きすぎる
283 :
デフォルトの名無しさん :04/11/17 01:24:40
Javaはどこでも動くからいいんだよ それにJITの最適化すげーよ? Cみたいに最適化がコンパイラのバージョンに依存しない どこそこのコンパイラが遅いとか、そういうこと気にする必要ない 新しいJITランタイムができれば再コンパイルする必要すらなく速くなるんだぜ? あれ?でもバイトコードに落とされた時点で多少変わりそうだよな? いくらJITでも最適化すんのはバイトコードレベルなわけだし よくわかんねーや
ダイナミックコンパイルってのは環境に合わせた最適化ができる だからJavaがすでにCより早いとかそういう現象が起きているわけだ まぁ2年位前からだけどな
>まぁ2年位前からだけどな バイトコードの実行時コンパイルなんて、70年代のPascalで既に実装されてたよ
最適化の仕方が違うだろ HotSpot技術は昔から研究されていたが、実用的になったのはここ最近のことだ たんなるJIT技術でいいのなら1.1のころからとっくに問題になってなかったさ
>JavaがすでにCより早い まじっすか
静的コンパイラはコンパイル時点でのチューニングがすべて 同じ命令を解釈するCPUであってもPentiumM系列とNetburst系とで最適化がまったく違う AMDになったり他のCPUになればさらにね そういった対応ができないこともないのが動的コンパイラの利点 SSEやMMXなど対応していればそれを使うし、なければ使わないといったことは すでにやってるはずだよ これをCとかだと自分で書かないといけないわけだが JavaはCよりも速いとかで検索してみそ
で、実際JAVAでプレステやサターンレベルの弾幕シューティングはベクターの どこに置いてあるの。
実行速度と描画速度は別だよなあと思った秋の終わり
PSやサターンレベルなら余裕でつくれるだろ おいてあるのじゃなくて自分で作れ
>>PSやサターンレベルなら余裕でつくれるだろ 余裕でつくれるなら、なぜベクターのゲームがJAVAだらけにならない?
ぼうやだからさ まぁVBだろうがHSPだろうがインタプリタでも余裕で大量生産できるわけで 言語はもはや問題じゃないさ そしてJavaは速度的には早いほうではある 無料で趣味から仕事までカバーできるIDEとかあるのはすげーけどな
新しいテンプレ誕生の予感!! 余裕でつくれるなら、なぜベクターのゲームが○○だらけにならない?
ぼうやだからさ
まともに作れるようになったの1.4だしまだ時間があまり立ってないから使ってる人いないんじゃない? なんだかんだいっても初心者にはEclipseは敷居が高いしな。
1.4はもう2年たってるしEclipseよりは敷居が低いのはNetBeans 実際にJavaのスレみても画像関連の質問がほとんどこないことから 実際に作ってる人がいないだけっぽいな 一応ゲームとしてそれなりに作れるようになったのは1.3あたりからかな 1.4でフルスクリーンやフリップできるようになったのは確かに大きいけどね むしろ最近はランタイムをセットアップさせなくてもJavaアプリが動かせることを しったやつらが多いようなんで、通常のWin32アプリと同じ土俵にたった というのが大きい希ガス
298 :
デフォルトの名無しさん :04/11/19 17:04:26
JREをディレクトリ構造そのままで同梱すればいいってこと レジストリをいじられたくないとか展開するだけでゲームを遊びたい人にはこれでいいだろう
300 :
デフォルトの名無しさん :04/11/19 22:44:31
じゃあ、そろそろ俺が作りはじめます。
>>297 ナローは厳しいな。
作り手側はOSより回線を気にしなきゃいけない。
最近はフリーソフトでもでかいのがおおきいからなぁ 別に同人でCD配布ならサイズはきにせんでいいし
>でかいのがおおきい
とりあえずまずは環境から javaスレなんで言語はjava1.4 IDEはeclipse DBはMySQL アプリケーションサーバーはJBoss フレームワークStruts でいこうと思います。
なんでSTGで鯖環境が必要なんだよ
ネタのつもりなのでは
つまらんネタだな
308 :
デフォルトの名無しさん :04/11/22 11:23:44
ねたっつーか、おちょくってんだろ・・・。
結局何一つまともなSTGが出来てない現状ではおちょくられて当然だな
処理落ちとか気にしないならチョチョイと作れるんだけどねえ つーかJavaで正確なフレームレートなんて(ry
それ以前にWindowsとかLinuxである時点で正確なの無理
保守
314 :
デフォルトの名無しさん :2005/05/13(金) 23:12:02
保守
315 :
デフォルトの名無しさん :2005/05/13(金) 23:42:04
>>312 ハゲドー
専用ゲーム機で作るにかぎるだろ。変にPCOSで作る必要なし。
楽なのはワンダースワンカラーだとおもわれ
316 :
デフォルトの名無しさん :2005/06/05(日) 20:27:34
保守
317 :
デフォルトの名無しさん :2005/06/05(日) 21:44:28
Java5になったわけだがどうよ?
genericsが便利
このスレの名前どおりゲーム開発ということでいえば GCの速度が上がったのは大きいと思う JavaSoundも扱いやすいstaticメソッド増えてるし 移行しない意味はないね
>>236 のゲームがJava5.0になってパワーアップしたらしー
321 :
デフォルトの名無しさん :2005/07/04(月) 03:30:23
Javaで垂直同期を取る方法があると聞いたんですが 本当であるか?
もちろんあるよ
どうやるあるか?
フルスクリーンでBufferStrategyつかえばいいだけ
あ、やっぱフルスクリーンなのね。謝々。
Windowsネイティブでもさすがにページフリッピングは無理
327 :
デフォルトの名無しさん :2005/10/04(火) 21:58:26
Javaで作られたゲームって配布に適してないのですか? 今年理系大学はいってから今までJavaと戯れてたんで Javaでゲーム作ってふりー配布したいのですが。
普通にJREは再配布可能だぞ
329 :
デフォルトの名無しさん :2005/11/01(火) 17:47:01
座標をDimensionで管理しているのですが 当り判定一つにつき相対値絶対値を二つずつ 作らなければいけなく、管理が面倒なんです。 なにか代わりになるものはありませんか? ver1_4_02です
管理が面倒ってそれをラッピングして簡単に扱えるようにさせればいいだけなんじゃないか? 俺は相対座標にRectangleつかって当たり判定もRectangleのintersectsでだしてるが if分で自前で管理するのと速度的に差が出るわけでもないし
あと1.4と1.4.1以降でかなり速度違うので注意な
Rectangleですか。使ってみます。 必要な機能を足せるから自前でまとめるのもよいかな? ありがとうございます。
E・∇・ヨノシ <333ゲット♫
フルスクリーンとバッファーストラテジー使えば sleep使う必要ないということはないよね?
ビデオ設定によってはフルスクリーン時垂直同期が必ず取れるとは限らない 画面モードをかえれるとは限らない リフレッシュレートをかえれるとは限らない その辺考慮して考えればいいかと ターゲットがWindowsであれば640*480-8/16bppはまず大丈夫だけどね 普通はウインドウモードとフルスクリーンモードを造るからどっちの処理も入れておいたほうがいい
宇宙空間でビームを撃った時のような、 「バヒューン」っていう音を持っている人 頂戴。
337 :
デフォルトの名無しさん :2005/12/09(金) 17:09:12
バヒューン
敵の出て来させ方がやる気でない。 皆さんは一体なにを基に敵の出させ方を考えますか?
339 :
デフォルトの名無しさん :2005/12/24(土) 20:37:45
バヒューンって感じで出て来させ方を考えた
340 :
デフォルトの名無しさん :2005/12/24(土) 22:18:28
真空状態だからバビューンは鳴らなくていいよ
自分で作れ Kanawave, swave, PixTone
>340 ワロタ ガンダムもヤマトも全否定ですわ。
↑ばーか
ゲームで何が困るかっていうとキャラデザインと音楽 フリーでいいのない?
345 :
デフォルトの名無しさん :2006/04/28(金) 08:44:01
Bulletmlをやっとビルドできた。
C:\My Documentsに解凍して
C:\My Documents\bulletml0_21\bulletml\src\bulletml
で、バッチファイル一発でビルド。
SET PATH=c:\j2sdk1.4.2_03;c:\j2sdk1.4.2_03\bin
javac -classpath %CLASSPATH%;. jp/gr/java_conf/abagames/bulletml_demo/noiz/*.java
実行はこれでok
SET PATH=c:\j2sdk1.4.2_03;c:\j2sdk1.4.2_03\bin
java -classpath %CLASSPATH%;. jp.gr.java_conf.abagames.bulletml_demo.noiz.Noiz
ところがネットに接続してないと弾幕を出せないんです。
<!DOCTYPE ...
http:// .../bulletml/bulletml.dtd">を
./とかに書き直してもHDDから読まない。
ローカルHDDにあるbulletml.dtdを読ませたいんですけどどうしたらいいでしょう。
bulletml.dtdをバッチファイルの有る場所に置いて <!DOCTYPE bulletml SYSTEM "./bulletml.dtd"> としたら次のエラーが出ました。 fatal error : 基本 URI を使用せずに、相対 URI "./bulletml.dtd" を解決することはできません。 -- start -- java.lang.NullPointerException at jp.gr.java_conf.abagames.bulletml_demo.noiz.BulletImpl.set(BulletImpl.java:67) at jp.gr.java_conf.abagames.bulletml_demo.noiz.GameManager.addBullets(GameManager.java:274) at jp.gr.java_conf.abagames.bulletml_demo.noiz.GameManager.gameWakeUp(GameManager.java:375) at jp.gr.java_conf.abagames.bulletml_demo.noiz.GameManager.wakeUp(GameManager.java:387) at jp.gr.java_conf.abagames.util.LoopThread.run(LoopThread.java:25) at java.lang.Thread.run(Thread.java:534) ** stop **
347 :
デフォルトの名無しさん :2006/04/28(金) 11:13:47
Javaでゲームなんてマゾな事して楽しい?
ゲーム作成なんてマゾな事して楽しい?
349 :
デフォルトの名無しさん :2006/04/28(金) 14:14:53
ゲーム作成それだけでもマゾなのに 出来上がったものは低速でちんたら動いて でもライトワンスランエニウェアだからと慰めるものの 案外どこでも走ってはくれず徒労感ばかり残る まさにマゾのきわみ
マゾは感じる
Java使いはマゾでファイナルアンサー?
そもそもこのスレ板違いだし
数十時間程度で作れる小規模ゲームをアプレットで公開してる分には楽しい Macでもちゃんと動いてるみたいだしね
大規模でもべつにちゃんとうごくだろ
>354 「楽しい」に掛かってるんだろ
356 :
デフォルトの名無しさん :2006/07/04(火) 21:23:38
時給1000円でJava教えてくださるかたを募集します 場所 所沢(池袋・高田馬場から直通) i−want−to−study−java@hotmail.co.jp (アドレスは全角で書いてあるので半角に直してください) よろしくおねがいします
1日1時間とかで覚えれるものではないような
358 :
デフォルトの名無しさん :2006/07/17(月) 21:12:07
教える対象は超初心者です。 専門学校などでJavaを勉強されていて夏休みだけ教えたいという方も歓迎です
2時間で日給4000円ならやるんだがなあ
>>356 一般的な家庭教師の相場と比べても低すぎる。
非一般的なノウハウをその値段で教える奴がいたらバカか下心あるかどちらか。
お前なめてないか