トップページ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あたりを参照
0453名前は開発中のものです。2006/10/14(土) 02:31:13ID:MGTxKfzz
Sun本気でゲームやるならジョイパッドいい加減対応してくれ
0454名前は開発中のものです。2006/10/14(土) 02:52:06ID:ZM4Zxtns
>>453
JOGL, JOAL, JInput と一通り用意されていたりする。

が、JInputの使い勝手と品質は、アレゲです(約1年前試用)。
0455名前は開発中のものです。2006/10/14(土) 03:02:31ID:MGTxKfzz
JOGLにしてもそれらのライブラリぜんぶ標準じゃないし
基本的なヒューマンインターフェースデバイスは標準にしないと意味ないのに
0456名前は開発中のものです。2006/10/14(土) 06:59:51ID:nYtGilm6
OpenGLに関してはJava6で標準だろ
入力デバイスがアレなのは、Win以外がアレだからでしょ
0457名前は開発中のものです。2006/10/14(土) 07:22:45ID:1AUmoz7r
>>449
 1.4.2と比べて何が変わったのやらという感じ。
0458名前は開発中のものです。2006/10/14(土) 07:48:07ID:nYtGilm6
>>452
RuneScapeとかいうのは4.5億も売り上げがあるのか
そういやTibiaってのもグラはしょぼいが潤ってたらしいしな
0459名前は開発中のものです。2006/10/14(土) 10:21:48ID:MGTxKfzz
>>456
VMが一部環境用にアクセラレーションとして使ってるだけで標準実装とはちがうはずだが
0460名前は開発中のものです。2006/10/14(土) 11:53:22ID:r+tdu3ZM
ところで
JInputを使おうとするとArrayIndexOutOfBoundsExceptionが出るのは自分だけだろうか…
0461名前は開発中のものです。2006/10/14(土) 15:16:14ID:MGTxKfzz
JInputの日本語資料ゼロか・・・こりゃ普及せんな
0462名前は開発中のものです。2006/10/17(火) 23:44:15ID:46k9HZL6
Input Method Frameworkの使い方がドキュメント読んでもいまいち良く分からないw
BufferStrategyと日本語入力を組み合わせるならこれしかないと思うんだが。。。

Swingベースに切り替えようかな、Java6からJOGLがPanel化されるんでしょ。
0463名前は開発中のものです。2006/10/18(水) 13:58:55ID:YpbpZhIP
BufferStrategytと日本語入力の問題はDirectXとかでも同じだからな
Panelのは速度が遅いはずだが改善されたんか
0464名前は開発中のものです。2006/10/19(木) 00:32:10ID:nGTITlbS
>>462
自前描画している日本語入力対応エディタのソースを見てみると良いかもしれない。
0465名前は開発中のものです。2006/10/27(金) 07:07:03ID:Yr57x8PW
CopyOnWriteArraySetなどの並行APIを試してみたけど
結局STGとかだとLinkedListで十分なんだと分かっただけだった。
0466名前は開発中のものです。2006/10/27(金) 07:15:14ID:xDAg32vR
マルチスレッドでつくってんの?
0467名前は開発中のものです。2006/10/27(金) 07:28:53ID:Yr57x8PW
マルチコアへの自動的な最適化とか面白そうだなと思ってね。
でも並行APIはiteratorによるremoveにたいして適正の在るのがなくて辞め。
0468名前は開発中のものです。2006/10/27(金) 08:40:24ID:xDAg32vR
こんな会社があったんですね。。。
ttp://www.cyberstep.com/recruit/story_1.html
0469名前は開発中のものです。2006/10/27(金) 08:51:15ID:phd+j6pm
>>488
マルチプラットホーム化が容易とうたってる割にGetAmpedRもC21もWindowsのみ対応なんだな‥‥
0470名前は開発中のものです。2006/10/27(金) 12:18:12ID:v3In4esC
2Dゲームで個人レベルで作れるものでマルチコアが生きる分野ってあんまりないかもね
超連射みたいにソフトレンダなら明らかに効果があるがそれはシステム構築を楽しむためくらいしか・・・
0471名前は開発中のものです。2006/10/27(金) 23:11:57ID:Yr57x8PW
スタンドアロンなゲームは「余ったリソースは捨てるリソース」なんだなと思ったよw
0472名前は開発中のものです。2006/10/30(月) 15:12:29ID:VjSo8VCQ
JOGLって凄いんだな
0473名前は開発中のものです。2006/10/30(月) 15:57:55ID:Sn/Y/O/E
ん?
0474名前は開発中のものです。2006/10/30(月) 18:47:16ID:Gg9zo7Zm
だたのOpenGLのラッパ
びっくりするくらいオブジェクト指向もくそもねぇ

