The Configuration File

設定ファイルを使うと起動時に便利です。
自分でテキストファイルを作って、下のようにOverviewer起動時の引数で指定します。
overviewer.py --config=path/to/my_configfile
設定ファイルはPythonの構文規則に乗っています。
Pythonを知らなくても心配入りません、とてもシンプルです。
以下のサンプルに従うだけです。

シンプルな例

worlds["My world"] = "/home/username/server/world"
 
renders["normalrender"] = {
    "world": "My world",
    "title": "Normal Render of My World",
}
 
outputdir = "/home/username/mcmap"
 

この記述では、一つのワールドから一つレンダリングします。
2つのセクションが見てわかると思います。
※予備知識:下に出てくる"dictionary"(辞書、ディクショナリ)とはPythonで使われるオブジェクトのこと。
詳しく知りたい人はググるべし。
https://www.google.co.jp/search?q=Python+dictionary
文字数少ないので以下"辞書"で

The worlds dictionary
ここではworlds辞書で"My world"にワールドデータのパス(level.datがあるディレクトリ)を指定してます。
"My world"というキーは好きなものに変えても大丈夫です。変数みたいなものですね。
後でrenders辞書のところで使うことになります。
ネザーや複数ワールドがある場合は複数のworlds辞書を記述する必要があります。

The renders dictionary
renders辞書では一つのワールドから一つのディメンジョンをオプションを与えてレンダリングします。
renders辞書を複数記述すると、出来上がったマップを見た時にドロップボックスで選ぶ事ができるようになります。
複数のワールドをレンダリングしたり、同じワールドを違うオプションを付けてレンダリングしたりできます。

ちょっと複雑な例

worlds["survival"] = "/home/username/server/survivalworld"
worlds["creative"] = "/home/username/server/creativeworld"
 
renders["survivalday"] = {
    "world": "survival",
    "title": "Survival Daytime",
    "rendermode": smooth_lighting,
    "dimension": "overworld",
}
 
renders["survivalnight"] = {
    "world": "survival",
    "title": "Survival Nighttime",
    "rendermode": smooth_night,
    "dimension": "overworld",
}
 
renders["survivalnether"] = {
    "world": "survival",
    "title": "Survival Nether",
    "rendermode": nether_smooth_lighting,
    "dimension": "nether",
}
 
renders["creative"] = {
    "world": "creative",
    "title": "Creative",
    "rendermode": smooth_lighting,
    "dimension": "overworld",
}
 
outputdir = "/home/username/mcmap"
texturepath = "/home/username/my_texture_pack.zip"
 
この例では4つのマップをレンダリングします。
サバイバルの通常ワールドの昼夜、同ワールドのネザー、クリエイティブモードワールドの4つです。

それぞれディメンジョンを明示的に設定しています。
もし設定しなければデフォルトで通常ワールド(overworld)が使われます。
例えばネザーをレンダリングする時は必要になります。

また、rendermodeも違ったものを指定しています。
rendermodeとはどのようにレンダリングするかです。
Overviewerは様々な方法でレンダリング出来、沢山のプリセットがあります。
modeを任意で作成することもできます。

最後に、texturepathオプションを使っていますね。
レンダリングに使うテクスチャパックを指定します。
設定ファイル内の最上位で指定していることに注目、こうすることで全てのレンダリングに適用できます。
それぞれのrendersの中で指定することで、個別に指定することもできます。

動的な設定ファイル

動的にパラメータを取得できると便利です。
例えば、定期的に日付フォルダにバックアップを取りたい場合、その都度設定を変えなくても良い書き方があります。
下の例のように、環境変数を使うことで簡単に日付を取得出来ます。
この例はbashスクリプトからOverviewerを呼び出していますが、その他のシェルスクリプトや言語でも可能です。
起動用のbashスクリプト
#!/bin/bash
 
## Add these lines to your bash script
 
# Setting up an environment variable that child processes will inherit.
# In this example, the map's path is not static and depends on the
# previously set $timestamp var.
MYWORLD_DIR=/path/to/map/backup/$timestamp/YourWorld
export MYWORLD_DIR
 
# Running the Overviewer
overviewer.py --config=/path/to/yourConfig.py
 
設定ファイルyourConfig.pyの中身
## A config file example
 
# Importing the os python module
import os
 
