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

JAVAでゲーム作成

■ このスレッドは過去ログ倉庫に格納されています
0001JAVA初心者・・・04/01/17 22:47ID:eiE+Mw3o
はじめまして!!
今年に入ってからJAVAでゲームを作ってみようと勉強しています。
どなたか宝さがしゲームを作るうえで参考になるゲームとツール知りませんか??
知っていたら教えてください。<(_ _)>ぺこり
0771名前は開発中のものです。2005/08/19(金) 10:03:13ID:ZksL5yDP
>>770
論点がずれているぞ。
0772名前は開発中のものです。2005/08/19(金) 22:28:56ID:T1nvulFd
がーん
シンプルな解決法かと思ったのですが・・^^;
0773名前は開発中のものです。2005/08/20(土) 03:20:02ID:QiGA0Fi6
ここは親切なインターネットですね

なんか嬉しくなったので記念パピコ
今日、JAVAでゲーム作っていく上で頼もしいサイトが
2,3見つかって気分が良いってのもある
0774名前は開発中のものです。2005/08/20(土) 06:18:08ID:JTmhmGeR
その頼もしいサイト、教えてもらえませんか?
0775名前は開発中のものです。2005/08/20(土) 13:33:03ID:/rW9FaDr
完全にGUIクラス独立させてゲーム作りたいんだけど
VolatileImageでバッファ処理しようとしたらpaint(g)内で作る分には問題ないんだけど
外で色々しようとするとバグるんだけど、なんで?
他のImage使えばいいんだろうけど、なんだか悔しくて。。。
0776名前は開発中のものです。2005/08/20(土) 13:53:31ID:TyoHBn43
そのバグったコードと結果かいてもらわんとなんともいえんだろうが
0777名前は開発中のものです。2005/08/20(土) 14:36:40ID:ZZP3lZ0w
JREがせめてVectorに置いてあればなぁ・・・
JREの開発元がそもそも一般レベルに普及させる気がないみたいだし
0778名前は開発中のものです。2005/08/20(土) 14:43:16ID:B9VT1PVY
http://java.comでいいじゃん
0779名前は開発中のものです。2005/08/20(土) 15:05:36ID:ZZP3lZ0w
>>778
Vectorにソフトを置くとして
そのためのプラットフォームをVector以外に置くというのは・・・
0780名前は開発中のものです。2005/08/20(土) 15:14:02ID:TyoHBn43
JREはアプリにつけれるんだが
単体での配布はJavaのサイトからのみ許されるが

VBのランタイムも同じだべ
0781名前は開発中のものです。2005/08/20(土) 15:22:26ID:ZZP3lZ0w
ん?VBは普通にVectorにあるじゃない。
PrivateJREって無駄が多くていまいち好きになれないし。
Java版RPGツクールでも作ってJavaそのものを普及させるしかないかな。
0782名前は開発中のものです。2005/08/20(土) 16:54:09ID:TyoHBn43
まぁprivateJREでなくてもJREは添付できるが
Privateは細かいリビジョンで動作が変わる可能性があることを考えると
別に悪い選択肢ではない

特にゲームなら細かい動きに依存するしなおさら
public使ってWebStartなら多少細かい設定が可能だけどサンドボックスだと
厄介なことになる場合もあるしな

同人ソフトとか数百Mとかわりとみるし、あまり気にならないかと
0783名前は開発中のものです。2005/08/20(土) 17:51:35ID:ZZP3lZ0w
>>782
> まぁprivateJREでなくてもJREは添付できるが
マジすか。こりゃ要らぬ心配をしてまった。