それだけに触ったことある人ならそのまま使える
0475名前は開発中のものです。2006/10/30(月) 21:46:59ID:AwvN98hH
Graphics2DオブジェクトそのものがGCの原因になるから
フルGCの発生回数を特定シーンごとに0に押さえるみたいな方法って不可能?
0476名前は開発中のものです。2006/10/30(月) 23:24:45ID:Gg9zo7Zm
Graphics2Dのものによるかな
ゲーム用途なら基本はGraphicsだけで収まる範囲にすること

アクセラレーションがきくタイプは負荷はたいしたことない

あとフルGCやりたくないなら使用メモリを把握した上でコンカレントGCに変更することや
シーンがはっきりと分けれていたりするなら切り替え時にFullGC入れてみるとか
0477名前は開発中のものです。2006/11/08(水) 22:10:52ID:nrOch+Qr
http://www.youtube.com/watch?v=p9ytsfaGWts
これJavaでできてんの!?すごい
0478名前は開発中のものです。2006/11/08(水) 22:17:38ID:/VhjzjqX
ムービーからだとフレームレートとかようわからんし、
あちらの人は固定フレームレートにこだわらないからねぇ

まずはパッドを標準ライブラリで使えるようにしないとね
表示もだ大事だけど入力がないとどうしようもない
0479名前は開発中のものです。2006/11/09(木) 01:22:54ID:C3JWOVJ7
specforce
chrome作ったところが2005年ごろ作ったみたい。
ページ開いたらBGMが流れるので注意。
http://www.specforcethegame.com/en/main.php

かなり品質の高いFPSゲームだと思う。
0480名前は開発中のものです。2006/11/09(木) 02:09:01ID:yu7HeJLH
これって、Javaサーバーに使えますかねぇ
ttp://www.hikakuserver.com/