# Retrieving the environment variable set up by the bash script
worlds["My world"] = os.environ['MYWORLD_DIR']
 
renders["normalrender"] = {
    "world": "My world",
    "title": "Normal Render of My World",
}
 
outputdir = "/home/username/mcmap"
 

設定ファイルの書式

設定ファイルはPythonのexecfile()で読み込めるような書式であれば、どんな処理を入れても構いません。
実行時に幾つかの(overviewer_core.rendermodesモジュールで定義された)ローカル辞書を与えます。

上のことがよく分からなければ、"key = value"という書式だけ覚えておけば良いです。
2つだけ違う書式のものがあり、"worlds"と"renders"です。

worlds
事前に空(から)の辞書として定義されていて、少なくとも1つ設定しなければなりません。
worldのパス(level.datのあるディレクトリ)を指定し、renders辞書で使用します。
worlds['myworld'] = "/path/to/myworld"
少なくとも一つワールドを指定しなければなりません

renders
事前に空(から)の辞書として定義されていて、少なくとも1つ設定しなければなりません。
Key(下の例の'myrender')はjavascriptでレンダリングするときの識別子、及びタイルファイルを作るフォルダ名になり、設定必須です。
そのため、文字列はスペースや特殊文字無しのアルファベットのみにすべきです。
Valueはレンダリングの設定を決めます。
設定名: 設定値,設定名; 設定値,…
keyとvalueは下のレンダー辞書キーのセクションで。
renders['myrender'] = {
        'world': 'myworld',
        'title': 'Minecraft Server Title',
        }
 
少なくとも一つレンダーを指定しなければなりません

outputdir = "<output directory path>"
レンダリングした画像を出力するディレクトリです
outputdir = "/path/to/output"
必須

processes = num_procs
レンダリング時に動作するCPUコア数を指定する、指定しなければ全部使おうとする
起動時の--processes,-p オプションでも指定可
processes = 2

observer = <observer object>
レンダリングの過程をどのように報告するかを設定します。
デフォルトで、プログレスバーを表示し、Windows以外では標準エラー出力をファイルにリダイレクトします。
大抵の人はデフォルトでOKですが、(Webサービス等のために)独自の報告を出したい人は特定のオブザーバを指定しましょう。

もし手動でオブザーバを指定したければ下のように記述してみましょう
from observer import ProgressBarObserver()
observer = ProgressBarObserver()
 
利用できるオブザーバには以下の3つの種類があります。
LoggingObserver
標準的で古いスタイルの出力で、出力をファイルにリダイレクトした時やWindowsで起動した時のデフォルトです。
ProgressBarObserver
ターミナルで起動時のデフォルトで、テキストベースのプログレスバーや状態を表示します。
JSObserver(outputdir[, minrefresh][, messages])
画面の右下に出力過程を表示します。
  • outputdir="<output_directory_path"
    Overviewerの出力ディレクトリです。outputdirと書いておいて、あとでoutputdir = "<output directory path>"と1行書くのがシンプルです。
    必須
  • minrefresh=<seconds>
    情報をファイルに書き込んだり、ブラウザからリクエストされる最小の間隔
  • messages=dict(totalTiles=<string>,renderCompleted=<string>,renderProgress=<string>)
    表示されるメッセージをカスタムする。3つのメッセージは以下のように定義されてます。
    • totalTiles="Rendering %d tiles"  &dにはレンダリング済みのタイル数が代入されます。
    • renderCompleted="Render completed in %02d:%02d:%02d"  レンダリングにどれだけ時間がかかるか。代入値は順に時間・分・秒
    • renderProgress="Rendered %d of %d tiles (%d%%)"  順にレンダリング済みタイル数、総タイル数、完成割合(単位%)
%dや%02dの書き方を詳しく知りたい人は
公式のドキュメント:String Formatting Operations(英語)
"Python フォーマット"でググるを見てみて下さい
from observer import JSObserver
observer = JSObserver(outputdir, 10)
 

customwebassets = "<path to custom web assets>"
出力ディレクトリにコピーするweb assetsのあるディレクトリを指定できます
指定したディレクトリの全てのファイルでデフォルトファイルを上書きします。
もしindex.htmlをカスタムした場合、下のものは置き換えられます
  • {title}は'Minecraft Overviewer'
  • {time}はレンダリングした日付と時刻に。例'Sun, 12 Aug 2012 15:25:40 BST'
  • {version}はOverviewerのバージョンに。例'0.9.276 (5ff9c50)'

