トップページgamedev
987コメント388KB

Javaでゲーム作成 2本目

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2005/10/27(木) 09:43:50ID:dzSvRQXE
Javaでのゲーム作成について情報交換をするスレです。
ゲーム作成以外の話題はム板(http://pc8.2ch.net/tech/)、
他言語に関する話題は他スレでお願いします。

前スレ
JAVAでゲーム作成
http://pc8.2ch.net/test/read.cgi/gamedev/1074347252/

テンプレは>>1->>10あたりを参照
0134名前は開発中のものです。2005/12/12(月) 16:57:06ID:5lGPHviO
ブロック崩しやインベーダーのようなSTGとか

Swingを使えという時点でたぶんそんなレベルじゃない気がする
マルバツゲームとかもっと単純なの

最低自分が何を作りたいかだけはきめてください
0135名前は開発中のものです。2005/12/12(月) 17:05:04ID:6Xf+w43J
>>133
その条件なら特に苦にならんだろう
テンプレあたりに行って資料が多そうなの探せばいんじゃね?
0136名前は開発中のものです。2005/12/13(火) 07:26:14ID:lGjUBPOJ
>>134
12月末までという期限付きなので力量に合わないのに手を出したら怖いなと。
そのためそこそこボリュームがあって簡単に作れるゲームをきいてみたいと思ったわけです。
ちなみにブロック崩しモドキ(ボールをブロックに当てたら壊れる)や
シューティングモドキ(たまを発射させ物に当たったら壊せる)ぐらいは作った事ありますが、
昨日調べた結果によるとリアルタイムで進行させるものは対戦にするのは難しいとか。
それよりターン製のゲームの方が比較的楽でイイヨって書いてありました。。

>>135
つらつらとネットサーフィンしてみましたが400行足らずでも結構うまく作れるものですね、
どんだけのゲーム作れば良いのかと何か不安になってきましたorz
0137名前は開発中のものです。2005/12/13(火) 12:23:28ID:SA14+LJ/
リアルタイムのほうが難しいかどうかは設計しだいかと
12月末ではあと2週間ですか
STGだと1面だけ開発するのも難しそうだ
0138名前は開発中のものです。2005/12/13(火) 14:25:19ID:ULQaYiRM
>>136
とりあえずとっとと着手しろって
ブロック崩しに対戦要素混ぜるとかでいいじゃん。
上下にバー作るとか。
ちょっと工夫するなら、画面半分に分けて上下にバー作って、
1P側の操作で左の下側バーと右の上側バーが同時に動き、
2P側の操作だとその逆。勝利条件をちょっと考えれば
これで十分対戦になるじゃんよ?
0139名前は開発中のものです。2005/12/13(火) 18:22:53ID:lGjUBPOJ
2日で終わらせた人がいたもので、自分でも2週間あればと思っていたのですが・・
なんにせよ選ぶのは程ほどにし、
皆さんの意見を参考にしつつ今から寝ずに頑張ってきます。
他のレポートもあるのでつきっきりになるわけにはいきませんがorz
Thank you.


0140名前は開発中のものです。2005/12/13(火) 18:25:21ID:SA14+LJ/
がんがれ
0141名前は開発中のものです。2005/12/13(火) 23:40:37ID:/KZUefCp
ジョイスティックを扱うには、
JNIとJavaCommunicationAPI、どっちが良いのでしょうか?
前者は高級な機能を使えるけど環境依存、
後者は低級な所からくみ上げる必要があるけど、WinとSunで動く、
という感じなのでしょうか?
0142名前は開発中のものです。2005/12/13(火) 23:43:17ID:msXDQ5aj
>>141
https://jinput.dev.java.net/はどう?
0143名前は開発中のものです。2005/12/13(火) 23:48:38ID:Ngny3SWu
400行のゲームなら、その先生が期待してるのはテトリスあたりかな。
対戦要素を考えるならボンブリスとかか、俺ならそこらへん狙う。と遅レス。
0144名前は開発中のものです。2005/12/14(水) 00:08:34ID:8d4z5wIB
>>142
コミュニティ開発のAPIですか。
まだライセンスを確認してないけど、
頒布の問題が発生しなければいいかもですね。
0145名前は開発中のものです。2005/12/14(水) 00:52:23ID:P5dHJreb
どのライブラリにしろJNIで組まれてる
0146名前は開発中のものです。2005/12/18(日) 01:18:18ID:ART67WNv
フルスクリーンにしようと思うのですが、環境はどんなのが良いのでしょうか?
640x480の16bitでいいかなと思うのですが、Win高級機以外でも32bitって使えますか?
0147名前は開発中のものです。2005/12/18(日) 01:43:27ID:9q2jSVUj
つーか、Win以外は解像度変更あきらめたほうがいいかと
そしてWinでも32bpp出せない環境はある
0148名前は開発中のものです。2005/12/18(日) 01:59:42ID:ART67WNv
>>147
Win以外では無視されるといことでしょうか?
では16bpp(bit per pixel?)にしておけば不具合が起きることもなさそうです。

BIT_DEPTH_MULTIというのもあるのですがこれは使えますか?
スクリーン版JISAutoDetectみたいなものなのかとJavaDocを見て思ったのですが
これといった情報がネットにありませんでした。
0149名前は開発中のものです。2005/12/18(日) 02:03:11ID:9q2jSVUj
指定なしという感じでは?
Linuxでやったときは画面サイズ変更が不可能だったし、ウインドウモードとフルスクリーンモードと作ったよ

内部描画と出力描画を分けるとかが吉かも
速度大幅に低下するけど

あと使用可能な画面をリストアップして処理するのが一番だね
0150名前は開発中のものです。2005/12/18(日) 02:14:24ID:ART67WNv
> 使用可能な画面をリストアップして処理する
ここをもう少し詳しく教えていただけないでしょうか?
device.getDisplayModes();で最高値のモードを探す感じですか?
0151名前は開発中のものです。2005/12/18(日) 13:02:30ID:9q2jSVUj
最高というか自分がやろうとしているモードに最も近いのを探すといった感じかな
0152名前は開発中のものです。2005/12/19(月) 20:35:40ID:o8rpM/SY
グラフィックなどは置いといて、
タクティクスオウガみたいなSLGのシステム作るのに
おまいらだったらどれくらいかかるもんですか?
0153名前は開発中のものです。2005/12/19(月) 20:49:21ID:Xlt1mg4V
時間がかかりそうなものは最初に作ろうとしない
自分がまず完成できるものを選ぶ

のが普通では?
最初から風呂敷広げて崩壊していくのを何度見たことか

たいしたことのないものであってもちゃんと快適動作してバグもないように完成させる、
というのはそれなりに大変なもの
0154名前は開発中のものです。2005/12/19(月) 22:23:05ID:GbGeAi3t
フルスクリーンでゲームをつくってきたんですが、
デバッグがあまりに手間でウィンドウモードに変えたくなってきました。

public Graphics2D getGraphics()
のようにして、
スクリーンマネージャが
getFullScreenWindowからえたWindowから、
BufferStrategyを返して、
それから、Graphics2Dを返して描画するようにしているんですが、
ここから楽にウィンドウモードに切り替えるすべはありますか?
0155名前は開発中のものです。2005/12/19(月) 22:52:44ID:Xlt1mg4V
ウインドウモードでなんでgetFullScreenWindowがでてくるんだ?

0156名前は開発中のものです。2005/12/19(月) 23:30:01ID:vG/cR0LR
いろいろ悩んだ結果たどり着いたのはStrutsだった。
なるほど、これならMVCになる。この感動は衝撃的だった。
おわり。
0157名前は開発中のものです。2005/12/20(火) 00:07:37ID:pKpEoU3U
Strutsでゲームつくったのか?
0158名前は開発中のものです。2005/12/20(火) 00:29:32ID:WpmlUq/X
画面切り替えの仕様がぜんぜんかっこよくならなくて悩んでいたら
Strutsの例のfowerdが頭に浮かんだ。そんだけ。
メインルーチンの戻り値がまさかシーンだったとは・・・みたいな。
0159名前は開発中のものです。2005/12/20(火) 02:15:06ID:FfJ0Icl6
それゲーム内での遷移のスクリプトの話なだけだろ
AVGとかきまったものでしかつかえんよね
0160名前は開発中のものです。2005/12/20(火) 23:06:36ID:WpmlUq/X
うんにゃ、RPGパートからシューティングパートに切り替えるにしてもこの手法でいけるよ。
0161名前は開発中のものです。2005/12/20(火) 23:12:27ID:FfJ0Icl6
その程度のシーン切り替え・・・
0162名前は開発中のものです。2005/12/20(火) 23:19:12ID:WpmlUq/X
ん?流しっぱなのかスタックなのかの指定もこの方法なら簡単なんだけど・・・
0163名前は開発中のものです。2005/12/21(水) 00:10:55ID:38cOblp2
>>153
たいしたことのないものは、そこら辺にソースが転がってるから、
作る気が起きないんだよね。
かといって、ちょっとレベルや規模を広げると、1人じゃお手上げになるし。
0164名前は開発中のものです。2005/12/21(水) 00:12:34ID:2Odzg4dt
たとえばぷよぷよとかテトリス、コラムスなんて作るのは簡単

でも、しっかり音出したり演出出したりバランス取りしてちゃんとしたものを作る
という段階まではなかなか難しい
0165名前は開発中のものです。2005/12/21(水) 20:44:15ID:+HySSU2I
そこそこできたら飽きてしまって次の作りたくなる
0166名前は開発中のものです。2005/12/21(水) 21:12:53ID:2Odzg4dt
その差が途中で投げ出すやつか、それとも同人屋やソフト屋としてちゃんとやっていけるかどうかの差
0167名前は開発中のものです。2005/12/23(金) 20:23:05ID:3FOPkpSW
Javaで作ったRPGでソース公開してるサイトありますか?
もしくはセリフの表示のやり方の紹介とか
0168名前は開発中のものです。2005/12/23(金) 20:57:04ID:/tlDw98+
それ難しくはないだろ

どの変が難しいと思うんだ?
0169名前は開発中のものです。2005/12/23(金) 21:11:56ID:PPOyiaLP
>>167
テンプレ
0170名前は開発中のものです。2005/12/24(土) 11:52:15ID:iqSdFGcF
だれかJava3Dでゲーム作ってる人いない?
0171名前は開発中のものです。2005/12/24(土) 12:56:39ID:gnp/5lgI
1年位前に触ったときJOGLならともかくJava3Dものすごく遅くてお話にならなかったけど
DirectXの実装のほうでね

0172名前は開発中のものです。2005/12/24(土) 16:05:43ID:twljoP+/
>>168-169 レスサンクス
ドラクエみたいに新しい行が挿入されたら
既に表示されてた行が上にずれて1番上の行が消えるとか

主人公の名前を変えられるゲームにおいて
メッセージ中で表示するときはどうしたらいいかとか

ファイルからセリフを読み込むにはとか

テンプレ見て勉強します
0173名前は開発中のものです。2005/12/24(土) 16:31:00ID:Al8Kj3xL
>>172
> 既に表示されてた行が上にずれて1番上の行が消えるとか
Clipが神だと分かったあの日の夜
0174名前は開発中のものです。2005/12/24(土) 16:37:56ID:gnp/5lgI
それ文字列をスクロールさせるのではなくて
BufferedImageで文字列のバッファ用意して毎フレームブリットしたほうが楽
0175名前は開発中のものです。2005/12/26(月) 08:43:49ID:zSwx4yvQ
>>174
勉強になります
dd
0176名前は開発中のものです。2006/01/07(土) 15:15:38ID:EFX7v943
Javaでタスクシステムって作れる?
0177名前は開発中のものです。2006/01/07(土) 18:00:27ID:yOZ6b1cq
オブジェクト指向なんだから普通はポルモルフィズム(多態性)でOK
0178名前は開発中のものです。2006/01/15(日) 10:23:57ID:53jl8YVS
SWTのImageとGCをつかってスプライトを描画しているんですが、
左右反転、上下反転をする際に、
setTransform(...)
で、trans.scale(-1,1);
などとすると複数のスプライトを描く際に実用に耐えられないくらい重いです。
AWTのdrawImageみたいに、それだけで左右、上下反転できないのでしょうか?
srcX,destXを反転させれば良かったAWTにたいし、
SWTだとwith,height指定なので引数に負数を渡すと実行時エラーになってしまい、それだけではできないようにみえます。
ご存じの方、おられましたら宜しくお願いいたします。
0179名前は開発中のものです。2006/01/15(日) 11:12:29ID:aMKMqoWr
SWTはEclipse以外では使わないこと
が正しいと思う

PureJavaのほうがまともな実装ってどういうことさ
って場面がよくある
0180名前は開発中のものです。2006/01/15(日) 20:09:28ID:Vrds102b
SwingでJava2D使おうぜ
01811782006/01/15(日) 22:49:28ID:53jl8YVS
>>178,>>179
なるほど、ありがとうございます。
SWTをつかってアニメーションエディタとゲーム自体を一緒に作っていたのですが、
考え直した方が良いみたいですね。
0182名前は開発中のものです。2006/01/15(日) 22:52:15ID:53jl8YVS
う、間違えました。
>>180
Swingの方がやはりいいんですね。SWT自体は割と扱いやすいとは感じているのですが、
最近は情報も出てこず考え直したりもしています。
SWTを使うと局所的なところでWin32APIなどを呼べるのも魅力なのですが。
思想には反しますけれど。
0183名前は開発中のものです。2006/01/16(月) 00:14:43ID:DTLttG/1
PureJavaとはいえJava2DってDirectX使われてるの知ってる?
情報量は多いしものによっては速度面でも結構いける

1フレームあたり1000個のスプライトとか余裕
0184名前は開発中のものです。2006/01/17(火) 03:10:21ID:9917DXoA
JAVAでカードゲームを作ろうと思っているのですが、
某サイトに開発ツールJAVA2 SDK 1.3と書いてあるのですが、
このスレのテンプレには(Ver5.0のJDKとVer1.4.2) しかなく
どれをDLすればいいのか分かりません
どなたか教えてもらえないでしょうか?
0185名前は開発中のものです。2006/01/17(火) 06:08:31ID:Om3jnpEH
>>184
ハァ?
質問の意味が読めん
0186名前は開発中のものです。2006/01/17(火) 06:37:28ID:1vDzG9rV
>184-185
エスパーちからを発揮してみると、参考にしようと思ったサイトが
1.3だったので、1.3が良いと思ったのではなかろうかと。
1.4か5.0でやってみたら?ほとんどの場合、動くと思うよ。>184
0187名前は開発中のものです。2006/01/17(火) 14:12:13ID:jNVA85J7
>>185-186
日本語がおかしくてすみません
参考にしようと思ってるサイトでは1.3と書いていて
1.3を探したけど、1.4か5.0しかなくて困ってます。
それから1.4と5.0の違いが分からなくて
どっちをDLしていいのか分かりません
違いを教えてもらえないでしょうか?
ちなみにiアプリのゲームを作ろうと思ってます
0188名前は開発中のものです。2006/01/17(火) 14:22:08ID:4NyPfQ7d
ここではJava2SEの話題がメインなので
J2MEの話題はプログラム技術板に専用スレがあったと思うのでそちらのほうがいいかと。

そして動作保障している1.3を使うのが吉。
互換性は細かいタイミングが必要なところではチューニングすればするほど問題が出やすいし。

J2MEといってもiアプリは独自の層があついのでいわゆるJavaという豊富な標準API
を使って開発するという感じはないと思われ。
0189名前は開発中のものです。2006/01/17(火) 17:16:07ID:jNVA85J7
おお!?
そうなのですか
全然知りませんでした^^:
すみませんでした
そっちに行きます
0190名前は開発中のものです。2006/01/18(水) 06:35:27ID:kAS6/zeP
すみませんCPad for Javaについて質問です

CPad for Java 2.31
にてAntが使えるというので、以下のページのやり方で設定してみました
ttp://javacafebreak.tripod.com/document/cpad_tips/cpad_ant.html

このページには「CPadで、Antを実行するには、『F6』キーを押すか、メインメニューの『実行』→『Ant』を選択します」
とかかれているのですが、『F6』キーを押しても何も起こらないし、
「メインメニューの『実行』→『Ant』」などというメニュ項目も見当たりません

CPadで、Antを実行して、さらにエラーメッセージをCPad上のメッセージウィンドウで表示させている人たちは
どうやっているんでしょう
(DOS窓でAntの実行を単独実行するやり方はわかっているのですが、それだとCPadのメッセージウィンドウに表示できないので不便なんです)
環境はWindows2000 JDK1.5.0_06 です
0191名前は開発中のものです。2006/01/18(水) 10:53:20ID:c2N1wZsa
もしかして普通のJavaスレと勘違いしてる?
0192名前は開発中のものです。2006/01/23(月) 17:40:02ID:kW9KAIGh
サーブレットとかJSPでゲームを作るのは無理ですか?
0193名前は開発中のものです。2006/01/23(月) 17:48:15ID:yJIlIQCh
WEBアプリのゲームはあるから無理ではないけど
別にたいした仕組みが必要になるわけでもないと思われ
0194名前は開発中のものです。2006/01/23(月) 22:17:38ID:/EcVc25a
シューティングでインタープリターをつくろうと思ったのですが
文法をどうやって決めればいいのか、どう実行させればいいのか
いまいち想像できません。
敵の出現まではできそうですが、敵の弾の設定(どんな弾を、いつだすか)を
インタープリターでどう表現したらいいのでしょうか?
0195名前は開発中のものです。2006/01/23(月) 22:27:55ID:I0QlWZ4d
>>192
WEBブラウザで行うCGIゲームライクなものなら当然可能。
というか、漏れ自身が現在進行形で作成中。
0196名前は開発中のものです。2006/01/23(月) 22:46:33ID:tL3TpBsR
>>194
なんか設計に悩んでるっぽいことはわかった。
その調子でがんばれ。
0197名前は開発中のものです。2006/01/23(月) 22:49:50ID:yJIlIQCh
>>194
まずは敵のクラス内で処理してみれば?
それを外に出したほうがいいか、ださないほうがいいかは案件しだい
0198名前は開発中のものです。2006/01/24(火) 14:41:32ID:vo2dZIRF
インタープリターよりも簡単なコードジェネレータの方がいいんじゃない?
0199名前は開発中のものです。2006/01/26(木) 15:59:14ID:Pd3Qgsdn
格ゲーで斜めジャンプをさせたいんだけど、上キー+右キーでやらせるにはどうしたら良い?

以下制作中のソース。
public void keyPressed(KeyEvent e){
 int K = e.getKeyCode();
 if(K==KeyEvent.VK_UP) {
  st = 8;
  KeyAction();
 }else if(K==KeyEvent.VK_DOWN){
  st = 2;
  KeyAction();
 }else if(K==KeyEvent.VK_RIGHT){
  st = 6;
  KeyAction();
 }else if(K==KeyEvent.VK_LEFT){
  st = 4;
  KeyAction();
 }
 repaint();
}
0200名前は開発中のものです。2006/01/26(木) 16:52:43ID:ITPJnSj3
>>199
まず根本的なことからなおしましょう

キーのイベントで処理は入れないように

メインループでのみ処理するようにしてください
イベントではフラグの上げ下げのみで
02011992006/01/26(木) 23:31:16ID:Pd3Qgsdn
>>200
サンクス。できるようになりました。
0202まほろば ◆BmUbLWewsM 2006/01/28(土) 18:36:32ID:K+4gOIY6
いやーこのスレは役にたつなー。。
ところで、classファイルからソースコードを盗まれないようにするにはどうしたらいいんでしょ。。
0203名前は開発中のものです。2006/01/28(土) 18:42:43ID:u3ZzJuZS
正直それはあきらめろ

クラスローダ自作したところで実行中のメモリのぞかれれば意味なし
nproではじくとかやると誰も使うやつはいなくなるぞ

ネイティブバイナリでもコンパイラの癖とあたりつければそれなりに追えるんだし・・・とわりきれ
その分開発効率がいいんだからガンガンものづくりに専念しなさいといいたい

オンラインゲーなら毎日こまめにクラスを再配布していれば大丈夫かと
0204まほろば ◆BmUbLWewsM 2006/01/28(土) 21:29:17ID:K+4gOIY6
>>203
実行中のメモリのぞかれれば意味なし
そんな事出きるの?ソースは?
やろうと思えばできるとか妄想でつか?
0205名前は開発中のものです。2006/01/28(土) 21:37:25ID:EnQtmKxX
>>204
メモリ覗くだけならWindows上で実行しちゃえば簡単だろうけど、
手軽に解析って話は俺も聞いたこと無いな。

うちの会社はDashOとかいうバカ高い難読化ツールを買った。
そんな必要無ぇって主張は通らなかった。
0206名前は開発中のものです。2006/01/28(土) 22:44:25ID:PUcSGIMg
読みやすくしてくれるツールはありませんか。
0207名前は開発中のものです。2006/01/28(土) 23:06:37ID:u3ZzJuZS
>>204
多少は調べろ
クラスロードした後はざる
0208まほろば ◆BmUbLWewsM 2006/01/28(土) 23:57:58ID:K+4gOIY6
>>207
0209名前は開発中のものです。2006/01/29(日) 01:11:24ID:1KG7yFUT
結局いいスレだったのをコテハンが壊したってことか。
0210名前は開発中のものです。2006/01/29(日) 02:35:06ID:PecoYXTp
もう大学生は春休みか……
いいご身分だなぁ。
0211名前は開発中のものです。2006/01/29(日) 12:34:08ID:FRX/ORuz
低脳だから卒業後ニート行きで
さらに良いご身分だな
0212まほろば ◆BmUbLWewsM 2006/01/29(日) 13:24:43ID:LX0lKjST
まったくだなww
0213名前は開発中のものです。2006/01/29(日) 17:14:26ID:zbiz4Pm/
GraphicsクラスのdrawImageで浮動小数点数を使う方法って何かない?
ゲームのキャラクターを表示させるためにはint型では精度が悪いんで。
0214まほろば ◆BmUbLWewsM 2006/01/29(日) 17:28:00ID:LX0lKjST
ないよ。javadoc見りゃ分かるじゃん。。
0215名前は開発中のものです。2006/01/29(日) 17:45:07ID:ec+1eYbr
>>213
そういうときは大きいバッファを持つことで回避する
320*240の画像を0.5単位で扱いたいときは640*480とかね

drawRenderedImageとかtranslateを使う方法もあるが
用途がゲームなら使わないほうがすっきりしていいと思われ
0216名前は開発中のものです。2006/01/29(日) 17:57:12ID:2i9o9yjB
>>213
Graphics2D でもいいのなら AffineTransform を使えばできる。
デフォルトでは AffineTransform を使用しても補完してくれないので、
補完方法を設定する必要がある。

Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g2.drawImage(image, transform, null);

こうすると 0.01 単位でヌルっと動かせるけど、それなりに重くなるし
画質もはっきりしたりぼやけたりするので逆にオススメできない。
キャラ自身の内部座標を小数点で扱うのは自由だけど
画像の描画に関しては座標を int で処理するのが現実的だと思う。
0217名前は開発中のものです。2006/01/29(日) 21:48:41ID:qPM3IQVC
正男ってjava?
0218名前は開発中のものです。2006/02/01(水) 20:44:05ID:W1eX6IZO
Javaアプレットでしょ
0219名前は開発中のものです。2006/02/05(日) 00:25:12ID:LCSDYznu
フルスクリーンモードで質問なんですが

  public static void main(String[] args) {
    GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice device = env.getDefaultScreenDevice();

    JFrame frame = new JFrame(device.getDefaultConfiguration());
    frame.setUndecorated(true);

    device.setFullScreenWindow(frame);

    MyPanel panel = new MyPanel();
    frame.getContentPane().add(panel);
  }

こんな感じでフルスクリーン化するフレームの上にパネルをはりつけてます。
このときフルスクリーン状態にはなるんですが、パネルのpaintComponent()が
呼ばれてないらしく描画されません(画面が真っ白のままでサウンドはなります)

panelのpaintComponent()が呼ばれるにはどう修正すればよいでしょうか。
0220名前は開発中のものです。2006/02/05(日) 00:52:34ID:NFbwVJ0F
フルスクリーン使ってるならSwingのイベントモデルにはこだわらないのが普通
BufferStrategyってのをしらべてごらん

ようは好きなタイミングで描画が出来るのだ
0221名前は開発中のものです。2006/02/05(日) 01:21:52ID:LCSDYznu
ありがとうございます。
やっぱそれですか。そうかもと思って実装始めたらできました。
frame.createBufferStrategy(2);
とやってpaintComponent(g)をdraw(g)にかえて
BufferStrategy strategy = window.getBufferStrategy();
Graphics g = strategy.getDrawGraphics();
draw(g);
g.dispose();
でうまく描画できました。
02222192006/02/05(日) 01:30:28ID:LCSDYznu
もう一つあるのでアドバイスいただけるとうれしいです。

Window window = device.getFullScreenWindow();
window.add(JPanelオブジェクト);

とやってフルスクリーン上にパネルを置いています。
こうするとパネルがちらついてしまうのですが対策はあるでしょうか。
0223名前は開発中のものです。2006/02/05(日) 01:52:48ID:8ByMu9YS
まずパネルをおく必要はない
ウインドウ全体を使って描画してるから
02242192006/02/05(日) 09:38:19ID:LCSDYznu
コマンド選択パネルみたいに使っているんですが。

フルスクリーン上でスペース押すと右上にパネルが表示されます。
KeyboardListenerを実装してるのでキー入力はそのパネルが奪い
パネルを消すともとのフルスクリーン上にキー入力がいくという感じです。
パネルじゃなくてCanvasでもいいんですがどうもちらつきます・・・

パネルで何も描画しなくてもちらつくということはフルスクリーンにしてる
JFrame上にコンテナは置いちゃだめということでしょうか。
0225名前は開発中のものです。2006/02/05(日) 12:29:26ID:8ByMu9YS
おいてはいけないということはないが、BufferStrategyはつかえんぞ
02262192006/02/05(日) 13:00:29ID:LCSDYznu
そうですか・・・ボタンやらも全部だめだったのでBufferStrategyの描画領域にコンポーネントは配置してもちらついてしまうみたいですね。
あきらめてパネル風のウィンドウを描画することにします。
0227名前は開発中のものです。2006/02/05(日) 13:25:23ID:8ByMu9YS
ゲーム目的ならコンポーネントの描画は避けるべきだな
すべて自前で描画しないとリフレッシュとかのタイミングがコントロールできん
0228名前は開発中のものです。2006/02/05(日) 14:37:09ID:15xceU0H
便乗だけど、フルスクリーンで文字の入力はどうすればいいの?
英語だけなら楽勝かもしれないけど、漢字変換とかどうすればいいのかさぱーり。
以前コンポーネント埋め込んだら酷いことになって諦めてた
0229名前は開発中のものです。2006/02/05(日) 14:40:46ID:LCSDYznu
MMORPGの市販ゲームとかできてるからやり方あるんだろうけど。Javaだとどうなるんだろ。自分も知りたい。
0230名前は開発中のものです。2006/02/05(日) 15:23:24ID:8ByMu9YS
MMORPGの場合フルスクリーンでもただすべての画面を占有するだけ
といった作りかたしてると思われ

JavaでやろうとするならBufferStrategyをあきらめるほうがいいだろうね
JPanelに画面部分を描画、paintComponentでバックバッファから自前で転送
0231名前は開発中のものです。2006/02/05(日) 17:31:23ID:XoC15JKP

LWJGLやJOGLで日本語文字を画面に表示するにはどうしたらいいんでしょうか。
LWJGLにAWTGLCanvasっていうのがあって、これを使えばできそうなんですが、
サンプルがなく使い方がいまいち分かりません。

みんなはどうやっているんだろう。

以前Graphics2Dでゲーム作ろうと思ったけど、アルファブレンド処理がソフトウェア描画に
なったので、LWJGLに移ったんですが。

うううーーーん
0232名前は開発中のものです。2006/02/05(日) 17:43:24ID:8ByMu9YS
基本はDirectDrawだからな
一応オプションでDirect3Dで動作させればアルファブレンドもハードウェアになるが
レンダリング品質の問題とか通常一番使うブリットが遅いとかJava2Dベースでは
通常合成しか出来ないとかが問題になるからな

LWJGLはまったくさわったことがないのでわからん
JOGLはOpenGLそのままだね
俺が触ったときはSDLとのリンクが未実装だったので対象には上がらなかったが

Java3Dは高級すぎてゲーム用途にはまったく使えないという感じだった
速度がまったくでないことやピクセル単位の処理という感じではなかった

ただ、軽く触っただけなのでなんともいえない
2Dゲームならソフトウェアによるアルファブレンドが問題になるほど遅い場面は少ないとは思う
0233名前は開発中のものです。2006/02/05(日) 19:35:20ID:XoC15JKP

>>232

640x480の画面に32x32のマップをひきつめただけですでに40FPSだったんですよね
Graphics2D。。。

やっぱりC++の方がゲーム開発はいいのかなぁ・・・
開発効率はJavaの方がはるかにいいんですけどね

何かJOGLやLWJGLに近い速度がでるゲーム用ライブラリって
ないんでしょうか

■ このスレッドは過去ログ倉庫に格納されています