普通のレン鯖でメモリ8GBも載ってるのがあるなんて
さっきまで知らなかった・・・(´・ω・`)

人柱キボン
0481名前は開発中のものです。2006/11/11(土) 11:19:53ID:C9CXGr4F
ttp://www.puppygames.net
ttp://www.imilabs.com
ttp://www.agency9.com
ttp://www.mycgiserver.com/~movegaga/cosmictrip.html
ttp://www.chromethegame.com
ttp://www.hockeychallenge.se
ttp://home.halden.net/tombr/squareheads/squareheads.html
GroundFX
ttp://www.javagaming.org/forums/index.php?PHPSESSID=a66e7a361ddd1ea4a78a07a6d446a573&topic=4832.msg44039
ttp://www.oddlabs.com
ttp://www.ch-ee-ky.com/gr/index.html
ttp://www.jpct.net/paradroidz
ttp://www.jmonkeyengine.com
ttp://www.datadino.com/games/mightybubbles/
ホッケーのゲーム
ttp://www.wurmonline.com
ttp://www.gutenachtkopf.de
ttp://www.crystalsquid.com
ttp://www.runescape.com
ttp://www.puzzlepirates.com
0482名前は開発中のものです。2006/11/11(土) 11:45:18ID:C9CXGr4F
>>481>>477に出てくるゲームのURLね
このうち、開発に役立ちそうなのは多分
http://www.imilabs.com
http://www.agency9.com
http://www.javagaming.org/forums/index.php
http://www.jmonkeyengine.com
http://www.gutenachtkopf.de

しかし、面白そうなゲームが山のようにあるな
0483名前は開発中のものです。2006/11/11(土) 13:07:20ID:HZB9qJCG
java, javax系でAudioClipより表現が豊かなサウンド用インタフェースってありませんか?
AudioSystemやMidiSystemを上手くラップしたいんだけど、AudioClipじゃ物足りない印象
0484名前は開発中のものです。2006/11/11(土) 13:35:38ID:bJZMO9on
なんでAudioClipがでてくるんだよ
JavaSoundカワイソス
0485名前は開発中のものです。2006/11/11(土) 13:41:41ID:HZB9qJCG
君一行目しか読んでないでしょ
0486名前は開発中のものです。2006/11/11(土) 18:45:04ID:oHATF8vt
2行目が一致しないから仕方ないだろ
JavaSoundがでてくるなら問題はないのに
0487名前は開発中のものです。2006/11/12(日) 03:04:56ID:FcOUrdTF
正直、あちらさんのゲームを見せられて、すごい、すごいと言われても、も一つピンとこねえな。
あちらさんはアセンブラかましたりとか平気でやるからな。
日本人でJavaでFPSを作ってる人っていないの?
0488名前は開発中のものです。2006/11/12(日) 06:49:35ID:1OH5pVw5
>>487
Javaでどうやってアセンブリ言語を使うのだ
0489名前は開発中のものです。2006/11/12(日) 07:28:17ID:0f+TtNLb
JNIの事を言ってるんじゃ無いか?
0490名前は開発中のものです。2006/11/12(日) 08:23:03ID:+OD3pyxM
ここにいる人だけど、その多くは、Javaで本格的にゲームを作った事が
ない人だろう。
各種Docで知識は豊富だけど、ただ読んで覚えてるだけ。
ゲームの開発経験はないだろう。

Java実行コードのスピードは、部分部分で比較するとC++と大差なく
見えるけど、全体のアプリとして組み立てると、その漏れてた部分の遅さが
積み重なれて顕著となり、システム系ならば許容できるけど
シビアなタイムが必要となるゲームじゃとても使えなくなる
上の洋ゲーも間違いなくそのコアにJNIをふんだんに使ってるよ。
そうなると、それはJavaであってもJavaの範囲外ってことだ
0491名前は開発中のものです。2006/11/12(日) 08:26:03ID:+OD3pyxM
>>ただ読んで覚えてるだけ

ってのは、その知識をもとに小規模なテストアプリを作成して
その結果で判断する事も含まれてる
0492名前は開発中のものです。2006/11/12(日) 10:16:17ID:5sSMIo0r
増えてきた本格派JAVAゲーム
http://61.215.215.33/news.php?url=/weekly/kaito/097/kaito_097.shtml

こんな記事あったよ。日本のゲーム業界でJava使ってるとこってあるの?教えて業界人。
0493名前は開発中のものです。2006/11/12(日) 10:38:02ID:wvoDMNwq
>>490
javaのPrduct系ゲーム開発経験者ですか?
それとも勘でいっている?

当方、確かに経験ないので今いちわからないんだけど
コード量が増えるとメモリリークが増えるから
PureJavaじゃ使いもににならないといいたいの?


0494名前は開発中のものです。2006/11/12(日) 16:48:08ID:sIeJXGua
>>486
おまえは何を言ってるんだ?
0495名前は開発中のものです。2006/11/12(日) 21:12:28ID:RoytZnjF
>>490
> ここにいる人だけど、その多くは、Javaで本格的にゲームを作った事が
> ない人だろう。
で、おまいはJavaで本格的にゲームを作成したことがあるのか?

>その漏れてた部分の遅さが
>積み重なれて顕著となり、システム系ならば許容できるけど
>シビアなタイムが必要となるゲームじゃとても使えなくなる
VMのGC処理が良く問題になるだけであって、コード本体の実行スピードには問題ない

> 上の洋ゲーも間違いなくそのコアにJNIをふんだんに使ってるよ。
間違いなくとか勝手に推測で断定されても、完全な間違いなんだが。

RuneScapeはPureJavaで作成されている。
その他のゲームで利用されているJNIも、
OpenGLやDirectInputを直接呼び出すだけの利用。

デタラメも大概にしてくれ。
0496名前は開発中の者です。2006/11/12(日) 21:43:38ID:BPHT/7vm
LWやメタセコで作ってXファイルで吐いた3DモデルをJava側で読み込むツールとか、キャラのモーションを登録してJavaで読み込ませるツールとか、どこかで公開してるのかな?
そういうのがないと、素人には3Dゲームなんて、とても作れない。
0497名前は開発中のものです。2006/11/13(月) 00:19:13ID:i1RxyPEd
>>494
JavaSound理解してないやつ乙
0498名前は開発中のものです。2006/11/13(月) 01:47:03ID:xomXll6Q
お前がインタフェースベースな設計を知らないだけだろw
0499名前は開発中のものです。2006/11/13(月) 19:04:22ID:jHwlfoAH
AudioClipってもっとも低機能で使い勝手の悪いものなんだが
それをほしいといわれても困る
0500名前は開発中のものです。2006/11/13(月) 23:23:32ID:YBTvT9dR
ローダつくろうと思ってるんだけど、どのローダ書くのがいいかな?
1.メタセコ
2.ブレンダ
3.Xファイル
Xのローダ書いとけば一番無難?
自分、右手系でPG書いてるから変換が面倒くさそうだけど。
みんなはどんな感じ?
0501名前は開発中のものです。2006/11/14(火) 06:53:06ID:t9hh4M26
>>499
それより良いインタフェースはないかと聞いてるだけでは?
0502名前は開発中のものです。2006/11/14(火) 06:56:22ID:t9hh4M26
てか質問の意図を理解してない以前に設計知らないだけみたいだな
0503名前は開発中のものです。2006/11/14(火) 09:51:06ID:v38jtkOO
あれ質問の意図がわかるやつのほうが頭どうにかしてるとおもうぜ・・・
本人ですか
0504名前は開発中のものです。2006/11/14(火) 17:34:18ID:wMYc2bpW
Javaでゲーム作るとき
描画ってどうしてる?
0505名前は開発中のものです。2006/11/14(火) 19:15:20ID:KGaPDyoT
2Dなら普通にJava2D+BufferStrategy
フルスクリーン時は垂直同期取るのに対してウインドウモードは取らないという点に注意してね
0506名前は開発中のものです。2006/11/14(火) 23:35:47ID:N+Lhd8Zl
初めてアクションゲーム作ってるんですが
画像を半透明にしたりパレットデータを換えるときどうしてますか?
できればリアルタイムで処理させたいのですが
いい方法が見つかりません。RGBImageFilterではImageを得るまでが面倒で動作も不安定でした。
PNG形式のbyte列を直で変更して毎フレームImageに変換も遅そう
助けてください
0507名前は開発中のものです。2006/11/14(火) 23:48:08ID:t9hh4M26
>>503
普通にわかるが?
0508名前は開発中のものです。2006/11/15(水) 00:19:12ID:kbx8RzUW
>java, javax系でAudioClipより表現が豊かなサウンド用インタフェースってありませんか?
なぜAudioClipと比較したインターフェースにこだわる?Lineとかいってほしいということか?


>AudioSystemやMidiSystemを上手くラップしたいんだけど、AudioClipじゃ物足りない印象
JavaSound理解しているならまったく問題ないし、そこでなぜAudioClipが出てくるか不明。
同じインターフェースにこだわりたいのならともかく音量調整も出来ないようでは使い道なし。

〜System系は5.0から大幅に使いやすくなったので迷うようなことはないと思うのだが。
普通に自分で好きなインターフェースで作りなさいとしかいえない。
0509名前は開発中のものです。2006/11/15(水) 00:21:40ID:kbx8RzUW
>>506
Java2Dは使ってみた?通常合成なら大丈夫。
ハードウェアアクセラレーションはきかないからXGAで常時60fps維持したいとかだと厳しいけど。
0510名前は開発中のものです。2006/11/15(水) 00:21:42ID:VX1VJ6O9
「同じインターフェースにこだわりたい」んだろ、もういいよ
0511名前は開発中のものです。2006/11/15(水) 00:39:05ID:kbx8RzUW
こだわるならこだわるでAudioClip実装すればいいだけなんだけど。
0512名前は開発中のものです。2006/11/15(水) 00:45:16ID:VX1VJ6O9
うざw そのインタフェースじゃ物足りないってんだからループするだけだろ
無いなら無いってだけなのに何引っ張ってんだか
0513名前は開発中のものです。2006/11/15(水) 01:38:20ID:VX1VJ6O9
Java6になっても非Winの透過アクセラレートは無しなのかな。
まあ非Winを切り捨てても何の問題もないが。
0514名前は開発中のものです。2006/11/15(水) 07:10:33ID:EhAiNbIT
>>509
それってGraphics2Dのことですか?
時間ができたら調べてみます。
0515名前は開発中のものです。2006/11/15(水) 13:57:28ID:zHfv0gGD
>>512
だからこそあの質問が意味不明なのだ。
1行目と2行目と一致しない。

>>513
JavaSE5.0も現実的にアクセラレーションきかない。
openGLモードだと描画がバグバグだし、
Direct3Dモードだと描画方法によってレンダリング品質が変わるため使えない。

>>514
それだけじゃないけどね。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/2d/index.html
05165142006/11/15(水) 23:56:59ID:EhAiNbIT
>>515
バッファストラテジというのを導入してみたんですが、といってもほとんどコピペで理解してないんですが
Graphics2D.drawImage(Image,AffineTransform,Observer)でキャラを拡大したらGraphicsのdrawImageで描いた
ブロックの画像に縦縞ができてしまったんですが、どうすればいいでしょうか?必要ならできるだけ答えます
みなさんはバッファストラテジをどう使ってるのか教えていただけると助かります。
0517名前は開発中のものです。2006/11/16(木) 00:11:55ID:RzG/81yb
これDirectX使って描画するからビデオドライバに問題があると崩れる場合がある。真っ当な環境なら問題は出ない。

とはいえ、アクセラレーションが利く描画じゃないようなのでその影響があるとは考えにくい。
コードと環境と加工前の画像と加工後の画像をアップしてもらえばわかるかも。

Graphics::drawImageでの拡大だとどんなかんじ?
0518名前は開発中のものです。2006/11/16(木) 00:37:17ID:A0r/2s0Y
>>515
>だからこそあの質問が意味不明なのだ。
>1行目と2行目と一致しない。
お前日本語学校からやり直した方がいいぞw
05195142006/11/16(木) 07:35:27ID:DvgKUdTk
>>517
環境は何を書けばいいですか?今まで気にしてなかったもので…
0520名前は開発中のものです。2006/11/16(木) 10:21:23ID:HdufXzqB
作ってみたけど微妙('A`)
ネットで対戦だから一人じゃバランスもとれず適当、せっかく作ったから遊んでください。
ttp://cattaka.myhome.cx/applet/bakutan.html
0521名前は開発中のものです。2006/11/16(木) 12:59:05ID:GPsbxADW
>>519
そもそもWindowsなのか、フルスクリーンモードなのかウインドウモードなのか
ビデオチップやドライバ等

