トップページgamedev
191コメント74KB

【JAVA】2Dアクションゲームを作る【初級】

■ このスレッドは過去ログ倉庫に格納されています
0001ヤンス04/09/08 09:17ID:Qk2n0ep6
JAVAアプレットでファミコンのゲームにありそうな2Dアクション物を作ろうと思い
二ヶ月くらい前から勉強を始めて最近やっと、ショボイながらも記念すべき
人生初の自作ゲームを作って今、第二作目を作っている所なのですが、やり方の
分からない処理が多すぎて困っております。
勿論ネットや本等で調べまわった上でスレを立てました、何でこんな処理が
分からないんだよと思われるでしょうけれど指導の方お願いします。
上級者の方達と質問のやり取りをしたいのです。

当面の目標は倉庫番、ロードランナー、ドンキーコング等の1画面固定タイプの
やつを作ろうと思います、とりあえず現段階で二次元配列を使っての
マップと自機の表示まで出来てます、二次元配列を使って表示した
マップの壁などに、どうやって当たり判定を付けるかで躓いてます
当たり判定の付け方の考え方など教えて貰えたら、ありがたいです。

ちょっと爪垢が溜まってきたので、また後ほど書きたいと思います。
0002名前は開発中のものです。04/09/08 09:19ID:0Q/9gEvu
>>1から単発質問の上、関連リンクも張らない、テンプレートとして成り立っていない。
よって糞スレ。
0003関連スレ04/09/08 11:02ID:HRipED+T
JAVAでゲーム作成
http://pc5.2ch.net/test/read.cgi/gamedev/1074347252/
Javaでゲーム作る話してるキチガイがいるよ(藁
http://pc5.2ch.net/test/read.cgi/gamedev/1013953851/
Javaアプレットのゲームの限界は!
http://pc5.2ch.net/test/read.cgi/gamedev/1005230153/
JAVAアプリでゲーム
http://pc5.2ch.net/test/read.cgi/gamedev/1033926010/

Delphiでアクションゲームが作りたい!! Part2
http://pc5.2ch.net/test/read.cgi/gamedev/1027482533/
3Dアクションゲームの設計
http://pc5.2ch.net/test/read.cgi/gamedev/1092865676/
アクションゲーム制作ツールをかき集めるスレ
http://pc5.2ch.net/test/read.cgi/gamedev/1081134410/
モナーのアクションゲー作りました
http://pc5.2ch.net/test/read.cgi/gamedev/1035868749/
C言語でアクションゲームが作りたい
http://pc5.2ch.net/test/read.cgi/gamedev/1020417733/

STGを最初からみんなで作るスレ
http://pc5.2ch.net/test/read.cgi/gamedev/1014709311/
【初心者】課題をクリアしていくスレ【講習会】
http://pc5.2ch.net/test/read.cgi/gamedev/1086858349/
初心者たちが勉強しながらBattleCityを作るスレ
http://pc5.2ch.net/test/read.cgi/gamedev/1086075386/
初心者専用スレ「パックマン」風ゲーム作らない?
http://pc5.2ch.net/test/read.cgi/gamedev/1014326802/
初心者専用スレ「シミュレーションゲーム」を作らない?
http://pc5.2ch.net/test/read.cgi/gamedev/1079745509/
ズブの初心者がゲーム作れるまで勉強するスレ
http://pc5.2ch.net/test/read.cgi/gamedev/1005132370/
0004名前は開発中のものです。04/09/08 11:08ID:HRipED+T
【初心者歓迎】スレを立てる前にココで質問を【Part5】
http://pc5.2ch.net/test/read.cgi/gamedev/1078502309/
総合発表&雑談スレッド
http://pc5.2ch.net/test/read.cgi/gamedev/1033812109/
物凄い勢いで誰かが企画をたてるスレ
http://pc5.2ch.net/test/read.cgi/gamedev/1005259344/
【目指せ】ゲーム製作マラソン【完成】
http://pc5.2ch.net/test/read.cgi/gamedev/1093766683/
自作ゲーム評価スレ
http://pc5.2ch.net/test/read.cgi/gamedev/1010018331/
【総合】自治スレッド@ゲーム製作技術板2【統合】
http://pc5.2ch.net/test/read.cgi/gamedev/1078748838/

段階的学習!
http://gamdev.org/w/?%5B%5B%C3%CA%B3%AC%C5%AA%B3%D8%BD%AC%A1%AA%5D%5D
ゲーム製作技術板公式Wiki
http://gamdev.org/w/
ゲーム製作技術板公式アップローダ
http://gamdev.org/up/
0005名前は開発中のものです。04/09/08 11:21ID:HRipED+T
JAVA シューティング作成委員会
http://pc5.2ch.net/test/read.cgi/tech/1062310183/
【徹底討論】Java3Dの可能性について考える
http://pc5.2ch.net/test/read.cgi/tech/1033703640/
gcjって使ってる人います?
http://pc5.2ch.net/test/read.cgi/tech/1046627795/
プログラム素人がJAVAの基礎を学ぶには
http://pc5.2ch.net/test/read.cgi/tech/1047436727/
【初心者】Java質問・相談スレ52【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1093267533/
iモード携帯電話用Java(iアプリ) Part 6
http://pc5.2ch.net/test/read.cgi/tech/1091286071/
0006名前は開発中のものです。04/09/08 13:19ID:HRipED+T
Merlinの魔術: グラフィック表示を完全に制御する
http://www-6.ibm.com/jp/developerworks/java/030704/j_j-mer04293.html
0007名前は開発中のものです。04/09/08 13:58ID:axWRME1Y
>>1
おまえていどのやつはいくらでもいるんだよクズが
0008ヤンス04/09/08 15:24ID:Qk2n0ep6
>>7
まだチェックしていないスレッドがありました
早速読みに行ってきます、有り難う御座います!

まあ、実際問題クズなんで、これからも宜しく。
0009名前は開発中のものです。04/09/09 00:32ID:lXEC1B6x
ありきたりだが、誰でも最初は何も知らないクズだったんだ。

これがきっかけで業界に入って、自信をつけて、ガンガンコード書いて
そのうち仕様とか決めれる立場になって、残業とかで1週間家に帰れなかったりして、
株で儲けて退職して行く同僚を羨ましげに眺めたりして、
気づけば30過ぎてそれでも嫁さん居なかったりして、
いままでPCにつぎ込んだ金額を計算して愕然となったりして、
親の言う通りに公務員になっておけばよかったなとか思うかも知れないけど、
今はガンバレ!
俺は応援してるよ。

あとHRipED+Tには礼を言っておけよ。
0010ヤンス04/09/09 01:46ID:arw9tEgy
>>HRipED+T氏
どうも有り難う御座いました!
おかげさまで引っ掛かっていた問題が解けそうな気配です。
間違えて>>7にお礼を言ってしまっていた・・・

>>9
どうもです!
何気にプログラムやグラフィック等は趣味で留めて置くのが楽しいかなと
思いました、なので小さな頃ファミコンで遊んでた時
なんでこうゆうゲーム(まだアイデア等固まって無いので仕様とかは書けないですが)が
無いのかなと思ったやつを
自分で作れればいいかなあと。
まだまだ未熟者の上、髪型もオカシイですが頑張ります!
0011名前は開発中のものです。04/09/12 09:03:06ID:89in4wvs
応援するぞ。
自分はアクションよりRPG(DQみたいなの)好きなのでJavaで書く練習してる。

あげ
0012名前は開発中のものです。04/09/12 21:09:16ID:Fx/3T5NO
Javaアプレットは簡単なゲームのデモをサイト上に載せるのに便利だけど、
いつも悩むのが速度調整なんだ。
現在時刻の取得、インターバルタイマ、sleepやwaitメソッド、どれをとっても
20ミリ秒程度の精度しかない。

どうやったらどのマシンでも同じ速度で動かせる?
0013関連スレ(シューティング)04/09/12 22:58:39ID:V/gfmIdV
PCで出来る2Dシューティング(STG)総合スレ15
http://game8.2ch.net/test/read.cgi/game/1094563437/
シューティングゲーム製作技術総合 4機目
http://pc5.2ch.net/test/read.cgi/gamedev/1092048824/
★シューティングゲームは終わらない-STAGE32-
http://game8.2ch.net/test/read.cgi/famicom/1092042431/
PCエンジンシューティング総合スレ
http://game9.2ch.net/test/read.cgi/retro/1076413725/
下手の横好きシューティング5
http://game8.2ch.net/test/read.cgi/gsaloon/1090942682/
さて、3Dシューティングでも作るか
http://pc5.2ch.net/test/read.cgi/gamedev/1045989093/
フライトシューティング隔離スレッド
http://game9.2ch.net/test/read.cgi/fly/971843679/
0014名前は開発中のものです。04/09/12 23:51:11ID:Uwc56kdh
>>12
スリープ間隔を20ミリ秒以上にする
0015名前は開発中のものです。04/09/14 00:36:09ID:OuV1fMqk
>>12
OSは?
00161204/09/14 18:19:59ID:o257G0XK
レスありがとうございます
>>14
実際のスリープ時間が20ミリ秒だったのか25ミリ秒だったのか取得できません…
また、演算や描画に何ミリ秒かかったのかの計測もできてません。

>>13
手持ちのOSはWindows98SEとXPです。
知り合いもWindowsしか持っていません。サイトの来訪者もWindows系がほとんどです。
Javaアプレットで作成する以上MacやUNIX系でも検証しておきたいとは思っています。

一時期こんな方法をとっていました。
while(終了条件)
{
  count = 0;
  while(1秒間)
  {
    処理();// 常にほぼ一定処理時間となるよう期待してダミー処理を含めてある
    Thread.sleep(ウェイト値)
    count++;
  }
  if(count<目標FPS値)ウェイト値--;
  if(count>目標FPS値+2)ウェイト値++;
}
0017名前は開発中のものです。04/09/14 20:43:22ID:OuV1fMqk
Javaでの時間管理の話はいろいろでてるが
TimerTaskとObject.waitが最有力
0018名前は開発中のものです。04/09/14 21:18:11ID:OnFUzIY5
>>17
サンプルキボンヌ
00191204/09/14 21:46:30ID:ckBU9Z+e
>>17
JAVAでゲーム作成
http://pc5.2ch.net/test/read.cgi/gamedev/1074347252/l50
の49レス群で検討されている方法でしょうか(実は私のレスですがw)。
他の話もご存知のようなので、是非お聞きしたいです。

>>18
速度調整に的を絞ったサンプルをいくつか書いてみます。
コーディング速度は遅いですが日付が変わるまでには何とか。
00201704/09/14 23:18:31ID:OuV1fMqk
まぁあのスレでTimerTask+waitを提唱したの俺だがな
Linux等Win以外での動作安定度もこの方法が一番よかったのが決定だかな
ポーリングはJavaの仕組みを考えれば効率悪いのはあきらかだしね

hotspotはプログラムが動いている間にバックグラウンドでコンパイルが進んでいるわけだし
コレが阻害されるというのは結果としてよくない

-XX:+PrintCompilationとかつけて実行してみなされ
0021名前は開発中のものです。04/09/14 23:57:14ID:ckBU9Z+e
サンプルを用意しました。
ものすごく短くて単調なので期待しないでください。
http://gamdev.org/up/img/1234.zip

私は「フラっとサイトを訪れた一般ユーザが何の抵抗もなくサンプルを閲覧できる可能性が高い」ことを
最優先事項にアプレットを作っているので、まじめにゲームを開発するこの板は趣旨が合わないのかも
しれません。
0022名前は開発中のものです。04/09/15 07:53:36ID:fzloy3Ue
おー、すばらしいです!
帰ってきてから見せてもらいます。
サンクス!
0023名前は開発中のものです。04/09/18 20:12:15ID:j8Y6GvgW
先生!
わざわざ圧縮しないでください!
002412=2104/09/21 07:25:09ID:RcSzxkaT
こんな方法を取っていた時もありました
  スレッド1 while(終了条件){処理();wait();}
  スレッド2 while(終了条件){wait(33);notify();}

一部の環境ではうまくいきましたが、別の環境ではnotify()実行直後に処理()が開始しされてしまい、
それが終わってからwait(33)で待ちが始まるため全く調整の意味がありませんでした。
でも良く考えたら、
  スレッド1 while(終了条件){処理();wait();wait(1);}
  スレッド2 while(終了条件){wait(33);notify();}
とすればスレッド2だけがbusy扱いになって先にwait(33)が実行されるのでは?

朝の寝ぼけた頭で考えてるので、落ち着いてからまたサンプルを作ってみます。
0025ヤンス04/09/23 21:20:06ID:FBDpqX5t
あああ、自機の方向に弾を撃たせる処理で躓いた・・・
右向いて撃った後、左を向くと弾まで一緒に左を向きやがる・・・
0026名前は開発中のものです。04/09/23 21:20:58ID:aZqAfyms
ヤムチャかよ!
0027名前は開発中のものです。04/09/23 21:31:25ID:teKJ9g46
面白いからそれでいいじゃん。
0028名前は開発中のものです。04/09/24 10:47:48ID:rxnCqiG6
斬新なアイデアだ
0029名前は開発中のものです。04/09/25 02:11:22ID:m5HAIfiz
え?Thread.sleep(16)で出来てなかったの?
これは出来てないの?
00301204/10/02 12:36:34ID:jCcM5OdI
速度調整に関する検証結果です。

WindowsXP上のVMでwaitメソッドを実行した場合の精度は15msのようです。
確実に指定した期間以上スレッドを停止させるため、端数は繰り上げになります。
つまり、30FPSを実現しようとしてwait(33)を実行すると、実際にはwait(45)を
実行したのと同じになり、期待した速度調整がまったくできなくなります。

Windowsネイティブアプリケーションの場合、APIのtimeBeginPeriodを呼び出す
ことでタイムスライシング全体の精度を上げるようになっているようです。
実際に別タスクでtimeBeginPeriodを呼び出すアプリケーションを実行している間は、
JavaVMのwaitメソッドの精度も向上しています。終了させた途端に精度は落ちます。
この現象は、SunのVMでもIEに付属のMicrosoftVMでも再現するようです。

今のところjavaのプログラムから明示的にwaitの精度を上げる方法がみつかりません。
とりあえず、
  スレッド1 while(終了条件){処理();wait();}
  スレッド2 while(終了条件){notify();wait(30);}
としておくのがWin95系でもNT系でも一番安定するようですが、他のOSでどんな挙動を
するかはまったく調査していませんし、好ましい記述とはかけ離れています。
00311204/10/02 12:37:54ID:jCcM5OdI
上記書き込みで使用したWindowsネイティブアプリケーションのリスト
※VC6.0のコンソールアプリケーションで作成し、winmm.lib等をリンクする
#include <windows.h>
#include <mmsystem.h>
#include <conio.h>
int main( int argc , char *argv[])
{
  timeBeginPeriod(1);
  getch();
  timeEndPeriod(1);
  return 0;
}
0032名前は開発中のものです。05/01/26 12:47:35ID:F1s8Zwef
e
0033名前は開発中のものです。05/01/26 13:11:34ID:iPs053oe
Javaの時間管理は最善はTimerTaskとの組み合わせな
0034名前は開発中のものです。05/01/26 18:51:37ID:DaQEkIt1
・ガベージコレクションが動作するとフレーム数が変わってしまう
・ガベージコレクションが動作するタイミングを制御できない

これがゲームにおける時間管理のネックになっとるわけだが、
Sunはガベコレの禁止と強制のAPIは作ってくれないのだろうか。
0035名前は開発中のものです。05/01/26 20:43:03ID:iPs053oe
GCがネックになるゲームのほうが少ないと思うが・・・
もしねっくになってるならメモリ管理やばいかもね

メモリの使用量を把握してnew領域でのGCだけに専念させるだけ
0036名前は開発中のものです。05/01/27 00:21:06ID:dod+XOt2
>GCがネックになるゲームのほうが少ないと思うが・・・

( ゚д゚) ポカーン
0037名前は開発中のものです。05/01/27 00:42:29ID:ZTZ4mfiF
いまどきJavaでGCがネックになるプログラムかけるやつのほうがおかしい
Windowsでたまに垂直同期取りこぼすとかその程度と同じ話だし
完璧もとめるならRTOSいけ
0038名前は開発中のものです。05/01/27 01:13:44ID:3sf5TT/z
GCうんぬん言ってる香具師は最近のJavaVMに実装されているGCについて調べて見れ。
まずはそれからだ。
0039名前は開発中のものです。05/01/27 01:50:45ID:Zc+qNABH
GCがそれほど致命的だとは思わんが、それよりもVM自体の実装が(ry
0040名前は開発中のものです。05/01/27 02:12:53ID:3sf5TT/z
まーまー、CとJava両方で自力でMD5を求めるコードでも書いて実行してみよう。
0041名前は開発中のものです。05/01/27 21:57:36ID:fopdIjFa
Javaの欠点はMSがVMを最初から入れないこと
0042名前は開発中のものです。05/01/28 16:20:14ID:qY41Ezue
それはJavaでなくてMSの欠点だ
0043名前は開発中のものです。2005/12/15(木) 21:44:28ID:0EyZOrrF
アップスキャンコンバータ
0044名前は開発中のものです。2006/01/08(日) 10:07:24ID:xb+qmFYY
保守
0045名前は開発中のものです。2006/01/08(日) 10:31:34ID:Q5IJU6st
何かネタをくれ〜
0046名前は開発中のものです。2006/01/08(日) 14:46:19ID:3CJHpBe+
2Dアクションといえばパックマンかマリオだろ
0047名前は開発中のものです。2006/03/15(水) 08:46:55ID:916ZRAwJ
 
0048名前は開発中のものです。2006/04/15(土) 01:26:13ID:sf5nUDiw
誰か夢をくれ〜〜
0049名前は開発中のものです。2006/04/15(土) 22:26:15ID:lpccgP2z
>>48
      ,,..,,...,,
    〃´, 〜〜ヽ
    | | iイノリ从)〉
    ゝ|リ|!.゚ ヮ゚ノi
    Ci}~レπv{~つ[ 夢 ]
     ノ!( ,i  , )
      ~し'ノ~
0050名前は開発中のものです。2006/09/09(土) 19:16:23ID:Etye9TEO
age
0051名前は開発中のものです。2006/09/15(金) 18:02:34ID:hLFPrz9k
>>48
あの……落としものですよ?
         .∧__,,∧
        (´・ω・`)
         (つ夢と)
         `u―u´
  あなたのすぐ後ろに落ちていましたよ?
たとえあなたの夢が叶わなかったとしても…
         .∧__,,∧
        (´・ω・`)
         (つ夢と)
         `u―u´
叶えようとしたあなたの心を捨てないで下さいね…
0052名前は開発中のものです。2006/11/24(金) 01:07:03ID:HeoETDlJ
俺も頑張るよ!
0053名前は開発中のものです。2006/11/26(日) 15:41:54ID:1oJzDjvL
誰か金をくれ〜〜
0054名前は開発中のものです。2006/11/26(日) 19:26:37ID:8IgW2e6l
Javaの開発は金かかんなくて助かるわ〜
0055名前は開発中のものです。2006/12/01(金) 11:09:36ID:LC+/aYM5
私もファミコンのゲームにありそうな2Dアクション物を作ろうと思って、Java素人なのですが作ってみました。
未だにアプレットの作り方すらよーわからんです。(^^ゞ
ttp://www.perfect-logic.net/SampleAction/
0056名前は開発中のものです。2006/12/01(金) 18:01:06ID:y3AgeiUV
せっかくだから↓で告知して評価してもらってきたら?こんなマイナーなスレじゃなくて

■自主製作ゲーム:開発状況報告スレVer0.7■
http://pc8.2ch.net/test/read.cgi/gamedev/1153179462/
0057名前は開発中のものです。2006/12/01(金) 18:23:44ID:LC+/aYM5
>>56
ありがとうございます〜。
スレッドを一通り読んでみたら、告知してみますね♪
0058名前は開発中のものです。2007/02/27(火) 00:27:51ID:aBqJ/Obc
ゲーム製作でJavaってあまり聞かないけど
どこがゲーム製作に向いてないのでしょう
0059名前は開発中のものです。2007/02/27(火) 02:13:15ID:vI3+be/W
別に向いてないわけではない
海外では普通に3Dもバリバリ使われてるし
日本でのJava使い=業務用というイメージかね
そのうちでてくるでしょ

去年JOGL1.0になったばかりだし
0060名前は開発中のものです。2007/02/27(火) 08:32:11ID:Qf1ALB7E
処理速度的にまだ弱い
あとはゲーム作成のノウハウがまだ整っていないところかな

まあ速度はハードやAPIが速くなってきてるし
時間の問題かも

なんでもタダで環境揃うし俺みたいな貧乏人にはいい環境なんですがね
JAVAは
0061名前は開発中のものです。2007/02/27(火) 10:52:16ID:no4sgWaC
http://woomy.dip.jp/hiyoriyama/index.html

エミュレーター?
0062名前は開発中のものです。2007/02/27(火) 11:33:50ID:B4ufeums
おおむねC言語の9割程度の速度が出ている状況で
2Dアクションゲームで処理速度が足りないなんてあまりなさそうだが
0063名前は開発中のものです。2007/02/27(火) 13:58:54ID:eZOuwfTZ
>>58
動作にランタイムが必要な点で嫌ってる
0064名前は開発中のものです。2007/03/03(土) 08:01:40ID:94HMLa1l
winのネイティブゲーの方がよっぽどランタイムに頼ってるこの矛盾・・・問題は初めから入ってるかどうかだな。

速度も描画作法無視した描画やらない限り十分過ぎる。
javaが遅いとか今時言ってる連中は頭が1.3の暗黒時代で止まってる。

3Dの方ならそもそも高級すぎるんでゲーム向きじゃない。JOGLも1.0出したからこれから。

0065名前は開発中のものです。2007/03/03(土) 22:20:31ID:4ndYI6Y/
java web start が普及してほしい。
というか自分のサイトではjava web start使うようにするわ。
0066名前は開発中のものです。2007/03/08(木) 22:45:43ID:v+aMbBg1
>>63
まぁ、それも後数年だよ。

そのうちパソコンはみんなJavaベースのOSで動いてJavaアプリを動かすための環境になる。
WindowsやらMacといった旧型OSの方が、JavaベースOS上のランタイム(エミュレータ)で動くようになるだろうね。
0067名前は開発中のものです。2007/03/09(金) 03:37:19ID:l4bht04N
組み込みの世界ならそれもありかも
0068名前は開発中のものです。2007/03/09(金) 14:46:34ID:UpVLWozu
仮にそのJavaベースのOS上で動くWinエミュやMacエミュが完璧だとして、
そのエミュ上にさらにJavaランタイムが必要になりそうな
0069名前は開発中のものです。2007/03/09(金) 15:52:55ID:uJO/ivat
長時間起動したままの場合GCがメモリの断片化を考えると有利だよな
実際ルータとかレコーダとかそういうのでも起こってるし

組み込みのプログラムの規模の肥大化にあわせてアプリ側もヒープの動的確保使わないとやっていられなくなってるし
0070名前は開発中のものです。2007/03/10(土) 12:22:18ID:xgekqMww
んでそういう組み込まれた機器がPCなんて触った事ありませんって連中の所にあってUIがグラフィックスバリバリとかね。
Flashのメニューみたいな。携帯化するよw

エージェントの様なシステムと組み合わせる時にJavaOS使えるかもね。

カーナビにタチコマ、そこからネットワーク介して思考戦車に移動、電脳に移動とか下にあるモン意識せず共通に仮想化出来て。

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