質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

Q&A

解決済

2回答

4169閲覧

マインクラフトを見て思ったこと

yama_da

総合スコア73

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

1グッド

2クリップ

投稿2017/02/08 13:30

マインクラフトを見て思ったのですが、マインクラフトのような3Dゲームはどのようにしてあの大量の地形データを管理しているのでしょうか?まさか超巨大な3次元配列を作っているとも思いにくいですし、気になって質問しました。宜しくお願いします。

sakura_hana👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

マインクラフトの世界は縦16x横16x高さ256ブロックを1チャンクという単位として扱っています。プレイヤーを中心にある程度の距離のチャンクのみをメモリ上に展開し、あとのチャンクはデータベースに保存されています。マインクラフトを起動したときに、自分を中心にじわじわと世界がロードされて広がっていくのはよく見る光景ですよね?あれは自分のいるチャンクからじわじわ外側のチャンクを読み込んでいっているからです。例えば北へ移動し続けると、新しい北側のチャンクがデータベースから読み込まれ、逆に離れていった南側のチャンクはデータベースへ保存された後にメモリから解放します。
この構造により、マインクラフトは広大なワールドデータがあったとしても、実際にメモリ上に読み込まれているのは自分の周囲のいくつかのチャンクのみなのです。質問者さんのおっしゃられている「超巨大な3次元配列」であることは間違いないのですが、メモリとデータベースをうまく行き来してやりくりしているので、とてつもない大きさの世界を管理できているのです。ちなみに設定の描画距離によってメモリに読み込まれるチャンクの数が変わります。描画距離を縮めると霞がかったように遠くの世界が見えなくなりますが、あれはチャンクの切れ目が見えないようにぼかしているためです。

投稿2017/02/09 00:50

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yama_da

2017/02/09 07:35

回答ありがとうございます。 単位あたりのチャンクが、縦横は16なのに高さは256ブロックも取っているのはなにか理由があるのですか?
masaya_ohashi

2017/02/09 09:06

それはおそらく管理が単純になるからでしょう。高さも16ブロックずつ分割すると、データベースとメモリの行き来の回数が激しくなりますし、チャンクはデータの管理範囲だけでなくMOBや木の成長などの更新処理の管理にも使われているため、わかりやすい単位で分割したのでしょう。ちなみに昔はワールドの高さは128しかなかったため、あまり高い建物を作ることができませんでした。
ozwk

2017/02/09 09:33

日光の計算も楽になりますね
yama_da

2017/02/09 14:09

お二方、どうもありがとうございました!また機会があれば宜しくお願いします。
guest

0

とりあえずワールドのチャンクのファイルフォーマット見つけました

http://minecraft.gamepedia.com/Chunk_format

投稿2017/02/08 14:40

ozwk

総合スコア13512

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2017/02/09 07:57

あんなにいっぱいチャンク読んでメモリ足りるの?って話かと思ってましたが そもそもチャンク単位の管理システムが知りたかったことでしたか...
yama_da

2017/02/09 08:45

ごめんなさい、説明不足でした。 >あんなにいっぱいチャンク読んでメモリ足りるの?って話かと これも気になってはいましたが、1番聞きたかったのは >そもそもチャンク単位の管理システムが こっちの話です。
yama_da

2017/02/09 14:09

ありがとうございました!また機会があれば宜しくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問