Javaで作るスタンドアローンゲーム

■ このスレッドは過去ログ倉庫に格納されています
1名前は開発中のものです。
垢版 |
2012/12/27(木) 16:04:18.62ID:rl+qGRHn
スレタイはアプレットとの対比的な意味と考えてください。
Javaでのゲーム開発は賛否ありますが、国外では割と盛んになってきているように思います。
裏を返せば日本語だけでは情報が得辛い状況であり、寂しく開発してる人が多いのでは・・・。

関連スレ
JAVAアプリでゲーム
http://toro.2ch.net/test/read.cgi/gamedev/1033926010/


参考になりそうなサイト
・どのイメージタイプを使うべき?
http://weblogs.java.net/blog/chet/archive/2004/08/toolkitbuffered.html
・弱点と言われる?ベクタグラフィックス関連の改善
http://docs.oracle.com/javase/1.5.0/docs/guide/2d/flags.html
・大量のソースコードを公開して下さっている国内サイト
http://aidiary.hatenablog.com/entry/20040918/1251373370
・Java 2D games tutorial
http://zetcode.com/tutorials/javagamestutorial/
・出入りが最も盛んな?フォーラム
http://www.java-gaming.org/index.php
・スプライトシートの切り方等(国内)
http://sky.geocities.jp/kmaedam/java2/java2.htm

動画
3D Game Programming tutorial
http://www.youtube.com/watch?v=iH1xpfOBN6M
2013/02/10(日) 21:43:22.70ID:Uc/9fu94
>>150
それが中でどういう処理されてるか想像してるか?
2013/02/11(月) 18:11:27.91ID:GJsWhCTi
Javaを使うなら少々の処理落ちには目をつぶれ
ど〜〜〜〜しても処理落ちを許せないならJavaなんか捨ててしまえ

まあ >>135 みたいなこと質問してる時点で
前者しかあるめぇ
2013/02/12(火) 20:08:58.69ID:lS9hcN8q
そんな使い方したいならLinkedList使え
これならremove()しても軽いはず
154名前は開発中のものです。
垢版 |
2013/02/19(火) 23:28:13.96ID:ZJutE4OQ
JavaFX使ってますか?
2013/02/20(水) 18:26:13.94ID:MPmWlwS/
たま〜に使ってるけどゲーム開発には使ってませぬ
だけど8きたら使うかも
156名前は開発中のものです。
垢版 |
2013/03/04(月) 16:50:08.02ID:ut1yMHRq
壁とキャラの当たり判定難しい。タイルでするなら
if (map[y][x] == 1) {
return true;
} else {
return false;
}
だけど、ピクセルなどよくわからない。
2013/03/04(月) 17:15:36.43ID:0rLxVrMp
>>156
ピクセル単位?と思ったが恐らくエスパーすると、矩形同士の交差判定をしたいのではと思った
物理的な接触はそうだが、でも論理レベルだとそのタイルと同じことだと思うよ
…最終的にどんな内容なのか知らないが
158名前は開発中のものです。
垢版 |
2013/03/04(月) 18:05:20.38ID:ut1yMHRq
すみません。Rectangleのやつではなく、
■■■■■■■
■ □ ■
■■■■■■■ のピクセル単位です。
Javaでゲーム作りますが何か?のやつで、
今現在、ドラクエみたいな全方向移動をピクセル単位で動かして当たり判定を書きたいと思っています。
そこのマリオで配布されているコードを写して、左右”だけ”の当たり判定をやろうとしたのですが挙動が変になりました。(判定なしは問題無し)
左の壁の判定は大丈夫なのですが、右へ行くと途中で何も無い空間で止まってしまいます。
yも下へある一定下がるとエラーがでます。y方向には何も変更は無いはずなのですがどうなっているのでしょうか?
public void update(){
x += vx; // 当たり判定実装の時は消す
vx = 0; // 上に同じ
y += vy; //
vy = 0; //

double newX = x + vx;
Point tile = map.getTileCollision(this, newX, y);
if (tile == null){
x = newX;
} else {
if (vx > 0){
x = Map.tilesToPixels(tile.x) - WIDTH; // 右の壁にぶつかる前に止まる。なんで?
} else if (vx < 0){
x = Map.tilesToPixels(tile.x + 1); // この左の壁の判定は大丈夫。けど数値を10とかにすると変になる
}
//vx = 0; // もともとあったけど、自分のやつじゃ動いてくれなかった。
}
vx = 0; //これで動く
}
2013/03/05(火) 09:33:04.36ID:9UKwWdsd
>>158
どういう計算とか、どういう処理が必要とか、そもそも具体的にイメージ出来てるか?
つまり、そのコードの全てのタイミングで、各々どういう計算でどうなればいい、と。