ところでGraphics::drawImageによる拡大は問題なさそうなの?それが先決か。
0522名前は開発中のものです。2006/11/16(木) 13:01:06ID:GPsbxADW
>>518
具体的な対応取らない荒しはかえれ
最近ずっとJava関係荒らしてるのお前だろ
0523名前は開発中のものです。2006/11/16(木) 23:02:33ID:A0r/2s0Y
AudioClipがinterfaceなのを知らないのか
デザインパターンを知らないのか
日本語を知らないのかどれだい?
05245142006/11/17(金) 18:00:42ID:7Zpg5IH1
>>521
OS:Win98
ウィンドウモード
Graphics::drawImageでは縞はでませんでした。
バッファストラテジはそんなに効果があるんですか?
今一速くない気がします…
0525名前は開発中のものです。2006/11/17(金) 18:50:02ID:gSEH6ifA
>>524
速度に関してはソフトウェア描画になる部分とアクセラレーションがきく描画と分かれる。
拡大縮小やαブレンドはソフトウェア描画になる。

Graphics::drawImageによる拡大描画は大丈夫なのか・・・。
画像のロードの仕方とかにも結構左右されるっぽいけど、そのへんどうなってるかな。
あと256色モードとか16bitカラーモードが原因になる可能性もある。

転送元imageはBufferedImage使ってると思うけど、そのカラーモードはフレームとあわせてある?
抜き色があるかとか細かいこともある。

