About

Ren'py覚書きは、自分用のメモとして、また少しでも日本人ユーザーが増えたら良いなという思いから書き始めたものです。

気づいたら公式が日本語翻訳されてた…!

しかもランチャー(※1)まで!? 日本語フォントも搭載だと!!?
時代は進んでいるものです。
ちなみに私はランチャーだけ英語のまま使っております。こっちの方がなじみがあるので。

日本語公式HP
http://renpy.sukebo.com/
日本語ドキュメント
http://ja.renpy.org/doc/html/

これさえあれば鬼に金棒!
ランチャー付属のチュートリアルも日本語で見れるんだから、有り難いことです。
ふんわり読んでたところがちゃんと理解出来る幸せ。
翻訳者さんには心から感謝を。

でもやっぱり分からないことはあるんですよね。
立ちはだかるプログラミング言語の壁。

引き続きRen'py覚書きでは、私が迷ったところを中心にメモを残していきたいと思います。
相変わらず、手さぐり的な使用方法なので、必ずしも正しい方法とは限りません。
不具合が生じた場合、責任は取れませんので、こんな方法もあるんだ~という感じで見て下さい。
間違えてるところは、指摘して頂けると有り難いです。

Ren'pyはバージョンによって不具合が出たりするので、メモタイトル横のバージョンに注意しながらお読みください。
前の古いメモ書きもそのまま残してあります。

ドキュメントやwikiを調べても分からないことがある場合は、フォーラムで質問しましょう! こちらは完全に英語です!
日本語のフォーラムはないですよね…?

海外フォーラム
http://lemmasoft.renai.us/forums/

質問は「 Ren'Py Questions and Announcements」で!
その2つ下の項目にある「Ren'py Cookbook」も参考になります。

またTumblrの「Ren'py Handbook」にもヒントが散りばめられているので、ご参考ください。

Ren'py Handbook
http://renpyhandbook.tumblr.com/

※1 ランチャー:Ren'py本体。ゲームファイルを実行するアプリケーション。PC用(マルチプラットフォーム)android用ゲームをこれ一つで作ることが出来る優れもの。

コンテンツ説明

 About…このページ
 Text…テキスト関係の覚書き
 Image…画像関係の覚書き
 Sound…音楽関係の覚書き
 Other…その他の覚書き
 Android…アンドロイド関係の覚書き
 suisen…スイセンのトップページに戻ります

Ren'pyの使用バージョンは各コンテンツ項目に記載しています。
ちなみに画像や音楽のファイルはgameフォルダ内に新しいフォルダを作って管理しています。
行の最初の空白は省略してコードを記載していますので、コピペする際はご注意下さい。

テンプレートのデザインをカスタマイズしたい場合は、option.rpyやscreen.rpyを弄るところから始めれば良いと思います。


Text

 日本語化及びフォントについて
 文字のスタイルについて

日本語化及びフォントについて Ren'py 6.17.6.512

日本語化については、選択するだけでよくなりましたね。
ランチャーの日本語化は、ランチャー右下にある「preferences」をクリック、右下メニューのLanguage:から「Japanese」を選択。
ゲームの日本語化は、新規プロジェクト作成時に「Japanese」を選択。

任意のフォントに変更したい場合は、option.rpyの234行目で指定を行ってください。
フォントには著作権がありますので、使用の際は注意しましょう。

文字のスタイルについて Ren'py 6.12.1

テキストのスタイル設定は、style関数を使います。
「options.rpy」の最後に“More customizations can go here.”と書かれたスペースがあるので、私はここにスタイルを付け足していきます。
「script.rpy」に付け足すことも出来ますが、少し注意が必要です。
では試しに、文字の輪郭を付けるスタイルです。
style.default.outlines = [(1, "#000000")]
一番最初の数字がラインの幅、次が色ですね。
ちなみに“outline”は概要という意味、末尾にsを付けた“outlines”が輪郭という意味(名詞)になります。ちょっと勉強。
他にも行間の設定などが出来ます。
style.default.line_spacing = 5
0が元の幅で、正の数、負の数での設定が可能です。
ただこれだけだと、ボタンの文字にも行間が反映されてしまいます。
style.button_text.line_spacing = 0
それを防ぐために、ボタン専用の設定を付け足してあげましょう。
他にも、付け加えられる設定は、公式サイト>wiki>Reference>20.Properties and Styles に記載されています。
・List of Properties でプロパティの一覧を見るのが手っ取り早いですね。
ちゃんと使い方の説明も載っています。英文だけど。
でもプロパティ自体に難しい単語はないので、大体内容を推測することも出来ますよヽ(・∀・ )ノ

