JAVAでゲーム作成
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001JAVA初心者・・・
04/01/17 22:47ID:eiE+Mw3o今年に入ってからJAVAでゲームを作ってみようと勉強しています。
どなたか宝さがしゲームを作るうえで参考になるゲームとツール知りませんか??
知っていたら教えてください。<(_ _)>ぺこり
0802名前は開発中のものです。
2005/08/28(日) 15:40:48ID:eP1c+99S単純にこううごくとは言い切れない部分はあるけど、Cのように静的なだけだと
GCやらなんやらが派手に動いてこの速度はでなかっただろうね
0803名前は開発中のものです。
2005/08/28(日) 22:11:59ID:UnhERhE7あとでコードを書き直すときに(たとえばmove/200に変更したいとか)
一カ所だけを変更すればいいから、開発がラクになる。
個人的には何度も使う変数は明示的に一カ所だけで計算しておくのが好み。
0804名前は開発中のものです。
2005/08/29(月) 21:51:16ID:SWKvmGPJ使うコンポーネントはひとつしかないんだもん。当然か^^;
0805名前は開発中のものです。
2005/08/29(月) 21:54:43ID:JsHQuHKu0806名前は開発中のものです。
2005/08/29(月) 21:56:04ID:JsHQuHKuアレは使わなくていい
NetBeansの利点はやはりプロファイラだろう
どのメソッドがネックになってるかとかわかるのは
シビアなタイミングを要求されるゲーム作成時には非常に有利だ
0807名前は開発中のものです。
2005/08/29(月) 21:59:36ID:SWKvmGPJGUIデザイナを使う意味がないってのももちろんだけど
paintComponentよりpaintを弄ったほうが早いんじゃないかなと
変わらないのかな?フルスクリーンにしたとき余計なものがあるのは怖い気もする
0808名前は開発中のものです。
2005/08/29(月) 22:00:05ID:JsHQuHKu0809名前は開発中のものです。
2005/08/29(月) 22:01:50ID:SWKvmGPJあれはpaintを使わないのか
0810名前は開発中のものです。
2005/08/29(月) 22:02:34ID:JsHQuHKu0811名前は開発中のものです。
2005/08/29(月) 22:03:22ID:SWKvmGPJしったかしてレガシーに走るところだったw
0812名前は開発中のものです。
2005/08/29(月) 22:10:26ID:JsHQuHKu0813名前は開発中のものです。
2005/09/02(金) 21:40:42ID:wK2xhSdiMIDIをBGMに、WAVをSEに使えば問題ないんだろうけど
MP3で全て賄いたい人も中にはいるよね
0814名前は開発中のものです。
2005/09/02(金) 22:24:27ID:43CtxQVvそしてライセンスがうるさくないOggが一番簡単に使える環境なんだから
それでいいのでは?
俺は音楽はOggVorbis、効果音はWAVだ
0815名前は開発中のものです。
2005/09/02(金) 23:53:50ID:wK2xhSdiogg良さそうです。完全にフリーで同梱できるなら文句無くコレかと思いました。
これ落としてきてって感じに落ち着くなら今回はパスって感じでした。
もちっと調べてみます。
0816名前は開発中のものです。
2005/09/03(土) 11:37:46ID:lKpzKBXsたとえば、midiを再生したときの音量が違ったり、実行速度がjarの方が早かったりします。
0817名前は開発中のものです。
2005/09/03(土) 13:28:49ID:YpnW9jU+調べてみれ
0818名前は開発中のものです。
2005/09/03(土) 14:19:05ID:Xz6B+qIm使ってるVMのサウンドバンクをみてごらん
0819名前は開発中のものです。
2005/09/03(土) 20:49:51ID:lKpzKBXseclipseでは5.0だったんですが、jarで使ってるのは自動アップデートされたやつでした。
両方とも同じのにしたらちゃんと同じになりました。
0820名前は開発中のものです。
2005/09/03(土) 20:55:23ID:lKpzKBXs古いJREだと音が鳴らなかったりするんで困るな。
0821名前は開発中のものです。
2005/09/03(土) 21:16:21ID:Xz6B+qImJDKいれるとサウンドバンクは入るが、JREには1.3を最後に収録されていない
どうせ5.0はとんでもなくでかいのだから入れても罰は当たらないだろうに
0822名前は開発中のものです。
2005/09/03(土) 23:58:54ID:lKpzKBXs音ってのはmidiじゃなくてwavのことでした。なんかJRE5.0だとWAVを連続再生すると鳴らない場合もあるんだけどJRE5.0update4を入れたらちゃんと鳴るようになったから。
0823名前は開発中のものです。
2005/09/04(日) 00:00:07ID:lKpzKBXs最初の質問はmidiのことでしたが、>>820の音はwavを指しているって意味です。
0824名前は開発中のものです。
2005/09/04(日) 01:13:58ID:Dnjo0IKoupdate2だったかでJavaSoundのバグ修正が入ってる
俺も古いJREだと不具合でてた
0825名前は開発中のものです。
2005/09/04(日) 15:50:13ID:Bw5DOelt0826名前は開発中のものです。
2005/09/04(日) 16:35:06ID:Dnjo0IKo0827名前は開発中のものです。
2005/09/04(日) 17:26:19ID:/DqsvWIZ0828名前は開発中のものです。
2005/09/17(土) 17:55:33ID:goJMz4JCInsetsを利用してクライアント領域を割り出すしかないのでしょうか?
JWindowをcontentPaneにaddすると例外を出して叱られてしまいます。
0829名前は開発中のものです。
2005/09/17(土) 18:13:40ID:l8JeEDP1フルスクリーンモードでタイトルバーを非表示状態で使うものだからね
ウインドウモードだとその設定は必要
最後の一行の意味がようわからんが
0830名前は開発中のものです。
2005/09/17(土) 19:52:52ID:goJMz4JCJFrameの中にJWindowを埋め込めばクライアント領域にぴったり合ってくれるかなと。
0831名前は開発中のものです。
2005/09/17(土) 20:54:12ID:PBk0YJc+アプリケーションでバージョンは5.0です。
フルスクリーンは考えていません。
0832名前は開発中のものです。
2005/09/17(土) 21:52:12ID:l8JeEDP1アクション要素のないゲームということで何でもいいと思う
一番楽なのはJFrameに推奨サイズを指定したJPanelを貼り付けて
JPanelからGraphicsを取得して描画
わからんようだったらゲーム用ライブラリとかさがしてくるのもいいかもね
0833名前は開発中のものです。
2005/09/17(土) 22:35:47ID:goJMz4JC軟弱だけど毎フレームフルにレンダリングした方が良いのでしょうか
0834名前は開発中のものです。
2005/09/17(土) 22:53:00ID:l8JeEDP1ゲームってことは一定レートで描画し続けると思うし
0835名前は開発中のものです。
2005/09/17(土) 22:55:03ID:PBk0YJc+お答えありがとうございます。
作ってるのは思いっきりアクションゲームだったんですが・・・
ちらつきってでますかね?
一応ダブルバッファリングはしてるんですが・・・
0836名前は開発中のものです。
2005/09/17(土) 22:59:55ID:l8JeEDP1ウインドウモードとフルスクリーン両対応のゲームやってみればわかる
0837名前は開発中のものです。
2005/09/17(土) 23:11:44ID:goJMz4JCどもです。これで安心してループを回しまくれます。
5層レイヤーを仕様としていたので、どうしようかと思ってましたw
0838名前は開発中のものです。
2005/09/18(日) 08:48:44ID:FkxpuXPO連打する人の都合を考えると、キーに対してフラグではなく、
キーそのもののTimerTaskが必要な気がします。
これだとキチガイ染みたnewの連発になってしまいそうなのですが
他にもっと上手い方法はありませんでしょうか?
0839名前は開発中のものです。
2005/09/18(日) 11:46:52ID:MCJHGFRIWindowsをメインターゲットでXな環境でもそれなりにうごけばいいというのなら
だいたい大丈夫
0840名前は開発中のものです。
2005/09/18(日) 12:34:58ID:FkxpuXPO押しっぱなしにした場合の次のkeyPressの間隔を
OSではなくこちらで管理しようという試みです。
(OSは押しっぱなしフラグが立つまでが長いため)
ただ全てのkeyStateをひとつのループで探査すると
押しっぱなしの場合の2回目keyPressは
わずかながら探査の間隔分遅れる可能性があります。
探査間隔そのものが数十ミリ秒レベルの精度なので
ある意味問題ないと言えば問題ないのですけどね。
0841名前は開発中のものです。
2005/09/18(日) 15:11:43ID:MCJHGFRI俺60fpsでやってるけど問題ないが
そもそもOSを超えて自前でキーステート取得なんて出来ないわけだが
0842名前は開発中のものです。
2005/09/18(日) 15:20:26ID:FkxpuXPO0843名前は開発中のものです。
2005/09/18(日) 15:43:39ID:MCJHGFRIプレスもらったらフラグ立てるだけだよね?
0844名前は開発中のものです。
2005/09/18(日) 16:10:41ID:FkxpuXPO毎フレームでキーフラグを見るループで処理する方法ですよね?
それは低FPSを考慮してキー入力専用のタスクを作って実装しています。
今は低スペックのマシンで高頻度のループを回す事を危惧しているので
それを避け、OSの押しっぱなし処理を利用してkeyPressに直接処理を書くことを試しました。
ただこれだと2回目の押しっぱなしが遅く気になるといっているんです。
0845名前は開発中のものです。
2005/09/18(日) 16:13:34ID:MCJHGFRI具体的なコードがないとなんとも
フラグを見る方法は60fpsでまったく問題ないんだが
これ以上のfpsが必要とされる場合はそうそうありえないと思うんだが
0846名前は開発中のものです。
2005/09/18(日) 16:14:52ID:FkxpuXPO逆、低FPSだから問題。
テキストボックスでキー押しっぱなしにすればわかります
0847名前は開発中のものです。
2005/09/18(日) 16:16:43ID:ZX6kh5qY0848名前は開発中のものです。
2005/09/18(日) 16:23:37ID:MCJHGFRI0849名前は開発中のものです。
2005/09/18(日) 16:24:35ID:FkxpuXPOそういう用語なのですか?たぶんそれだと思います。
で、結局キーリピートの方法はキー感度をこちらで弄れないので
キー毎にタスクを持たせる方法はどうかという話になりました。
0850名前は開発中のものです。
2005/09/18(日) 16:28:43ID:MCJHGFRI0851名前は開発中のものです。
2005/09/18(日) 16:31:26ID:NetIQL6+0852名前は開発中のものです。
2005/09/18(日) 16:34:04ID:FkxpuXPOそうです。低FPSで一定のキーリピートを実装したいんです。
0853名前は開発中のものです。
2005/09/18(日) 16:38:27ID:M7CaaFPl0854名前は開発中のものです。
2005/09/18(日) 16:41:00ID:MCJHGFRIさすがに想像してなかったな
どういうところで使うんだろう
キーリピートが邪魔というのなら分かるが
0855名前は開発中のものです。
2005/09/18(日) 16:41:42ID:FkxpuXPOそれはやっています。
のんびりとしたキーループではタイミングにずれが出るんです。
0856名前は開発中のものです。
2005/09/18(日) 16:43:35ID:NetIQL6+予想してみるに、Timer使って、一定期間ごとの処理のときに
KeyStateのチェックでもしているんだと予想してみるが
(まぁ、自分がこれをやって、押すタイミングによって、
ムダ連打になったり、ならなかったりで、どうにかしたいと思った経験アリな訳だが
どうやって解決したかは忘れた。)
まぁ、複雑になってくると、あんまりTimerは向かないってのが一つ。
0857名前は開発中のものです。
2005/09/18(日) 16:43:51ID:FkxpuXPORPGのでいうコマンド位置の移動や
アクションで武器毎の連射速度の調整などです。
0858名前は開発中のものです。
2005/09/18(日) 16:49:18ID:MCJHGFRIそういうのは入力側をいじるのではなくて
ゲームのシステムなりがやるものだとおもわれ
0859名前は開発中のものです。
2005/09/18(日) 16:51:27ID:NetIQL6+■←TimerTaskの処理
P←Press
R←Release
つまり
□□■□□□□■□□□□■□□・・・て風に定期処理するプログラムのときに
□□■P □□R ■□□□□■□□←だと4□時間、押してるのに1回
□□■□□□P ■R □□□■□□←だと3□しか押してない(チョイとしか押してないつもり)なのに連打になってしまう
・・・って、ことだと思う。
0860名前は開発中のものです。
2005/09/18(日) 17:00:34ID:NetIQL6+前の時刻から、一定時間たったらリピートが、良さそうかな。
0861名前は開発中のものです。
2005/09/18(日) 17:04:08ID:MCJHGFRIデザインパターンとか多少目を通したほうが楽かもね
0862名前は開発中のものです。
2005/09/18(日) 17:27:01ID:FkxpuXPOこれでキーリピートができると再利用性が向上して作りやすいんです。
・入力処理による行動キューへの書き込み
・メインループによる行動判定処理及びメモリスクリーンの更新
・FPSループによるディスプレイへの描画
>>860
キー判定ループを1つにするかキー分用意するかの違いなんですけどね。
キー判定ループを押される度に生成ではなく、押されるまで寝かせるとかだと改善するのかな
>>861
デザパタですか。なんちゃらファクトリーとシングルトンならよく使います。
なんちゃらって答えてる時点で分かってないって事なんですがw
0863名前は開発中のものです。
2005/09/18(日) 17:58:14ID:MCJHGFRIリアルタイム系ではなくいわゆるウインドウシステムみたいなものを作りたいようだから
ディスプレイへの描画はループさせる必要はないよ
0864名前は開発中のものです。
2005/09/18(日) 18:07:20ID:FkxpuXPOいや移動処理とかあるので描画ループは必要です。
もちろんトリガ式の描画モードも実装する必要はありますが。
0865名前は開発中のものです。
2005/09/18(日) 19:23:42ID:MCJHGFRIたとえば現在のモードが戦闘モードなのか移動モードなのか判断してまわすだけ
たとえばマス単位で動くなら動いた後にはキーイベントキューをクリアするとかの処理が入ればいいだけ
たぶんゲーム作りなれてないのならループ処理よりこっちのほうがやりやすいかもね
0866名前は開発中のものです。
2005/09/19(月) 16:53:42ID:jM2IG00Zからそのへん学んだ。変数にフレームごとの状態を記録しておく。
0867名前は開発中のものです。
2005/10/02(日) 23:11:49ID:ZLCcRisp↑これってShapeとかImageもOpenGLで高速に描画できるって事ですかね
0868名前は開発中のものです。
2005/10/02(日) 23:24:24ID:Tb1DEFOC5.0から一応OpenGLレンダリングできることになってるけど、イマイチだし
Windows環境ならDirectDrawやDirect3D使ってレンダリングできる。
オプションとか描画の種類とか多少知識が必要だけれども。
Imageの通常転送に関してはDirectDrawで安定して高フレームレートでてるよ。
SDL並みといっていいのでは?
0869名前は開発中のものです。
2005/10/02(日) 23:53:51ID:/Mx50MbJその後アプリを最小化するとそのメモリリークしたメモリが一気に回復するのですが
このリソースの回収を表示モードの切り替え直後に行う方法はないでしょうか?
0870名前は開発中のものです。
2005/10/03(月) 00:20:05ID:+tMRcs2pSystem.gc()じゃだめ?
現在通常ウィンドウとフルスクリーンを交互に表示するプログラムのコード断片希望
0871名前は開発中のものです。
2005/10/03(月) 00:39:53ID:66QjCFIvif (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);
}
0872名前は開発中のものです。
2005/10/03(月) 00:42:00ID:66QjCFIv>>870
gcではびくともしませんでした。
ソースですが、isFullScreenを切り替えた後で
setVisible(false);setVisible(true);とすれば切り替わるようになっています。
createBufferStrategy(numBuffers); が一見無駄に見えますが
これはコメントアウトしても何の影響もありませんでした。
よろしくおねがいします。
0873名前は開発中のものです。
2005/10/03(月) 01:12:05ID:vx+N+SLCたぶん仕様っぽいけど表示のON/OFFでdispose後再構築とかやらんとだめっぽいな
一見問題ないようでもネイティブのリソースであるVRAMを扱うのは
ヒープのように単純にいかんよな
いまじゃJava2DもDirectDrawでガンガンアクセラレーションされてるから
0874名前は開発中のものです。
2005/10/03(月) 02:01:20ID:66QjCFIv最小化してから通常化に戻すというのをコードから書けるならですけど。
0875名前は開発中のものです。
2005/10/03(月) 06:09:25ID:vx+N+SLC0876名前は開発中のものです。
2005/10/03(月) 22:26:39ID:66QjCFIvdispatchEventっての使ってみても何も起きなかった
0877名前は開発中のものです。
2005/10/03(月) 23:06:06ID:vx+N+SLC0878名前は開発中のものです。
2005/10/03(月) 23:26:41ID:66QjCFIv2日ぐぐったのに見付からなかったorz
リソースの開放も確認できて無事解決しました。
ありがと。
0879名前は開発中のものです。
2005/10/09(日) 17:11:50ID:fwcbNJiA1.4より前のバージョンを使ってるユーザのためにやっといたほうがいいんでしょうか?
0880名前は開発中のものです。
2005/10/09(日) 18:07:35ID:4gGFYlg9自分で処理かかないとダメだよ
それにページフリッピングできるのは1.4以降だし
0881名前は開発中のものです。
2005/10/09(日) 18:23:24ID:fwcbNJiA0882名前は開発中のものです。
2005/10/09(日) 18:34:11ID:4gGFYlg9まぁRPGとかAVGならありだけど
あとかならずVolatileImage使われるともかぎらないから
速度とか考えたら自前でやったほうが管理は楽かもよ
フルスクリーンや垂直同期フリップが使えるし
0883名前は開発中のものです。
2005/10/09(日) 19:04:43ID:fwcbNJiASwingのJPanelをキャンバスにしてpaintComponent()を使わずに自分でダブルバッファリング書く+アクティブレンダリングというのが一般的ですか?
0884名前は開発中のものです。
2005/10/09(日) 21:18:18ID:6yAhCZU00885名前は開発中のものです。
2005/10/09(日) 21:25:22ID:4gGFYlg90886名前は開発中のものです。
2005/10/09(日) 23:43:37ID:h4Io2UVMみんな親切だよね
0887名前は開発中のものです。
2005/10/10(月) 20:58:06ID:AeWSx6q10888名前は開発中のものです。
NGNG0889名前は開発中のものです。
NGNG0890名前は開発中のものです。
2005/10/11(火) 19:12:50ID:/G/d0EXvあとはその言語の思想とか癖をおぼえるだけ
ただ、最低限の基礎はほしい
2の補数とか通じないのが最近多いんよ
0891名前は開発中のものです。
2005/10/11(火) 20:10:51ID:RlHG5uwm俺の場合はN88Basic→C→C++(挫折)→Perl→Java→C++
と勉強した。
0892名前は開発中のものです。
2005/10/11(火) 20:11:11ID:xz1uAK9j2年後には、携帯JavaもCLDCからCDC(Java SEのサブセット)が標準になる
と言う話しだし。Javaは絶対に今後ブレークwする。
その次はコンパイラの勉強とか。
0893名前は開発中のものです。
2005/10/11(火) 20:15:09ID:xz1uAK9j私は最初の言語がC++で就職してからやって、難しすぎてびびりました。
基礎は研修中(2ヶ月程)に何とか身に付けたけど。
0894名前は開発中のものです。
2005/10/11(火) 22:07:55ID:q+6COAGoちなみに、コンパイルは方法このスレにうp、多分たまに成功。
0895名前は開発中のものです。
2005/10/11(火) 23:48:33ID:7JCIKF14ハッカーおすすめの言語習得コースが確かこんなだった
0896名前は開発中のものです。
2005/10/12(水) 00:32:35ID:Quf6hxtTゲーム系の場合 Lisp はやっといても損ないけど
Perl と Python は飛ばしてもいいと思われ。
0897名前は開発中のものです。
2005/10/12(水) 01:07:32ID:hYkIIT7D0898名前は開発中のものです。
NGNGもう1つ質問ですHSP(多分あってる??)ってゲームのプログラミングに必要なんでしょうか?
ゲームのプログラミングに特化(言葉あってるかな?)してるらしいけど…
0899名前は開発中のものです。
2005/10/12(水) 18:50:44ID:x4tgIjOtホット・スープ・プロセッサ"HSP"でぐぐるべし。
0900名前は開発中のものです。
2005/10/12(水) 19:17:55ID:LZvwtrrw「Javaでゲーム作りますが何か?」を読むのが一番早い。
レス数が900を超えています。1000を超えると表示できなくなるよ。