フレームレート命のアクションゲームならできるだけアクセラレーションがきく描画を選択したほうがいいよ。
あとは画面サイズが大きすぎないこと。

まとめると
・画像のロードの仕方
・デスクトップの色数
・実際に問題の出るコードと画像
05265142006/11/17(金) 19:08:46ID:Lt0Wj0UY
>>525
画面は24bitでした。転送元imageというのがいまいち分かりません…
今まで携帯でしか作って無かったので、、、
あとこういうゲームに特化してJAVAの解説してるとことか無いですかね?
人に見せられるもんじゃないですけどソースアップしました。
ttp://park21.wakwak.com/~kuri/src.zip
0527名前は開発中のものです。2006/11/17(金) 21:47:35ID:6OJGRcli
まずぱっとみpaintイベントに描画ロジックが書いてあるようなきがするが、
通常paintイベントに対して処理は行わない。

repaint呼び出すところを自前のメソッドを呼び出すようにかえて、
paintメソッド名をそれにあわせて書き換えよう。

キー入力をビットに割り当てているのを見ると、他の言語でゲーム自体は作ったことあったのかなとおもた。

Skeruというクラスがわからないのでなんともいえないな。

画像のロードはImageIOを使うと柔軟にロードできるよ。わざわざバイト配列をロードするとか必要ない。
その際に画像バッファは現在のビデオの解像度と合わせると高速に転送が出来るけど、それはまた後の機会に。

