トップページgamedev
984コメント340KB

JAVAでゲーム作成

■ このスレッドは過去ログ倉庫に格納されています
0001JAVA初心者・・・04/01/17 22:47ID:eiE+Mw3o
はじめまして!!
今年に入ってからJAVAでゲームを作ってみようと勉強しています。
どなたか宝さがしゲームを作るうえで参考になるゲームとツール知りませんか??
知っていたら教えてください。<(_ _)>ぺこり
0170名前は開発中のものです。04/03/18 20:38ID:ymGNyYl1
Javaのコレクションはキャストしないといけないから激しく使いにくかったが、
1.5からテンプレートが導入されて良くなったね。
って、1.5はまだ正式リリース前か。

Cから虎へ〜JDK1.5について!Part2
http://pc2.2ch.net/test/read.cgi/tech/1079438337/
0171(;´Д`)/ヨワjava04/03/21 22:11ID:KgBL98Y5
ゲームプログラミングを始めようと思って、今年の3月発売の、
Javaゲームプログラミング アルゴリズムとフレームワーク
という本を買ってみました。
ソースはあまり読み易い物では無かったのですが、ゲーム制作に必要な
要素(処理)を知る事が出来た(かも
0172名無しさんは14才04/03/31 16:08ID:oiKfdr4p
そろそろ復活。
心配してくれた人、どうもでした。
怪我はもっと前に治ってたけど、いまいちやる気でなくて。

復活だけど、このスレ普通に伸びてるから、別のところに引っ越します。
0173名前は開発中のものです。04/05/20 23:20ID:myCQ7NmX
>172
復活おめでとうございます。
久しぶりにきてみたら、14才さんがいてびっくり。
って引っ越しですか・・残念です
0174名無しさんは14才04/05/25 11:14ID:/o9Rv7SJ
こんにちは♪ていうか、どなただろ。
はっ!まさかママン!……なわけないか。
0175名前は開発中のものです。04/05/28 17:28ID:NAsJERHF
>>174さん
ただのロム人です(^_^;
14才さんのゲームは何処に行けば見れるんでしょうか(?_?)
0176名無しさんは14才04/06/02 10:11ID:FbDl9Zmu
ごめんね。まだ公開してないからどこいっても見られないの。
キャラクターがてくてく歩いてるだけだから、ゲームになってないしー。
もう少し進んだら公開したいなーと思ってるんだけど、このペースだといつになることやら。
0177名前は開発中のものです。04/06/23 21:41ID:EdKiKd3Y
もう、進行の終わったスレかもしれませんが…

名無しさんは14才 さんは、どのスレに移動したのでしょうか?
知ってる方、教えてください。
0178名前は開発中のものです。04/06/25 19:00ID:y005C6ts
漏れがこのスレ再利用しようかな...
0179名前は開発中のものです。04/06/25 19:27ID:Z8PdllMf
やる気があるのならレス番800以上もあまってるんだから再利用したほうがいいかもね。

1.4使っていれば2DゲームならJAVAを利用するメリットも大きいし
JREを組み込めばユーザーにはネイティブアプリと違いは分からないし、
Swingとかのコンポーネントだと重さとかネイティブじゃないのがばれるかもしれないけど、
フルスクリーンアプリならその心配もないし。
0180名無しさんは14才04/07/01 15:45ID:PcO6Pm3v
>177
厨房スレですよん。でもあっちもまったり放置中。
ちまちまかいてるけど、もう半年近く見た目が変わってないので滅入り気味。
夏休みになったら、もうちょっと進む……予定。
0181名前は開発中のものです。04/07/01 21:06ID:Cut2ni94
ぶっちゃけるとRPGは時間ばかりかかるのでアクション系パズル系といった
小粒をたくさん作って技術磨いた方がいい
まぁ、マップシステムは一度は手を出しておいた方がいいとは思うけどね
0182名前は開発中のものです。04/07/10 22:09ID:v2MyCjQy
ダブルバッファリングというか、createImageについて聞きたいんだけど
アプレットじゃなくてアプリケーションで
コンストラクタに
doubleBuffer = createImage(640, 480);
gBuffer = doubleBuffer.getGraphics();
〜裏バッファに描画〜
と書いて
paint関数内で
g.drawImage(doubleBuffer, 0, 0, this);
とやっても何も表示されないんだけど、どうしてだろう?

全部をpaint関数内に
doubleBuffer = createImage(640, 480);
gBuffer = doubleBuffer.getGraphics();
〜裏バッファに描画〜
g.drawImage(doubleBuffer, 0, 0, this);
とやると上手くできる。
createImageをpaint関数内で使わないとどうやってもできない。
検索でよく出てくるアプレットのサンプルでは
init関数内でcreateImageしてるんだけどなあ・・・。
0183名前は開発中のものです。04/07/10 22:53ID:0Y8AoUvE
アプリケーションならBufferedStrategy使え
せっかく垂直同期とれるんだし

あとcreateImageで作るイメージは高速描画されないよ

DirectXによるアクセラレーション期待するなら
BufferedStrategyやVolatileImage使うべし

そこまで行かなくてもそれなりにDDB等で高速化したいのなら
createCompatibleImageでやるべし

>>182のレベルから考えるとそれ以前の話気もするが
裏バッファに描画は本当に出来てるの?ImageIOあたりで
ファイル書きだししてごらん
0184名前は開発中のものです。04/07/10 23:33ID:GFqbLRra
仕様を
用意
しよう
018518204/07/11 02:40ID:4Tmsd7Ye
>>183
コンストラクタでの処理を止めて、専用のメソッド作ってやってみたら出来ました。
ありがとうございます。

ところで、BufferStrategyが作るバッファというのは、どこでサイズを指定するのですか?
検索してみても、サイズを指定していると思われる部分がないのですが。
0186名無しさん@そうだ選挙に行こう04/07/11 11:39ID:KRMgaTqc
>>185
それってたぶん解決してないぞ
コンストラクタでやってもまったく問題ないし
マシンとかによってタイミング的にたまたまうまくいっただけかと
描画がうまくいかないってのはイメージを描画してるの?
よくある話としてイメージのロードを待っていないとかはどうかな?

バッファはウインドウサイズ
通常フルスクリーンだから640*480とか800*600とかになる
ウインドウモードならウインドウのサイズになるがinsetsがあるので
初心者には単純にはお勧めできない

ダブルバッファというのは表の描画面と同じサイズを用意するものだからね
そして切り替えはフルスクリーンだと自動的にフリップに、ウインドウモードだと
ブリットになってくれる
018718204/07/11 19:17ID:4Tmsd7Ye
>>186
あれから色々考えてみましたが、やはりコンストラクタが原因のようです。
コンストラクタ内だと、まだインスタンスが生成されていないために処理が上手くいかないようです。

Image、VolatileImage、BufferStrategyの全てでダブルバッファリングを行い
640*480ほどの画面を1ドット単位でスクロールさせてみたのですが、なんか
どれを使っても画面がたまにちらつく感じになるんですけど、こんなもんですかね?
640*480だと大きすぎるのだろうか。
常時ちらつくわけでもないんですが。たまにチラチラとなります。
0188名無しさん@そうだ選挙に行こう04/07/11 20:08ID:KRMgaTqc
コンストラクタというだけではなにをしたいのかがわからんぞい
コンストラクタだからダメということはない

640*480でスクロールだけならCPU使用率2,3%くらいですむよ

ちらつきは垂直同期取るのでまったくなし
使い方おかしいと思うけど?
0189名前は開発中のものです。04/07/12 23:24ID:hxZfdR1t
Java3Dをインストールしてみたが、
これって、配布に問題あるんじゃない?
サンマイクロに登録しないといけない。しかも英語で。
まだ実用化できるレベルではないと思うのだが…
0190名前は開発中のものです。04/07/12 23:38ID:4aXKEpAM
今はおとなしくJava2Dで収まる程度で我慢しましょう
もしくはSDLあたりとかJNIで組みましょう
0191名前は開発中のものです。04/07/13 00:04ID:T4MwyCgg
>>189
Xith3D
http://www.xith.org/tiki-index.php
Aviatrix3D
http://aviatrix3d.j3d.org/index.html
JOGL
https://jogl.dev.java.net/

好きなものをどうぞ。
019218904/07/13 22:09ID:Ppv9qnfp
>>191
おお、すごいですね。
ただ英語なので少しずつ翻訳しながら読んでみます。。。
0193名前は開発中のものです。04/07/14 02:02ID:u8ckWnIl
Xith3DやAviatrix3Dって、3Dグラフィック機能だけに注目すれば
joglをもとにしたOpenGLラッパーライブラリだと捉えられると思うのですが、
Java3Dと比較するとそれらを採用するメリットはどのあたりにあります?
0194名前は開発中のものです。04/07/16 01:11ID:SKc7EKZg
数ヶ月前位にJAVA始めた(標準API位はそこそこ使えるくらいです)んですが
何年か後でもゲーム作れるようになりたいな等と考えているのですが
まずはGUI(SWINGとか?)あたりから勉強すればよいのでしょうか?
0195名前は開発中のものです。04/07/16 07:47ID:R92f/gQd
>>194
標準なAPIがそこそこ使えるんだったら、GUIを勉強するのもいいんじゃないでしょうか。
0196名前は開発中のものです。04/07/16 09:39ID:8UZgIl4t
>>194
ゲーム作るんだったら、Appletかフルスクリーンの一般的なゲームか携帯アプリの3タイプぐらいに
分かれるけど、流行の携帯アプリなんかはどうでしょう?
0197名前は開発中のものです。04/07/16 10:15ID:P3vfVqR3
正直携帯アプリはオススメできないな
キャリアで3種類に分かれるし
そのキャリアごとでも複数のバージョンに分かれる

なにより大概開発環境は1.3.1を用意しないといけないこと

速度もメモリも制限多すぎて初心者が手を出すのはどうだろう

一般的な普通のゲームつくればいいんじゃない?
javaっていわれないとわからないようなやつが理想
019819404/07/17 01:04ID:Fmqvf01D
こんばんは>>194です。
レス遅くなってすいません。

携帯アプリも楽しそうなんですがいかんとも漏れの携帯JAVA動かないっす_| ̄|○
Jポンだし・・・

何からやっていいかわかんない位の素人なんで
これをやるには何を学ぶってのがいまいちぴんとしてませんが
とりあえず明日は休みなんで最近Java書籍コーナーにならんでる
ゲーム本開発系の本でもいろいろと立ち読みするとこから始めて見ますね

レス下さった皆様ありがdです。
0199名前は開発中のものです。04/07/17 01:22ID:znPg9lBj
そういやどこだったかでjavaの知識あまり無くてもすぐにゲーム作れるライブラリってのみたな
0200名前は開発中のものです。04/07/18 12:27ID:982Rpxpt
JAVA検定2級受けてきた。やばい、落ちるかも。
0201名前は開発中のものです。04/07/19 02:54ID:qRKRiKGC
eclipse使ってしこしこゲーム作ってるんですが、
ひとつ重大な疑問が。
exeファイルを生成するにはどうしたらいいんでしょうか?
元VB派だったので、実行ファイル化する機能がeclipseにも
付いているものとばかり思ってました。
0202名前は開発中のものです。04/07/19 10:44ID:Njk4hhxw
vbできるならそれでjavaw.exeをよぶの作るとかすればよろし

どっちにしろjreが必要なのでインストーラセットにするか
同梱するかが必要だけど、この質問くるということはかなりのjava初心者とみた
java初心者スレの過去ログにこの質問大量に見つかるはずだから見てみるといい


0203名前は開発中のものです。04/07/19 13:23ID:84bjiiMx
exeにしなくてもダブルクリックで起動できるよ。
0204名前は開発中のものです。04/07/20 00:36ID:ZADw7o8l
>>202 >>203
ありがとう。でも考えてみると、Javaって
ゲーム製作に向いていないのかもしれない。(携帯、アプレットを除いて)
どうしよう。他の言語に乗り換えようかな。
0205名前は開発中のものです。04/07/20 00:57ID:OA5Qnkhn
「ゲーム製作に向いているかどうか」を基準にするならツクール系専用ツールを使えばいい。

要はその言語で「作り上げる気があるかどうか」だよ。

実際「向いている」とは思わないが、最近は作りやすくなってるよ。
ゲーム向きな資料は他の言語に比べて探しにくいかも知れないけど、がんがれ。
0206名前は開発中のものです。04/07/20 08:45ID:0/Tm17Iq
言語でゲームに向いてる向いてないってのはあるのか?

HSPやVBのようなものでゲームがたくさん作られていることから
Javaだから特別向いてないってことはない

そもそもダブルクリックレベルの話をしていることから
むしろJavaのほうが取っつきはいいと思うぞ

とりあえずどの辺が向いてないか考える前にやってみることだ
たぶん99%は間違ってる
0207名前は開発中のものです。04/07/20 23:07ID:YNJ+j7r3
でもJavaは配布が面倒そうだね。
JREごと配布して、ユーザには起動用の.batか.exeを叩いてもらうのが使いやすいかなあ。
0208名前は開発中のものです。04/07/21 00:01ID:sjxTaSqB
俺はゲーム以外もexe起動で同梱のjreをよぶようにしてる
一般ユーザーからはネイティブとの違いには気がついてないようだ

batでほとんど足りるんだけど、batを知らない人もいるからね
0209名前は開発中のものです。04/07/23 22:16ID:mbqPJPUB
考え抜いた末、PHPでゲームを作ることにしますた。
021020404/07/28 01:12ID:pigNDSyn
204ですが、いろいろ他の言語もあさってみたけど、
やっぱりJavaでいきます。今eclipseの本かって来ました。がんがります。
0211名前は開発中のものです。04/07/28 02:03ID:H/vRL8q2
javaといわなきゃわからないようなゲームもあるしなんとでもなるさ
言語は問題じゃない
0212名前は開発中のものです。04/07/28 02:04ID:H/vRL8q2
肝心なこと書き忘れた

がんがれ
0213名前は開発中のものです。04/07/28 04:03ID:pxSB7uFP
JAVAでマップパーツをまとめた画像を読み込んで
それをバラバラにして特定のパーツを呼び出すのは
どうすればいいのでしょうか?
0214名前は開発中のものです。04/07/28 04:11ID:pWvKd6xA
>>213
Graphics.drawImage(Image, int, int, int, int, int, int, int, int, ImageObserver)じゃダメなのか?
0215名前は開発中のものです。04/07/28 04:26ID:pxSB7uFP
>>214
public void abc(int x int y){
Graphics.drawImage(Image, 0, 0, 30, 30, 0+30*x, 0+30*y, 30+30*x, 30+30*y, ImageObserver)
}

30*30のパーツだとするとこれでいいのですか?
abc(0,0);
これでImage[0][0]が呼べるのかな。
0216名前は開発中のものです。04/07/28 04:43ID:pWvKd6xA
>>215
いや、そういうことじゃなくてチップ番号と座標を対応させて一枚の画像から必要な部分だけ
その都度スクリーンに描画するようにすれば、読み込んだ画像をバラバラにして管理する
必要はないんじゃないのか?
0217名前は開発中のものです。04/07/28 04:52ID:pxSB7uFP
>>215
そのやり方がよく分かりません。
まだまだ勉強不足のようです。
0218名前は開発中のものです。04/07/28 09:48ID:H/vRL8q2
たしかその一部のイメージの描画はアクセラレーションきかないはずだ
アクション系ならロード時にイメージを新規に作ってそこに描画した方がいいぞ

注意すべきはロードするイメージはVolatileImageではなくて
コンパチブルイメージを使うこと

http://shin.cside.com/product/shingl/index.htm
このライブラリを使ってる人とのやりとりと日記みてわかった
0219名前は開発中のものです。04/08/30 23:48ID:ERs1bP5f
Javaでネットワーク2DRPGを作成しています。
サーバプログラムは参考になるソースを見つけたのでそれを元に作成しています。
クライアントプログラムはいまいち参考になるソースが見つからず、
自己流で作成していましたが、停滞気味です。
クライアントプログラムの作成の参考になるソースや記事等有りましたら、
ご提示いただけると幸いです。
0220名前は開発中のものです。04/08/31 14:25ID:Z2xpHABT
サーバープログラムの参考になるソースどこか教えてください。
0221名前は開発中のものです。04/08/31 19:02ID:eG4/8KZG
>>219
どの部分で行き詰まっているのかかいてもらわんとなんともいえん

>>220
ネットワークの仕組みが分かってるかどうかだよな
まずはTCPベースでいろいろやってみるといいよ
小規模やリアルタイム性が問題にならないのならそのままでもいい

この2者ともまだ言語的にJavaかどうかのレベルではないなー
0222名前は開発中のものです。04/08/31 23:28ID:bWsLtK/e
>>220
全体的な構造は、下記のソースコードを参考にして作成しています。
(エミュレートサーバプログラムです)
ttp://sourceforge.net/projects/l2j/
ttp://sourceforge.net/projects/tupi/

>>221
全体的にこんな構造で作成するといったものが分からず、適当に作成しているため、
特にアーキテクチャと言うものが存在しない状態で、
何とか動いているようだけど、ソースはすでによくわからない状態になっています。
このような状態なので、何か機能を追加するにもなかなか進みません。
ネットワークゲームのクライアント作成に関して、
何か参考になるリソースを教えていただけないでしょうか?
今プログラムは、複数の人がマップを歩けるといった状態です。
0223名前は開発中のものです。04/09/01 00:45ID:JSL7Dn8l
そこまでできているならあとはそのパケットの種類を増やすだけじゃないの?

とにかく機能をプラグイン的に開発で追加できるようにしておいたほうがいい

特に大規模になるRPGならなおさらだが、STGや格闘なんかもこのプラグイン開発が非常に有効だ

だらだら書いたコードは自分の書いたものであっても後からはかなり追いにくくなるしね
0224名前は開発中のものです。04/09/01 00:52ID:jkCSki8i
クライアントの作り方が良く分からないという段階で、
このような大規模(に見える。ソースを見たわけではないので)
サーバのアプリを参考にしてもどうにもならんと思う。

まずは、サーバとクライアントにどのように分けられているかを考えて見ることをお勧めする。

ゲーム作る前に、チャットサーバとチャットクライアントをTCPで作ってみなされ。
それが出来れば、そこに書いているようなプログラムは
ある程度想像できるとおもうが。

要するにチャットでクライアントから送信する文字列の代わりに
クライアントでのキャラクタの操作を送ればいい。
サーバはクライアントから受け取った全ての情報を
全てのクライアントに送り返すだけ。
(ここでは敵キャラとかも居ない前提だから)

まぁ30人ぐらいなら問題なく動くと思うよ。
ちゃんとクリッピングする必要はあるけど。
0225名前は開発中のものです。04/09/01 01:43ID:7oUT+/5j
>>223
ご指摘の通り、だらだらとその場限りのコードを書いているので、
コードが難読化してきました。
プラグインですか。そういう方向性も考えて、
できるだけモジュール化して少しでも読みやすい形に変えていくしかないでしょうか...

>>224
以前、多人数チャットプログラムは作成したことがあります。
チャットとネットワークゲームのギャップは大きいです。
今は全員にブロードキャストしていますが、そのうちAOI (Area of Interest)も考えていきたいと思います。
0226名前は開発中のものです。04/09/01 17:01ID:ISPB1QLl
単発質問スレだろ。
とっとと削除依頼出して来いよ。
0227名前は開発中のものです。04/09/02 07:45ID:Y1Yx8GTH
お前が出してこればいいだろカス
0228名前は開発中のものです。04/09/02 19:10ID:cCoZW+h9
いや、有用です。
jreって同梱して配布してもいいんですか?
0229名前は開発中のものです。04/09/02 19:17ID:u4jYIec6
ライセンスにちゃんとかいてあるだろ
アプリと一緒なら大丈夫と

細かいところはちゃんと自分で読めよ
日本語でかいてあるんだから
0230名前は開発中のものです。04/09/05 18:37ID:JFvG5Cpo
http://www13.org1.com/~taro/typing/frame.html
↑アプレットで作ったタイピングゲーム。
データはたぶんCGIで処理されてランキングを競える。
はまった(σ・∀・)σ
0231名前は開発中のものです。04/09/05 19:08ID:3h4b8ntN
そもそもjreってどうやって添付するの?
0232名前は開発中のものです。04/09/05 19:17ID:GEDEt6J2
jreってのはwinでsunのインストーラしか使ったこと無いやつはわからんだろうが
一定のディレクトリ構成で解凍できていればそれだけで動く

jreのパス/bin/javaw.exeを実行すればそのjreのファイルを使って動いてくれるよ
0233名前は開発中のものです。04/09/06 00:04ID:w3gEzBit
起動するだけならManifest入りのjarじゃ駄目?
jre+exeにするメリットがよくわからない。誰か教えてプリーズ。
0234名前は開発中のものです。04/09/06 00:23ID:Ce27N6UB
>>233
クリックだけで起動できるようにしておけば十分だというのはプログラマ側の意見。
Winユーザは「起動はhogehoge.exeをダブルクリック」とかいうイメージを持っているから、
Win向けならexeも用意しておくのが親切だろうと思う。
0235名前は開発中のものです。04/09/06 00:32ID:mbfLc7Vo
>>234
あるいは、JWS使ってデスクトップにアイコンを置くか、かな。
0236名前は開発中のものです。04/09/06 11:28ID:i7I+EB4B
winユーザなんて低脳は相手にしてないからいいよ
0237名前は開発中のものです。04/09/06 12:20ID:ZBANa6io
FPSを実装する場合、Threadのrun()の中でThread.sleep()使うだけでもいいんでしょうか?
たとえば、sleep(10)とすれば20msごとにrun()(1フレームの処理)が実行されるので50FPSになりますか?

それともrun()の中を無限ループにしてThread.sleep()を使わずif文で

if (System.currentTimeMillis() - temp > 20) {
  temp = System.currentTimeMillis();
1フレームの処理
}

とした方がいいでしょうか?
どんな性能のマシンでも大体50FPSを保つようにしたいと思っているんですが。一般的な
方法はどうやるのでしょう。ヒントお願いします。
0238名前は開発中のものです。04/09/06 18:38ID:+gWz+dMO
>>233
ユーザーにJREが入ってるのを期待するという時点で使いにくい
ネイティブアプリと同じ感覚で使うならコレ

しかも、ユーザーのJREを無理矢理上書きしないことと
稼働確認したバージョンが入っていることで安心感がある

セットアッププログラム使えば簡単にデスクトップにショートカット作ったりできるしな
0239名前は開発中のものです。04/09/06 18:41ID:+gWz+dMO
>>237
タイマ管理ならメインルーチンはなんらかのObject.wait()で待機
そしてTimerTaskのFixedのほうでnotify()
これで一定間隔で綺麗な時間管理が可能

いろんなのをためしたがコレが一番fpsの安定度が高かった
whileなどのループで監視し続けるのは実は安定度がイマイチ
0240名前は開発中のものです。04/09/06 19:47ID:ZBANa6io
>>239
ありがdそれも試してみます
0241名前は開発中のものです。04/09/14 15:41:48ID:9W9CzUmZ
Javaでドラクエ風RPGのスクロール処理実装してみました(けっこうむずいな)。
ソースも入っているのでなんか感想ください。

ttp://gamdev.org/up/img/1230.zip
0242名前は開発中のものです。04/09/14 16:37:46ID:XDf3I/sN
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●きなこ●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
これを見た人は確実に【きなこ】です。これをコピペでどこかに1回貼れば回避できます。
これは本当です。やらないときなこ無駄になります
0243名前は開発中のものです。04/09/14 16:46:02ID:mzvwC+OS
きれいで見やすいソースだと思います。
Runnableをインプリメントって昔の手法のようなきがしますが、
ゲームでは普通なんですかね。

ゲーム作ってないJava使いの戯言なので、気にしないでください。

あと、マップデータの保存方法が面白かったです。
これなら、エンコーダ、デコーダが必要ないですね。
こんな発想は私にはありません。

さらにがんばってください。
0244名前は開発中のものです。04/09/14 19:48:38ID:9W9CzUmZ
>>243
ありがとございます。

マップデータは最初アスキーコードでファイルに書き込んでたんですが、最近オブジェクトのシリアライズ機能を知ったので使ってみました。

アニメーション入れるときはRunnableをimplementsするか別にThread拡張したスレッドクラス作るかだと思うんですが新しくスレッドクラス作るの面倒くさかったのでimplementsしちゃいました。本当はアニメーション用のクラス作ったほうがきれいだとは思います。
0245名前は開発中のものです。04/09/14 23:09:03ID:oCIZVQtI
>>241
TimerTask使え
動作が一定にならんぞ
0246名前は開発中のものです。04/09/15 01:11:45ID:x9fcMx2z
>>245
スレッドの代わりにってことですよね。
動作が一定にならないってのはどういう意味でしょうか?
性能が違うマシンで実行すると移動速度が変わるってことですか?
0247名前は開発中のものです。04/09/15 09:04:05ID:x9fcMx2z
上の方に書いてありました。
0248名前は開発中のものです。04/09/18 00:17:02ID:vzZqw4Gl
>>241
すごい。ドラクエっぽいですね!

ブラウザにつなぐだけ、携帯にものってるjavaって
良い言語だねー 自分も色々作れるように調べてみようかな
0249名前は開発中のものです。04/09/19 01:28:27ID:SSes8fIu
>> 239
TimerTask でためしに組んで見たけど、アプレットだと描画が行われない。
アプレットじゃなく普通にフレーム作ってやると動くのだが。
メインスレッドは止めちゃいけないのかな。他にスレッド用意する必要があるとか。

class App extends JApplet {
  public void start() {
    timer = new Timer();
    timer.scheduleAtFixedRate(new WakeTask(this), 0L, 20L);
    run();
  }

  public synchronized void run() {
    while (true) {
      try { this.wait(); } catch (InterruptedException e) {}
      Graphics g = getGraphics();
      g.drawString("hogehoge", 100, 100);
      g.dispose();
    }
  }

  public synchronized void wake() { notify(); }
}

class WakeTask extends TimerTask {
  App app;
  WakeTask(App app) { this.app = app; }
  public synchronized void run() { app.wake(); };
}
025024904/09/19 01:44:48ID:SSes8fIu
自己解決。スレッド作ってそちらで回したらうまくいった。
こーゆーやり方が正しい作法なのかは知らんが。

class App extends Japplet implements Runnable {
  public void start() {
    timer = new Timer();
    timer.scheduleAtFixedRate(new WakeTask(tins), 0L, 20L);
    new Thread(this).start();
  }

  public synchronized void run() {
      ・
      ・
0251名前は開発中のものです。04/09/19 09:06:51ID:goqDjYTZ
start()をオーバライドしちゃだめだろ
0252名前は開発中のものです。04/09/19 10:53:43ID:Aq0Xkjw4
横から失礼。
public class App extends Applet{
      :
  class task extends TimerTask{
    public void run(){
メインの処理;
      repaint();
      :
ではどうなんでしょうか?
0253名前は開発中のものです。04/09/19 10:56:46ID:g0x391w9
よく分かってないのならrunのなかで各種初期化処理やれ
ゲーム自体独立したスレッドでいい
0254名前は開発中のものです。04/09/20 06:02:36ID:W3SKt6/C
TimerTaskを使った絵画ループの書き方としては


TimerTask task = new TimerTask() {
public void run() {
canvas.repaint();
}
};
timer.schedule(task, 0, 1000/fps);

これでいいのかな。
誰が参考になるコードキボンヌ(2D対戦格闘もイケるとか、640x480で30fpsはいけるとか、これ本当?)
0255名前は開発中のものです。04/09/20 13:13:54ID:ioTee/hT
GraphicsConfiguration#createCompatibleImage(width, height, Transparency.BITMASK);
を使用すると恐らくハードウェアアクセラレーションがかかる状態で描画が出来る予感。
OSとJavaVMによりけりだけど。
実はSWTのGCを使うほうが安定して上記とあまり変わらないスピードで描画が出来る罠があったりする。
0256名前は開発中のものです。04/09/20 18:28:35ID:faYuQGQa
>>239
おまいさんが実験したJavaのソース キボンヌ。
0257名前は開発中のものです。04/09/20 19:27:10ID:Y6umYSPO
>>254
640*480-60fpsいけるよ
ただしアルファブレンド拡大縮小回転を使わないという前提
1.4.2ではこれらはアクセラレーション効かないからね

アクセラレーションはいろんな場合に様々な要素で効いている
Windowsならメモリの確保の仕方でDDB、DIB、DirectXを使って実装している。
G400とかMatrox系はDIBやDDBはすんごい早い。
DirectXはRIVA128以降〜最新チップまで比較的安定。

>>255
それであってる
描画先がVolatileImageやフルスクリーン時のバックバッファならDirectXが積極的に使われるっぽい
描画先もコンパチブルイメージだとDDB
通常のBufferdImageはDIBになる

>>256
あの説明で分からないのならやめとけ
0258名前は開発中のものです。04/09/20 19:46:32ID:faYuQGQa
>>257
実装は出来てるよ。
だけど人のソース見るのって楽しいじゃん。
0259名前は開発中のものです。04/09/20 19:54:46ID:Y6umYSPO
ちゃんと動いているのならそれでいいだろ
026024104/09/21 22:03:43ID:og0kzD+1
>>241でドラクエ作ってたものです。
Javaのゲームプログラムを扱ったページを始めたのでよろしければいらしてください。いろいろアドバイスいただければ幸いです。

http://f57.aaacafe.ne.jp/~javagame/index.html
0261名前は開発中のものです。04/09/21 23:17:10ID:BR/zZftm
がんばれ

個人的にはMSVMの新規配布がもはや不可能な現状では
Java2対応にしてスタンドアロンアプリケーションのほうが
いろんなことできて面白いと思うんだが

がんばれ
0262名前は開発中のものです。04/09/21 23:34:31ID:og0kzD+1
>>261
ありがd。
アプリケーションにすると余計な処理が増えて、少しわかりにくくなると思ったんでアプレットから書きました。
一応、Java知っている人向けに書いてるのでJDK入れてあることを前提にしてます。
今後はアプリケーション版も追加していこうと思います。
0263名前は開発中のものです。04/09/22 01:17:04ID:OSkO/iZz
というかアプリケーションの方が大概なめらかで高速
しかもアプレットより簡単だぞ
0264名前は開発中のものです。04/09/22 10:50:38ID:4p3loCSB
>>263

>しかもアプレットより簡単だぞ
そうなんですか?
私のアプリケーションの作り方だと

public class FrameClass extends JFrame {
 public FrameClass() {
  MainPanel panel = new MainPanel();
  getContentPane().add(panel);
 }
}

class MainPanel() extends JPanel {
 public void paintComponents(Graphics g) {
  // アプレットのpaint()と同じ
 }

 // キーボード・マウス処理・スレッド等の実装
}

っていうようにフレームとパネルの2部構成にしてるんですが結構面倒なような。
あとアプレットの方がダウンロードしなくても手軽に見てもらえると思ってます。
完成品はアプリケーションの方がいいのは同意しますが。
0265名前は開発中のものです。04/09/22 16:34:46ID:OSkO/iZz
いやそれだとSwingつかって描画してるだろ
そんな面倒な手続きはいらん
0266名前は開発中のものです。04/09/22 20:33:54ID:xw9EK35l
Swing使いたいんで。というかSwingから入ったのでFrame使ったプログラム知らないです・・・
よく考えた結果アプレットやめてアプリケーションにしました。
0267名前は開発中のものです。04/09/22 20:54:00ID:OSkO/iZz
別にSwingつかってもかまわんよ
RPGみたいなのはうまく使えば便利に管理できるだろう
たとえばウインドウはレイヤー使えば綺麗に重ね合わせされるわけだし

でも重ね合わせの処理とか絶対的な速度はSwingまかせなであぶないので
STGとかアクション系ならフレームの生成くらいしかSwingつかわないんじゃないかな

アプリケーションならおとなしくBufferStrategyつかっとけ
0268名前は開発中のものです。04/09/22 21:22:57ID:YNa9oJMU
参考サイト
http://www5.airnet.ne.jp/sakuraba/java/laboratory/JDK1.4/Graphics/BufferStrategy/BufferStrategy.html
0269名前は開発中のものです。04/09/22 23:38:43ID:xw9EK35l
アドバイスありがとうございます。
勉強させてもらいます。
0270名前は開発中のものです。04/09/24 04:57:16ID:JbcS0+vI
ゲームってゲームの雰囲気に合ったUIがあってこそだと思うんだよ

Swingなんてクソ重いライブラリ呼び出すなんてNO
ゲームに必要な分だけのシンプルなUI widgetを作るのが漏れは好きだ。
■ このスレッドは過去ログ倉庫に格納されています