レンダー辞書のキー

レンダー辞書は設定キーに値を入れる辞書です。以下、設定キーを解説していきます。
注
すべてのキーは最上位の階層に記述することで全てのレンダーのデフォルトにすることができます。
例えば下の行を最上位に書くことで、すべてのレンダーで'myworld'を使用します。
world = 'myworld'
また、改めてworldを指定する必要がなくなります。
render['arender'] = {
        'title': 'This render doesn't explicitly declare a world!',
       }

world
どのワールドをレンダリングするかをしていします。
ワールド辞書で指定した文字列を使いましょう。
必須

title
出来上がったマップ右上に表示される名前です。
複数レンダリングする場合はどんなマップなのかわかりやすい名前をつけると良いでしょう。
必須

dimension
ワールドのどのディメンジョンをレンダリングするか指定します。
Minecraftではデフォルトで3つのディメンジョンがあります、Overworld(通常世界)、Nether(ネザー)、End(エンド)。
Bukkit鯖なら少し複雑になるでしょうが、通常はディメンジョンは1つなので、このオプションは無視して構いません。
この値は、次の3つのうちのどれか"overworld","nether","end"、もしくはディメンジョンのデータが入ってるフォルダ名(例"DIM-1")です。
注
もしネザーを選んだ場合はネザーのrendermodeにしなければなりません。そうしないとネザーの天井がレンダリングされます。
デフォルト:"overworld"

rendermode
レンダーモードをたくさんある中から指定します。
値はレンダーモードオブジェクトだったり、文字列だったりします。
例
"rendermode": "normal",
  • "normal"
    ライティング無しの普通のレンダリング。一番速いオプション。
  • "lighting"
    ブロッキーライティング有り。normalよりちょっと遅い。
    ゲーム内のスムーズライティング無しのと同じように見える
  • "smooth_lighting"
    スムーズライティング有り。一番綺麗だけど遅い。
    ゲーム内のスムーズライティング有りのと同じように見える
  • "night"
    夜間をブロッキーライティングでレンダリング。
  • "smooth_night"
    夜間をスムーズライティングでレンダリング。
  • "nether"
    ネザー用のノーマルライティングでレンダリング。ネザー以外のディメンジョンにも適用可能。
    normalと違う点は天井が剥がされて内部が見えるようになります。
注.レンダーモードをnetherにしたからといって、ネザーをレンダリングするわけではありません。
  きちんとdimensionオプションで'nether'と指定しましょう。
  • "nether_lighting"
    ネザー用のブロッキーライティング。
  • "nether_smooth_lighting"
    ネザー用のスムーズライティング。
  • "cave"
    深さごとにブロックを色分けしてレンダリング。
デフォルト:"normal"

northdirection
北をどちらに向けてレンダリングするか。
以下の4つの値があります
  • "upper-left"
  • "upper-right"
  • "lower-left"
  • "lower-right"
順に左上、右上、左下、右下
デフォルト:"upper-left"

rerenderprob
タイル内でブロックの変化がない場合にも再レンダリングされる確率
値は0から1の浮動小数点数でなければならない。
(追記:0から増やすメリットが分からない)
デフォルト:0

imgformat
タイルに使う画像のフォーマット。使えるのは"png","jpg","jpeg"
デフォルト:"png"

imgquality
タイルをJPEGで保存する場合の圧縮率(画質)。0から100の整数。
大きいほど、ノイズが減る・画質が上がるが、ファイルサイズが増える。
デフォルト:95

optimizeimg
このオプションを使うと、別のツールをつかてpng画像を最適化してファイルサイズを小さくできます。
pngcrushとadvdefというソフトで、詳しい事はgoogleで
http://www.google.co.jp/search?q=pngcrush
http://www.google.co.jp/search?q=AdvanceCOMP+advdef
(advdefの方はAdvanceCOMPという圧縮ソフト集みたいなモノの中の一つらしい)
それぞれ、環境変数PATHの通ったとkろおや、/usr/binみたいな所に置かないとダメです。
値として、0;使わない 1:pngcrushを使う 2:advdefを使う 3;両方使う(非推奨)
使用することで、レンダリングに時間がかかるようになりますが、画質そのままでサイズが小さくなります。
デフォルト:0