これってフレームのサイズ固定で描画しているようだけれども、タイトルバーの高さとかふちの大きさは
同じWindowsでもバージョンや環境によって大きく異なるからしないほうがいい。

pack()やsetVisible()したあとにインセットを取得して本来ほしいサイズにそれを足して処理する。
05285142006/11/17(金) 23:51:15ID:83DvLp/B
>>527
お返事ありがとうございます。
>repaint呼び出すところを自前のメソッドを呼び出すようにかえて、
>paintメソッド名をそれにあわせて書き換えよう。
playに変えました。

>キー入力をビットに割り当てているのを見ると、他の言語でゲーム自体は作ったことあったのかなとおもた。
まあ、ボチボチですが

>Skeruというクラスがわからないのでなんともいえないな。
これはいらないクラスです。うっかりしてました。
画像とか変更したソースとかさっきのURLにアップしておきます。

>画像のロードはImageIOを使うと柔軟にロードできるよ。わざわざバイト配列をロードするとか必要ない。
>その際に画像バッファは現在のビデオの解像度と合わせると高速に転送が出来るけど、それはまた後の機会に。
やってみましたけど、こんなんでいいんですかね。

>これってフレームのサイズ固定で描画しているようだけれども、タイトルバーの高さとかふちの大きさは
>同じWindowsでもバージョンや環境によって大きく異なるからしないほうがいい。

>pack()やsetVisible()したあとにインセットを取得して本来ほしいサイズにそれを足して処理する。
やってみました。
0529名前は開発中のものです。2006/11/18(土) 00:24:13ID:3XstkAv5
>>pack()やsetVisible()したあとにインセットを取得して本来ほしいサイズにそれを足して処理する。
>やってみました。

これ、取得した後にそのサイズを足してsetSizeするってことね。
320*240とかを描画サイズにしたい場合それプラス余白部分。
もちろん、描画する際の起点もその分ずらす。

あとは時間管理だろうか。
sleepは固定でのウエイトが入る。つまりメインループの処理時間の差があった場合に考慮されていない。
普段は10msで動いていたとしたら1ループは30msだろうけど、これが5msだったり15msだったりすると・・・。
したがってがくがくするのを防ぐためには一定の速度でまわす必要がある。
30msでループさせるなら処理に5msかかったら25ms停止、処理に15msかかったら15ms停止というようにね。

だいたいでいいのなら一番簡単なのはjava.util.Timerを使う。TimerTaskとあわせてね。
メインループのほうをwait()で停止させて、TimerTaskからnotify()で起こすといい。

あとこのスレと前スレを一度全部見ておいたほうがいい。
05305142006/11/18(土) 16:22:37ID:09nqBb7g
言われたところは大体やりました。ただTimer系がまだいまいちわかりません
サクっとでいいんで説明してもらえたら助かります。
あとJAVA2Dなら画像のパレット替えやフィルタリングもできるんですよね?
0531名前は開発中のものです。2006/11/18(土) 16:36:52ID:qC5zAejN
タイマーはここみるといいよ。
http://www.javainthebox.net/laboratory/utils/Timer/Timer.html
ほかにも櫻庭さんのサイトはJava関係の重要なのが多いから関係のありそうなところ見といたほうがいい。

描画に関してはアクションゲームで60fpsを目指すのなら複雑なことはしないほうがいいよ。
あらかじめ使用するパレットがわかっているなら画像ロード後にそれらのImageを生成したほうがいい。
あくまでもいわゆる画像をスタンプのように貼り付ける場合はやいから。

