Interactive Director は Ren'Py 自身の内部でゲームスクリプトを編集できるようにし、編集結果をライブプレビューできます。Director はテキストエディターの使用を完全に置き換えるものではありません。テキストエディターは台詞や選択肢、ビジュアルノベルの論理を記述するにはまだ必要です。
以下を加えて、ゲームスクリプトの監督を助けます。 :
Image (say, show, hide) statements.
Audio (play, queue, stop, voice) statements.
D (Shiftなし) キーを押しながらゲームを開始すると Director にアクセスできます。初回起動時はゲームを再起動し、編集に必要なデータを用意します。
最初に表示される Director スクリーンは現在行以前に実行された行のリストを表示します。行リスト外をクリックしてスクリプトを進めるか、行リスト外でロールバックを押してロールバックしてください。行間の + のクリックで行を追加するか、 ✎ をクリックしてその行を編集してください。
行編集時には、適切なパラメーターとともにステートメントタイプが選択できます。 "Add" を選ぶと新しい行を追加し、 "Change" なら既存の行を変更し、 "Cancel" なら編集をキャンセルし、 "Remove" なら既存の行を削除します。
編集が終わったら "Done" をクリックしてください。
名前空間 director には Interactive Director の機能を制御する定義された多くの変数があります。これらは define ステートメントや Python の変更によって設定出来ます。
director.tag_blacklist
= { "black", "text", "vtext" } linkshow, scene, hide ステートメントで表示されないタグのブラックリストです。
scene ステートメントに渡され、 show ステートメントでは非表示になるタグのset型です。
空でなければ、このsetにあるタグのみが show ステートメントに渡されます。
director.transforms
= [ "left", "center", "right" ] linkeditorで表示される transform のリストです。これらに加え、 transform ステートメントにより定義された Ren'Py のデフォルトにない transform が transform のリストに加わり、整列されます。
director.transitions
= [ "dissolve", "pixellate" ] linkwith ステートメントに利用可能なトランジションのリストです。トランジションは自動検出できないため、手動で追加するべきです。
director.audio_channels
= [ "music", "sound", "audio" ] linkplay, show, stop ステートメントで使用されるオーディオチャンネルの名前です。
director.voice_channel
= "voice" linkボイスに使用されるオーディオチャンネルの名前です。
director.audio_patterns
= [ "*.opus", "*.ogg", "*.mp3" ] linkオーディオチャンネルで利用可能なファイルの検索に使用されるオーディオパターンのデフォルトリストです。
director.audio_channel_patterns
= { } linkチャンネル名とそのチャンネルで利用可能なファイルの検索に使用されるオーディオパターンのリストのマップです。例えば、これが { 'sound' : [ 'sound/*.opus' ], 'music' : [ 'music/*.opus' ] }
に設定されると、music と sound チャンネルは自身のパターンを所得します。
True なら、 director director ウィンドウにアクセスするボタンつきのスクリーンを表示します。 False なら、 director.Start アクションを利用可能にして、ゲームは自身からアクセス可能にします。
ディスク上のファイル名を Python ソースコード上でのファイル名に変換する多くのオーディオファイル名の関数があります。例えば、以下のステートメントは
define config.voice_filename_format = "v/{filename}.ogg"
次の関数を定義して同じことができます。
init python in director:
def audio_code_to_filename(channel, code):
"""
This converts the name of an audio filename as seen in the code,
to the filename as seen on disk.
"""
if channel == "voice":
return "v/" + code + ".ogg"
return code
def audio_filename_to_code(channel, fn):
"""
This converts the name of an audio filename on disk to the filename
as seen in code.
"""
if channel == "voice":
return fn.replace("v/", "").replace(".ogg", "")
return fn
def audio_filename_to_display(channel, fn):
"""
This converts the audio filename as seen on disk so it can be
presented to the creator.
"""
if channel == "voice":
return fn.replace("v/", "").replace(".ogg", "")
return fn
to match it.