Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(PSドラクエ7はなんで早いんですか?)
閲覧数:339
掲示板(PSドラクエ7はなんで早いんですか?)
名前
匿名
題名 PSドラクエ7はなんで早いんですか?
質問内容

質問を評価する
(0ポイント)
javaとは微妙に関係ないんですが、
オブジェクト言語には多少関係していると思うんで。


どこかの文章でps版ドラクエ7は
戦闘の読み込みが非常に速い、というのを
読んだんですが、これは
一番親のクラスの
フィールド・コンストラクタ・メソッドに
戦闘システムに使う変数などを書いているからとかって
ないですか?


質問を変えますと、たとえば
親の子の子の子の子の子の…クラスで
インスタンス化して使うクラスが
あるとするじゃないですか、
この一番最後の子のクラスって
もしかしたら、すごく
遅いんじゃないんですかね?

たとえばこの最後の子のクラスで
画像を10000枚くらい変数で
描画したり扱っているのと、
一番最初の親のクラスで
画像を10000枚くらい変数で
描画したり扱うのとじゃ、
速度が結構違ったりするなんてことは
ないですかね?

class a0{
public static void main(String args[]){
System.out.println("aiueo");
a1 a = new a1();a.a();←遅い?
}}


class a1{void a(){a2 a = new a2();a.a();}}
class a2{void a(){a3 a = new a3();a.a();}}
class a3{void a(){a4 a = new a4();a.a();}}
class a4{void a(){a5 a = new a5();a.a();}}
class a5{void a(){a6 a = new a6();a.a();}}
class a6{void a(){a7 a = new a7();a.a();}}
class a7{void a(){a8 a = new a8();a.a();}}
class a8{void a(){a9 a = new a9();a.a();}}
class a9{void a(){a10 a = new 10a();a.a();}}
class a10{void a(){a11 a = new 11a();a.a();}}
     省略
class a98{void a(){a99 a = new 99a();a.a();}}
class a99{void a(){a100 a = new 100a();a.a();}}
class a100{void a(){System.out.println("aiueo");}}



こういうことってないですか?
質問日時 2014-01-01 19:48:46
名前
匿名
回答内容

回答を評価する
(0ポイント)
ドラクエのことは知らないが(どんな言語で作ってるの
かすら分からん)。

一般的に言って、クラスのインスタンスは生成自体に時
間が掛かるし、多数を処理込みで順に行うなら時間が掛
かるのも当たり前だ。
数がたいしたことないなら誤差の範囲だが、数万となれ
ばできるだけ生成しないようにしたり、非同期に扱うな
り考えるのは当然だ。
その意味では、10000の処理を直列に行うのではなく、
10000の子クラスが並列(非同期)に動作して、同時処
理的に処理するということも考えられる。

また、とくにゲームにおいては、そもそも「必要になっ
たときにメモリを確保する」という考え方自体がNGだ。
リアルタイム性を要求される場合、無駄に思えてもはじ
めに必要な最大メモリを確保しておく場合も多い。
つまり10000の子クラスの例でいえば、必要な都度生成
するのではなく、最初に10000生成しておいて毎回再利
用する、という意味だ。

ただ、最適解はハードウェアと実現したいシステムによ
って千差万別なのが実情。
ドラクエでもWebアプリでも何でも、高速化のポイント
は「ボトルネックを調べ、それを解消または回避する手
段を実現する」しかない。
「非常に速い」のは他のゲームと比較してだと思うが、
それほど違うのなら小手先の話ではなく、アルゴリズム
そのものである可能性が高い。
要するに、ドラクエがどうして速いのか、なんてのは作
ってる人たちでないと分からない。
回答日時 2014-01-01 22:29:42
名前
匿名
回答内容

回答を評価する
(0ポイント)
そうでしたか…
ドラクエ7が早いのはてっきり
親のコンストラクタに関係している、と
見破ったつもりでしたが、いさみあしでした。
いつかドラクエ7のうわっつらを自分の手で
隅から隅まで再現してコーラでも飲みながら
パソコンでプレイしたいです。
回答日時 2014-01-02 09:41:11
回答内容を入力し、「確認」ボタンをクリックしてください。
ログインしていません。ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 ユーザIDをお持ちでない方は「ID登録」からユーザIDの登録を行ってください。
氏名 匿名
回答内容
 



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道