例えば、そのMapクラスのスタティックメンバみたいなメソッド、それ何やってるの?
普通に書くと、単純に式書いて終わりだと思うけど、その中だとか…

何も考えずにコピペ&丸投げとかダメだよ
2013/03/05(火) 17:30:28.05ID:vAYNDQg9
キャラクターが1ピクセル単位で動くとしても
マップの当たり判定はマス毎にあるよね?(1マス=32x32ピクセルとか)
だからキャラクターサイズ(32x32)とマスのサイズ(32x32)で
判定するのをベースに、キャラクターのピクセル単位の移動を混ぜる感じになるのでは?
161名前は開発中のものです。
垢版 |
2013/03/05(火) 18:07:32.87ID:/vuQmpHV
>>159, 160
確かに、コピペなどマズかったと思います。
そのサイトやdeveloping games in javaで図を使って説明されているので、何となくは理解しているつもりです。
なぜy方向に影響が出ているのかは分かりませんが
基本的にコードはそのままで数値を変えて学んでいるので、MAPクラスもそのサイト(javaでゲーム作りますが何か?)のマリオと同じです。
ttp://aidiary.hatenablog.com/entry/20050616/1255785698
キャラがピクセルで判定がマス毎ピクセルの混じりだから?難しいです。
タイルならまだ幾分やさしいのですが、動きがカクカクなのでピクセルにしたかったからです。
2013/03/05(火) 21:58:35.97ID:z0yFi9Ty
なんか勘違いしてるようだが、「タイルだからカクカク」で「ピクセルだから滑らか」ってのは君の思い込みだよ。
1マスごとの移動だってピクセルを基準に動かしているわけだが。
おそらくkeyPressedでフラグ立ててkeyReleasedでフラグ折って動かす場合とその判定をしないときの挙動をわかってない。
163名前は開発中のものです。
垢版 |
2013/03/05(火) 22:41:16.35ID:/vuQmpHV
そうなのですか?なるほど、確かに1タイルは32X32ピクセルですね。
フラグってこれ?のことですか?keyReleased も同じみたいですが。
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();

if (key == KeyEvent.VK_A){
leftPressed= true;
}
if (key == KeyEvent.VK_D){
rigtPressed= true;
}
if (key == KeyEvent.VK_W){
upPressed= true;
}
if (key == KeyEvent.VK_S){
downPressed= true;
}
}
2013/03/05(火) 23:01:22.81ID:z0yFi9Ty
>>163
そうそれ。

君がいう「カクカク」な状態って言うのは、そのフラグ判定してるところに直接移動メソッドを書いた場合のことっだとおもう
なぜかっていうとそのkeyPressedメソッドはupdate()されていないよね
だから「押している間動かす」ということをしたければ、キープレスでフラグtrue、キーリリースでフラグfalseにしておいて
メインループに書くupdate()メソッド内で移動処理するわけ
165名前は開発中のものです。
垢版 |
2013/03/06(水) 18:23:56.13ID:25OFm7+P
なるほど。
たしかに、それなら当たり判定はシンプルのままに出来そうですね。
お手本(サイトで配布されているコード)を見てもちょっと混乱してしまったので、もう一度Developing games in javaの当たり判定コードの理解を頑張りたいと思います。当たり判定って難しいです。
2013/03/09(土) 03:05:43.17ID:LK3aqlXO
すごい簡単な話で
・移動判定はマス単位
・移動アニメーションはピクセル単位
にするだけじゃないのか?
2013/03/09(土) 03:25:33.88ID:fdlPur7i
いやそれだけじゃないと思う
十字キー押し続けると一回入力あってから少しディレイしてから連打?みたいな挙動になるでしょ?
ようするにこれを「カクカク」した状態と表現したのだと思うよ
だからmousePressedとmouseReleasedでフラグ判定して、メインループでtrueなら移動みたいに、押している間動くようにした状態をなめらかといっているはず
2013/03/09(土) 07:39:04.60ID:fdlPur7i
ぷよぷよ作ってるんだけど移動と回転をどう定義するといいだろうか
とりあえずやったのは