Ren'py 6.17.6.512では、option.rpyの264行目から文字の基本のスタイルを設定できます。


Image

 立ち絵について
 トランジションについて
 ズームについて
 アンカーについて
 画像表示について
 イメージマップについて

立ち絵について Ren'py 6.12.1

 メッセージバー上に表示する
 普通に表示する
 フェードアウト



メッセージバー上に表示する

最新版では、別の定義方法があるようです!


$ s = Character('赤木平児', color="#dc143c" , window_left_padding = 220 , window_right_padding = 50 ,show_side_image = Image ( "chara/s_tere.png" , xalign = 0.02 , yalign = 1.0 ))
テキストの表示にも使う“Character”の中に“show_side_image”の項目を付けたします。
ラベル(シナリオ)中での表記は下記の通り。
s "(今日こそ、オレの思いを白金に伝えるんだ…!)"
“window_left(right)_padding”は、テキストの表示する位置を調整しています。
台詞ごとに表情を変換する場合は、上記の定義を反映させる「子」の定義を作ります。
$ s = Character('赤木平児', color="#dc143c" , window_left_padding = 220 , window_right_padding = 50 ,show_side_image = Image ( "chara/s_tere.png" , xalign = 0.02 , yalign = 1.0 ))
$ s_smile = Character(show_side_image=Image("chara/s_raku.png",xalign=0.02, yalign=1.0), kind=s)
$ s_sad = Character(show_side_image=Image("chara/s_ai.png",xalign=0.02, yalign=1.0), kind=s)
s_smileとs_sadの定義の最後についている“kind=s”の部分が重要です。
これで“s”の定義をそれぞれに反映させることが出来ます。
ラベル(シナリオ)中での表記は下記の通り。
s_smile"あ、白金だ……。"
他にも表情を変換させる方法はあるのですが、私は画像によって位置を調整したいのでこの方法にしました^^



普通に表示する

画像を表示させるだけですが、何か?
………………。
……えーと、じゃあ画像の位置の指定でもしてみましょうか。
基本的に立ち絵の表示位置は変わらないので、これも画像と一緒に最初に定義しておきます。
“at left”などを使う場合は必要ありませんよ。
image h2l smile = "chara/a2l_raku.png"
$ h2_gerdenpath = Position(xpos=100, xanchor=1, ypos=1, yanchor=1)
ラベル(シナリオ)中での表記は下記の通り。
show h2l smile at h2_gerdenpath
“at~”が位置の指定になるので、逐一位置を指定する場合は、
show h2l smile at Position(xpos=100, xanchor=1, ypos=1, yanchor=1)
こんな感じになります。
定義名やファイル名とかはスルーして下さい。・゚・(ノД`)・゚・。
更に“with”を付け足してトランジション表示も出来ます。凄く簡単で魅力的です。



フェードアウト

トランジションを使った画像の非表示の仕方です。
といっても頭に“hide”をつけるだけの簡単なお仕事です。
hide h2l smile with dissolve
二枚以上の画像を一緒に消す場合は、
hide h2l smile
hide n2 smile
with dissolve
こんな感じになります。
定義名とかはスルーして下さい。・゚・(ノД`)・゚・。

トランジションについて Ren'py 6.12.1

画像の後に“with”を付けるだけでトランジションしてくれる素敵なRen'pyヽ( ´¬`)ノ
初期の数値設定とかしなくても使えるのが便利ですね。
“show 画像 with トランジションの種類”をやってるだけでも楽しいです(ぇ)
参考サイト様で使えるコードの一覧がありますので、色々試してみて下さい。
でも初期設定だけじゃ物足りないの!
大丈夫、ちゃんと時間の定義も出来ます。

公式サイト>wiki>Reference>8.Transitions

