2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

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

1 :名前は開発中のものです。:2012/12/27(木) 16:04:18.62 ID:rl+qGRHn.net
スレタイはアプレットとの対比的な意味と考えてください。
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

191 :名前は開発中のものです。:2013/03/25(月) 22:48:08.00 ID:+DXzcTUj.net
マインクラフトみたいなゲームを作りたい。2Dで。
ttps://s3.amazonaws.com/ld48/ld22/index.html
今、プレイヤーとマップは一応出来ている。
プレイヤーに攻撃値を持たせて、壊せるオブジェクト(敵も含める)に耐久値を設定する。
耐久値が0になったら決まったアイテムを落とす。
仮にオブジェがいっぱいあったとして、毎回一個ずつ確認していくのは何か変だ。
こんなゲームを作るときはどうしてます?

192 :名前は開発中のものです。:2013/03/25(月) 23:28:51.88 ID:7w1M9Wru.net
何を確認すんの?

193 :名前は開発中のものです。:2013/03/25(月) 23:33:00.13 ID:e+5SoecM.net
kdツリーとかRツリーとかオクツリーとかBSPとかそのへんじゃない

194 :名前は開発中のものです。:2013/03/26(火) 02:48:42.95 ID:IUgsCEv1.net
超巨大な一枚マップを8x8分割とかして、各区画オブジェクトがそこにいる
全ての人物などの参照をもっていれば良い。
それでプレイヤーのいる区画以外の全てのオブジェクトを無視できる。

195 :名前は開発中のものです。:2013/03/26(火) 06:29:02.73 ID:CLcgDKur.net
二分岐探索や二分ヒープ木はhaskellですこし触ったことがある程度。
色々な木を勉強します。
>> 194
もう少し詳しく教えてもらえないでしょうか?
マップを分割することによってオブジェクトの状態検査の数が減るー>メモリ節約?
もしくは、画面に映っているヤツら(プレイヤーからの距離計算で出す)
だけ判定に渡す。<-結局全てのモノを判定しているからボツ?

196 :名前は開発中のものです。:2013/03/26(火) 10:09:24.68 ID:l0lOFTp+.net
http://itpro.nikkeibp.co.jp/article/COLUMN/20070409/267726/

197 :名前は開発中のものです。:2013/03/26(火) 14:17:30.58 ID:IUgsCEv1.net
>>195
あなたの文章がおかしくて推測に苦労しますが、
例えば巨大マップ上に数万のキャラクターがいて、
forループで全部更新するのが重いという話でしょう?

画面外の、それまた遠くにいるようなのが完全に停止していても良いとか、
ゲームの内容しだいで条件もかわるわけで、なんともいえませんなー。

198 :名前は開発中のものです。:2013/03/27(水) 07:28:58.94 ID:f6Hx9aPx.net
そうです。
ま〜マインクラフトやゼルダの伝説時空の章などは画面外では完全に停止していると思います。
それで、
敵やオブジェクトが画面内に入った時だけ動くだとうと推測しているノですが。

199 :名前は開発中のものです。:2013/03/27(水) 19:51:56.53 ID:4U1a8RUn.net
マップが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.40 ID:f6Hx9aPx.net
おお。すごい!
こんなに丁寧に書いていただきありがとうございます。
これだと、quadtreeを使わなくて済みそうかな?
よし、これで頑張ってみようと思います。

総レス数 484
173 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★