RPGとかで30fpsくらいでいいのならいろいろと出来ると思うよ。
Java2Dを詳しく書いた書籍ってあったかな・・・。まずはJava2Dのマニュアルをよんでみよう。
少なくともJDKのJava2Dサンプルくらいはすぐできるから。
05325142006/11/18(土) 17:44:49ID:Zk4f2vJN
>>531
ありがとうございます。
Timerは分かってきたんですが、上にある
>メインループのほうをwait()で停止させて、TimerTaskからnotify()で起こすといい。
の書き方が分かりません…。
あと、キャラクター・エフェクト・特殊ブロックなどの処理部分を一つのクラスにまとめて中で
switch文分岐して処理させようかなーと思ってるんですが、こういうやり方だと遅くなったりするんでしょうか?
座標や状態変数なんかはメインループのある方のクラスに持たせれば、敵にくっついてく敵とかが作れそうですよね。
一応JAVAなのでポリモーフィズムも考えたんですが、数が数なだけに多すぎるので辞めたんですが

画像も予め用意したらその分メモリ食われて遅くなるってこともありますよね?
いかんせんJAVAでのメモリの使われ方が良く分かって無いのでどこかで損してる気がします…
0533名前は開発中のものです。2006/11/18(土) 19:54:34ID:ZKUyfd27
wait、notifyはObjectにあるメソッド。これはJavaの基本中の基本なので勉強するといいよ。
APIドキュメントよんでごらん。ざっくりというとwaitはスレッドを停止させてnotifyで起こすという感じ。
マルチスレッド使ってるのでこの辺基本を抑えないと大変なことになる。

参考
ttp://www.nextindex.net/java/thread/waitnotify.html

switchだろうが複雑な分岐だろうがCPUだけが処理するようなものは速度的に問題にはならない。
ネックになるとすれば16bitCPU時代くらいでJavaSEとは関係ない。

最初はざっくり作ってリファクタリングをゆっくりやるといいよ。IDE使えば手軽に見通しよくなるし。
オブジェクト指向等も徐々に勉強していきながらでいい。
05345142006/11/18(土) 22:14:54ID:Bis6pJQA
>>533
wait()とnotify()意味は半分ぐらい分かったのですが、いまいち調べても
欲しいサンプルが見つかりません…。色々試してはいるんですがなかなか
動いてくれません。ヘタレで悪いんですがゲームで使う時のwait、notify
のコードをちょろっと書いて貰えないでしょうか?