参照。べ、別に手抜きじゃないんだからね!
私、このページ探すだけで時間かかったんだからね!
一番最初のコードで「fade」と「dissolve」の定義の仕方が記載されているので、英文読まなくても分かると思います(笑)
下へスクロールすると、各トランジションの関数も丁寧に説明されているので、とても便利。英文だけど。英文だけど。
知りたい項目だけコピペしてグーグル先生にご教授願いましょう。
ちなみに一番最初のコード例で、Fadeの後の()内で三つの数値が“,”で区切られていますね?
あれは左から「ブラックフェードアウトする時間、その後の画像を保持する時間、新しい画像をフェードインする時間」のようです。
初期値では黒ですが、色を指定してホワイトアウトさせることも出来ます。
必要最低限の関数さえ定義すれば、あとは初期値で動作してくれるぞ!
ちょっとした例を下記に。fadeじゃないけど。
$ wiperight = CropMove(0.5, "wiperight")
ラベル(シナリオ)中での表記は下記の通り。
scene black
with wiperight
初期値だと1秒かかってしまうところを、0.5秒に変更して速度を速めました。
実際にゲーム内で使用しています。
そうそう、背景画像ですが、“black”って入力すると自動で黒塗りの背景を用意してくれます。これも便利。
英文が分からなくても、必要そうな関数を入れて実際に動かすというごり押しな方法でも大丈夫だと思います。
問題がある場合は起動してくれないからね。

公式サイト>wiki>FAQ>5.2~5.3にトランジションについての項目が追加されています。
良かったらこちらもご参考下さい。

ズームについて Ren'py 6.12.1

立ち絵をズームしたいけど実際にはどうやれば良いの!?
ATLを使えば良いらしいですよ^^
ということで、私の場合は同じ演出を何度か使うため、立ち絵同様に定義を作りました。
init:
    transform zoom:
        xpos 410 ypos 300
        xanchor 0.5 yanchor 0.5
        linear .7 zoom 6.0
ちゃんと段落も作らないとエラーが出るよ。
位置調整はお好みで。
linerar(秒数)zoom(倍率)だけでも良いし、瞬時に大きくする場合はzoom(倍率)だけでも良いです。
ラベル(シナリオ)中での表記は下記の通り。
show p smile at zoom
with Pause(0.8)
“with Pause”は別にいりません。
ただアニメーションの後、すぐに画像遷移したりする場合は必要です。
だって終了を待ってくれないんだもん(´・ω・`)

アンカーについて Ren'py 6.12.1

位置の指定に出てくるxanchor,yanchorについてです。
リフォンレスのList of Properties 下部、「Position Properties」の項目で説明されているのですが……。
翻訳が分からん(゚∀゚)
翻訳した内容を、推測で(ぇ)まとめると、使用する画像サイズの相対的なX(Y)軸の位置を指定するって感じでしょうか。
このへんは結構あやふやなので、あまり信用しないで下さい(´・ω・`)
画像の横幅100ピクセルのものを例にすると…、
xanchor=1, xpos=200の場合、画面上での表示位置は、xpos=300になるといった感じです。
実際、使ってみた方が分かりやすいかと。
数値の内容は下記の通り。
xanchor=0.0(左端から)0.5(中央)1.0(右端から)
yanchor=0.0(上から)0.5(中央)1.0(下から)  です。
以上が分かれば、xalignやyalignについても理解出来ると思います。
こっちは説明文がわりと綺麗に翻訳されるので(笑)
ちなみに“specifying”は指定という意味、これを頭に入れて、alignの説明英文にレッツチャレンジ!
一文目を読んだら、内容は把握出来ます。

画像表示について Ren'py 6.12.1