int[][] field = new int[12][6];
のようなフィールドを0に初期化して

int[][] puyo = new int[3][2];

for(int j=0; j<3; j++) {
for(int i=0; i<2; i++) {
if(i == 1) puyo[j][i] = 1;
}
}
のように初期化し、
010
010
で1のときに描画して、移動処理はfield[j+offsetY][i+offsetX] += puyo[j][i];
のようにした

だけどこれじゃプヨを右方向に動かしたらfieldの横幅を超えてしまうよね?だからエラーでてしまう。
C++だと同じやり方でエラーでないんだけど、もしかしてC++の場合は初期化したfieldの幅を超えたら勝手に広げてくれていたのかな?
Javaでこれをするにはどうしたらよいだろう
169名前は開発中のものです。
垢版 |
2013/03/09(土) 07:47:34.35ID:zFoVh09F
>>166, 167,
それもあるのですが、マス(32X32)だと一歩歩くごとに32ピクセルも移動します。
ゼルダの時空の章などはもっと歩幅が小さい(1ピクセルとか?)のでマス移動だと「カクカク」してしまいます。
2013/03/09(土) 09:00:20.72ID:P2CiH7FT
>>168
offset足した値が横とか縦を越えていないかチェックしてはじけばいいのでは。

C++の場合はオーバーランしてメモリ壊してるよ。
警告なんて出ない。
2013/03/09(土) 11:43:02.11ID:0odFk7am
>>168
上下左右に1マスずつ広げて壁の部分もフィールドの一部ということにするのが簡単かと
ちなみにあれ実はフィールドの最上部に見えないけどぷよの置ける部分が存在するから縦は13段だよ
2013/03/10(日) 00:01:43.20ID:KiVYlmzQ
>>170
>offset足した値が横とか縦を越えていないかチェックしてはじけばいいのでは。

これ、自分も考えたんだけど、そのチェックに加えてpuyo配列自体の1の部分も1列横にシフトとかそういう面倒な操作いるよね・・
だから投げそうになったんだ

>>171
なるほど。だけどそれでもかなり大変なコードになりそうだ・・・。見えているゲーム領域の左上とfield[0][0]が対応しなくなるよねきっと。

やっぱC言語ちっくなpuyoをint型にするような設計はよくないのかな。
fieldの値を基準にpuyoを描画するんじゃなくて、Puyoクラスを作って独立させて描画させるべきか。
でもfieldの状態を更新するのが難しくなりそう・・・
173名前は開発中のものです。
垢版 |
2013/03/10(日) 06:42:22.32ID:QFv44VdC
質問。
http://aidiary.hatenablog.com/entry/20050624/1255786339で、マリオにファイヤーボールを出させたい。
(^o) 〜〜@ な感じ。
どうやったらマリオの場所をスクロール中の画面の場所を特定できるようになるのだろうか?
マップスクロールで大幅に横に移動するー>現在のマリオ場所をとって来るー>ボールにその位置を入力ー>発射ー>ボールは画面外。
ーーーーーーーーーーーーーーーーー
|    (^o)          〜〜|@ <- ボールは画面外
| |
ーーーーーーーーーーーーーーーーー
ボールのクラスで
public void setPos(double x, double y) { // 位置設定
this.x = x;
this.y = y;
}
MainPanelクラスで
Point posX = player.getPos()
weapon.setPos(posX.x + player.getWidth() / 2, posX.y); // posX.x -> 現在のx座標、posX.y -> y座標

これだと、右にいくほどボールの発射場所がマリオから右に遠のいてしまう。
2013/03/10(日) 07:15:40.28ID:G1JW1DEQ
if(puyo.x % 32 == 0){ // マスのサイズで割った余り0 or not
check(map[x][y]);
}else{
check(map[x][y]);
check(map[x+1][y]);
}

