Javaでゲーム作成 2本目
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2005/10/27(木) 09:43:50ID:dzSvRQXEゲーム作成以外の話題はム板(http://pc8.2ch.net/tech/)、
他言語に関する話題は他スレでお願いします。
前スレ
JAVAでゲーム作成
http://pc8.2ch.net/test/read.cgi/gamedev/1074347252/
テンプレは>>1->>10あたりを参照
0084名前は開発中のものです。
2005/12/07(水) 06:51:27ID:R+Rh6YVGつまり、描画先を回転させて
そこに描画して、回転させた分
逆回転させて他はもと通り、と解釈して実行し
成功致しました。ありがとうございます。
しかし、これは斜めになったとき
四角の余白が黒くなってしまいます。
これの解決方法はどうすればよいのでしょう?
背景を再び描画も考えましたが
回転させたものが塗り潰されてしまいます。
0085名前は開発中のものです。
2005/12/07(水) 09:35:30ID:hZztkAcv先に塗り潰すという発想がでてこんのだ。
0086名前は開発中のものです。
2005/12/07(水) 19:03:18ID:R+Rh6YVG______
|■/ \■|
↑回転した画像
て感じにうえの部分に黒い部分ができてしまうんです。
さて、どうしたものか?
0087名前は開発中のものです。
2005/12/07(水) 19:17:03ID:ruXn40F60088名前は開発中のものです。
2005/12/08(木) 14:23:17ID:wcnvECNEg.rotate(time*PI/,characenter.x,characenter.y);
g.drawImage(chara,null,gx,gy);
g.rotate(-time*PI/,characenter.x,characenter.y);
time++;
これでいいんですよね?
0089名前は開発中のものです。
2005/12/08(木) 15:51:44ID:Voeburfjprotected BufferedImage image = 知らん;
protected Point2D center = 知らん;
protected AffineTransform rot = new AffineTransform();
protected double rpf = 0.1; //回転の量
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
// ... ここで背景描画する
// rpfの量だけ回転させて描画
rot.rotate(rpf, center.getX(), center.getY());
g2.drawImage(image, rot, null);
}
2D じゃない方の Graphics の使い方はわすれた。
0090名前は開発中のものです。
2005/12/08(木) 16:27:30ID:+Z+rNNsb背景黒く塗ってるっぽいから黒くなるのは正しい動作だとみたが?
009188
2005/12/08(木) 20:08:36ID:wcnvECNE>>89
すみません。このコードの前に
int time=1;
double PI = Math.PI;
ってあって
time*PI/は
time*PI/180の間違いです。
そしてそのコードを実行した結果
見事指定した座標を中心にぐるぐると
私がしたいのはその場を動かずに回ることだったのですが。
というかこれでも黒い部分でてきました。すみません。
>>90
g.setColor(Color.GREEN);
って事前にやってたんです。
0092名前は開発中のものです。
2005/12/08(木) 20:58:51ID:+Z+rNNsb該当部分のソースを最小限にしてコンパイルできるものを出したほうがいいんじゃね?
0093名前は開発中のものです。
2005/12/08(木) 21:03:25ID:HtN2IVyaプロジェクト > games > games-middleware > genuts
ttp://www.genuts.com/
Genuts Cheese Indigestion Puzzle
オモシロスwww
0094名前は開発中のものです。
2005/12/09(金) 01:58:21ID:DR3+EYk2XML? properties?
0095名前は開発中のものです。
2005/12/09(金) 02:29:57ID:HsQzl6B+0096名前は開発中のものです。
2005/12/09(金) 12:27:40ID:wi5fEo9o修正もこまめに入ると思うし、文字だけじゃなくてたのパラメータも必要になると思うから
XMLが汎用性では一番かと
0097名前は開発中のものです。
2005/12/09(金) 17:53:50ID:3zLl7jhnttp://fivedots.coe.psu.ac.th/~ad/jg/ch1/index.html
0098名前は開発中のものです。
2005/12/09(金) 23:37:39ID:6Nnex+8J0099名前は開発中のものです。
2005/12/09(金) 23:40:17ID:HsQzl6B+0100名前は開発中のものです。
2005/12/10(土) 00:04:18ID:KuqpST++内部ではElementでつかうのがいい
010197
2005/12/10(土) 21:23:28ID:h8wANggUttp://fivedots.coe.psu.ac.th/~ad/jg/ch04/index.html
Graphics2Dは知らないお^^;
0102名前は開発中のものです。
2005/12/10(土) 22:25:02ID:KuqpST++ただ、普段以上にメモリ使用量は把握していかないと駄目
GCがかなり増えるから
速度が必要な場合あらかじめ回転させておくとかが必要になるね
アクセラレーションきかないから
0103名前は開発中のものです。
2005/12/10(土) 22:27:15ID:MpQxaKQL0104名前は開発中のものです。
2005/12/10(土) 22:35:58ID:KuqpST++Java2Dって高級すぎるAPIなんでどれがアクセラレーションきいて、どれがきかないのか
チェックするのが大事
基本的に速度は1.4.2と5.0でかわってないよ
アクセラレーションがきけば秒間にスプライトが万単位で描画できるはずだが
やることをかえるとこれが一気に1/100以下に下がったりする
0105名前は開発中のものです。
2005/12/10(土) 23:04:18ID:MpQxaKQL昔ながらのアナログ手法にしとくか
0106名前は開発中のものです。
2005/12/11(日) 01:01:17ID:xyghd8DO60fpsで128*128の回転スプライトが1000個は無理だと思う
010794
2005/12/11(日) 12:16:09ID:hWRTdhf0>>100
XMLの方が柔軟性があって良いということですね。
propertiesは簡単な設定の保存程度にしておいた方が良いのかもしれませんね。
ありがとうございます。
0108名前は開発中のものです。
2005/12/11(日) 14:37:45ID:ohNVp0t4400MHz、64MB、VRAM8Mでどこまで出来るかがポイントだな。
まあ回転なんてギャラガとか作ろうと思わなければ使わないけど。
0109名前は開発中のものです。
2005/12/11(日) 15:20:14ID:xyghd8DOVRAM8MってことはTNTとかあのあたりかな
ならアクセラレーションの速度も問題にならない
メインメモリ64Mが一番のネックかと
GCの調整はプロファイラとにらめっこになるね
ヒープサイズ自体を24M以下に抑えてももVM方面で厳しい
1.4.2のほうがメモリ消費は少ないからそっちのほうがオススメか
Pen3/1GHz+統合ビデオでテストしてみたけど
上で上がってた2DSTGは60fpsでサクサク動いた
0110名前は開発中のものです。
2005/12/11(日) 17:02:52ID:5bLTV7mU遅レスだが、これいいよ
ttp://www.oreilly.com/catalog/java2d/
0111名前は開発中のものです。
2005/12/11(日) 17:06:21ID:xyghd8DO0112名前は開発中のものです。
2005/12/11(日) 17:43:34ID:FJ8u3O2A0113110
2005/12/11(日) 18:11:19ID:45Ys85hPBufferedImageの細かい解説とか画像処理関連のことがら
についておさえて書かれているところがおすすめ
>>1999年ってやけに古いけど大丈夫なのか・・・
Graphics2Dの基本についてはそんな変わってないはず。
5.0以降どうなったかは知らんが。
あーでも画像ファイル読み込みでImageIO使う解説とかはなかったような。。
ま、そのあたりはWebの情報その他で補うとして、Java2D本体の包括的な
解説書としてはこれけっこういいと思う。
>>日本語訳がないんじゃさすがにここで質問する初心者にはすすめれんが
これについては「がんばって読めや」といいたいが、それもなあ。。。
画像処理とかについては書いてないけど、
Graphics2Dでのprimitiveの描画ひととおり+基本的な変換(Affine変換とか)だけなら、
ttp://www.iamas.ac.jp/~furu/book/motion/
とかもいいかも。
でも、これらとかは本なんか見んでもWebに情報ころがってるな。
0114名前は開発中のものです。
2005/12/11(日) 19:59:25ID:xyghd8DOGraphics程度の低レベルAPIでもいいからどれがアクセラレーションきくかどうか、
速度的なものやメモリ使用量把握だからねぇ
ところでGraphics2Dでそろそろ加算合成実装して欲しいんだがすばらしく放置だよな
そもそも基本についてはSunのマニュアルで代替分かると思う
0115名前は開発中のものです。
2005/12/11(日) 20:35:51ID:CGEh3W0j透明、半透明が使えないので、事実上まともなゲーム制作には使えない。。。
createCompatibleVolatileImageメソッドでTransparency引数が
指定できるが、定義だけでまだ実装されてない。。。
つまり、BufferedImageを使うしかない。これへの描画メソッドに
アクセラレーションが効いてるのはない。。。
0116名前は開発中のものです。
2005/12/11(日) 20:40:29ID:xyghd8DO5.0からつかえるようになったけど?
0117名前は開発中のものです。
2005/12/11(日) 20:43:08ID:ohNVp0t40118名前は開発中のものです。
2005/12/11(日) 20:45:55ID:xyghd8DO0119名前は開発中のものです。
2005/12/11(日) 20:48:17ID:xyghd8DOあるスレッショルドを超えると内部でVolatileImageにして転送してくれる
この設定値を0にするのがまず基本
5.0からはこの動作範囲が広いようだ
つまり、最適化されてないアプリだと高速化する可能性あり
1.4.2までにチューニングしてると速度向上は一切なし
5.0で画像周りの速度が速くなったというやつは大概設定ミス
0120名前は開発中のものです。
2005/12/11(日) 21:36:17ID:CGEh3W0j使えない。5.0でも使えない。
どの環境(OS)で使えたのか教えてくだされ。
0121名前は開発中のものです。
2005/12/11(日) 21:40:12ID:CGEh3W0jこの設定値を0にするのがまず基本、とは?
設定値とは何を指してるのか?
具体的に教えてくだされ
0122名前は開発中のものです。
2005/12/11(日) 21:56:41ID:xyghd8DO1.4.2まではムリ
5.0から追加されてるメソッド使うからね
Windowsで確認済み
スレッショルド指定はSunのドキュメントにも書いてある
これをメインクラスのstatic初期化にいれておけ
System.setProperty("sun.java2d.accthreshold","0");
標準出力に出るので、それを設定してあるアプリかどうかはすぐに分かる
ちなみに0とは描画回数が0という意味
画像をBufferedImageにロードした段階でVRAMにも転送することを現す
1なら最初に描画しようとしたときにまずVRAMへ転送、そしてVRAM>VRAMを処理する
この辺はすべてSunの日本語資料にある
0123名前は開発中のものです。
2005/12/11(日) 22:10:48ID:CGEh3W0j自分もWindowsXpなのだけど、VolatileImage を使うと
アルファ値0のピクセルが真っ白になってしまう。。。
列挙された全GraphicDeviceの全GraphicConfigurationから得る
VolatileImageのTransparencyタイプが、全てOpaqueになってる。。。
本当にWindowsでValatileImageの透明機能が使えたのですか?
0124名前は開発中のものです。
2005/12/11(日) 22:44:05ID:xyghd8DO0125名前は開発中のものです。
2005/12/11(日) 22:51:58ID:CGEh3W0jGraphicEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gd.getDefaultConfiguration();
VolatileImage image = createCompatibleVolatileImage(640, 480, Transparency.TRANSLUCENT);
これで得る image は、半透明でないのです。。。
gd、gc を列挙させて、その全てから得るimageも半透明でないです。。。
0126名前は開発中のものです。
2005/12/12(月) 00:52:54ID:5lGPHviOBITMASKでの透過ならいける
0127名前は開発中のものです。
2005/12/12(月) 00:53:29ID:5lGPHviO0128名前は開発中のものです。
2005/12/12(月) 01:05:16ID:5lGPHviOたぶんロードのところミスってると思うよ
0129名前は開発中のものです。
2005/12/12(月) 01:12:31ID:5lGPHviOImageIOでロードしたアルファつき画像をそのまま128個描画
8fps
ちゃんと設定したVolatileImageとBufferedImageが同じで
50fps
となった
アルファつきならVolatileImageにおく必要はないね
0130名前は開発中のものです。
2005/12/12(月) 01:17:38ID:4tfiFb5fとしておけば普通にBufferedImageでOKってこと?
0131名前は開発中のものです。
2005/12/12(月) 01:26:16ID:5lGPHviO単なる透過を描画した場合
フルスクリーンモードならTRANSLUCENTでもBITMASKでも
スプライト2048個描画で60fps維持
スプライトサイズは64*64で
画面モードは640*480にしたときの場合ね
オンボードビデオでこれなのでnVIDIAとかATIとかのそれなりのつめば余裕で超えるかと
通常モードはDirectDrawのラッパだと考えればどれが速いかとか分かりやすいと思う
0132名前は開発中のものです。
2005/12/12(月) 01:28:24ID:5lGPHviOほとんどの場合はそういうこと
あくまでも描画先をVolatileImageで描画元はBufferedImageで
VRAMにおくかどうかはインテリジェントに任せるというのがJavaらしいかな
VRAMにおく優先順位とかもあるので頻繁に描画しないやつはそれを抑えておくといい
この方法ならVRAM容量が多ければ加速しやすいとかそういう感じ
昔AGP登場時の思想にあったやつね
0133名前は開発中のものです。
2005/12/12(月) 16:21:39ID:xzlsw/bc行数は400以上&対戦ゲーム&Swingというのが条件です。
既存のゲームでなるべく参考資料が沢山あるものが良いのですが・・・
アイデアゲームは自分のスキルや時間的制約から作る自信が無いですorz
0134名前は開発中のものです。
2005/12/12(月) 16:57:06ID:5lGPHviOSwingを使えという時点でたぶんそんなレベルじゃない気がする
マルバツゲームとかもっと単純なの
最低自分が何を作りたいかだけはきめてください
0135名前は開発中のものです。
2005/12/12(月) 17:05:04ID:6Xf+w43Jその条件なら特に苦にならんだろう
テンプレあたりに行って資料が多そうなの探せばいんじゃね?
0136名前は開発中のものです。
2005/12/13(火) 07:26:14ID:lGjUBPOJ12月末までという期限付きなので力量に合わないのに手を出したら怖いなと。
そのためそこそこボリュームがあって簡単に作れるゲームをきいてみたいと思ったわけです。
ちなみにブロック崩しモドキ(ボールをブロックに当てたら壊れる)や
シューティングモドキ(たまを発射させ物に当たったら壊せる)ぐらいは作った事ありますが、
昨日調べた結果によるとリアルタイムで進行させるものは対戦にするのは難しいとか。
それよりターン製のゲームの方が比較的楽でイイヨって書いてありました。。
>>135
つらつらとネットサーフィンしてみましたが400行足らずでも結構うまく作れるものですね、
どんだけのゲーム作れば良いのかと何か不安になってきましたorz
0137名前は開発中のものです。
2005/12/13(火) 12:23:28ID:SA14+LJ/12月末ではあと2週間ですか
STGだと1面だけ開発するのも難しそうだ
0138名前は開発中のものです。
2005/12/13(火) 14:25:19ID:ULQaYiRMとりあえずとっとと着手しろって
ブロック崩しに対戦要素混ぜるとかでいいじゃん。
上下にバー作るとか。
ちょっと工夫するなら、画面半分に分けて上下にバー作って、
1P側の操作で左の下側バーと右の上側バーが同時に動き、
2P側の操作だとその逆。勝利条件をちょっと考えれば
これで十分対戦になるじゃんよ?
0139名前は開発中のものです。
2005/12/13(火) 18:22:53ID:lGjUBPOJなんにせよ選ぶのは程ほどにし、
皆さんの意見を参考にしつつ今から寝ずに頑張ってきます。
他のレポートもあるのでつきっきりになるわけにはいきませんがorz
Thank you.
0140名前は開発中のものです。
2005/12/13(火) 18:25:21ID:SA14+LJ/0141名前は開発中のものです。
2005/12/13(火) 23:40:37ID:/KZUefCpJNIとJavaCommunicationAPI、どっちが良いのでしょうか?
前者は高級な機能を使えるけど環境依存、
後者は低級な所からくみ上げる必要があるけど、WinとSunで動く、
という感じなのでしょうか?
0142名前は開発中のものです。
2005/12/13(火) 23:43:17ID:msXDQ5ajhttps://jinput.dev.java.net/はどう?
0143名前は開発中のものです。
2005/12/13(火) 23:48:38ID:Ngny3SWu対戦要素を考えるならボンブリスとかか、俺ならそこらへん狙う。と遅レス。
0144名前は開発中のものです。
2005/12/14(水) 00:08:34ID:8d4z5wIBコミュニティ開発のAPIですか。
まだライセンスを確認してないけど、
頒布の問題が発生しなければいいかもですね。
0145名前は開発中のものです。
2005/12/14(水) 00:52:23ID:P5dHJreb0146名前は開発中のものです。
2005/12/18(日) 01:18:18ID:ART67WNv640x480の16bitでいいかなと思うのですが、Win高級機以外でも32bitって使えますか?
0147名前は開発中のものです。
2005/12/18(日) 01:43:27ID:9q2jSVUjそしてWinでも32bpp出せない環境はある
0148名前は開発中のものです。
2005/12/18(日) 01:59:42ID:ART67WNvWin以外では無視されるといことでしょうか?
では16bpp(bit per pixel?)にしておけば不具合が起きることもなさそうです。
BIT_DEPTH_MULTIというのもあるのですがこれは使えますか?
スクリーン版JISAutoDetectみたいなものなのかとJavaDocを見て思ったのですが
これといった情報がネットにありませんでした。
0149名前は開発中のものです。
2005/12/18(日) 02:03:11ID:9q2jSVUjLinuxでやったときは画面サイズ変更が不可能だったし、ウインドウモードとフルスクリーンモードと作ったよ
内部描画と出力描画を分けるとかが吉かも
速度大幅に低下するけど
あと使用可能な画面をリストアップして処理するのが一番だね
0150名前は開発中のものです。
2005/12/18(日) 02:14:24ID:ART67WNvここをもう少し詳しく教えていただけないでしょうか?
device.getDisplayModes();で最高値のモードを探す感じですか?
0151名前は開発中のものです。
2005/12/18(日) 13:02:30ID:9q2jSVUj0152名前は開発中のものです。
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:Xlt1mg4V0156名前は開発中のものです。
2005/12/19(月) 23:30:01ID:vG/cR0LRなるほど、これならMVCになる。この感動は衝撃的だった。
おわり。
0157名前は開発中のものです。
2005/12/20(火) 00:07:37ID:pKpEoU3U0158名前は開発中のものです。
2005/12/20(火) 00:29:32ID:WpmlUq/XStrutsの例のfowerdが頭に浮かんだ。そんだけ。
メインルーチンの戻り値がまさかシーンだったとは・・・みたいな。
0159名前は開発中のものです。
2005/12/20(火) 02:15:06ID:FfJ0Icl6AVGとかきまったものでしかつかえんよね
0160名前は開発中のものです。
2005/12/20(火) 23:06:36ID:WpmlUq/X0161名前は開発中のものです。
2005/12/20(火) 23:12:27ID:FfJ0Icl60162名前は開発中のものです。
2005/12/20(火) 23:19:12ID:WpmlUq/X0163名前は開発中のものです。
2005/12/21(水) 00:10:55ID:38cOblp2たいしたことのないものは、そこら辺にソースが転がってるから、
作る気が起きないんだよね。
かといって、ちょっとレベルや規模を広げると、1人じゃお手上げになるし。
0164名前は開発中のものです。
2005/12/21(水) 00:12:34ID:2Odzg4dtでも、しっかり音出したり演出出したりバランス取りしてちゃんとしたものを作る
という段階まではなかなか難しい
0165名前は開発中のものです。
2005/12/21(水) 20:44:15ID:+HySSU2I0166名前は開発中のものです。
2005/12/21(水) 21:12:53ID:2Odzg4dt0167名前は開発中のものです。
2005/12/23(金) 20:23:05ID:3FOPkpSWもしくはセリフの表示のやり方の紹介とか
0168名前は開発中のものです。
2005/12/23(金) 20:57:04ID:/tlDw98+どの変が難しいと思うんだ?
0169名前は開発中のものです。
2005/12/23(金) 21:11:56ID:PPOyiaLPテンプレ
0170名前は開発中のものです。
2005/12/24(土) 11:52:15ID:iqSdFGcF0171名前は開発中のものです。
2005/12/24(土) 12:56:39ID:gnp/5lgIDirectXの実装のほうでね
0172名前は開発中のものです。
2005/12/24(土) 16:05:43ID:twljoP+/ドラクエみたいに新しい行が挿入されたら
既に表示されてた行が上にずれて1番上の行が消えるとか
主人公の名前を変えられるゲームにおいて
メッセージ中で表示するときはどうしたらいいかとか
ファイルからセリフを読み込むにはとか
テンプレ見て勉強します
0173名前は開発中のものです。
2005/12/24(土) 16:31:00ID:Al8Kj3xL> 既に表示されてた行が上にずれて1番上の行が消えるとか
Clipが神だと分かったあの日の夜
0174名前は開発中のものです。
2005/12/24(土) 16:37:56ID:gnp/5lgIBufferedImageで文字列のバッファ用意して毎フレームブリットしたほうが楽
0175名前は開発中のものです。
2005/12/26(月) 08:43:49ID:zSwx4yvQ勉強になります
dd
0176名前は開発中のものです。
2006/01/07(土) 15:15:38ID:EFX7v9430177名前は開発中のものです。
2006/01/07(土) 18:00:27ID:yOZ6b1cq0178名前は開発中のものです。
2006/01/15(日) 10:23:57ID:53jl8YVS左右反転、上下反転をする際に、
setTransform(...)
で、trans.scale(-1,1);
などとすると複数のスプライトを描く際に実用に耐えられないくらい重いです。
AWTのdrawImageみたいに、それだけで左右、上下反転できないのでしょうか?
srcX,destXを反転させれば良かったAWTにたいし、
SWTだとwith,height指定なので引数に負数を渡すと実行時エラーになってしまい、それだけではできないようにみえます。
ご存じの方、おられましたら宜しくお願いいたします。
0179名前は開発中のものです。
2006/01/15(日) 11:12:29ID:aMKMqoWrが正しいと思う
PureJavaのほうがまともな実装ってどういうことさ
って場面がよくある
0180名前は開発中のものです。
2006/01/15(日) 20:09:28ID:Vrds102b0181178
2006/01/15(日) 22:49:28ID:53jl8YVSなるほど、ありがとうございます。
SWTをつかってアニメーションエディタとゲーム自体を一緒に作っていたのですが、
考え直した方が良いみたいですね。
0182名前は開発中のものです。
2006/01/15(日) 22:52:15ID:53jl8YVS>>180
Swingの方がやはりいいんですね。SWT自体は割と扱いやすいとは感じているのですが、
最近は情報も出てこず考え直したりもしています。
SWTを使うと局所的なところでWin32APIなどを呼べるのも魅力なのですが。
思想には反しますけれど。
0183名前は開発中のものです。
2006/01/16(月) 00:14:43ID:DTLttG/1情報量は多いしものによっては速度面でも結構いける
1フレームあたり1000個のスプライトとか余裕
0184名前は開発中のものです。
2006/01/17(火) 03:10:21ID:9917DXoA某サイトに開発ツールJAVA2 SDK 1.3と書いてあるのですが、
このスレのテンプレには(Ver5.0のJDKとVer1.4.2) しかなく
どれをDLすればいいのか分かりません
どなたか教えてもらえないでしょうか?
■ このスレッドは過去ログ倉庫に格納されています