Ren'pyでは立ち絵や、何らかの画像を表示させるときには、前もって定義を作ってやらないといけません。
…が!どうやら必ずしも必要ではないようです(´∀`;)
この方法は、いつもお世話になっているChu-3さんから教えて頂きました!
「options.rpy」の一番下に定義を付け足します。(ここが一番分かりやすいので…)
config.automatic_images= [ ' ', '_', '/' ]
config.automatic_images_strip =['image']
一行目は、この記号は書かなくていいよ。の意味。
二行目は、このフォルダ名は書かなくていいよ。の意味です。
私の場合、画像関係は全てgameフォルダ内のimageフォルダに収納し、尚且つさらに背景などはbgフォルダを作っているので、実際に使うときは…
scene bg myroom evening
という感じになります。
正式なファイルの指定は「image/bg/myroom_evening.jpg」です
拡張子は自動的に読み込んでくれるようですね^^
また、↑の二行目で['image/bg']という風に定義すると、bgの表記もいらなくなります。
けどそれだと他のフォルダが使えなくなってしまうので、ご利用は計画的に!?
ちなみにこの説明は、公式サイト>wiki>Reference>13.Configuration Variables に載っています。

イメージマップについて Ren'py 6.12.1

システムメニューの作成から、画像選択肢まで、何かと便利なイメージマップ。
だけど突然あなたに災厄がふりかかる…!?(゜□゜)
イメージマップの使い方については、公式さんやlemmaで説明されているので割愛。
イメージマップを使っていると、稀に画面にバグが発生します。
スクリプトなどは合っているはずなのに、何でどうして!?
私はタイトル画面を作成しているときに、この症状が出たのでプチパニックに陥りました。何と恐ろしい…。
ま、原因は簡単なことだったんですが^^;

公式サイト>wiki>FAQ>7 Troubleshooting の7.3 をご覧下さい。(英文だけどな!)

イメージマップを使うと、自動的にcacheが生成されます。
gameフォルダ内に新しいフォルダが出来ていると思うので確認してみて下さい。
原因はコイツです(ドーン!
フォルダを消してしまえば、解消されるのですが、次にまた起こらないとも限らない……。
そんな不安を抱えたまま作業をするのは嫌だ…!そんなときは…
config.imagemap_cache = False
さっくりキャッシュを作らないように設定してしまいましょう。
場所はいつも通り「options.rpy」の一番下で^^


Sound

ややこしいのかな?と思ったらそうでもありませんでした。
凝ると大変ですが^^;基本的にフェードイン、フェードアウトが出来れば満足な私です。
音関係は、そのままファイル名を指定します。

 初期値について バグ発覚!→修正済み
 フェードイン・アウトについて
 サウンド再生について

初期値について Ren'py 6.12.1

以下の内容だと、して欲しい動作になりません。
して欲しい動作=初期値のみ決められた音量に設定して、後はプレイヤーが自由に設定出来る仕様。
これだと、ゲームを起動する度に初期値が反映され、プレイヤーの設定を引き継いでくれません。ご注意下さい。

初期の音量ですね。基本はMAXです。
私はオプション設定を弄れる、「options.rpy」の一番下に定義を付け足して変更しました。
_preferences.set_volume ('music', 0.4)
_preferences.set_volume ('sfx', 0.6)
上がBGMの音量で、下が効果音の音量です。
「0.4=40%」です、ボイスは使わなかったので割愛。
効果音がまさかの“sfx”で驚いた私がいます(笑)最初“sound”って打ってた(ノД`)

修正内容は下記の通りです。

label splashscreenにて変数とif文を使います。
label splashscreen:
    if not persistent.shokai:        
        $_preferences.set_volume("music", 0.4)
        $_preferences.set_volume("sfx", 0.6)
    $persistent.shokai=True
このlabelは、タイトル画面の前に表示したいシナリオがある場合に使います。
ゲーム起動時のサークルロゴの表示とかですね、既に使用している場合はif文以下の内容を付け足して下さい。
if文は、変数が未定義の場合のみ、音量を設定する内容になっています。
すぐ「True」でフラグを立てることによって、以後、この部分を読み込んでも設定が変更されることはありません。
また、ここに任意の変数を入れることで、他の項目も初期値を設定することができます。

修正には下記サイトの管理人様にご助力頂きました。有難うございました!
roseVeRte

フェードイン・アウトついて Ren'py 6.12.1

後ろに“fadein”または“fadeout”を付け足すだけの簡単なお仕事です。
play music "bgm/daily.ogg" fadein 3.0
stop music fadeout 3.0
効果音の場合は“music”のところを“sound”に変えるだけですよ。
こんなに簡単で良いのか。
ちなみに「3.0=3秒」です。何となく勘で分かるよね。

サウンド再生ついて Ren'py 6.12.1