> 同人ソフトとか数百Mとかわりとみるし、あまり気にならないかと
まあ置くのはVectorだから紹介サイトに負担はないよね(w

てかJavaのゲームオーサリングソフト開発したいな。
・PropertiesとClass#forNameを使い、画面制御クラスが拡張可能
・クラス、ECMAScript(Rhino)、XML SAXそれぞれでシナリオをスクリプト可能
・クラス、Rhinoのどちらかで機能をカスタマイズ可能
・HypersonicSQLとBase64によるリソースDBMS搭載

※画面制御クラス 戦闘ビュー、フィールドビュー、ノベルビュー、会話ビュー、ステータスビューなど
0784名前は開発中のものです。2005/08/20(土) 19:06:09ID:TyoHBn43
Javaはダイナミッククラスロードが容易(だからフレームワークが流行り)なために
RPGとかSTGとかAVGとかのフレームワーク作るのはいいと思うよ
特定のディレクトリにjar放り込んでURLClassLoaderでロードしてくるだけだし

まずはそれらのさらに下で動く描画とか音楽とかの薄い汎用のフレームワークを作ったほうがいいかも

本当に自由なスクリプトに関しては次バージョンでECMAscriptが実装されるからそれをまてばいいね

HSQLDBはゲームに組み込むのには一番楽なサイズかな
たぶんRPGやAVGあたりだとデバッグが容易になるかも
他の環境だとXMLでいいかな
HSQLDBはJDBC2の構文が通らないからちとアレかもしれんがサブクエリーは便利

SAXに関しては勘違いしてないかい?
0785名前は開発中のものです。2005/08/20(土) 20:20:42ID:ZZP3lZ0w
>>784
いろいろ有益な情報thx
共同開発者集められるくらいの基盤は作ってみるよ。

> SAXに関しては勘違いしてないかい?
タグ開始とテキストとタグ終了でXMLを解析するAPIだよね?
調べなおしてパースを一時停止出来なさそうなのには面食らったけど
それでも街やシナリオのインスタンスをレンダリングするには便利だと思う。

デバッグ中は逐次レンダリングして、リリースはレンダリング済みのをDBへ。
エンドユーザが情報交換しやすいフォーマットが他に思いつかない・・・
0786名前は開発中のものです。2005/08/20(土) 21:14:34ID:hX3UwIsl
すごく初歩的な質問かもしれませんが、今、携帯のアプリを作ろうと思っています、、
携帯会社(NTT DoCoMo)のサイトを見ると何かソフトがいるようなコトがかいてあります、
JAVAだけで作ることは可能でしょうか??。。
0787名前は開発中のものです。2005/08/20(土) 21:35:49ID:TyoHBn43
確かに携帯のアプリもJavaだ
だがそれはJ2MEといってPC用のJ2SEから機能を省いたサブセット
ライブラリや使える機能を抑えたコンパイルをして吐き出させるもの

追加で必要なのはライブラリとシミュレーション、ドキュメントだが、これらもちゃんと用意されている

プログラム板にいけばiアプリのスレがあるのでそちらでどうぞ
0788786です、、2005/08/20(土) 21:53:20ID:hX3UwIsl
787>ありがとうございました。。
なにしろ、0から始めることなので、、
0789名前は開発中のものです。2005/08/22(月) 19:15:47ID:B8i8MdrO
JPanelのFPSを保つまた表示するにはどうすればいいでしょうか。
0790名前は開発中のものです。2005/08/22(月) 19:16:32ID:B8i8MdrO
すいません。Javaスレと誤爆しました。
0791名前は開発中のものです。2005/08/26(金) 22:24:25ID:OqoSkLef
VolatileImageってスプライト用途では使えないってことですか?
0792名前は開発中のものです。2005/08/26(金) 23:45:41ID:aHJYtl1C
分からない人は描画先にだけVolatileImage使えばいいよ
スプライトはBufferedImageでもJ2SE5.0からはかなりの場合アクセラレーションがきくようになってる

1.4時代は100%スプライトに使えないと思っていい
5.0はコツがいる
0793名前は開発中のものです。2005/08/27(土) 22:47:55ID:KDG2Ln8Y
>>792
あ、5.0ならできないこともないんですね。
それはシューティングに手を出しても高FPSが実現できるのでしょうか?
FPSが格段に向上するなら教えて頂きたいです。

無茶をしなければBufferStrategy&VolatileImage(offscreen)で十分なのでしょうが。
0794名前は開発中のものです。2005/08/27(土) 23:03:58ID:owlm3iow
BufferedImage>VolatileImageでも秒間1万スプライトとかでるよ

VolatileImage>VolatileImageをやるためにはピクセルフォーマットをあわせて転送元にBITMASK指定

逆にDirect3DでのアクセラレーションはVolatileImage同士かつOPAQUE指定のみ+オプション指定
Direct3Dはレンダリング品質に問題があるために現状では使い物にならないからやらなくていいよ
クリッピング処理に問題があるけどこれは1.4からかわってない
1.4では透過がまったく出来なかったけどね

分かりやすくまとめると
通常のDirectDrawによるアクセラレーションはカラーキーだが
Direct3DではAlpha値を使う、というのがわかれば自然とどういう指定が有効かわかるだろう

5.0ではOpenGLアクセラレーションができるようだが、ハイエンドのチップじゃないと動かないので
現状まったく意味を成さない
WindowsでのOpenGLのようにアクセラレーションが聞かない部分はソフトウェア描画とかやってくれない模様
0795名前は開発中のものです。2005/08/27(土) 23:40:49ID:KDG2Ln8Y
>>794
貴重な情報ありがとうございます。
環境依存に陥るのは勿体無いですね。
知識としてはしっかり抑えておこうと思います。
0796名前は開発中のものです。2005/08/28(日) 06:46:22ID:NGj/fFgW
敵をベジエ曲線で移動させようと思ったのですが
敵の位置があらぬ値を示すのです。
計算式間違ってますか?

int p0x=0,p1x=0,p2x=800,p3x=800;
int p0y=600,p1y=0,p2y=0,p3y=600;
//制御点四つ。数値は画面サイズ縦六百横八百
float move;//t:1-tのtに位置する。
0797名前は開発中のものです。2005/08/28(日) 06:47:42ID:NGj/fFgW
public void move(){
int p4x,p5x,p6x;
int p4y,p5y,p6y;

p4x = (int)((p1x-p0x)*(move/100));
p5x = (int)((p2x-p1x)*(move/100));
p6x = (int)((p3x-p2x)*(move/100));
p4x = (int)((p5x-p4x)*(move/100));
p5x = (int)((p6x-p5x)*(move/100));
glx = (int)((p5x-p4x)*(move/100));
p4y = (int)((p1y-p0y)*(move/100));
p5y = (int)((p2y-p1y)*(move/100));
p6y = (int)((p3y-p2y)*(move/100));
p4y = (int)((p5y-p4y)*(move/100));
p5y = (int)((p6y-p5y)*(move/100));
gly = (int)((p5y-p4y)*(move/100));
//glxglyは画像の左上隅
move++;
movehp();
hami();
System.out.println(glx);
}
0798名前は開発中のものです。2005/08/28(日) 13:16:50ID:UnhERhE7
ベジェ曲線は三次式になるはずなんだけど、一次式だけでプログラム書いてない?
下記ページにベジェ曲線に関して式まで載っていたよ。
http://musashi.or.tv/fontguide_doc3.htm
0799名前は開発中のものです。2005/08/28(日) 13:49:17ID:KSVPBhMr
最近、Javaを勉強し始めたものです。
便乗ですみませんが、>>797のコードでは
(move/100)を各行で計算していますが、
これを
float pos;
pos = move/100;
p4x = (int)((p1x-p0x)*pos);
p5x = (int)((p2x-p1x)*pos);.
.
.
.
とした場合では実行速度に差が出るのでしょうか?

よろしくお願いいたします。
0800名前は開発中のものです。2005/08/28(日) 13:54:28ID:eP1c+99S
ローカルでの計算なら最適化の過程で綺麗になるけど
場合によってはメソッド呼び出しの速度がネックになる場合もわりとでるよ

所詮は頻度だけど
1フレーム内に100万回以上呼び出すかどうかが境目かな
それ以下ならさほど気にならないかな
08017992005/08/28(日) 14:10:11ID:KSVPBhMr
>>800
やはりこの程度ならコンパイラ側で
対処してくれるのですね。
ありがとうございます。
0802名前は開発中のものです。2005/08/28(日) 15:40:48ID:eP1c+99S
Javaの場合コンパイル時と実行時で最適化が入るから
単純にこううごくとは言い切れない部分はあるけど、Cのように静的なだけだと
GCやらなんやらが派手に動いてこの速度はでなかっただろうね
0803名前は開発中のものです。2005/08/28(日) 22:11:59ID:UnhERhE7
>>799
あとでコードを書き直すときに(たとえばmove/200に変更したいとか)
一カ所だけを変更すればいいから、開発がラクになる。
個人的には何度も使う変数は明示的に一カ所だけで計算しておくのが好み。
0804名前は開発中のものです。2005/08/29(月) 21:51:16ID:SWKvmGPJ
NetBeansで作ってたけどJFrame使う意味ってあんまりないって気づいた。
使うコンポーネントはひとつしかないんだもん。当然か^^;
0805名前は開発中のものです。2005/08/29(月) 21:54:43ID:JsHQuHKu
Frameよりは融通が聞く分JFrameでいいかと
0806名前は開発中のものです。2005/08/29(月) 21:56:04ID:JsHQuHKu
ああ、NetBeansでのGUIデザイナのことか
アレは使わなくていい

NetBeansの利点はやはりプロファイラだろう
どのメソッドがネックになってるかとかわかるのは
シビアなタイミングを要求されるゲーム作成時には非常に有利だ
0807名前は開発中のものです。2005/08/29(月) 21:59:36ID:SWKvmGPJ
>>805
GUIデザイナを使う意味がないってのももちろんだけど
paintComponentよりpaintを弄ったほうが早いんじゃないかなと
変わらないのかな?フルスクリーンにしたとき余計なものがあるのは怖い気もする
0808名前は開発中のものです。2005/08/29(月) 22:00:05ID:JsHQuHKu
いや、ゲームではpaintイベントは使わないんだよ
0809名前は開発中のものです。2005/08/29(月) 22:01:50ID:SWKvmGPJ
1フレームごとにbs.show()ってするのでは?
あれはpaintを使わないのか
0810名前は開発中のものです。2005/08/29(月) 22:02:34ID:JsHQuHKu
その書き方は使ってないね

0811名前は開発中のものです。2005/08/29(月) 22:03:22ID:SWKvmGPJ
へー。じゃあJFrameでぜんぜんOKだね。
しったかしてレガシーに走るところだったw
0812名前は開発中のものです。2005/08/29(月) 22:10:26ID:JsHQuHKu
自前での描画タイミングの場合setIgnoreRepaintを設定しておくといいかも
0813名前は開発中のものです。2005/09/02(金) 21:40:42ID:wK2xhSdi
うーむMP3が使えないというのは結構痛いかも知れないなぁ
MIDIをBGMに、WAVをSEに使えば問題ないんだろうけど
MP3で全て賄いたい人も中にはいるよね
0814名前は開発中のものです。2005/09/02(金) 22:24:27ID:43CtxQVv
つーかMP3もつかおうとおもえばつかえるけど、ライセンス問題が絡む

そしてライセンスがうるさくないOggが一番簡単に使える環境なんだから
それでいいのでは?

俺は音楽はOggVorbis、効果音はWAVだ
0815名前は開発中のものです。2005/09/02(金) 23:53:50ID:wK2xhSdi
>>814
ogg良さそうです。完全にフリーで同梱できるなら文句無くコレかと思いました。
これ落としてきてって感じに落ち着くなら今回はパスって感じでした。
もちっと調べてみます。
0816名前は開発中のものです。2005/09/03(土) 11:37:46ID:lKpzKBXs
eclipse上で実行してるときとjarで実行するときの結果が違うんですがこれはデフォルトですか?
たとえば、midiを再生したときの音量が違ったり、実行速度がjarの方が早かったりします。
0817名前は開発中のものです。2005/09/03(土) 13:28:49ID:YpnW9jU+
実行してるJVMが違うんだろ
調べてみれ
0818名前は開発中のものです。2005/09/03(土) 14:19:05ID:Xz6B+qIm
midiってことはサウンドバンクが違う可能性がある
使ってるVMのサウンドバンクをみてごらん
0819名前は開発中のものです。2005/09/03(土) 20:49:51ID:lKpzKBXs
d
eclipseでは5.0だったんですが、jarで使ってるのは自動アップデートされたやつでした。
両方とも同じのにしたらちゃんと同じになりました。
0820名前は開発中のものです。2005/09/03(土) 20:55:23ID:lKpzKBXs
というかJREの違いでこんなに違うのか・・・
古いJREだと音が鳴らなかったりするんで困るな。
0821名前は開発中のものです。2005/09/03(土) 21:16:21ID:Xz6B+qIm
古い新しいは関係ないと思うぞ

JDKいれるとサウンドバンクは入るが、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
また誤解するような書き方してしまったorz
最初の質問はmidiのことでしたが、>>820の音はwavを指しているって意味です。
0824名前は開発中のものです。2005/09/04(日) 01:13:58ID:Dnjo0IKo
J2SE5.0の更新内容見てみれば分かるけど
update2だったかでJavaSoundのバグ修正が入ってる

俺も古いJREだと不具合でてた
0825名前は開発中のものです。2005/09/04(日) 15:50:13ID:Bw5DOelt
java.exeとjavaw.exeでも実行結果が違う罠。
0826名前は開発中のものです。2005/09/04(日) 16:35:06ID:Dnjo0IKo
俺は実行結果がwつきでかわったことないなぁ
0827名前は開発中のものです。2005/09/04(日) 17:26:19ID:/DqsvWIZ
コンソールが出る、出ないとか?
0828名前は開発中のものです。2005/09/17(土) 17:55:33ID:goJMz4JC
BufferStrategyを使って画面を描画する場合は
Insetsを利用してクライアント領域を割り出すしかないのでしょうか?
JWindowをcontentPaneにaddすると例外を出して叱られてしまいます。
0829名前は開発中のものです。2005/09/17(土) 18:13:40ID:l8JeEDP1
元々BufferStrategyはページフリッピングが使えることから
フルスクリーンモードでタイトルバーを非表示状態で使うものだからね
ウインドウモードだとその設定は必要

最後の一行の意味がようわからんが
0830名前は開発中のものです。2005/09/17(土) 19:52:52ID:goJMz4JC
>最後の一行の意味がようわからんが
JFrameの中にJWindowを埋め込めばクライアント領域にぴったり合ってくれるかなと。
0831名前は開発中のものです。2005/09/17(土) 20:54:12ID:PBk0YJc+
javaでゲームを作る場合、どのコンポーネントに描画するのがいいでしょうか?
アプリケーションでバージョンは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+
>>832
お答えありがとうございます。
作ってるのは思いっきりアクションゲームだったんですが・・・
ちらつきってでますかね?
一応ダブルバッファリングはしてるんですが・・・
0836名前は開発中のものです。2005/09/17(土) 22:59:55ID:l8JeEDP1
ティアリングは垂直同期取らない限り必ず出るよ

ウインドウモードとフルスクリーン両対応のゲームやってみればわかる
0837名前は開発中のものです。2005/09/17(土) 23:11:44ID:goJMz4JC
>>834
どもです。これで安心してループを回しまくれます。
5層レイヤーを仕様としていたので、どうしようかと思ってましたw
0838名前は開発中のものです。2005/09/18(日) 08:48:44ID:FkxpuXPO
キー感度をビビットにするために、TimerTaskを専用に設けたいのですが
連打する人の都合を考えると、キーに対してフラグではなく、
キーそのもののTimerTaskが必要な気がします。

これだとキチガイ染みたnewの連発になってしまいそうなのですが
他にもっと上手い方法はありませんでしょうか?
0839名前は開発中のものです。2005/09/18(日) 11:46:52ID:MCJHGFRI
ビビットというものがわからんがキー単位で状態もつと問題ある?
WindowsをメインターゲットでXな環境でもそれなりにうごけばいいというのなら
だいたい大丈夫
0840名前は開発中のものです。2005/09/18(日) 12:34:58ID:FkxpuXPO
「キー感度をビビットにする」というのは
押しっぱなしにした場合の次のkeyPressの間隔を
OSではなくこちらで管理しようという試みです。
(OSは押しっぱなしフラグが立つまでが長いため)

ただ全てのkeyStateをひとつのループで探査すると
押しっぱなしの場合の2回目keyPressは
わずかながら探査の間隔分遅れる可能性があります。

探査間隔そのものが数十ミリ秒レベルの精度なので
ある意味問題ないと言えば問題ないのですけどね。
0841名前は開発中のものです。2005/09/18(日) 15:11:43ID:MCJHGFRI
keyPressedってそんなにおくれてやってくる?
俺60fpsでやってるけど問題ないが

そもそもOSを超えて自前でキーステート取得なんて出来ないわけだが
0842名前は開発中のものです。2005/09/18(日) 15:20:26ID:FkxpuXPO
押しっぱなしかどうかを判定するのは遅いよ
0843名前は開発中のものです。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
だから「OSの押しっぱなし処理」これってなに?

具体的なコードがないとなんとも

フラグを見る方法は60fpsでまったく問題ないんだが
これ以上のfpsが必要とされる場合はそうそうありえないと思うんだが
0846名前は開発中のものです。2005/09/18(日) 16:14:52ID:FkxpuXPO
>>845
逆、低FPSだから問題。
テキストボックスでキー押しっぱなしにすればわかります
0847名前は開発中のものです。2005/09/18(日) 16:16:43ID:ZX6kh5qY
キーリピートのことかな
0848名前は開発中のものです。2005/09/18(日) 16:23:37ID:MCJHGFRI
なんでキーリピートがここででてくるんだ
0849名前は開発中のものです。2005/09/18(日) 16:24:35ID:FkxpuXPO
>>847
そういう用語なのですか?たぶんそれだと思います。
で、結局キーリピートの方法はキー感度をこちらで弄れないので
キー毎にタスクを持たせる方法はどうかという話になりました。

0850名前は開発中のものです。2005/09/18(日) 16:28:43ID:MCJHGFRI
キーリピートを実装したいってことなのか?
0851名前は開発中のものです。2005/09/18(日) 16:31:26ID:NetIQL6+
一回押して、押しっぱなしの状態で、一定時間たったら、もう1回押したことにするってことだよね?

0852名前は開発中のものです。2005/09/18(日) 16:34:04ID:FkxpuXPO
>>850
そうです。低FPSで一定のキーリピートを実装したいんです。
0853名前は開発中のものです。2005/09/18(日) 16:38:27ID:M7CaaFPl
だからkeyPressed()でフラグを立ててkeyReleased()でフラグ降ろせばいいじゃん
0854名前は開発中のものです。2005/09/18(日) 16:41:00ID:MCJHGFRI
ゲーム用途でキーリピートが欲しいってのは珍しい用件だから
さすがに想像してなかったな

どういうところで使うんだろう

キーリピートが邪魔というのなら分かるが
0855名前は開発中のものです。2005/09/18(日) 16:41:42ID:FkxpuXPO
>>853
それはやっています。
のんびりとしたキーループではタイミングにずれが出るんです。
0856名前は開発中のものです。2005/09/18(日) 16:43:35ID:NetIQL6+
>>852
予想してみるに、Timer使って、一定期間ごとの処理のときに
KeyStateのチェックでもしているんだと予想してみるが
(まぁ、自分がこれをやって、押すタイミングによって、
ムダ連打になったり、ならなかったりで、どうにかしたいと思った経験アリな訳だが
どうやって解決したかは忘れた。)

まぁ、複雑になってくると、あんまりTimerは向かないってのが一つ。
0857名前は開発中のものです。2005/09/18(日) 16:43:51ID:FkxpuXPO
>>854
RPGのでいうコマンド位置の移動や
アクションで武器毎の連射速度の調整などです。
0858名前は開発中のものです。2005/09/18(日) 16:49:18ID:MCJHGFRI
>>857
そういうのは入力側をいじるのではなくて
ゲームのシステムなりがやるものだとおもわれ
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+
とりあえず、押されたらそのキーのクラスのPressed()とか呼び出して、isPressed=trueの間ループさせて
前の時刻から、一定時間たったらリピートが、良さそうかな。
0861名前は開発中のものです。2005/09/18(日) 17:04:08ID:MCJHGFRI
ループでまわさないRPGでのコマンドとかならイベントでやっといたほうがええよ

デザインパターンとか多少目を通したほうが楽かもね
0862名前は開発中のものです。2005/09/18(日) 17:27:01ID:FkxpuXPO
こんな感じでそれぞれの処理を隔離したいんです。
これでキーリピートができると再利用性が向上して作りやすいんです。
・入力処理による行動キューへの書き込み
・メインループによる行動判定処理及びメモリスクリーンの更新
・FPSループによるディスプレイへの描画

>>860
キー判定ループを1つにするかキー分用意するかの違いなんですけどね。
キー判定ループを押される度に生成ではなく、押されるまで寝かせるとかだと改善するのかな

>>861
デザパタですか。なんちゃらファクトリーとシングルトンならよく使います。
なんちゃらって答えてる時点で分かってないって事なんですがw
0863名前は開発中のものです。2005/09/18(日) 17:58:14ID:MCJHGFRI
>>862

リアルタイム系ではなくいわゆるウインドウシステムみたいなものを作りたいようだから
ディスプレイへの描画はループさせる必要はないよ
0864名前は開発中のものです。2005/09/18(日) 18:07:20ID:FkxpuXPO
>>863
いや移動処理とかあるので描画ループは必要です。
もちろんトリガ式の描画モードも実装する必要はありますが。
0865名前は開発中のものです。2005/09/18(日) 19:23:42ID:MCJHGFRI
移動処理もループさせなくてもイベントで処理できるよ
たとえば現在のモードが戦闘モードなのか移動モードなのか判断してまわすだけ

たとえばマス単位で動くなら動いた後にはキーイベントキューをクリアするとかの処理が入ればいいだけ

たぶんゲーム作りなれてないのならループ処理よりこっちのほうがやりやすいかもね
0866名前は開発中のものです。2005/09/19(月) 16:53:42ID:jM2IG00Z
javaじゃないけど、el.h(イージーリンクライブラリ)
からそのへん学んだ。変数にフレームごとの状態を記録しておく。
0867名前は開発中のものです。2005/10/02(日) 23:11:49ID:ZLCcRisp
http://pcweb.mycom.co.jp/news/2005/09/15/021.html
↑これってShapeとかImageもOpenGLで高速に描画できるって事ですかね

0868名前は開発中のものです。2005/10/02(日) 23:24:24ID:Tb1DEFOC
それはまだわからない。
5.0から一応OpenGLレンダリングできることになってるけど、イマイチだし
Windows環境ならDirectDrawやDirect3D使ってレンダリングできる。

オプションとか描画の種類とか多少知識が必要だけれども。
Imageの通常転送に関してはDirectDrawで安定して高フレームレートでてるよ。
SDL並みといっていいのでは?
0869名前は開発中のものです。2005/10/02(日) 23:53:51ID:/Mx50MbJ
現在通常ウィンドウとフルスクリーンを交互に表示すると1MBくらいのメモリリークをします。
その後アプリを最小化するとそのメモリリークしたメモリが一気に回復するのですが
このリソースの回収を表示モードの切り替え直後に行う方法はないでしょうか?
0870名前は開発中のものです。2005/10/03(月) 00:20:05ID:+tMRcs2p
>>869
System.gc()じゃだめ?
現在通常ウィンドウとフルスクリーンを交互に表示するプログラムのコード断片希望
■ このスレッドは過去ログ倉庫に格納されています