明かり(Light)はMinecraftにおいて可視性、Mobのスポーン(Spawn)、木(Tree)の成長、花(Flowers)やキノコ(Mushrooms)の定着に影響を与える要素である。明かりは日光、松明(Torch)、火(Fire)、溶岩(Lava)、使用中のかまど(Furnace)や他の物体によって供給される。
歴史
Minecraftでは、ブロックを照らすために多種多様な手法を用いてきた。クラシック版では、単純にブロックが空に対して露出しているかどうかのチェックだけを行っていた。Indev版ではより複雑になり、最短距離にある日光や光源となるブロックからの距離が考慮されている。アルファ版ではIndev版を改良し、日光とブロックからの明かりを別々に計算し、異なった明るさのレベルが使用されるものとなっている。初期のベータ版アップデートでは、スムースライティングのオプションを加えることでアルファ版のものを改良している。後期のベータ版アップデートでは、より細かく効率的になるようにライティングエンジン全体を再び書き直し、明るさの違いによる推移が滑らかになっている。
クラシック版
クラシック版では、“日光”はマップの上端から下にあるブロックを照らしていた。また日光は透明なブロックを透過し、その下のブロックを照らしていた。明かりを受けていないブロックは、どれだけ光源から離れても同レベルの薄暗さであった。
Indev/Infdev
IndevとInfdevでは、最大値に日中の明るさのレベル15、最小値にほぼ暗闇に近いレベル0を持つ、16段階の明るさがある。明かりは等分目盛であり、15で割った明るさの値を表現している。例として、明るさのレベル15は100%(15⁄15)の明るさを表現し、レベル13は83.67%(13⁄15)の明るさを表現している。
光源となるブロックにはそれぞれに固有の明るさのレベルを持ち、光源から1ブロック離れるごとに明るさのレベルが1ずつ減少する。隣接するブロックがより強い明るさのレベルを持つ場合、レベルの減少は取り消される。このプロセスは、ブロックの明るさのレベルが変化するたびに繰り返される。
日中、日光の明るさのレベルは最大の15である。夕暮れには、夜間の月光による明るさである最小値のレベル4に達するまで、明るさのレベルが徐々に減少する。日光はマップの上端から発せられるが、その“光源”からの距離で明るさは減少しない。日光に照らされているブロックは、どの高さや深さでも明るさは同じである。
AlphaからBeta 1.2_02まで
アルファ版からBeta 1.3になるまでの明かりの挙動は、目盛の違いや線形でないことを除きIndevやInfdevと同じである。
日光は最大値の明るさであるレベル15をもたらす。レベルが1つ下がるごとに、1つ上のレベルの80%の明るさとなる。例えば、レベル14なら日光の80%の明るさとなり、レベル13は日光の64%の明るさとなる。これは明るさのレベルが0であっても、最大値の3.5%(=0.8¹⁵·100%)の明るさであることを意味する。
アルファ版での日光は、それ自体の明るさが配列されていて、夜明けや夕暮れがより滑らかになるように裏で最適化される。空からの光量は、ブロックの配置や削除以外に再計算の必要が全くないよう、ブロックの光量と一緒に前もって計算され保存される。夕暮れ、夜、夜明けの間、時間帯の違いによる効果を設定するため、"暗闇"のレベルが空から減らされる。
ネザー(The Nether)において、明かりの各レベルにおける減少の割合は、通常の20%ではなく10%である。これはネザーでは完全な暗闇にならないことを意味する。最小の明るさレベルにおいても20.59%となり、通常世界の明るさのレベル8に相当する薄暗い状態となっている。
Beta 1.3からBeta 1.7.3まで
Beta 1.3からBeta 1.7.3までの明かりの挙動はアルファ版と同様であったが、スムースライティングを適用することで著しく最適化された。
Beta 1.8から現在
Beta 1.8において、新しいライティングエンジンが実装された。この新しいエンジン変更点、追加点は以下の通り:
- ある場所での明かりの色は、ブロックを照らす光源のタイプに左右される。月光はほのかに青く、松明と溶岩はやや赤みがかっていて、完全な暗闇と日光は以前と同じである。
- 明るさの変更が即座に行われ、時間帯により段階的に変わる明るさや降雨状態の明るさのレベルをチャンクの明るさを1つずつ個別に更新することなく、滑らかに変更することができる。
- この新しい明るさの変更方法を使うことにより、日光でない明かりがわずかに明滅する。これは見た目だけなので、ゲームパフォーマンスに全く影響を及ぼさない。
- 日の入りは従来より強烈で現実的になり、プレイヤーが背を向けると薄暗く見えるようになった。
- 最深部では黒い霧が立ち込める。ベッドロック(Bedrock)の存在する深さにおいて、松明は11マス離れると視認することができない。この効果は太陽が昇っているかどうかにかかわらず、開けた空が近ければ抑制される。(言い換えると、プレイヤーの立っている場所が日光に照らされるのであれば抑制される。)
- 奈落にいるとき、ライティングの作用はクラシック版に似たものになる。光源からの距離にかかわらず、奈落内のオブジェクトには一定の明るさが奈落への開口部から直接下へ供給されて残る。スペースの特定の"列"の明るさは、ベッドロック層の底の明るさレベル0に基づいている。これは全てのエンティティや粒子にも適用される。
- 加えて、日中であるかどうかにかかわらず、奈落の縦穴の下で直射日光を受けると奈落の霧が取り除かれる。
スムースライティング
(ブロックの表面に当たる明かりを補完するアンビエントオクルージョンを含んだ)スムースライティングは、MrMessiahの助力を得てBeta 1.3で追加されたライティングエンジンである。[1]このライティングエンジンはデフォルトで有効になっており、オプション(Options)のグラフィック設定で無効化できる。
エンジンには、混合光による半現実的な影と光源からの光の広がりが加えられた。この追加により内角が暗くなり、狭い場所では結果としてより暗くなった。Beta 1.3以前は、MrMessiah製作のBetterLightというModでゲームを修正することにより、この機能を使用することができた。[2]
既知のバグ
- スムースライティングを有効にしたとき、テクスチャの無い透明な氷(Ice)やポータル(Portal)がゲーム内に生成される。
- スムースライティングが有効のとき、液体が止まっていても流れていても影が滑らかにならない。
- スムースライティングを無効にすると、ときどき階段が黒くなる。[このバグはBeta 1.9 Pre-Release 5現在修正されている。]
- スムースライティングは絵画(Paintings)には適用されない。
- ガラスを地表に直接設置した場合、ガラスは影を落とす。
- スムースライティングはプレイヤーやブロックからブロックへ移動するアイテムには適用されない。
- 稀な事例として、明かりが発光するオブジェクトの全くない場所で描画される。これはおそらく、古いMinecraftのバージョンのワールドを新しいバージョンで読み込んだ時に発生する。
ギャラリー
- Settingsscreen.png
グラフィック設定画面
- Outdoor on.png
外・スムースライティング 有効
明かりの効果
- スライム(Slime)、ゾンビピッグマン(Zombie Pigman)、ガスト(Ghast)以外の敵のMobは、明るさのレベルが7以下でスポーンする。
- Alpha 1.2.0で行われたハロウィーンアップデートで、低い場所では明るさのレベルが条件より高くてもスポーンするようになった。16 - (高さ ÷ 8)の公式を使い算出される。高さが8以下の場所では日光が差し込んでいようとMobがスポーンする。NotchがAlpha 1.2.1でMobのスポーン方法を元に戻したとき、"どうするか非常に悩んだ。この件を将来どうするかについては案がある。"と発言した。
- ブレイズ(Blaze)のスポーンに必要な明るさのレベルは12以下である。
- 花や苗木(Saplings)を植えたとき、明るさのレベルが8以上で地面に定着する。植えたものと空との間にブロックがない場合は、明るさのレベルに関係なく地面に定着する。
- キノコは明るさのレベルが12以下でのみ生息できる。
- 雪(Snow)や氷は明るさのレベルが12以上で溶け、10より上だと生成されない。日光による明るさは無視する。
- 木は苗木の上のブロックの明るさのレベルが9以上の場合に成長する。
- 作物は明るさのレベルが 9以上でのみ成長する。
- 草ブロック(Grass Block)は明るさのレベルが4以上でのみ成長する。
- 環境音(Ambience)は最低でも3x3の空間があり、明るさのレベルが8以下であれば聞こえる。
光と透明ブロック
遠方から届く光を遮る固体ブロックとは違い、透明ブロックは光を遮らない。この透明ブロックにはガラス(Glass)、水(Water)、氷、ポータルの可動部分等がある。透明ブロックの全リストは不透明度(Opacity)を参照。
透明ブロックの中には、光だけを透過し拡散させるものがある。水と氷は明るさのレベルをブロックごとに2減少させる。葉(Leaves)は日光のみを拡散し、明るさのレベルを通常ブロックごとに1減少させる。
光源となるブロック
以下の数値は、ブロック自体が持つ明るさである。光源から放出した光は各方向に1マス離れるごとに、明るさのレベルが1減少する。ガラスは明るさのレベルを減少させることはないが、水や氷は明るさのレベルを3(光の透過分2と通常のブロックの減少分で+1)減少させる。Minecraftのソースコードにおいて、発光について浮動小数点数で定義されているものを3番目の列に載せる。何の偶然か、これらの浮動小数点数は16で割られたもので、15を掛けると明るさのレベルである整数値が得られる。これは 0/16 や 1/16 (0.0 や 0.0625)が整数値の0に等しいことを意味する。
ブロック | 明るさのレベル | 明るさ | データ値 |
---|---|---|---|
(日光) | 15 | 100% | 1.0F |
火 | 15 | 100% | 1.0F |
ジャック・オ・ランタン | 15 | 100% | 1.0F |
溶岩 | 15 | 100% | 1.0F |
グロウストーン | 15 | 100% | 1.0F |
鍵付チェスト | 15 | 100% | 1.0F |
松明 | 14 | 80% | 0.9375F |
使用中のかまど | 13 | 64% | 0.875F |
(日光、降雨及び降雪時) | 12 | 51.2% | 0.8125F |
ポータルの可動部分 | 11 | 40.96% | 0.75F |
レッドストーン鉱石、採掘時 | 9 | 26.21% | 0.625F |
レッドストーンリピータ、使用時 | 9 | 26.21% | 0.5F |
発光したレッドストーントーチ | 7 | 16.78% | 0.5F |
(月光) | 4 | 8.58% | 0.3125F |
茶色のキノコ | 1 | 4.40% | 0.125F |
ドラゴンの卵 | 1 | 4.40% | 0.125F |
醸造台 | 1 | 4.40% | 0.125F |
- 地形生成の際に明るさが計算されないことで発生するバグがあり、その場所には直射日光が当たらない。そのような場所は通常ではありえない明るさのレベルが1の暗闇になっていて、敵のMobがスポーンする。この状態になったときの応急処置として、その場所の隣に光源となるブロックを設置すると元に戻る。(このバグは1.8になる以前に起こっていた。新しいライティングエンジンに更新されたことでこのバグは修正され、チャンク更新時に明るさのレベルが変更されるようになった。)
- 1.8でのライティングエンジン更新以降、全てのエンティティが黒く見える、明かりのグリッチが発生する。このバグは SinglePlayer Commands という Mod で 'Light' を入力することにより修正することができる。[要出典]
- 1.8において、水により光源が取り除かれても、明るさのレベルが高くなったままになるバグがある。
- 1.8.1では明かりのバグが存在する。日中はすべてが普通であるが、夜になると全ての明かりが月光のように薄暗くなる。このバグには松明や溶岩などが含まれる。
- 既知のバグとして、廃坑やNPCの村で自然に生成される松明やネザーのグロウストーンが常に発光せず、明かりの更新があるまで闇のままになる。
参考
- ↑ http://notch.tumblr.com/post/3446675806/minecraft-beta-1-3
- ↑ http://www.minecraftforum.net/viewtopic.php?f=25&t=55700 - Minecraft Forums - MrMMods (BetterLight|Grass, SimpleMap) 1.8.1