bgcolor
マップの背景色を設定します。
値はHTMLで使われている表記法か4組の(RGBA)表記法です。アルファチャンネルは0であるべきです。
デフォルト:#1a1a1a

defaultzoom
マップを開いた時の拡大率です。0より大きくなければなりません。
デフォルト:1

base
タイルのフォルダをリモートに設定します。マップ画像をリモートサーバに同期させる場合に便利です。
指定する場合タイルのフォルダまでを指定するのではなく、一つ上の階層を指定する。
例:"http://domain.com/map/world_day/"ではなく"http://domain.com/map/"

texturepath
レンダリングに使用するテクスチャパックを指定します。
フォルダかzipファイルを指定する。

crop
座標を設定して一定の範囲のみレンダリングすることができます。
書式は(min x, min z, max x, max z)
数値は、ゲーム内のF3キーで見られる座標です。
例えば(0,0)を中心に1000x1000の範囲だけレンダリングしたい場合は
renders['myrender'] = {
        'world': 'myworld',
        'title': "Cropped Example",
        'crop': (-500, -500, 500, 500),
}
 
このオプションの使い所といえば、誰かが遠出しすぎて不要な場所があったり、
小さい範囲を複数アングルでレンダリングしたりするときにに便利です。
+ 注:一度crop使ってレンダリングしてから、範囲変えて上書きはしない方がいい。みたいなこと書いてるけど省略
If you decide to change the bounds on a render, you may find it produces unexpected results. It is recommended to not change the crop settings once it has been rendered once.

For an expansion to the bounds, because chunks in the new bounds have the same mtime as the old, tiles will not automatically be updated, leaving strange artifacts along the old border. You may need to use --forcerender to force those tiles to update. (You can use the forcerender option on just one render by adding 'forcerender': True to that render’s configuration)

For reductions to the bounds, you will need to render your map at least once with the --check-tiles mode activated, and then once with the --forcerender option. The first run will go and delete tiles that should no longer exist, while the second will render the tiles around the edge properly. Also see this faq entry.

Sorry there’s no better way to handle these cases at the moment. It’s a tricky problem and nobody has devoted the effort to solve it yet.

forcerender
値はboolean(trueかfalse)
trueだと(というかfalse以外を書くと)更新が必要でなくても、無条件で再レンダリングされます。
~ --forcerenderコマンドラインオプションと似てますが、こちらは設定ファイル内で複数レダリングする場合
すべて再レンダリングされ、無駄ができてしまいます。
'forcerender': Trueを一つだけに記述することで、それのみ強制再レンダリングし、残りは更新があった所のみになります。
このオプションは基本的にはつけたままにはせず、新しい設定にしてレンダリングし直したい時などに付けて、
終わったら外しておきます。そうしないと無駄が大きいです。
renders['myrender'] = {
        'world': 'myworld',
        'title': "Forced Example",
        'forcerender': True,
}
 

changelist
文字列を設定し、そのファイル名ででテキストファイル出力します。
ファイルは更新のあった画像のリストとなっており、1行に1つづつファイルパスが記述されています。
複数のレンダーで同じファイルに出力することも可能です。
このファイルはOverviewerが起動されるたびにまっさらになります。
これは、ローカルでレンダリングしてアップロードするときなど、更新のある画像だけを扱いたい時に便利です。

markers
マーカーや看板、面白そうなポイントを表示するのに使います。
値は辞書リストです。
注:詳しくはSigns and markersのセクションで
デフォルト:[](設定なし)

poititle
POI/マーカーのドロップダウンメニューの表示名を設定します。
デフォルト:"Signs"

overlay
どのレンダーの上に重ねて表示するかを設定できます。
例えばA,B,Cとrenderがあって、Cのoverlayに["A","B"]とすると、AとBのマップをブラウザで見てる時に、
Overlaysというメニューが右上に出て、Cを重ねて見ることが出来る。
C単体では見られなくなる。
デフォルト;[](設定なし)

showspawn
値はbooleanで、デフォルトはTrue。
Falseにすると初期スポーンエリアを示すアイコンが表示されなくなる。
最終更新:2012年11月11日 01:59