[過去ログ]
Javaで作るスタンドアローンゲーム (484レス)
Javaで作るスタンドアローンゲーム http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
1: 名前は開発中のものです。 [] 2012/12/27(木) 16:04:18.62 ID: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 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/1
404: 名前は開発中のものです。 [sage] 2015/01/06(火) 04:39:59.03 ID:PnAg4DMI 960×544の解像度でBufferdImageで前回の背景表示内容をキャプチャし、 ずらして画像表示して擬似スクロールしてスクロールした分だけ新規描画というのを 60FPSでやってみたけどCore i3でCPU40%消費。ちょっと食いすぎじゃん? スクロールはブロック単位で再描画した方が良いのかねー。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/404
405: 名前は開発中のものです。 [sage] 2015/01/13(火) 17:49:27.95 ID:Cut3q1mT 自分もスクロールやろうとしたことあったけど厳しかった Win7 発売され始め時期のかたおちPCだけど。 >>404 と同じぐらいの画面サイズで BufferedImage だと 30 fps でもかなりカクカクな感じで OpenGL使っても 60 fps だとたまにカクッとなった。 組み方が悪いのか、スペックが足りないのか、 ビデオメモリに入りきらないのか、ガベコレか、Javaの限界か、 Cとかでハードウェアに密着して書けば早くなるのか、 ようわからんかった http://mevius.5ch.
net/test/read.cgi/gamedev/1356591858/405
406: 名前は開発中のものです。 [sage] 2015/01/13(火) 22:55:52.16 ID:IQ52oWIM >>405 たぶんそれはモニタのリフレッシュレートが描画と合ってないからだわ。 少なくともセレロン程度でも60FPS程度ではカクカクなんてしない、CPUは食うけど。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/406
407: 名前は開発中のものです。 [sage] 2015/02/09(月) 00:06:19.88 ID:R2EuJPGg 質問させて下さい どこかで、JavaのGUIがAWT/SwingからJavaFXへ移行するとの記事を読みました これからゲーム作る場合、SwingではなくJavaFXを勉強すべきですか? よろしくお願いいたします http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/407
408: 名前は開発中のものです。 [sage] 2015/02/14(土) 03:23:03.34 ID:2h9+EhUj あんまり詳しくないけど、2Dのゲームを作る分にはSwingでも十分だし、いろいろな解説サイトや本もだいたいSwingだからJavaFXをわざわざ勉強する必要はないんじゃないかと http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/408
409: 名前は開発中のものです。 [sage] 2015/02/15(日) 12:01:07.84 ID:3+LUOTIJ >>408 レスありがとうございます 確かに、ネットで勉強していると、ほとんどSwingなんですよね ただ、これからJavaが本当にGUIをJavaFXに絞る場合、そちらに切り替えたほうがいいのかと心配しています JavaFXに対するOracleの本気度を知りたいですね http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/409
410: 名前は開発中のものです。 [sage] 2015/02/16(月) 00:35:23.69 ID:IObbTgF7 GUIが変更されても大丈夫な設計にしてSwingで作ればいいじゃない http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/410
411: 名前は開発中のものです。 [sage] 2015/02/17(火) 01:02:02.75 ID:chIOmG3A >>410 そのレスで、もう一個質問したいことを思い出しました 私はシミュレーションやRPGが作りたいです 色々と、windowを作る必要があると思うのですが、ゲームの場合、それらは自作すべきですか? たとえば、モンスターが出てきたときに、windowで「たたかう」「にげる」「防御」「魔法」とか表示するとします その場合、その4個の選択しを表示する枠のようなものはJavaのDialogを使うべきなのか、それとも自前で絵として描画すべきなのかどっちなのかイマイチ
わかりません 一般的な方法を知りたいです 仮に、自前で絵として表示する場合、SwingでもJavaFXでもあんまり変わらない気になりました http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/411
412: 名前は開発中のものです。 [sage] 2015/02/17(火) 03:25:28.71 ID:6qHepVXs 自作というか、継承してカスタマイズするパターンが一番多いよ JPanelを継承してCommandPanelとか、そういう感じ。 ボタンとかも押した時のイベント処理とか画像の変化とか備わってるものをベースにするのが現実的。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/412
413: 名前は開発中のものです。 [sage] 2015/02/17(火) 10:37:33.20 ID:gXwJ1qVD guiを自前で実装しようとするとフォーカス制御という面倒事が待ってるからswingなりfxなり使った方が手堅いよ。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/413
414: 191 [] 2015/02/22(日) 11:24:59.12 ID:x5Svrr+/ 199を参考にマップの処理を実装しようとしているのですが、いまだに詰まっていることがあります。 現在実装中の方法 1000万x1000万等の巨大なマップは自分じゃ一気に作れないので、20x30位のエリアを何個か作り最後に結合する。 一エリアはpublic class Area { private int[][] map = { {1,1,...,1,1}, .. {1,0,...,0,1} };に格納。 マップはpublic class Map { private Area[][] map;//全体地図 private int[][] area;// 画面に表示する範囲(エリアじゃない) map[0][0] = new Area(1)
;map[0][1] = new Area(2);map[0][2] = new Area(3); map[1][0] = new Area(4);map[1][1] = new Area(5);map[1][2] = new Area(6); map[2][0] = new Area(7);map[2][1] = new Area(8);map[2][2] = new Area(9);のように格納。 そしてプレイヤーの現在位置からどの”エリア”にいるかを算出して int indexTPX = (int) (topLeft.getX() / (areaWidth * TILE_SIZE));//topLeftは表示画面の為の座標 int indexTPY = (int) (topLeft.getY() / (areaWidth * TILE_SIZE)); area = map[indexTPY][indexTPX].getArea(); そのエリアを描画する。 問題は、例え
ばmap[0][0],map[0][1],map[1][0]とmap[1][1]の境界付近(+)にプレイヤーがいて 「そのときの描画はどうやればいいのか?」です。 for (int i = 0; i < areaHeight; i++) {for (int j = 0; j < areaWidth; j++) {.....}}だと4つの該当するエリア描画できないし。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/414
415: 名前は開発中のものです。 [sage] 2015/02/22(日) 12:11:59.61 ID:9tzD8toT 先ず、更新と描画は別。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/415
416: 名前は開発中のものです。 [sage] 2015/02/23(月) 10:06:47.59 ID:Lz998WDk 表示される範囲座標一つ一つ、どのエリアのどこの座標になるか見ればいいんじゃないの。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/416
417: 名前は開発中のものです。 [sage] 2015/02/23(月) 12:44:13.38 ID:0EQ3KecF 複数の座標系は変換して使うもの。 グローバル座標、タイル座標(=グローバル座標の場合あり)、エリア座標は相互変換できないとおかしい。 そしてそれら座標系が描画時にウインドウのクライアント座標に変換できないといけない。 この辺が整理できていないからやり方が判らないんだよ。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/417
418: 名前は開発中のものです。 [] 2015/02/24(火) 00:16:43.29 ID:zq7H1j8+ >>415 ~ 417 変換系の整理ですか... int indexTPX等で表示画面の左上座標を算出して後は表示画面の幅や高さでそれぞれの座標計算は出来るのですが。 /** private Area[][] map * [1][2][3] * [4][5][6] 5 -> はじまりの町 * [7][8][9] */ 1,2,4,5の中心付近にいて4つのエリアを描画するとき、 どうやって各エリア情報を取得して使用するかが確かに整理できない気がします。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/418
419: 名前は開発中のものです。 [sage] 2015/02/24(火) 00:53:43.94 ID:hT1osW/a >>418 4つの中心付近とか関係ないだろ…? 今プレイヤーは何番のマップにいるのか。 そのマップはどれだけオフセットしてるのか。 チップのサイズ、マップのサイズはいくらか。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/419
420: 名前は開発中のものです。 [sage] 2015/02/24(火) 04:46:34.32 ID:FyTelkQO >>418 エクセルでも方眼紙でも何でもいいから、簡単に入子の箱書いてみれば理解しやすいんじゃない。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/420
421: 名前は開発中のものです。 [] 2015/02/24(火) 23:23:20.49 ID:zq7H1j8+ >>419~420 一つの大きなマップはいくつのも小さなエリアの集合体で構成されているので, その小さなエリアの幅が決まっています。 よって描画画面がそのエリア幅を超えたら、そのエリアに接している別のエリアも映し始めなければならないので。 後、今プレイヤーが何番のマップにいるのかはわかる様にしています。 ちょっと説明が出来ないのでソース上げてもいいですか? http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/421
422: 名前は開発中のものです。 [sage] 2015/02/25(水) 00:02:04.33 ID:wwS95ney 仕組みは理解できてると思うよ。 表示範囲が1エリアの範囲を超えるでもなければ、プールしておくべきは最大4エリア その4エリアから表示範囲分を表示すれば良いだけ。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/422
423: 名前は開発中のものです。 [sage] 2015/02/25(水) 00:41:58.65 ID:sF3guJ4N エリア座標(0, 0) エリア座標(1, 0) グローバル座標(0, 0), (1, 0) グローバル座標(2, 0), (3, 0) (0 1), (1, 1) (2, 1), (3, 1) エリア座標(0, 1) エリア座標(1, 1) グローバル座標(0, 2), (1, 2) グローバル座標(2, 2), (3, 2) (0 3), (1, 3)
(2, 3), (3, 3) 描画するべき範囲が四つのエリアに跨っていようとも、 グローバル座標で考えればいいんだよ。 グローバル座標(1, 1), (2, 1) (1, 2), (2, 2) グローバル座標からエリア座標に変換する関数が一つあれば十分でね。 プレイヤーの居る座標(グローバル座標)が判るのだから、 後はプレイヤーを中心に表示する仕様だとして、 クライアント領域に描画する必要なタイル数も判るのだから、 描画の開始点となるグローバル座標も判るし、その座標から何座標分(もしかするとタイル分)描画するかも判
るよね。 後はその範囲をfor文でループでもさせて、毎回グローバル座標からエリア座標に変換させて、 エリア上の該当する位置の情報にアクセスすればいいだけでしょ。 これは理屈の話であって、もっと効率的にアクセスできるように設計し実装することも、個々の仕様により可能な場合もあるでしょう。 とかくこれで問題ない筈だよね? http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/423
424: 名前は開発中のものです。 [] 2015/02/25(水) 01:19:14.73 ID:Opsz/SjB >>422~423 なるほどなるほど。グローバル座標などで処理する等で問題は解決しそうです。 ちょっと道が見えてき始めたのでがんばってみます。 ありがとうございます。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/424
425: >>199 [sage] 2015/02/25(水) 17:58:43.51 ID:Jzpyh/K8 2年経っても同じことやっててワロタ 4エリアだと計算が難しいから、エリアを少し小さくして 主人公の周り全方向8エリアを処理するようにすれば? http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/425
426: 名前は開発中のものです。 [sage] 2015/02/25(水) 23:36:51.01 ID:wwS95ney 全体マップをエリア単位で分けた座標をブロック座標とした場合、 現在位置の要素を調べるのには、全体マップでの現在位置を1エリアの大きさで割って、商が全体マップ中のエリアのブロック座標、余りがエリア内の要素座標。 これは現在位置の足元の要素を調べる考え方だけど、右隣の要素を調べたいなら右隣を現在位置座標とした同じ計算をしてみればいいだけ。 プレイヤー周囲3x3の要素を調べたいのなら、計9回分基準となる座標を入れ替えて同じ事をすればいい。
http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/426
427: 名前は開発中のものです。 [sage] 2015/02/26(木) 02:32:54.21 ID:BXfNXTEu 巨大マップを作るのにしても迷路状のMAPなら、迷路生成の為のツール作って大枠を作成、その上で細部を手直しするとか、 2Dのフィールドマップならマップタイル1つを1色の色に見立ててペイントで大雑把に描いて、その後に通常のマップタイルを組み合わせた表示で細部を手直しするとか。 3Dのフィールドマップなら上記のやり方に組み合わせて、等高線地図的なもので凸凹のMAPを生成し、細部を手直しようにするとか。 巨大な皿に一つ一つ米粒並べるよりも、米をぶちまけ
て均等にならした方が早い。 グローバル座標からブロック座標、エリア内座標を生成するのも、それと似たような考え方。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/427
428: 名前は開発中のものです。 [] 2015/02/27(金) 13:30:27.20 ID:RNDSqU89 ふお=== 何かスパゲッティー通りこしてペペロンチーノになってきた。 ちょっと今思ったのですが、もう一つグローバル変数だけのマップをつくればいいかな。 小さいエリア集合のマップを最初から一つの大きなマップ(グローバル座標もち)にすればいいんじゃね? そうすればエリアからG座標の計算やエリアが跨った時の計算も楽になるので。 しかし、問題はどうやって エリア座標(0, 0) エリア座標(1, 0) グローバル座標(0, 0), (1
, 0) グローバル座標(2, 0), (3, 0) (0 1), (1, 1) (2, 1), (3, 1) エリア座標(0, 1) エリア座標(1, 1) グローバル座標(0, 2), (1, 2) グローバル座標(2, 2), (3, 2) (0 3), (1, 3) (2, 3), (3, 3) を (0, 0), (1, 0), (2, 0), (3, 0) (0 1), (1, 1), (2, 1), (3, 1) (0, 2), (1, 2), (2, 2), (3, 2)にするのにはどういう風にループまわそう?
concatみたいなものjavaにありますかね? 皆さんの助言凄く助かるのですが、如何せん実装時にペペロンチーノ化する。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/428
429: 名前は開発中のものです。 [sage] 2015/02/27(金) 16:35:54.45 ID:KBJyPpkG グローバルマップのサイズはGX256xGY256。 エリアマップのサイズはAX32xAY32。 すると、グローバルマップは、BX4xBY4のブロックマップとなります。 プレイヤーの現在位置は、PX72,PY24。 この場合、プレイヤーが存在する場所は、 PX72 (プレイヤーのグローバル座標) PY24 (PX72 / AX32) = bPX2 (プレイヤーの存在するブロック座標) (PY24 % AY32) = bPY0 (PX72 / AX32) = aPX8 (エリア内のプレイヤー座標) (PY24 % AY32) = aPY24 演算子は理解できてるよね? htt
p://mevius.5ch.net/test/read.cgi/gamedev/1356591858/429
430: 名前は開発中のものです。 [sage] 2015/02/27(金) 16:39:11.64 ID:KBJyPpkG エリアマップの集合体がグローバルマップなわけで、その集合体を管理するのがブロックマップでありブロック座標。 エリアマップの集合体を管理する座標体系が、まるっきりすっぽ抜けてんだよ。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/430
431: >>199 [sage] 2015/02/27(金) 17:28:35.90 ID:H3arKG/F チップ単位 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) / oneTipWi
dth; } int getPixelX() { return (x % oneAreaWidth) % oneTipWidth; } ※真になる boolean isOK = (x == getAreaX() * oneAreaWidth + getTipX() * oneTipWidth + getPixcel()): http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/431
432: 名前は開発中のものです。 [] 2015/02/27(金) 19:15:31.20 ID:RNDSqU89 >>429 はい。 % は余りで、/は除です。 >>430~431 こんなに助けて貰っていてまだ出来ない自分が情けなく思います。まじで。 ちょっと今までの過程を上げて見ます。 ttp://fileup.jp/up/6184.zip.html http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/432
433: >>199 [sage] 2015/02/28(土) 01:23:44.46 ID:P1K9vzQz 2DのアクションRPGとかその辺かねぇ ttp://gesei.sub.jp/kami/src/up0358.zip http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/433
434: 名前は開発中のものです。 [] 2015/02/28(土) 11:34:50.48 ID:oenNrJIA >>433 おおおおお。すごい。 完璧に出来ている。 今コードを読んでいて関心させられるばかりです。 もう少し完全把握に時間がかかるので出来次第また書きます。 本当にありがとうございます。これでまたちょっとがんばれるかな。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/434
435: 名前は開発中のものです。 [] 2015/03/03(火) 01:03:54.17 ID:g0dj32rR 漸く432で上げたコードに組み込むことが出来たました。 一つ質問があります。 例えば敵がある一定のエリアにいてArea.update()で更新するのがいいのか。 若しくは、Areaクラスの集合管理をしているMapに敵(自己のエリア番号保有)を格納しているのがいいのか。 クラスダイアグラム考えているんですけど、普通は前者ですかね? http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/435
436: 名前は開発中のものです。 [sage] 2015/03/03(火) 03:03:27.31 ID:5dXFwol9 1.ゲーム仕様的に敵が少なければ敵全員forループで回す 実装が簡単、どこかに敵全員入ったList<Enemy>があれば良い 2.全エリア合計で10万とか敵がいる場合、巨大なforループ自体を回したくない その場合はAreaクラスにList<Enemy>をもたせておき、Area.update()する こちらの場合、敵が動いてエリアを跨いだ時に移動前と移動後のエリアに変更を通知する http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/436
437: 名前は開発中のものです。 [sage] 2015/03/03(火) 03:10:16.30 ID:5dXFwol9 >>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(); } } http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/437
438: 名前は開発中のものです。 [] 2015/03/03(火) 19:20:02.12 ID:g0dj32rR なるほど。わかりました。次は当たり判定を実装してみます。 後、皆さんゲーム作るときって何か雛形や構造など参照にしてるものってあります? 自分はテンプレにある-> 大量のソースコードを公開して下さっている国内サイト ttp://aidiary.hatenablog.com/entry/20040918/1251373370 を使っていますが。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/438
439: 名前は開発中のものです。 [sage] 2015/03/03(火) 21:08:17.36 ID:zJ99hZfx さすがにちょっとenemysは頂けないわ http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/439
440: 名前は開発中のものです。 [sage] 2015/03/03(火) 21:59:26.85 ID:5dXFwol9 がびーん http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/440
441: 名前は開発中のものです。 [] 2015/03/03(火) 23:22:11.93 ID:Ww58oNEN >>439 enemies? http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/441
442: 名前は開発中のものです。 [] 2015/03/06(金) 19:06:03.53 ID:qOuLf7E5 一つのエリア内での壁の当たり判定は出来ましたが、またエリア境界を跨ぐ所で詰まった。 >>426みたいにするのを考えていますが中々うまくいかない。 いっそのこと>>428の方法を取ったほうが周りのエリアのことを考えなくて住むので計算は楽になるかな? http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/442
443: 名前は開発中のものです。 [sage] 2015/03/06(金) 21:12:18.88 ID:cuamb/V2 いや、何でやねんww 同じ座標変換で、進行方向のオブジェクト調べりゃええだけやがなw http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/443
444: 名前は開発中のものです。 [sage] 2015/03/06(金) 22:03:19.10 ID:YhHE8cN4 これは流石に草 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/444
445: 名前は開発中のものです。 [sage] 2015/03/06(金) 22:42:29.33 ID:DlVBEjuz まるで成長していない http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/445
446: 名前は開発中のものです。 [sage] 2015/03/07(土) 01:16:46.43 ID:Q1pyrL0N 基本的にプレイヤーの操作によっていじる座標は、キャラの位置を示すグローバル座標のみ。 その他の、全体マップ内でのエリアの位置を示すブロック座標や、該当エリア内でのプレイヤーの位置を示すエリア座標は、必要なときに都度グローバル座標から変換すればいい。 そうすりゃエリア跨いだ場合の処理がー、とか悩む必要もなくなるよ。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/446
447: 名前は開発中のものです。 [sage] 2015/03/07(土) 12:44:59.80 ID:CIOoXfhb 横から補足すると、 エリアというのも、全エリアの中の更新範囲のエリア群になる筈なんだよ。 それを決定するのもプレイヤーまたはカメラのグローバル座標から行われる。 一度、セーブ・ロードの視点でデータの持ち方、データへのアクセスフローを考えてみるといいよ。 何をトリガーにしてフローが産れるのか?が理解できる。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/447
448: 名前は開発中のものです。 [] 2015/03/07(土) 16:22:57.20 ID://3hG3Y3 >>446~447 ありがとうございます。 >>431の変換関数を基本にしてグローバル座標からエリア座標に変換していますが、 多分壁判定に使っているarea[y][x] == 1系に不備があるんだと思います。 一応シーケンス図を考えながらフローに気をつけて見ます。 4日位でギブアップはやはり早いのでもう少し頑張ってみてみます。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/448
449: 名前は開発中のものです。 [] 2015/03/08(日) 13:24:37.46 ID:GjmzByZt http://www.m9-www.com/lwjglgameproject http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/449
450: 448 [] 2015/03/17(火) 18:05:16.44 ID:NjDAqUGi ttp://gesei.sub.jp/kami/src/up0358.zip が限界。頭禿げそう。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/450
451: 199 [sage] 2015/03/17(火) 20:39:10.17 ID:2aANesll まずは速度をタイル単位(32)からはじめるこった ttp://gesei.sub.jp/kami/src/up0360.zip http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/451
452: 名前は開発中のものです。 [] 2015/03/18(水) 01:15:50.35 ID:PXfFT047 >>451 199さんでしたか。色々助言やコードなどありがとうございます。 しかも世界ループ機能まで実装してもらってますし。読み易い。 今からプログラムを追っていく作業に取り掛かります。 これでなんとか地図上で動き回れるようになりそうです. http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/452
453: 199 [sage] 2015/03/18(水) 02:38:41.27 ID:wB42T/0N 名前に番号入ってないのは俺じゃないよ http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/453
454: 名前は開発中のものです。 [] 2015/03/25(水) 17:43:21.36 ID:CRyTJdAN それは失礼しました。 ちょっと判定時々バグるけどこんなかんじでしてます。 ttp://gesei.sub.jp/kami/src/up0361.zip http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/454
455: 名前は開発中のものです。 [sage] 2015/03/25(水) 22:56:29.47 ID:7qzYit+W アローン☆スタンド http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/455
456: 名前は開発中のものです。 [] 2015/04/01(水) 01:43:16.07 ID:rHcHS833 今度こそちゃんとしたゲームが作りたい! 目標は動物の森みたいな2Dゲーム。グラや操作性は大体80s~90s的なゲームが理想。 ゲーム中の機能としてはキャラ移動はもちろん、店での買い物や魚釣りなど色々な事が出来たらいいな。 ま〜最低店での買い物やメニュー画面を開いてアイテム確認や装備変更が出来ればいい。 ゲーム外の機能としては多くのゲームに共通する”新しくゲームをはじめる”、”ロードする”等選択出来るようにする。 今までに何回か簡単なゲームを作
っては失敗しX2を繰り返したので上に列挙した機能は多分実装可能。 しかし、それらを管理する方法(構造)が現在未熟な為不明。 http://en.wikibooks.org/wiki/Video_Game_Design/Structure にあるState Machineの機能を実装したい。 現在の方法はfrontEndとmainGameをリストで管理し、各stateに固有のIDを持たせて初期化やupdate等をしている。 ココで今問題になっているのはfronEndで”ロード”されたゲームデータをどのようにしてmainGameで受け取り処理するか?等だ。 ゲームの構造は作製回数を重ねるごとに洗練されてくると聞き及ぶ。 貴方達
はこのような時どんな構造にしていますか? http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/456
457: 名前は開発中のものです。 [sage] 2015/04/01(水) 02:58:35.22 ID:RM2wWUK+ 文章おかしくて外人みたいだな 質問内容が分からないのでもう一度書き直せ http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/457
458: 名前は開発中のものです。 [] 2015/04/01(水) 12:44:19.32 ID:rHcHS833 失礼。何年も日本にいなかったのでまだ少し文章が変かもしれない。 質問内容は start up licenses introductory movie front end game options sound options video options loading screen main game introduction game play game modes pause options end game movie credits shut down というゲームの基本要素をstate machineを使ってどのように実装したら、これらの管理が容易になるだろうか?です。 ここにコード全部乗せるのは文字制限の関係で無理
みたいっだし。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/458
459: 名前は開発中のものです。 [sage] 2015/04/01(水) 17:30:19.81 ID:lJ9uSJVO グローバル変数ばんざい http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/459
460: 名前は開発中のものです。 [sage] 2015/04/02(木) 00:51:21.72 ID:Kd4ACYgu ゲームの進行を管理するクラスが必要だなー。 データをセーブロードするクラスも必要だな。 データそのもののクラスがあったほうがいいな。 プレイヤーというクラスもあるな。 アイテムというクラスを作ったら、 プレイヤーにアイテムのリストを持たせる? いやアイテムボックスというクラスを作って、 それをプレイヤーに持たせるか。 満タン判別とか簡単に引っ張って来られたら便利だなー… あ、データクラスに含ませてセーブしたほうがいいな。 ロードしたらアイテ
ムボックスにリストをセットしたいな。 …って感じで、まずは想像を膨らませながら 具体的に設計したら後々楽だよ。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/460
461: 名前は開発中のものです。 [] 2015/04/03(金) 01:10:13.49 ID:InpPEbYz ゲームの進行を管理するクラスが必要だなー。 データをセーブロードするクラスも必要だな。 データそのもののクラスがあったほうがいいな から下は既存のコードを流用しようと思っていますので再設計などは他聞問題ないと思います。 http://www012.upp.so-net.ne.jp/flab/javatuto/javatuto8.html なものを見つけたので今勉強中。 もっと何かいいのがあれば教えてもらえればうれしいです。 stack exchangeやgamedev漁るのちと疲れてきた。 http://mevius.5ch.net/test/re
ad.cgi/gamedev/1356591858/461
462: 名前は開発中のものです。 [sage] 2015/04/03(金) 04:56:34.09 ID:lkqZWAUT シーン単位の設計とかそういう設計指針立てるのが苦手ってことなら、 ゲームエンジン使えば?って話になっちゃうかも あと遷移図とか画面構成イメージとか描いたりしてる? コード書く→リファクタリングばっかりでもいいけど、 適当に手書きで整理してみるだけでも違うもんだよ http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/462
463: 名前は開発中のものです。 [sage] 2015/04/03(金) 17:48:28.80 ID:chj1QkVN シーンの遷移が分からないってはなしだろ? シーンのインスタンスをstaticとかシングルトンにすれば そのインスタンスがもってるプロパティもイモヅル式にどこからでもアクセスできる https://pastebin.mozilla.org/8828264 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/463
464: 名前は開発中のものです。 [sage] 2015/04/05(日) 16:43:37.56 ID:FoWp8ODA 期限が短すぎたので上げなおし https://pastebin.mozilla.org/8828750 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/464
465: 名前は開発中のものです。 [] 2015/04/06(月) 18:56:08.99 ID:/THq8Fdv 継承や関連性はなんとなく図を描いている所。 DFDしかちゃんと出来なくて困る。 コード見ましたところ、dispose関数がありますが、そのシーンを廃棄するのでしょうか? 基本的な流れとしては、 GameStateManagerでgame options, sound options, video optionsそしてmain game突入まで管理する。 STARTは単に"Presse Start"を表示させるだけにして、後でその他のoptionsをリストに追加する。 PLAYに(遷移:読み方知らん)かんい?したらPlayStateManagerに移る
。 PlayStateManagerではキャラ移動,店での買い物,メニュー画面を開いてアイテム確認や装備変更等をそれぞれstateで管理する。 例えばPlayStateでキャラ移動, MenuStateでメニュー画面を開いてアイテム確認や装備変更等に分けている。 これで各state特有の処理は出来るのだが、ここで一つ問題が発生する。 問題とは、どのようしてリストに収納されている各stateで”GameStateに無い関数”にアクセスできるか?です。 例: PlayStateでキャラ(player)を移動させているときにアイテム確認の為にメニューを開いた。 その時PlayStateManagerにあるsetPla
yer(Player p)の関数を呼び参照準備完了。 そしてPlayStateManagerでstateの移行を実行しPlayStateからMenuStateに移行する。 その後MenuStateでPlayStateManagerにあるgetPlayer()を呼び参照取得。そしてアイテムの使用や廃棄等の操作をした後再びPlayStateに移行する。 その時PlayStateManagerにあるsetPlayer(Player p)の関数を呼び参照準備完了。 その後PlayStateにあるsetPlayer(Player p)を呼んで参照のセットを計る。 しかし、その関数はGameStateに記述されていないから参照できない。 goto的になっちゃんだよな〜 https://pastebin
.mozilla.org/8828836 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/465
466: 名前は開発中のものです。 [sage] 2015/04/06(月) 22:35:38.63 ID:8cFcSghx 普通にGameStateをPlayStateにダウンキャストすればよいだけだろ ダウンキャストしたくなければ、そもそもリストに詰めないことだ http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/466
467: 名前は開発中のものです。 [] 2015/04/06(月) 23:40:08.53 ID:/THq8Fdv 確かにダウンキャストすれば出来そうですが、それをしようとしたら各要所で条件分岐させなきゃならないし、 前呼んだ”javaで学ぶリファクタリング”の本でDCは余り良い手ではないと書いてあったので。 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/467
468: 名前は開発中のものです。 [sage] 2015/04/07(火) 00:45:35.73 ID:iKbQeSub アホガキまるだしでうんざりする http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/468
469: 名前は開発中のものです。 [sage] 2015/04/07(火) 02:22:24.35 ID:HEtwadqH そういえば春だね http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/469
470: 名前は開発中のものです。 [] 2015/08/03(月) 09:32:43.57 ID:kSwbA9Fz Thread.sleep() を呼び出すと15ミリ秒も処理が帰ってこないという話があり http://dobon.net/vb/bbs/log3-23/14028.html 最高精度の 1 ミリ秒にできたとしても UI スレッド、描画スレッド、AIスレッドなどを同期させながら 60fps 出したいときに スレッド切り替えるたびに 1 ミリ秒かかっていたのでは致命的だ この辺みんなどうやってクリアしていますか? http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/470
471: 名前は開発中のものです。 [sage] 2015/08/03(月) 11:20:15.35 ID:kSwbA9Fz src.zip, Thread.java, sleep(millis, nanos): if (nanos >= 500000 || (nanos != 0 && millis == 0)) { millis++; } sleep(millis); 本当に丸められていた・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/471
472: 名前は開発中のものです。 [sage] 2015/08/04(火) 17:44:09.45 ID:YB5Xtaqw java.util.concurrent.lock.LockSupport.parkNanos(1L); も15ミリ秒待たされた。 新しめの win 8.1 マシンでさえこんな状況 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/472
473: 名前は開発中のものです。 [sage] 2015/08/05(水) 13:18:01.99 ID:Kox9LHwR >>470 同期させるならsleepのタイムアウト待つんじゃなくて割り込みかけない? もうちょっとちゃんとするならjava.util.concurrentのCyclicBarrierやらCountDownLatchやらPhaser使うんじゃない? >>472 うちの環境だとThread.sleep(1);やjava.util.concurrent.locks.LockSupport.parkNanos(1L);は約1msで戻ってくるけどなー Windows 8.1 64bit/Java8/Pentium G6950 Windows 8.1 32bit/Java8/Atom Z3735F ideoneも約1msだった http://ideone.com/Hlp4cu
http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/473
474: 名前は開発中のものです。 [sage] 2015/08/05(水) 17:25:15.81 ID:5iKsQnJc >>473 アクティブレンダリングの待ちが念頭にあったから sleep と考えていたけど 確かに同期させるという用途なら wait / notify とかが良いかも。 そちらでは1ミリ秒の精度あるのですね。 環境によってばらつきがあるのかな? parkNanos(1L) はさすがに1ナノ秒の精度は期待できないにしても マイクロ秒単位の精度はあってほしかったですが http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/474
475: 名前は開発中のものです。 [sage] 2015/08/22(土) 23:33:39.53 ID:+Rszj5Wc >>470 リンク先の内容って2005年の.NET C#の話でしょ? なんでJava板で?・・・ System.nanoTime()使えばナノ秒単位の精度が出るでしょ。 http://aidiary.hatenablog.com/entry/20070429/1251463673 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/475
476: 名前は開発中のものです。 [sage] 2015/08/23(日) 19:31:06.35 ID:7bDmMhl8 nanoTime() は確かに 100 ナノ秒単位くらいの精度がでるかもしれないが それは時間を「測る」ほうの精度で、sleep で「待つ」ほうの精度はもっと悪い。 リンク先を貼ったのは探すのをさぼってしまったからだけど、 Java で、最近の Windows でも状況は似たり寄ったりなのは >>471,472 の通り ぬるぬる動くゲームを作ろうとしていて、Thread.sleep() を呼んでいる場合は、 けっこうオーバーヘッドになっているかもしれません http://mevius.5ch.net/test/read.
cgi/gamedev/1356591858/476
477: 名前は開発中のものです。 [sage] 2015/08/24(月) 14:14:06.17 ID:qQPD7DVJ そりゃ寝てる間に別のタスク呼んでるんだから http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/477
478: 名前は開発中のものです。 [sage] 2015/08/24(月) 18:32:26.01 ID:Gp2n+Lvh sleep(millis, nanos) とあるから、ナノ秒単位で寝かせられる と思うじゃん、 http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/478
479: 名前は開発中のものです。 [sage] 2016/08/05(金) 20:21:48.53 ID:Rrym3J/u JavaFXってグラボのアクセラレーションかかるのかな? って誰もいないかw PCで携帯スマホのOpenGLくらいのパフォーマンスは出そうなんだが… http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/479
480: 名前は開発中のものです。 [] 2017/02/03(金) 02:22:29.13 ID:0I8xjrI1 age http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/480
481: 名前は開発中のものです。 [] 2017/03/22(水) 20:19:40.48 ID:2x3cQ72L http://video.fc2.com/mycontents.php http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/481
482: 名前は開発中のものです。 [age] 2017/06/04(日) 16:37:34.00 ID:uG346vtn 新板age http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/482
483: 名前は開発中のものです。 [] 2017/12/31(日) 19:47:58.74 ID:/rN76OKL 簡単にお金が稼げる方法興味ある人だけ見てください。 グーグル検索⇒『来島のモノノリウエ』 SCVG4A16FM http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/483
484: 名前は開発中のものです。 [sage] 2018/02/17(土) 07:34:01.81 ID:G/oBdhuK ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の 両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/484
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.115s*