スレタイはアプレットとの対比的な意味と考えてください。
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
探検
Javaで作るスタンドアローンゲーム
■ このスレッドは過去ログ倉庫に格納されています
1名前は開発中のものです。
2012/12/27(木) 16:04:18.62ID:rl+qGRHn458名前は開発中のものです。
2015/04/01(水) 12:44:19.32ID: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を使ってどのように実装したら、これらの管理が容易になるだろうか?です。
ここにコード全部乗せるのは文字制限の関係で無理みたいっだし。
質問内容は
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を使ってどのように実装したら、これらの管理が容易になるだろうか?です。
ここにコード全部乗せるのは文字制限の関係で無理みたいっだし。
459名前は開発中のものです。
2015/04/01(水) 17:30:19.81ID:lJ9uSJVO グローバル変数ばんざい
460名前は開発中のものです。
2015/04/02(木) 00:51:21.72ID:Kd4ACYgu ゲームの進行を管理するクラスが必要だなー。
データをセーブロードするクラスも必要だな。
データそのもののクラスがあったほうがいいな。
プレイヤーというクラスもあるな。
アイテムというクラスを作ったら、
プレイヤーにアイテムのリストを持たせる?
いやアイテムボックスというクラスを作って、
それをプレイヤーに持たせるか。
満タン判別とか簡単に引っ張って来られたら便利だなー…
あ、データクラスに含ませてセーブしたほうがいいな。
ロードしたらアイテムボックスにリストをセットしたいな。
…って感じで、まずは想像を膨らませながら
具体的に設計したら後々楽だよ。
データをセーブロードするクラスも必要だな。
データそのもののクラスがあったほうがいいな。
プレイヤーというクラスもあるな。
アイテムというクラスを作ったら、
プレイヤーにアイテムのリストを持たせる?
いやアイテムボックスというクラスを作って、
それをプレイヤーに持たせるか。
満タン判別とか簡単に引っ張って来られたら便利だなー…
あ、データクラスに含ませてセーブしたほうがいいな。
ロードしたらアイテムボックスにリストをセットしたいな。
…って感じで、まずは想像を膨らませながら
具体的に設計したら後々楽だよ。
461名前は開発中のものです。
2015/04/03(金) 01:10:13.49ID:InpPEbYz ゲームの進行を管理するクラスが必要だなー。
データをセーブロードするクラスも必要だな。
データそのもののクラスがあったほうがいいな
から下は既存のコードを流用しようと思っていますので再設計などは他聞問題ないと思います。
http://www012.upp.so-net.ne.jp/flab/javatuto/javatuto8.html なものを見つけたので今勉強中。
もっと何かいいのがあれば教えてもらえればうれしいです。
stack exchangeやgamedev漁るのちと疲れてきた。
データをセーブロードするクラスも必要だな。
データそのもののクラスがあったほうがいいな
から下は既存のコードを流用しようと思っていますので再設計などは他聞問題ないと思います。
http://www012.upp.so-net.ne.jp/flab/javatuto/javatuto8.html なものを見つけたので今勉強中。
もっと何かいいのがあれば教えてもらえればうれしいです。
stack exchangeやgamedev漁るのちと疲れてきた。
462名前は開発中のものです。
2015/04/03(金) 04:56:34.09ID:lkqZWAUT シーン単位の設計とかそういう設計指針立てるのが苦手ってことなら、
ゲームエンジン使えば?って話になっちゃうかも
あと遷移図とか画面構成イメージとか描いたりしてる?
コード書く→リファクタリングばっかりでもいいけど、
適当に手書きで整理してみるだけでも違うもんだよ
ゲームエンジン使えば?って話になっちゃうかも
あと遷移図とか画面構成イメージとか描いたりしてる?
コード書く→リファクタリングばっかりでもいいけど、
適当に手書きで整理してみるだけでも違うもんだよ
463名前は開発中のものです。
2015/04/03(金) 17:48:28.80ID:chj1QkVN シーンの遷移が分からないってはなしだろ?
シーンのインスタンスをstaticとかシングルトンにすれば
そのインスタンスがもってるプロパティもイモヅル式にどこからでもアクセスできる
https://pastebin.mozilla.org/8828264
シーンのインスタンスをstaticとかシングルトンにすれば
そのインスタンスがもってるプロパティもイモヅル式にどこからでもアクセスできる
https://pastebin.mozilla.org/8828264
464名前は開発中のものです。
2015/04/05(日) 16:43:37.56ID:FoWp8ODA 期限が短すぎたので上げなおし
https://pastebin.mozilla.org/8828750
https://pastebin.mozilla.org/8828750
465名前は開発中のものです。
2015/04/06(月) 18:56:08.99ID:/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にあるsetPlayer(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
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にあるsetPlayer(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
466名前は開発中のものです。
2015/04/06(月) 22:35:38.63ID:8cFcSghx 普通にGameStateをPlayStateにダウンキャストすればよいだけだろ
ダウンキャストしたくなければ、そもそもリストに詰めないことだ
ダウンキャストしたくなければ、そもそもリストに詰めないことだ
467名前は開発中のものです。
2015/04/06(月) 23:40:08.53ID:/THq8Fdv 確かにダウンキャストすれば出来そうですが、それをしようとしたら各要所で条件分岐させなきゃならないし、
前呼んだ”javaで学ぶリファクタリング”の本でDCは余り良い手ではないと書いてあったので。
前呼んだ”javaで学ぶリファクタリング”の本でDCは余り良い手ではないと書いてあったので。
468名前は開発中のものです。
2015/04/07(火) 00:45:35.73ID:iKbQeSub アホガキまるだしでうんざりする
469名前は開発中のものです。
2015/04/07(火) 02:22:24.35ID:HEtwadqH そういえば春だね
470名前は開発中のものです。
2015/08/03(月) 09:32:43.57ID:kSwbA9Fz Thread.sleep() を呼び出すと15ミリ秒も処理が帰ってこないという話があり
http://dobon.net/vb/bbs/log3-23/14028.html
最高精度の 1 ミリ秒にできたとしても
UI スレッド、描画スレッド、AIスレッドなどを同期させながら 60fps 出したいときに
スレッド切り替えるたびに 1 ミリ秒かかっていたのでは致命的だ
この辺みんなどうやってクリアしていますか?
http://dobon.net/vb/bbs/log3-23/14028.html
最高精度の 1 ミリ秒にできたとしても
UI スレッド、描画スレッド、AIスレッドなどを同期させながら 60fps 出したいときに
スレッド切り替えるたびに 1 ミリ秒かかっていたのでは致命的だ
この辺みんなどうやってクリアしていますか?
471名前は開発中のものです。
2015/08/03(月) 11:20:15.35ID:kSwbA9Fz src.zip, Thread.java, sleep(millis, nanos):
if (nanos >= 500000 || (nanos != 0 && millis == 0)) {
millis++;
}
sleep(millis);
本当に丸められていた・・・
if (nanos >= 500000 || (nanos != 0 && millis == 0)) {
millis++;
}
sleep(millis);
本当に丸められていた・・・
472名前は開発中のものです。
2015/08/04(火) 17:44:09.45ID:YB5Xtaqw java.util.concurrent.lock.LockSupport.parkNanos(1L);
も15ミリ秒待たされた。
新しめの win 8.1 マシンでさえこんな状況
も15ミリ秒待たされた。
新しめの win 8.1 マシンでさえこんな状況
473名前は開発中のものです。
2015/08/05(水) 13:18:01.99ID: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
同期させるなら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
474名前は開発中のものです。
2015/08/05(水) 17:25:15.81ID:5iKsQnJc >>473
アクティブレンダリングの待ちが念頭にあったから sleep と考えていたけど
確かに同期させるという用途なら wait / notify とかが良いかも。
そちらでは1ミリ秒の精度あるのですね。
環境によってばらつきがあるのかな?
parkNanos(1L) はさすがに1ナノ秒の精度は期待できないにしても
マイクロ秒単位の精度はあってほしかったですが
アクティブレンダリングの待ちが念頭にあったから sleep と考えていたけど
確かに同期させるという用途なら wait / notify とかが良いかも。
そちらでは1ミリ秒の精度あるのですね。
環境によってばらつきがあるのかな?
parkNanos(1L) はさすがに1ナノ秒の精度は期待できないにしても
マイクロ秒単位の精度はあってほしかったですが
475名前は開発中のものです。
2015/08/22(土) 23:33:39.53ID:+Rszj5Wc >>470
リンク先の内容って2005年の.NET C#の話でしょ?
なんでJava板で?・・・
System.nanoTime()使えばナノ秒単位の精度が出るでしょ。
http://aidiary.hatenablog.com/entry/20070429/1251463673
リンク先の内容って2005年の.NET C#の話でしょ?
なんでJava板で?・・・
System.nanoTime()使えばナノ秒単位の精度が出るでしょ。
http://aidiary.hatenablog.com/entry/20070429/1251463673
476名前は開発中のものです。
2015/08/23(日) 19:31:06.35ID:7bDmMhl8 nanoTime() は確かに 100 ナノ秒単位くらいの精度がでるかもしれないが
それは時間を「測る」ほうの精度で、sleep で「待つ」ほうの精度はもっと悪い。
リンク先を貼ったのは探すのをさぼってしまったからだけど、
Java で、最近の Windows でも状況は似たり寄ったりなのは >>471,472 の通り
ぬるぬる動くゲームを作ろうとしていて、Thread.sleep() を呼んでいる場合は、
けっこうオーバーヘッドになっているかもしれません
それは時間を「測る」ほうの精度で、sleep で「待つ」ほうの精度はもっと悪い。
リンク先を貼ったのは探すのをさぼってしまったからだけど、
Java で、最近の Windows でも状況は似たり寄ったりなのは >>471,472 の通り
ぬるぬる動くゲームを作ろうとしていて、Thread.sleep() を呼んでいる場合は、
けっこうオーバーヘッドになっているかもしれません
477名前は開発中のものです。
2015/08/24(月) 14:14:06.17ID:qQPD7DVJ そりゃ寝てる間に別のタスク呼んでるんだから
478名前は開発中のものです。
2015/08/24(月) 18:32:26.01ID:Gp2n+Lvh sleep(millis, nanos) とあるから、ナノ秒単位で寝かせられる
と思うじゃん、
と思うじゃん、
479名前は開発中のものです。
2016/08/05(金) 20:21:48.53ID:Rrym3J/u JavaFXってグラボのアクセラレーションかかるのかな?
って誰もいないかw
PCで携帯スマホのOpenGLくらいのパフォーマンスは出そうなんだが…
って誰もいないかw
PCで携帯スマホのOpenGLくらいのパフォーマンスは出そうなんだが…
480名前は開発中のものです。
2017/02/03(金) 02:22:29.13ID:0I8xjrI1 age
481名前は開発中のものです。
2017/03/22(水) 20:19:40.48ID:2x3cQ72L482名前は開発中のものです。
2017/06/04(日) 16:37:34.00ID:uG346vtn 新板age
483名前は開発中のものです。
2017/12/31(日) 19:47:58.74ID:/rN76OKL 簡単にお金が稼げる方法興味ある人だけ見てください。
グーグル検索⇒『来島のモノノリウエ』
SCVG4A16FM
グーグル検索⇒『来島のモノノリウエ』
SCVG4A16FM
484名前は開発中のものです。
2018/02/17(土) 07:34:01.81ID:G/oBdhuK ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「クラウンに乗りたかった」東京・足立の車暴走 男性、容疑を否認 [七波羅探題★]
- 【インバウンド】中国政府、日本行き航空便の減便指示、2026年3月末まで「当面の措置」 [1ゲットロボ★]
- 【高市関税キター!!】個人輸入・少額輸入品への税優遇見直しへ…中国の通販サイトなどからの大量輸入を懸念 [1ゲットロボ★]
- 「車を処分してください」生活保護の窓口 取材で見えた利用者の実情 [少考さん★]
- 「クラウンに乗りたかった」東京・足立の車暴走 男性、容疑を否認★2 [七波羅探題★]
- 相次ぐ中国公演中止に、シンガーソングライターらが続々高市首相に怒り表明「隣国の仲間たちに対して申し訳ない」★3 [muffin★]
- 【悲報】統一教会「安倍さんは我々の味方」 [519511584]
- 【実況】博衣こよりのえちえちFantasy map simulatorミニキャラ死闘編🧪★4
- 「戦争をしない平和な国」「ご飯をお腹いっぱい食べられる国」👈これがジャップにおいて失われたという事実 [369521721]
- 落語家「日本人が中国と一緒に高市を叩くのはおかしい」 [805596214]
- VIPから🏡スレ潰すために来ました
- 【実況】博衣こよりのえちえちFantasy map simulatorミニキャラ死闘編🧪★5