ただ分岐は多くてもいいというのはホッとしました。丁寧なレスありがとうございます。
助かります(^^;。
0535名前は開発中のものです。2006/11/18(土) 23:55:20ID:ZKUyfd27
基本中の基本だけにしらべればいくらでもサンプルコードが出てくると思うのだが。
05365142006/11/19(日) 10:56:55ID:1IKPzYYc
Timer/TimerTaskとwait/notifyを組み合わせられないんです。
どうやったらTimerTaskで周期的にnotifyできるのかとかSynchronizedを付けるべきところとか
探し方が悪いのかも知れないんですが
0537名前は開発中のものです。2006/11/19(日) 13:54:05ID:dZdtxI9w
自分はこんな感じで実装しているが、間違っていても知らない

public class Hoge extends Thread{

  private boolean processStop = false;
  private WakeTask wakeTask = new WakeTask();

  public void start(){
    super.start();
    new Timer().scheduleAtFixedRate(wakeTask, 0, WAKE_TIME);
  }
  public synchronized void run(){
    while(true){
      game();
      try{
        wait();
      }
      catch(InterruptedException e){
        e.printStackTrace(System.err);
        break;
      }
    }
  }
  private synchronized void awake(){
    if(!processStop) notify();
  }
  private class WakeTask extends TimerTask{
    public void run(){
      awake();
    }
  }
}
0538名前は開発中のものです。2006/11/19(日) 20:11:00ID:8MYA5LfB
>>536
ttp://www.y-adagio.com/public/standards/tr_javalang2/jTOC.doc.html
05395202006/11/19(日) 23:41:03ID:yvfHZIx2
今頃鯖のポート解放忘れてるのに気がついた。
何がしたいんだよ俺・・・・orz
0540名前は開発中のものです。2006/11/20(月) 00:56:56ID:mU6Ad/cq
リアルタイムシミュレーションでネット対戦できるゲームをjavaで作りたいのですが、参考になるサイトありますかね?
ちなみに自分は今までCで数値シミュレーションを生業としてきてGUI関係はよくわかっていません。
勉強できるサイトがあるとうれしいです。
よろしくお願いいたします。

以上
0541名前は開発中のものです。2006/11/20(月) 01:19:17ID:8PZEbpO9
ものすごい初心者な質問なんだけど、
普通のゲームってソフトとかクライアントとかをダウンロードするじゃない?
JAVAゲームの場合、ブラウザから直接開始するけど、
読み込み時間みたいのがかなりかかるんじゃないのかな?
音楽もいちいちMP3をダウンロードすることになるの?
0542名前は開発中のものです。2006/11/20(月) 01:42:07ID:HqvpBzdY
>>540
シミュレーションが、物理シミュレーションかシミュレーションゲームか不明
GUIプログラミングは簡単なので立ち読みか普通のサイト見れば良いのでは
http://www.javadrive.jp/
http://www.hellohiro.com/
0543名前は開発中のものです。2006/11/20(月) 15:21:51ID:107nEDGg
>>541
Javaのプログラムってのはアプレットだけじゃないよ。
通常のアプリケーション等もあるし、一度ダウンロードしたらアプレットはキャッシュからとってくることも出来るし
WebStartはバージョン等が変わってなければすべてキャッシュファイルからとってくる。

そもそもC等で作ったアプリだって同じだぞ。ネット経由でダウンロードするように作ってあるなら。
バックグラウンドスレッドでガンガン落としていけばあまり問題はなさそうだが。
0544名前は開発中のものです。2006/11/26(日) 21:31:48ID:vp/Awfnk
話題が無いがage
無限にステージが生成されるマリオっぽいゲーム「Infinite Mario Bros」
http://gigazine.net/index.php?/news/comments/20061126_infinite_mario/
0545名前は開発中のものです。2006/11/26(日) 23:34:43ID:o/jL46vw
>>544
Wurm Online の中の人が製作しているみたい?
ソース付きだし勉強になりそうだ。
0546名前は開発中のものです。2006/11/27(月) 18:13:24ID:QR83lXnt
VolatileImageとMemoryImageSourceって一緒に使えますか?
0547名前は開発中のものです。2006/11/27(月) 18:15:01ID:IAG3BIQ8
使えるけど、後者は使う意味ないぞ
1.1時代の互換性のためだけの遺産だから
0548名前は開発中のものです。2006/11/27(月) 18:52:38ID:QR83lXnt
詳しく教えてください
VolatileImageでピクセル操作とかできますか?
0549名前は開発中のものです。2006/11/27(月) 21:03:56ID:OAwnVtrw
VolatileImageは画面モードにも夜がVRAMをさすと思っていい。
VRAM直書きはメインメモリ直書きに比べて非常に遅いので出来てもやらないほうがいいのは常識。

メモリ上のImageを扱うなら1.2以降はBufferedImageを使う。最初にピクセルフォーマットをきめて
配列で扱えること、出来上がった画像を何度もコピーする場合アクセラレーションが自動的に適用される。
0550名前は開発中のものです。2006/11/27(月) 21:56:18ID:L4SNxotk
>>547
いや、実際にはMemoryImageSourceが一番素直な「フレームバッファ」
で使いやすい。BufferedImageは、メモリ上の配列と直接関連付けられ
ないのが致命的(ピクセル列に見立てたint配列を操作すれば直ちに
対応するImageに反映されるという意味での「Buffered」でなければ、
Rasterなどという扱いにくい邪魔者が出てくるだけでまったく意味が
ない。まだMemoryImageSourceの方がまし)。
0551名前は開発中のものです。2006/11/27(月) 23:13:58ID:OAwnVtrw
ゲーム用途だとダイレクトにピクセルを扱う場合8bitか16bitにしないと速度的に問題が出るから
BufferedImageでそういう指定するのが一番だと思うし、ピクセルフォーマット合わせる場合
GraphicsConfiguration使うだろ?

問題あるのか?short配列アクセスとか簡単に出来るから便利だと思うんだが。
0552名前は開発中のものです。2006/11/28(火) 22:11:57ID:WdzF4q7Z
>>544
それすごいな
pure javaだけでここまでできるの?
■ このスレッドは過去ログ倉庫に格納されています