Java以前の初心者スレ化してしまったな。
DXライブラリスレなみのレベルとはなさけない。
175名前は開発中のものです。
垢版 |
2013/03/10(日) 08:53:11.38ID:QFv44VdC
解決しました。
ボールのdraw()にマップスクロール時の座標を書き入れていなかったらかでした。
176名前は開発中のものです。
垢版 |
2013/03/10(日) 20:29:07.98ID:QFv44VdC
ボール発射時:左に向いていたら ー> 左へボール飛んでいく x-= 6;
右に向いていたら ー> 右へボール飛んでいく x+= 6;
private void keyConfiguration() {
if (leftPressed) {
player.move(LEFT);
} else if (rightPressed) { でキーを拾って
public void move(int dir) {
if (dir == LEFT) {
vx = -SPEED;
direction = LEFT; // face to left
} else if (dir == RIGHT) {
vx = SPEED;
direction = RIGHT; // face to right でプレイヤーの向きは分かった。
public void move() {
if (isInStorage()) {
return; // do nothing}
if (player.direction == LEFT){
x -= SPEED;}
if (player.direction == RIGHT){
x += SPEED;}
if (y < 0 || y < -(panel.scrolledHeight())) {
store();
}
コンパイルはokみたいで実行したら
Exception in thread "Thread-2" java.lang.NullPointerException
at theLastSamurai.Weapon.move(Weapon.java:51)
at theLastSamurai.MainPanel.run(MainPanel.java:80)
at java.lang.Thread.run(Thread.java:679) 何故?
2013/03/10(日) 21:25:31.59ID:G1JW1DEQ
初心者以前に馬鹿じゃねえの。
例外のスタックトレースも読めないとか池沼か。
178名前は開発中のものです。
垢版 |
2013/03/10(日) 22:04:44.96ID:pLC1ThRb
javaでRPGをつくりたいのだが、画像の素材は、どこかにかありませんかな
gif,pngの32x32の画像がいい
unityってゲームつくりには役に立つ?
2013/03/10(日) 23:16:48.90ID:G1JW1DEQ
そうかもしれないし、そうじゃないかもしれない。
2013/03/10(日) 23:19:48.97ID:nHCM+efj
ツクール素材でもググってみれば
181名前は開発中のものです。
垢版 |
2013/03/13(水) 21:25:47.68ID:XNwjXgJc
javaをやっていると体にわるいな
過労死、鬱病、倒れそうだ
182名前は開発中のものです。
垢版 |
2013/03/13(水) 22:20:25.22ID:WmJDWgdc
javaに関する本を何冊持っていますか?
Javaの本高くて困ります
今の時代amazonがあるから助かっているけどそれでも本代はかさむ
このデフレ時代、値段が下がらなかったのは本と税金、社会保障費ですかね
2013/03/13(水) 22:45:21.50ID:NdWAfqh4
良い本知ってるがこれでは教える気にならんな
2013/03/14(木) 01:08:10.88ID:nocQ9en/
>>182
とりあえず三冊かな
2013/03/14(木) 01:50:02.10ID:yH7ud9UQ
ほとんどネットで十分だからな。
結城のデザインパターンとか役にたたないし、
パーフェクトJavaとサーブレット関連、アンドロイド関連で合計3冊あれば良いだろう。
186名前は開発中のものです。
垢版 |
2013/03/24(日) 02:38:51.86ID:ua68AVRh
ゲームはC++がメイン?
JAVAはサーバーに使われるのがメインですか?
2013/03/24(日) 04:27:20.54ID:crOzGDtU
そうかもしれないし、そうじゃないかもしれない。
2013/03/24(日) 07:28:35.65ID:dL5F+tAI
初めJavaでゲーム作るのが難しく感じたけど今やC++よりやりやすく感じる俺は。
やっぱC++はGUIが面白くないしわざわざWINAPI弄ろうという気にもならないしモチベ下がる
あとクラスに分けてちゃんと作っていこうとするとJavaのほうが管理しやすいから好きだ
2013/03/24(日) 21:13:37.97ID:wYx6jnbT
>>188
それってJavaが良いわけじゃなくて、Swingとかの
GUIライブラリとか良いってだけじゃん
C++だってクロスプラットフォームのGUIライブラリはあるだろ?
この部分は別にJavaならではって感じがしない
2013/03/25(月) 07:26:50.10ID:Qbfd/Wlz
>>189
いや、そこがでかいんだと思う
同じ「ライブラリ」という概念でもJavaのそれとC++のそれではまるで違うと思う
VC++でライブラリ登録するのだるすぎるし
191名前は開発中のものです。
垢版 |
2013/03/25(月) 22:48:08.00ID:+DXzcTUj
マインクラフトみたいなゲームを作りたい。2Dで。
ttps://s3.amazonaws.com/ld48/ld22/index.html
今、プレイヤーとマップは一応出来ている。
プレイヤーに攻撃値を持たせて、壊せるオブジェクト(敵も含める)に耐久値を設定する。
耐久値が0になったら決まったアイテムを落とす。
仮にオブジェがいっぱいあったとして、毎回一個ずつ確認していくのは何か変だ。
こんなゲームを作るときはどうしてます?
2013/03/25(月) 23:28:51.88ID:7w1M9Wru
何を確認すんの?
2013/03/25(月) 23:33:00.13ID:e+5SoecM
kdツリーとかRツリーとかオクツリーとかBSPとかそのへんじゃない
2013/03/26(火) 02:48:42.95ID:IUgsCEv1
超巨大な一枚マップを8x8分割とかして、各区画オブジェクトがそこにいる
全ての人物などの参照をもっていれば良い。
それでプレイヤーのいる区画以外の全てのオブジェクトを無視できる。
195名前は開発中のものです。
垢版 |
2013/03/26(火) 06:29:02.73ID:CLcgDKur
二分岐探索や二分ヒープ木はhaskellですこし触ったことがある程度。
色々な木を勉強します。
>> 194
もう少し詳しく教えてもらえないでしょうか?
マップを分割することによってオブジェクトの状態検査の数が減るー>メモリ節約?
もしくは、画面に映っているヤツら(プレイヤーからの距離計算で出す)
だけ判定に渡す。<-結局全てのモノを判定しているからボツ?
2013/03/26(火) 10:09:24.68ID:l0lOFTp+
http://itpro.nikkeibp.co.jp/article/COLUMN/20070409/267726/
2013/03/26(火) 14:17:30.58ID:IUgsCEv1
>>195
あなたの文章がおかしくて推測に苦労しますが、
例えば巨大マップ上に数万のキャラクターがいて、
forループで全部更新するのが重いという話でしょう?

画面外の、それまた遠くにいるようなのが完全に停止していても良いとか、
ゲームの内容しだいで条件もかわるわけで、なんともいえませんなー。
198名前は開発中のものです。
垢版 |
2013/03/27(水) 07:28:58.94ID:f6Hx9aPx
そうです。
ま〜マインクラフトやゼルダの伝説時空の章などは画面外では完全に停止していると思います。
それで、
敵やオブジェクトが画面内に入った時だけ動くだとうと推測しているノですが。
2013/03/27(水) 19:51:56.53ID:4U1a8RUn
マップが1000万x1000万だとして、それを1万x1万エリアに分割すると、1エリアの大きさは1000x1000になる。
それでプレイヤーがいる1エリア内(1000x1000)だけを更新するとすれば次のような形になるはず。

class GameMap {
Area[][] area2D = ...;
}

class Area {
final Point index;// (GameMap.area2D[index.x][index.y] == this)
List<Enemy> enemyList; // エリア内にいるモンスター
List<Item> itemList; // エリア内にいるアイテム
}

Player {
Area area = GameMap.area2D[0][0];
}

class GameScene {
void onUpdate(){
Player player = ApplicationScope.getPlayer();
Area area = player.area;
// プレイヤーのいるエリアを更新する
for(Enemy e : area.enemyList){ ... }

// 例えばプレイヤーがエリア内で西側にいる場合、プレイヤーのいるエリアからひとつ西側にあるエリアも更新する
if(...) {
Area west = GameMap.area2D[area.index.x-1][area.index.y];
for(Enemy e : west.enemyList){ ... }
}
}
}
200名前は開発中のものです。
垢版 |
2013/03/27(水) 21:37:10.40ID:f6Hx9aPx
おお。すごい!
こんなに丁寧に書いていただきありがとうございます。
これだと、quadtreeを使わなくて済みそうかな?
よし、これで頑張ってみようと思います。
201名前は開発中のものです。
垢版 |
2013/03/29(金) 14:13:20.69ID:ygLK74i7
ゲームボーイの”くにおくん”の様に攻撃ボタンを押した時だけ
キャラの横(キャラの向き)に攻撃画像が表示される。
そしてもし敵がその範囲内であれば敵がダメージを受けるような事をしたいです。
インベーダーの様に弾に攻撃オブジェをいっぱい最初に作って画面外に置いて、
攻撃が呼ばれるたびにそれを取り出す方法ぐらいしか分からないです。
本来?はどうやればいいのでしょうか?
2013/03/30(土) 22:57:51.86ID:ecRAb5Av
>>200の人だろうか。まあがんばれよ。
203名前は開発中のものです。
垢版 |
2013/03/31(日) 08:56:54.87ID:C9rWy5ii
自分はまだ199で教えてもらったのを勉強してるところですが.
は〜、早くマインクラフトやゼルダみたいなの作りたい。
2013/04/01(月) 10:34:18.32ID:kEB/FLx8
Java3Dってなんでこんなに人気ないの・・・
205名前は開発中のものです。
垢版 |
2013/04/01(月) 17:27:30.15ID:rGhu5lL8
みんなjavaの基礎文法を習得するだけで疲れるじゃないの?
3DってopenGL,unityがあるからじゃないのか?
2013/04/01(月) 19:25:16.71ID:VcD7kLeu
>>204 本気で3Dで色々したいとJavaで頑張る理由が無くて、
むしろJavaで作るのはいろんなデメリットを請け負うから。

3Dだと、いろんな事したくなるとJVMじゃなくてネイティブの方のライブラリを叩きに行く必要があるから、
結局JavaよりもC++なりなんなりの方がずっと素直なんだよ。
そのうえ、結果として、Javaなのに移植性が低くなるし、さらに悪い事にそのくらいの移植性だったら、
C++とかの方がいいライブラリがあったりして、自前で頑張る必要ないし。
ここまでしても、結局の所ゲームだったら素直に対象OSなり固定して、其れに特化したのをC++で作ったほうが性能も生かせる。
さらに今じゃ、C#とかあるんで、選択肢的にJavaは宗教上の理由でもなければ選ぶ利点ないでしょ・・・。



まぁ、単純にJavaなら簡単そうで入ってきた人達が、
3Dをやろうとした途端、とんでもない壁にぶつかって、
その中でやる気のある人はC++なりに行き、そうで無い人はやめた。
って感じがするけどね。
2013/04/01(月) 20:31:04.88ID:8P8EUzuA
脇からだけど2Dもどき程度にJava3DやOpenGL使おうって場合はどうかな。
2013/04/01(月) 22:04:45.67ID:/CRE6+rF
C#でSlimDXとかやってる人も少ないと思う。
Java3DやJOGLよりLWJGLのほうが海外だと主流みたいだよ。

英語がダメで日本語情報源にしがみつきたいならUnityが良いだろう。
2013/04/02(火) 07:16:54.12ID:aeIJC38X
lwjgl+slick2dが楽で良い
2013/04/02(火) 09:56:30.01ID:NVgqGr2P
>>205-209
なるほどありがとう
211名前は開発中のものです。
垢版 |
2013/04/15(月) 19:17:38.68ID:UO+MIpzy
組み込みスクリプトにサンドボックスを設定して
ユーザが安全にアドオンを作れるようにしたい
何か良いフレームワークはある?

参考
http://ja.softuses.com/15490
2013/04/15(月) 20:07:38.56ID:OCp/UaRz
lwjgl+slick2dほんとに英語しか資料がないからハードルめちゃ高い
日本語の情報なんか個人が作ったブログみたいなの頼りにするしかないもんな
書籍とかいいのあったら教えてほしいわ(日本語の)
2013/04/15(月) 21:18:59.55ID:81X1iHjQ
少なくとも書籍があるんなら見つけてると思うぞ。

ちょいと気になったんだけどJOGL、Java3D、lwjgl、slick2D、遊ぶ側の導入が楽なのはどれ?
全部楽だよってなら気にする必要はないけど地味に重要な気がする。
2013/04/15(月) 22:12:25.73ID:OxLvLhMT
遊ぶ側ならJVMさえインスコしてあればどれも同じじゃねーの
2013/04/16(火) 14:57:09.19ID:kYWnrLY4
slick2Dはlwjglのラッパーだからlwjgl同梱必須だよ
アプレットで動かさなければどれも同じ
2013/04/16(火) 18:28:14.08ID:cWQohAwT
もしかしてJVM+配布側の配慮で全部OKなのか。
2013/06/04(火) 20:52:20.90ID:4z/LrXQA
質問があります。よくゲームフィールドを定義するのに

private int[][] map = new [12][24];
のような二次元配列を用意し、

二つのfor文の中で
switch(map[j][i]) {
2013/06/04(火) 22:50:24.24ID:h/v7VZKU
}
2013/06/05(水) 00:24:25.51ID:JVViz8+I
おい
2013/06/05(水) 02:25:23.16ID:iKNZD4WR
質問
MouseMostionListenerのmouseDragged(MouseEvent e)に関して、
e.getX(), e.getY()で得られる値はどうやらドラッグ開始した地点の座標?
故にドラッグ中マウス移動しててもカレントのマウス座標が得られなくて困った

加えてドラッグ中はmouseMove(MouseEvent e)メソッドのほうのそれらも座標が更新されない(当然?)
e.getXOnScreen()なるメソッドはドラッグ中も更新されるのだけれど、スクリーン基準の座標はどうも扱いづらいしバグを生みそうでできれば避けたい
何か良い方法ないですかね?
221220
垢版 |
2013/06/09(日) 16:03:16.49ID:k71SnmVJ
Swingがシングルスレッドなのが原因かもしれない
ドラッグ中は処理が止まって離すときにそれぞれ更新される?
素直に自前でスレッド用意することにします
222176
垢版 |
2013/06/28(金) 12:42:09.96ID:U3hHRtQl!
うおぉ〜漸く球がキャラの向いている方へ発射されるようになった。
長かった。
2013/07/05(金) NY:AN:NY.ANID:p077YvOc
ボンバーマンの爆弾のアルゴリズムってどうすればわかりやすいですかね
爆弾を置くのはボンバーマンだから、ボタン押したときに
ボンバーマンが爆弾クラスをnewする設計でいいのかな
すると、Factoryパターン?

そんなことするより所持可能な最大ボム数(8だっけ?)を、
どのキャラも初めからnewしてリスト登録しておくべきか

・爆弾が時間に左右されること
・爆発の連鎖があること
・後から表示された爆発が先に爆発する可能性があること

この辺りがゲームプログラミング初心者の自分には難しいです
2013/07/05(金) NY:AN:NY.ANID:RaygrmWM
最初はメインプログラムに全て詰め込んで後々再利用出来そうな処理だけ他クラスで良いんじゃね
2013/07/11(木) NY:AN:NY.ANID:YrFP7L1n
>>130のサイトのマリオカート凄いな
自分の自作ゲームは数十倍もサイズがでかいのに何百倍もクオリティが低くて少し凹む
2013/07/14(日) NY:AN:NY.ANID:xl2VX9QI
かいじょかいじょ
2013/07/14(日) NY:AN:NY.ANID:xl2VX9QI
おお〜やっと規制解除された!
228名前は開発中のものです。
垢版 |
2013/08/06(火) NY:AN:NY.ANID:tPkwuHiT
oggをツクールみたいにループ再生したいんだけど、コメントをどうやって取得すればいいのかわからん
2013/08/16(金) NY:AN:NY.ANID:w8E+MSLB
よかったじゃん
2013/08/24(土) NY:AN:NY.ANID:+f+kX8MI
jnlp を置いたディレクトリの絶対パスが日本語文字を含んでいたら動作しなかった
なんてこった。配布するとき困る
2013/09/14(土) 14:10:40.99ID:cy1XSJ6p
drawImage とかで指定する ImageObserver って何の意味がありますか?
自分いつも null にしてます。というか this とか指定すると変になりました
2013/09/14(土) 15:16:45.85ID:cy1XSJ6p
AffineTransform で混乱する…
「座標系」を変換するのか、「座標」を変換するのか
右手系なのか、左手系なのか
どうもはっきりしない
2013/09/14(土) 15:38:41.06ID:zONL1qkf
通常nullだってどっかで読んだ
多分非同期読み込みとかに使うんじゃない
2013/09/14(土) 18:11:37.03ID:cy1XSJ6p
>>233
サンクス。null で良かったか
2013/09/14(土) 19:31:47.44ID:GBbBS2U3
Image をネットワークから読み込んでいる場合、まだダウンロードが完了しておらず、画像を表示できない場合がある
そのような場合に ImageObserver を指定しておくと、読み込みが完了したタイミングを知ることができる
そのタイミングで、例えば、読み込み完了した画像を改めて表示し直すことができる
闇雲に this を指定すれば何か役に立つというわけではない
2013/09/14(土) 22:22:34.81ID:cy1XSJ6p
>>235
なるほどっす。
Swingのイベントディスパッチスレッドから呼び出されるわけじゃないのかな?
Swingコンポーネント上でImage使ってる時は注意が必要かも
2013/09/15(日) 20:30:00.65ID:cXwe4017
GCが動いてゲームループがトマトになる現象を防げるか…?

オプション: -XX:MaxGCPauseMillis=200

Sets a target value for desired maximum pause time. The default value is 200 milliseconds.

参照:
http://www.oracle.com/technetwork/articles/java/g1gc-1984535.html
2013/09/19(木) 14:57:32.91ID:teJIpav3
.classファイルをバイナリエディタで見ると、先頭に

cafe babe

っていうマジックナンバーが見える。凝ってるな
2013/09/27(金) 00:44:08.10ID:FOeLnzNv
>>238
あー
よく知らないが、Java開発者達の近所にあった喫茶店だそうだ。
2013/09/28(土) 02:14:26.45ID:1G2ugWm1
javaがコーヒーブランド、cafeはコーヒー、+babeって説が一般的だけど諸説あるな。
babeってマジックナンバーは昔はたまに使ってたし。
2013/09/29(日) 17:08:46.52ID:kgbSHSbg
javaでゲームって「now loading」のどさくさで(full)GC強制したくならない?
2013/10/09(水) 22:56:30.33ID:JeIpUTuA
ざっとぐぐったらfullGCが呼ばれる処理を呼びだすことで間接的に可能っぽいねぇ

ここスタンドアローンってスレタイにあるけど
gcjに関する情報とかないでしょうか?

ゲームでgcj使ってる情報が少なくて、ライブラリ関係をどう扱えば良いのかがわからない・・・
特にライセンスがなんともよくわからない
2013/10/10(木) 01:21:00.33ID:rWd2dlNb
>>242
ライセンスはクラスパス例外のないGPLだから成果物もGPLになる。
ライブラリのリンクは元がnativeだとgcjが対応してない部分はリンクに失敗する。
これだけじゃん。いまでもwin用にはクロスコンパイルが必要かは知らん。

それよりgcjがAOTコンパイルしたバイナリよりjavaのJITコンパイルの方が早いからゲームには使いどころないと思うよ。
2013/10/24(木) 17:20:16.75ID:BIU10uO4
>>243
亀だけどありがとう、JITってそこまで進化してたんですね
2013/10/24(木) 23:21:24.86ID:HkVOqNBP
javaのJITコンパイラはキャッシュミスして脱最適化しても次の直近のタイミングで
別の最適化されてまたキャッシュされたりするしコンパイル時間かけてでも効率重視だから結構速いよ。
GCとかヒープのデカさが超ネックになってるから全体ではチューニングせんとパフォーマンスでないけど。
2013/11/02(土) 21:57:26.98ID:wzULkq5O
Javaっておいしい?
2013/11/03(日) 08:19:18.45ID:h3H0javF
初恋の味
2013/12/08(日) 20:51:14.66ID:K3VE5nXT
テトリス+ぷよぷよ作ったよ

http://kie.nu/1x45
249名前は開発中のものです。
垢版 |
2013/12/08(日) 20:52:04.42ID:K3VE5nXT
あげ
2013/12/21(土) 23:50:19.82ID:iQvUwIgS
Slickライブラリでゲームを作ってますが、
どこか参考になるページなどありますか?
ライブラリやyoutubeのチュートリアルを見て実際に動かしていますが、
使い方がイマイチわかりません。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況