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

431 :>>199:2015/02/27(金) 17:28:35.90 ID:H3arKG/F.net
チップ単位 32x32(ピクセル)
エリア単位 16x16(チップ)
ワールド単位 64x64(エリア)

int theWarldWidth = 32 x 16 x 64; // 全ての合計
int theWarldHeight = 32 x 16 x 64;
int oneAreaWidth = 32 x 16; // エリアひとつ当たり
int oneAreaHeight = 32 x 16;
int oneTipWidth = 32; // チップひとつ当たり
int oneTipHeight = 32;

プレイヤー座標(Pixel単位)
int x;
int y;

int getAreaX() {
return x / oneAreaWidth;
}

int getTipX() {
return (x % oneAreaWidth) / oneTipWidth;
}

int getPixelX() {
return (x % oneAreaWidth) % oneTipWidth;
}

※真になる
boolean isOK = (x == getAreaX() * oneAreaWidth + getTipX() * oneTipWidth + getPixcel()):

432 :名前は開発中のものです。:2015/02/27(金) 19:15:31.20 ID:RNDSqU89.net
>>429
はい。 % は余りで、/は除です。
>>430~431
こんなに助けて貰っていてまだ出来ない自分が情けなく思います。まじで。
ちょっと今までの過程を上げて見ます。
ttp://fileup.jp/up/6184.zip.html

433 :>>199:2015/02/28(土) 01:23:44.46 ID:P1K9vzQz.net
2DのアクションRPGとかその辺かねぇ
ttp://gesei.sub.jp/kami/src/up0358.zip

434 :名前は開発中のものです。:2015/02/28(土) 11:34:50.48 ID:oenNrJIA.net
>>433
おおおおお。すごい。
完璧に出来ている。
今コードを読んでいて関心させられるばかりです。
もう少し完全把握に時間がかかるので出来次第また書きます。
本当にありがとうございます。これでまたちょっとがんばれるかな。

435 :名前は開発中のものです。:2015/03/03(火) 01:03:54.17 ID:g0dj32rR.net
漸く432で上げたコードに組み込むことが出来たました。
一つ質問があります。

例えば敵がある一定のエリアにいてArea.update()で更新するのがいいのか。
若しくは、Areaクラスの集合管理をしているMapに敵(自己のエリア番号保有)を格納しているのがいいのか。
クラスダイアグラム考えているんですけど、普通は前者ですかね?

436 :名前は開発中のものです。:2015/03/03(火) 03:03:27.31 ID:5dXFwol9.net
1.ゲーム仕様的に敵が少なければ敵全員forループで回す
実装が簡単、どこかに敵全員入ったList<Enemy>があれば良い

2.全エリア合計で10万とか敵がいる場合、巨大なforループ自体を回したくない
その場合はAreaクラスにList<Enemy>をもたせておき、Area.update()する
こちらの場合、敵が動いてエリアを跨いだ時に移動前と移動後のエリアに変更を通知する

437 :名前は開発中のものです。:2015/03/03(火) 03:10:16.30 ID:5dXFwol9.net
>>433をベースにした場合、これで十分だろう

Application.java

public class Application {
 private static List<Enemy> enemys = new List<>();
 public static List<Enemy> getEnemyAll() { return enemys; }
}

MainPanel.java

private void onUpdate(){
 Map map = Application.getMap();
 map.update();

 Player player = Application.getPlayer();
 player.update();

 List<Enemy> enemys = Application.getEnemyAll();
 for(Enemy e : enemys){
  e.update();
 }
}

438 :名前は開発中のものです。:2015/03/03(火) 19:20:02.12 ID:g0dj32rR.net
なるほど。わかりました。次は当たり判定を実装してみます。


後、皆さんゲーム作るときって何か雛形や構造など参照にしてるものってあります?
自分はテンプレにある-> 大量のソースコードを公開して下さっている国内サイト
ttp://aidiary.hatenablog.com/entry/20040918/1251373370
を使っていますが。

439 :名前は開発中のものです。:2015/03/03(火) 21:08:17.36 ID:zJ99hZfx.net
さすがにちょっとenemysは頂けないわ

440 :名前は開発中のものです。:2015/03/03(火) 21:59:26.85 ID:5dXFwol9.net
がびーん

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

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