チャンネルを定義することで、個別に設定を行うことができます。
これもChu-3さんに……ってどれだけ教わっているんだって話ですね(ノ´∀`*)
いつも通り「options.rpy」の一番下に定義を付け足します。
renpy.music.register_channel('bgm','music',loop=True,stop_on_mute=False, tight=True,file_prefix="bgm/", file_suffix=".ogg")
使用例は…
play bgm "everyday"
元々のmusicに反映させたい場合は、定義の'bgm'を'music'に変えればOKです。
一番最初の項目が、使用するときの名前で、二つ目の項目で、どこに属するのかを指定しています。
例えば、効果音をループさせたい場合は…
renpy.music.register_channel('soundloop','sfx',loop=True,stop_on_mute=False, tight=True,file_prefix="sfx/", file_suffix=".ogg")
play soundloop "filename"
といった感じ。
設定で音量を変更したとき、それぞれ二つ目の項目で指定した音量が反映されます。
"bgm/"(フォルダ名)や".ogg"(ファイル形式)は、自分が使っているものに合わせて下さいね。
BGMでループさせたくない場合は、「loop=True」を「loop=False」にすればOKです。
このチャンネルの定義はいくつでも増やせますので、用途に合ったチャンネルを定義していって下さい。
公式サイト>Documentation>Python and Ren'Py>Other Functions に説明が載っています。
使用例は、公式サイト>wiki で「channel」で検索をかけると該当ページがHitします。

Ren'py 6.17.6.512では、option.rpyの562行目からサウンドチャンネルの設定ができます。


Other

画像や音楽以外での覚書きです。
ちょっとした演出に関することが多いでしょうか。

 クリックウェイトについて
 メッセージウィンドウの表示について
 ボタン位置のカスタマイズ
 画面上のボタンについて
 右クリックの禁止について
 システムアイコンについて

クリックウェイト Ren'py 6.12.1

EDで一枚絵だけを表示して、クリック待ちにしたい!
そんなときは動作させたいラベル(シナリオ)中に、
$ renpy.pause()
を入れるだけです。
$ renpy.pause(1.0)
()内に秒数を入れると、秒数の経過を待つか、クリックで次の動作へ。
$ renpy.pause(1.0, hard=True)
“hard=True”を付け足すと、秒数が経過しない限り次の動作へ移りません。
テキスト内での一時停止には専用のタグがあるので、そちらを使います。{w}とか。

メッセージウィンドウの表示 Ren'py 6.12.1

window show dissolve
window hide dissolve
“show”で表示、“hide”で非表示にすることが出来ます。簡単だね。

ボタン位置のカスタマイズ Ren'py 6.12.1

ゲーム中に表示させる選択肢の位置調整です。
あくまで位置の調整だけですが^^;
$ ui.textbutton("上", clicked=ui.jumps("ラベル"), xminimum=85, xpos=280, ypos=190, xanchor=0.5, yanchor=0.5)
$ ui.textbutton("下", clicked=ui.jumps("ラベル"), xminimum=85, xpos=280, ypos=290, xanchor=0.5, yanchor=0.5)
$ ui.textbutton("真ん中", clicked=ui.jumps("ラベル"), xminimum=85, xpos=280, ypos=240, xanchor=0.5, yanchor=0.5)
$ ui.textbutton("左", clicked=ui.jumps("ラベル"), xminimum=85, xpos=180, ypos=240, xanchor=0.5, yanchor=0.5)
$ ui.textbutton("右", clicked=ui.jumps("ラベル"), xminimum=85, xpos=380, ypos=240, xanchor=0.5, yanchor=0.5)
$ ui.interact()
“ラベル”部分にジャンプするラベルを指定して下さい。
最後の一行を入れないと、次の内容が表示されてしまい、上手く機能しません。
画像を使ったボタンについては、またおいおい。

画面上のボタンについて Ren'py 6.12.1

吉里吉里でいうところのシステムメニューですね。
作り方は、公式サイト>wiki>Cookbook>Adding On-Screen Buttons 参照。
コードを丸々コピペしたら作れます^^
ui.textbutton("×", clicked=ccinc("_hide_windows"), xminimum=70)
メッセージウィンドウを消す場合は“_hide_windows”でOK。

Ren'py 6.17.6.512では、screen.rpyのQuick Menu項目で設定ができます。
使用したくない場合はSay項目の最下部「use quick_menu」の頭に#を入れてコメント化してしまいましょう。

右クリックの禁止について Ren'py 6.12.1

Ren'pyのデフォルトでは、シナリオ中、右クリックでセーブ画面が開きます。
でも場所によってはセーブ画面を開いて欲しくないところもあって……。
$_game_menu_screen = None
そんなときはこれでOK!
$_game_menu_screen = "save_screen"
またデフォルトの設定“save_screen”で元に戻す(右クリックを有効にする)ことができます。
入れる値を別のラベルに指定することで、右クリックで開く画面を変えることもできます^^
詳しくは公式サイト>wiki>FAQ>5.4 How do I disable access to the in-game menu?を参照。

システムアイコンについて Ren'py 6.12.1

exeファイルやRen'py起動時の画面、左上にタイトルと一緒に表示されるアイコンのことです。
デフォルトではRen'pyのマスコットキャラクターの女の子ですね^^
これらを変更するには、それぞれ手順が必要です。
まず画面左上に表示されるアイコンを変える方法。
config.window_icon = "ファイル名.png"
私は自分で分かりやすいように、options.rpyの26行目辺り“config.window_title”の下の行に付けたしました。
もちろんscript.rpyのinit:ブロック内で、頭に“$”を付けて表記しても大丈夫です。
アイコン用の画像ファイルは透過処理のある256×256サイズのpngが良いようです。
続いてexeファイルのアイコンを変える方法。 上記で作ったアイコン用の画像をicoファイルとicnsファイルに変換します。
それぞれのファイルを作ったら、gameフォルダと同じ階層に置きます。
ゲームのプロジェクトフォルダ
 ├gameフォルダ
 ├launcherinfo.py
 ├README.html
 ├icon.icns
 ├icon.ico
icoファイルにしても、icnsファイルにしても必ずファイル名は「icon」にして下さい。
icoやicnsファイルはパッケージ後に反映されます。
詳しくは公式サイト>wiki>FAQ>3.10 How do I change the game's icons?を参照。
ファイルの変換方法は、ネットで検索するとファイル変換サイトやソフトが見つかりますよ!


Android

 ビルドについて
 プレスプラッシュ画像について
 アイコンアプリ名について

ビルドについて Ren'py 6.17.6.512

ドキュメントのAndroid項目 をご覧下さい。
セットアップ方法も順番に書いて下さっているので分かりやすいです。

Java等の詳しい導入方法は、検索すると解説サイトがすぐ見つかるので、そちらも参考にしましょう。
Apache Antをインストールしてパス設定もちゃんとやったのに、コマンドプロンプトで動作しない!?というときはDLファイルが壊れてる場合がありますので、再解凍、もしくは再DLしてみましょう。私はこれで無事動作しました。

またドキュメントにはRAPTのDLについて書かれていますが、別途DLする必要はありません。
ランチャーのAndroidメニューをクリックすると自動でDLが開始されます。Android SDKも…?

プレスプラッシュ画像について Ren'py 6.17.6.512

アイコン同様、基本ドキュメント通りに作ります。
作ったアイコンはgameフォルダと同じ階層(baseフォルダ内)に入れましょうね。
ランチャーのOpen Directoryで開けるのが一番早いでしょうか。

で、プレスプラッシュ画像ですが、これはアプリが起動されるまでに表示される「now loading...」な画像のことです。
renpy-6.17.6-sdkフォルダ内にDLされたrapt>tamplatesフォルダ内にテンプレ画像が入っているので、それを参考にして下さい。
作成した画像は必ずカラーモードをCMYK形式で保存して下さい!
ドキュメントにはモノカラーでって書かれていますが、モノカラー=CMYK形式のことです。
RGB形式で保存しちゃうと反映されないんだぞ☆(経験談)

アイコンアプリ名について Ren'py 6.17.6.512

残念ながら、現在Ren'pyでは日本語のアイコンアプリ名を使用出来ません。
これは互換性を重視するシステム上、無理なようです。
今後なんらかの方法で出来たら良いなぁ…。