この文書は Ren'Py v6.2.0 に付属のファイル (doc/tutorials/Quickstart.html)を翻訳したものです。 最新版は Web上(ここ)でも見ることができます。

Quickstart Manual
クイックスタート マニュアル

Welcome to the Ren'Py quickstart manual. The purpose of this manual is to demonstrate how you can make a Ren'Py game from scratch, in a few easy steps. We'll do this by showing how to make a simple game, The Question, from scratch. This manual contains a number of example, which are included as part of the demo game.

Ren'Py クイックスタートマニュアルへようこそ。少ない手順でどうやってゼロからゲームを作るかをあなたに伝えるのがこのマニュアルの目的です。そのために、シンプルなゲーム「The Question」の作り方を示します。このマニュアルには多くのサンプルが含まれていますが、それらはデモゲームにも入ってます。

Contents

  1. Quickstart Manual / クイックスタート マニュアル
    1. The Ren'Py Launcher / ランチャー
    2. A Simple Game / シンプルなゲーム
    3. Init Blocks and Characters / 初期化ブロックとキャラクター
    4. Images / 画像
    5. Transitions / 画像の切り替え
    6. Positions / 画像の表示位置
    7. Music and Sound / BGM と効果音
    8. Ending the Game / エンディングの処理
    9. Menus, Labels, and Jumps メニュー、ラベル、ジャンプ
    10. Python and If Statements Python と if 命令
    11. Releasing Your Game / 作ったゲームを公開しよう
    12. Script of The Question / The Question のスクリプト
    13. Where do we go from here? / もっと知りたい場合は

The Ren'Py Launcher
ランチャー

Before you being making a game, you should first take some time to learn how the Ren'Py launcher works. The launcher lets you create, manage, edit, and run Ren'Py projects.

ゲームを作る前に、ランチャーの動作を確認しましょう。ランチャーを使って Ren'Pyプロジェクトの生成、管理、編集、実行ができます。

はじめに

Getting Started. To get started you'll want to download Ren'Py and unzip it. You'll then want to start the launcher by running the renpy program.

まずは Ren'Py をダウンロードし、解凍しましょう。解凍してできたフォルダの中にある「renpy.exe」を実行するとランチャーが起動します。

プロジェクトの選択

Choosing a Project. You should first see what the completed The Question game looks like. To do this, start the Ren'Py launcher, and choose "Select Project". A menu of projects will come up, choose "the_question" from it. You'll be returned to the main menu, and you can now choose "Launch" to start The Question.

とにかく「The question」をプレイしてみましょう。メニューの「Select Project(プロジェクトの選択)」をクリックし、プロジェクト一覧から「the_question」を選びます。次に、メニューに戻り「Launch(実行)」をクリックすると「The question」が始まります。

You can get back to the Ren'Py demo by doing the same thing, but choosing "demo" instead of "the_question".

プロジェクトを Ren'Py のデモに戻したい場合は、同じ手順で「the_question」の代わりに「demo」を選択すればOKです。

新規プロジェクトの生成

Creating a new Project. Create a new project by choosing "New Project" from the launcher. The launcher will ask you to choose a template, choose "template". The launcher will then ask you for a project name. Since "the_question" is already taken, you should enter something different, like "my_question". The launcher will then ask you to choose a color theme for the project. It doesn't matter what you pick at this point, just choose something that appeals to you. You'll be returned to the top menu of the launcher with your new game chosen.

ランチャーのメニューから「New Project(新規プロジェクト)」を選択。テンプレートをどれにするか訊ねられるので「template」を選びます。
次にプロジェクト名を入力します。「the_question」はすでに存在しているので、ここではそれとは違う名前、「my_question」とします。
次に好みの色テーマを選びましょう。これは後で変更可能です。 ランチャーのトップメニューに戻ると、今作った新規プロジェクトが選択された状態になっています。

A Simple Game
シンプルなゲーム

label start:
    "I'll ask her..."

    "Me" "Um... will you..."
    "Me" "Will you be my artist for a visual novel?"

    "Silence."
    "She is shocked, and then..."

    "Sylvie" "Sure, but what is a \"visual novel?\""
label start:
    "彼女に聞いてみよう……"

    "Me" "あのさ、えーっと"
    "Me" "ノベルゲーム作ってるんだけど、絵を描いてくれない?"

    "(沈黙)"
    "彼女はきょとんとした様子で言った"

    "Sylvie" "え……いいけど、でも、\"ノベルゲーム\"って何?"

This is perhaps one of the simplest Ren'Py games. It doesn't include any pictures or anything like that, but it does show a conversation between the two characters.

これが多分、Ren'Py のゲームの最もシンプルな形でしょう。画像などは出てきませんが、2人のキャラクターの会話が記されています。

To try this out, go into the launcher, change to the "My Question" project, and pick "Edit Script". This will open the script files in a text editor. Choose the script.rpy file, and erase everything in it. We're starting from scratch, so you don't need what's there. Copy the example above into script.rpy, and save it.

とにかく試してみましょう。プロジェクト「My Question」が選択された状態で、ランチャーのトップメニューから「Edit Script(スクリプトの編集)」をクリックすると Ren'Py に付属のテキストエディタが起動します。
「ゼロから作る」ことが目的なので、 script.rpy の内容を一旦全部消して、上のサンプルをコピー&ペーストしてください。

You're now ready to run this example. Go back to the launcher, and click Run. Ren'Py will start up. Notice how, without any extra work, Ren'Py has given you menus that let you load and save the game, and change various preferences. When ready, click "Start Game", and play through this example game.

これで準備完了です。メニューに戻ってプロジェクトを実行しましょう。
上のサンプルには特に書かれていないにも関わらず、Ren'Py の側で用意したセーブ・ロードや設定のメニューが表示されるのがミソです。
では、「Start Game(ゲーム開始)」をクリックして作ったサンプルゲームをプレイしてみてください。

This example shows some of the commonly-used Ren'Py statements.

このサンプルにはよく使われる Ren'Py の命令がいくつか入ってます。

The first line is a label statement. The label statement is used to give a name to a place in the program. In this case, we create a label named "start". The start label is special, as it's where Ren'Py scripts begin running when the user clicks "Start Game" on the main menu.

1行目はラベル(label)命令です。ラベルは、プログラム中の特定の場所に付ける地名や目印といったものです。
この場合「start」という名前のラベルを作っています。この「start」ラベルは特殊なもので、メインメニューの「Start Game」をクリックするとまずはここから始まると決まっています。

The other lines are say statements. There are two forms of the say statement. The first is a string (beginning with a double-quote, containing characters, and ending with a double-quote) on a line by itself, which is used for narration, and the thoughts of the main character. The second form consists of two strings. It's used for dialogue, with the first string being a character name and the second being what that character is saying.

その他の行はセリフです。セリフには 2タイプあって、1つは単に「"」「"」で囲まれたもので、地の文やナレーション、モノローグに使います。
もう 1つは会話のためのもので、引数が 2つあります。引数1 は話者の名前、引数2 はセリフです。

Note that all the say statements are indented by four spaces. This is because they are a block underneath the label statement. In Ren'Py, blocks must be indented relative to the prior statement, and all of the statements in a block must be indented by the same amount.

セリフ命令が半角スペース 4つでインデントされているのに注意してください。これは、そのセリフがラベル命令の下位ブロックであるためです。 Ren'Py では、ブロックは親となる上位の命令よりも相対的に多くインデントするようになっていて、同じ階層のものは同じ量だけインデントしなければいけません。

When strings contain double-quote characters, those characters need to be preceded by a backslash. This is done in the last line of our example.

セリフの中でダブルクォート(")が出てくる場合、前にバックスラッシュ(または円記号「\」)を付けてエスケープします。上の例では最後の行で使っていますね。

While this simple game isn't much to look at, it's an example of how easy it is to get something working in Ren'Py. We'll add the pictures in a little bit, but first, let's see how to declare characters.

このサンプルは見栄えはしませんが、Ren'Py を使って「とにかく最低限動くもの」を作るのがいかに簡単か分かったのではないでしょうか。
ちょっと後の方で画像表示の方法なども出てきますが、その前にキャラクターを宣言する方法を見てみましょう。

Init Blocks and Characters
初期化ブロックとキャラクター

One problem with the first example is that it requires you to repeatedly type the name of a character each time they speak. In a dialogue-heavy game, this might be alot of typing. Also, both character names are displayed in the same way, in fairly boring white text. To fix this, Ren'Py lets you define characters in advance. This lets you associate a short name with a character, and to change the color of the character's name.

上のサンプルのやり方では、キャラクターが何か喋るたびに何度も同じキャラクター名をタイプしなければならないのが億劫です。会話の多いゲームだとかなり大変でしょう。
それに、2人のキャラクターのセリフが同じ白色なのもつまらない。
という訳で、Ren'Py では便利な方法が用意してあります。キャラクター名の短縮形と、キャラクター毎のセリフの文字色を予め決めておけるのです。

init:
    $ s = Character('Sylvie', color="#c8ffc8")
    $ m = Character('Me', color="#c8c8ff")

label start:
    "I'll ask her..."

    m "Um... will you..."
    m "Will you be my artist for a visual novel?"

    "Silence."
    "She is shocked, and then..."

    s "Sure, but what is a \"visual novel?\""
init:
    $ s = Character('Sylvie', color="#c8ffc8")
    $ m = Character('Me', color="#c8c8ff")

label start:
    "I'll ask her..."
    "彼女に聞いてみよう……"

    m "あのさ、えーっと"
    m "ノベルゲーム作ってるんだけど、絵を描いてくれない?"

    "(沈黙)"
    "彼女はきょとんとした様子で言った"

    s "え……いいけど、でも、\"ノベルゲーム\"って何?"

The first line is an init statement, which is used to introduce an init block. The two indented lines after the init statement are run when the game first starts up. The init block is used for declaring characters, variables, and images. Code that interacts with the user (like say statements) is not allowed in an init block.

今度の 1行目は、続く初期化ブロックを示す初期化(init)命令です。初期化命令の後に続くブロックに書かれた命令は、ゲームが始まったらまず最初に実行されます。
このブロックでは、キャラクターや変数、画像の宣言をします。また、ユーザーとインタラクションする命令(セリフ命令など)はこのブロックには書いてはいけません。

The second and third lines define characters. The second line defines a character with the short name of "s", the long name "Sylvie", with a name that is shown in a greenish color. (The colors a red-green-blue hex triples, as used in web pages.)

2行目と 3行目でキャラクターを定義しています。 2行目では、「Sylvie」とその短縮名「s」、文字の色(緑)を対応付けています。色は、HTML で使われているのと同様 赤・緑・青 の16進数で指定します。

The third line creates a character with a short name "m", a long name "Me", with the name shown in a reddish color. Other characters can be defined by copying one of the character lines, and changing the short name, long name, and color.

3行目も同様で「Me」と短縮名「m」、文字色(赤)を対応付けています。キャラクターが増えたらこれをコピーして名前・短縮名・文字色の部分を書き換えればよいでしょう。

We've also changed the say statements to use character objects instead of a character name string. This tells Ren'Py to use the characters we defined in the init block.

また、セリフ命令の部分で本来の長い名前の代わりに短縮名を使っています。こう書いておけば Ren'Py は初期化ブロックでの定義に従って表示してくれます。

Images
画像

A visual novel isn't much of a visual novel without pictures. Let's add some pictures to our game.

画像がないことには「ヴィジュアルノベル」とは呼べません―― という訳で、ゲームに画像を加えましょう。

init:
    image bg meadow = "meadow.jpg"
    image bg uni = "uni.jpg"

    image sylvie smile = "sylvie_smile.png"
    image sylvie surprised = "sylvie_surprised.png"    

    $ s = Character('Sylvie', color="#c8ffc8")
    $ m = Character('Me', color="#c8c8ff")

label start:
    scene bg meadow
    show sylvie smile

    "I'll ask her..."

    m "Um... will you..."
    m "Will you be my artist for a visual novel?"

    show sylvie surprised

    "Silence."
    "She is shocked, and then..."

    show sylvie smile

    s "Sure, but what is a \"visual novel?\""
init:
    image bg meadow = "meadow.jpg"
    image bg uni = "uni.jpg"

    image sylvie smile = "sylvie_smile.png"
    image sylvie surprised = "sylvie_surprised.png"    
    
    $ s = Character('Sylvie', color="#c8ffc8")
    $ m = Character('Me', color="#c8c8ff")

label start:
    scene bg meadow
    show sylvie smile

    "彼女に聞いてみよう……"

    m "あのさ、えーっと"
    m "ノベルゲーム作ってるんだけど、絵を描いてくれない?"

    show sylvie surprised

    "(沈黙)"
    "彼女はきょとんとした様子で言った"

    show sylvie smile

    s "え……いいけど、でも、\"ノベルゲーム\"って何?"

The first new thing we needed to do was to declare the images, using image statements on lines 2, 3, 5, and 6, inside the init block. These image statements give an image name, and the filename the image is found in.

まずは初期化ブロックで画像(オブジェクト)を宣言しなければいけません。上の例では 2, 3, 5, 6 行目で image 命令を使っています。 image 命令では、画像名とファイル名を指定します。

For example, line 5 declares an image named "sylvie smile", found in the filename "sylvie_smile.png", with the tag "sylvie".

たとえば 5行目では、「sylvie smile」という名前の画像と「sylvie_smile.png」というファイル名、そして「sylvie」というタグを対応付けています。

We have a scene statement on line 12. This statement clears out the screen, and shows the "bg meadow" image. The next line is a show statement, which shows the "sylvie smile" image on the screen.

12行目にある scene 命令は、画面を消去して「bg meadow」という画像を表示します。その次の行の show 命令は「sylvie smile」という画像を画面に表示します。

The first part of an image name is the image tag. If an image is being shown, and another image with the same tag is on the screen, then the image that's on the screen is replaced with the one being shown. This happens on line 19, the second show statement. Before line 19 is run, the image "sylvie smile" is on the screen. When line 19 is run, that image is replaces with "sylvie surprised", since they share the "sylvie" tag.

画像名の前の部分はタグです。すでに画面に画像が表示されている時に同じタグを持つ別の画像を表示した場合、元の画像は後で表示された画像で置き換えられます。 上のサンプルの 19行目に出てくる 2番目の show 命令を見てください。 18行目までの流れで画面には「sylvie smile」という画像が表示されています。ここで 19行目が実行されると、ここで表示される画像に同じ「sylvie」タグが付けられているため、「sylvie smile」が「sylvie surprised」へと置き換えられるわけです。

For Ren'Py to find the image files, they need to be placed in the game directory of the current project. The game directory can be found at "<Project-Name>/game/", or by clicking the "Game Directory" button in the launcher. You'll probably want to copy the image files from the "the_question/game/" directory into the "my_question/game/" directory, so you can run this example.

Ren'Py が画像を見つけられるように、画像ファイルは対象となるプロジェクトの game フォルダ内に置かなければなりません。game フォルダはランチャーのメニューの「Game Directory」ボタンをクリックしても開くことができます。

Ren'Py does not make any distinction between character and background art, as they're both treated as images. In general, character art needs to be transparent, which means it should be a PNG file. Background art can be JPEG or PNG files. By convention, background images start with the "bg" tag.

Ren'Py では背景画像と立ち絵との間にあまり違いがなく、同じ「画像」として扱われます。一般的に、立ち絵には透過が必要となるので PNG形式で用意すべきです。背景には JPEG と PNG が使えます。 また、慣例により、背景画像には「bg」タグを付けることになっています。

Hide Statement
hide 命令

Hide Statement. Ren'Py also supports a hide statement, which hides the given image.

指定した画像を隠すには hide 命令を使います。

    s "I'll get right on it!"

    hide sylvie

    "..."

    m "That wasn't what I meant!"
    s "I'll get right on it!"

    hide sylvie

    "..."

    m "That wasn't what I meant!"

It's actually pretty rare that you'll need to use hide. Show can be used when a character is changing emotions, while scene is used when everyone leaves. You only need to use hide when a character leaves and the scene stays the same.

hide 命令を使うことはあまりないでしょう。 キャラクターの表情やポーズなどの変化には show 命令を使えばいいですし、 画面上のキャラクターを全て消すために scene 命令を使うこともできますから。 つまり、hide 命令が必要になるのは、 背景はそのままで、あるキャラクターだけ消す場合です。

Transitions
画像の切り替え

Simply having pictures pop in and out is boring, so Ren'Py implements transitions that can make changes to the screen more interesting. Transitions change the screen from what it looked like at the end of the last interaction (dialogue, menu, or transition), to what it looks like after any scene, show, and hide statements.

単純な画像切り替え(transition)では退屈なので、 Ren'Py ではもっといろんな画面切り替えの効果が選択できます。

label start:
    scene bg uni
    show sylvie smile

    s "Oh, hi, do we walk home together?"
    m "Yes..."
    "I said and my voice was already shaking."

    scene bg meadow
    with fade
    
    "We reached the meadows just outside our hometown."
    "Autumn was so beautiful here."
    "When we were children, we often played here."
     m "Hey... ummm..."

    show sylvie smile
    with dissolve
    
    "She turned to me and smiled."
    "I'll ask her..."
    m "Ummm... will you..."
    m "Will you be my artist for a visual novel?"
label start:
    scene bg uni
    show sylvie smile

    s "おーい。一緒に帰らない?"
    m "うん……"
    "そう言った僕の声はすでに震えていた。"

    scene bg meadow
    with fade
    
    "町のすぐ外にある牧草地に着いた。"
    "ここの秋はとてもきれいだ。"
    "子供のころ、僕らはここでよく遊んだものだ。"
     m "あの……えーと……"

    show sylvie smile
    with dissolve
    
    "彼女はこっちを振り向き笑った。"
    "やっぱり聞いてみよう。"
    m "あのさ、良かったら……"
    m "良かったらビジュアルノベルの絵を描いてくれないかな。"

The with statement takes the name of a transition to use. The most common one is dissolve which dissolves from one screen to the next. Another useful transition is fade which fades the screen to black, and then fades in the new screen.

画像切り替えの効果を使うには with 命令を使います。 もっとも一般的なのが dissolve (ディゾルブ)で、 元の画像の上に被さる新しい画像の不透明度が徐々に濃くなっていき、 最後に完全に新しい画像に切り替わります。
次によく使われるのが fade でしょう。 一旦何もない画像にフェードアウトし、次に新しい画像がフェードインします。

When a transition is placed after multiple scene, show, or hide statements, it applies to them all at once. If you were to write:

複数の scene、show、hide 命令の後に切り替え効果が指定された場合、 効果はそれらの全てに対して適用されます。 たとえば・・・

    scene bg meadow
    show sylvie smile
    with dissolve
    scene bg meadow
    show sylvie smile
    with dissolve

Both the "bg meadow" and "sylvie smiles" would be dissolved in at the same time. To dissolve them in one at a time, you need to write two with statements:

こういう場合、bg meadow と sylvie smile が同時にディゾルブで表示されます。
最初に背景をディゾルブで表示し、 その後で立ち絵をディゾルブで表示させたい場合は 次のように別々に指定します。

    scene bg meadow
    with dissolve
    show sylvie smile
    with dissolve
    scene bg meadow
    with dissolve
    show sylvie smile
    with dissolve

This first dissolves in the meadow, and then dissolves in sylvie. If you wanted to instantly show the menu, and then show sylvie, you could write:

背景の meadow を瞬時に表示し、sylvie をディゾルブで表示させたい場合はこうです。

    scene bg meadow
    with None
    show sylvie smile
    with dissolve
    scene bg meadow
    with None
    show sylvie smile
    with dissolve

Here, None is used to indicate a special transition that updates Ren'Py's idea of what the prior screen was, without actually showing anything to the user.

このように、切り替え効果なしで単純に画像を切り替えたい場合は None を指定します。

Positions
画像の表示位置

By default, images are shown centered horizontally, and with their bottom edge touching the bottom of the screen. This is usually okay for backgrounds and single characters, but when showing more than one character on the screen it probably makes sense to do it at another position. It also might make sense to reposition a character for story purposes.

画像は、デフォルトでは水平方向で中央に表示され、 画像の下端が画面の下端と同じ位置にくるように表示されます。 キャラクターが 1人のときはこれでいいのですが、 2人以上表示する場合は別の場所に表示しなければいけません。 また、ストーリー進行に伴ってキャラクターを移動させたいときもあります。

    show sylvie smile at right
    show sylvie smile at right

To do this repositioning, add an at-clause to a show statement. The at clause takes a position, and shows the image at that position. Ren'Py includes several pre-defined positions: left for the right side of the screen, right for the right side, center for centered horizontally (the default), and truecenter for centered horizontally and vertically.

という訳で、画像の表示位置は上の例のように at を使って指定します。

left
right
center
中央
truecenter
中央(上下左右の中心に表示)

A user can define their own positions, but that's outside of the scope of this quickstart.

もっと細かく位置を指定することもできますが、 ここでは割愛します。

Music and Sound
BGM と効果音

BGM の再生

Most games play music in the background. In Ren'Py, music files automatically loop until they are stopped by the user. Music is played with the play music statement.

ゲームにつきものの BGM を再生するには play music 命令を使います。 再生停止の指示があるまでずっとループ再生されます。

    play music "illurock.ogg"
    play music "illurock.ogg"

BGM の変更

When changing music, one can supply a fadeout clause, which is used to fade out the old music when new music is played.

前の BGM からクロスフェードで次の BGM に変更する場合、 後ろに「fadeout 時間」を追加します。

    play music "illurock.ogg" fadeout 1.0
    play music "illurock.ogg" fadeout 1.0

BGM の停止

Music can be stopped with the stop music statement, which can also optionally take a fadeout clause.

BGM の再生を止める場合、stop music 命令を使います。 フェードアウトさせたい場合、同じように「fadeout 時間」を追加できます。

    stop music
    stop music

Sound effects can be played with the play sound statement:

    play sound "effect.ogg"
    play sound "effect.ogg"

効果音の再生

Ren'Py support many formats for sound and music, but OGG Vorbis is preferred. Like image files, sound and music files must be placed in the game directory.

Ren'Py はいろんな種類の音声フォーマットをサポートしていますが、 Ogg Vorbis を使うのがおすすめです。
画像ファイルと同じく、音声ファイルも game フォルダに置きます。

Ending the Game
エンディングの処理

You can end the game by running the return statement, without having called anything. Before doing this, it's best to put something in the game that indicates that the game is ending, and perhaps giving the user an ending number or ending name.

エンディングに達した場合、return 命令でゲームを終わらせます。
ただ、終わらせる前に、「ここで終り」であることを はっきりユーザーに伝えると親切でしょう。 また、エンディングが複数ある場合は「ハッピーエンド 3」などのように エンディングの種類や番号を表示するのもいいかもしれません。

    ".:. Good Ending."

    return
    "<ハッピーエンド>"

    return

That's all you need to make a kinetic novel, a game without any choices in it. Now, we'll look at what it takes to make a game that presents menus to the user.

シナリオの分岐などのないゲームの作り方については以上です。
次はユーザーが選択するメニューのあるゲームの作り方です。

Menus, Labels, and Jumps
メニュー、ラベル、ジャンプ

The menu statement lets you present a choice to the user.

プレイヤーにメニューから選択肢を選ばせるには menu 命令を使います。

    s "Sure, but what's a \"visual novel?\""

menu:
    "It's a story with pictures.":
         jump vn

    "It's a hentai game.":
         jump hentai

label vn:    
    m "It's a story with pictures and music."
    jump marry

label hentai:
    m "Why it's a game with lots of sex."
    jump marry

label marry:
    scene black
    with dissolve

    "--- years later ---"
    s "え……いいけど、でも、\"ノベルゲーム\"って何?"

menu:
    "絵の付いた物語だよ。":
         jump vn

    "エロゲだよ。":
         jump hentai

label vn:    
    m "絵と音楽の付いた物語だよ。"
    jump marry

label hentai:
    m "エッチなシーンのあるゲームのことだよ。"
    jump marry

label marry:
    scene black
    with dissolve

    "--- 数年後 ---"

This example shows how menus are used with Ren'Py. The menu statement introduces an in-game-menu. The menu statement takes a block of lines, each consisting of a string followed by a colon. These are the menu choices which are presented to the user. Each menu choice should be followed by a block of one or more Ren'Py statements. When a choice is chosen, the statements following it are run.

menu 命令はゲーム内メニューを表示します。 menu 命令の後に複数の行から成るブロックを書きます。 文字列(選択肢)の後にコロン「:」を付け、 その後に一つないし複数の Ren'Py の命令を書いていきます。

In our example, each menu choice runs a jump statement. The jump statement transfers control to a label defined using the label statement. The code following that label is run.

上の例では、それぞれの選択肢で jump 命令を使っています。 jump 命令は label 命令を使って定義された場所へ移動させる命令で、 指定されたラベルの場所から処理が続行します。

In our example above, after Sylvie asks her question, the user is presented with a menu containing two choices. If the user picks "It's a story with pictures.", the first jump statement is run, and control is transferred to the vn label. This will cause the pov character to say "It's a story with pictures and music.", after which control is transferred to the marry label.

上の例では、Sylvie の質問のあとメニューが表示され、 プレイヤーは 2つの選択肢からどちらかを選ぶようになっています。 「画像付きのストーリー」を選ぶと一つ目の jump 命令が実行され、 ラベル vn に制御が移ります。 これにより、pov というキャラクターが「これは画像と音楽付きのストーリーだよ」 と言い、今度は制御がラベル marry に移ります。

Labels may be defined in any file that is in the game directory, and ends with .rpy. The filename doesn't matter to Ren'Py, only the labels contained within it. A label may only appear in a single file.

game フォルダ内にある拡張子「rpy」ファイルの中であれば どこででもラベルを定義することができます。 どのファイルの中でラベルを定義するかよりも、 ラベルがあるかどうかの方が大事です(※ かなり意訳です)。

Python and If Statements
Python と if 命令

While simple (and even fairly complex) games can be made using only using menus and jump statements, after a point it becomes necessary to store the user's choices in variables, and access them again later. This is what Ren'Py's python support is for.

ここまで見てきた「シンプルなゲーム」では menu 命令と jump 命令を使ってきました。 ここからは、ユーザーの選択した結果を変数に格納し、 後でをの値を取り出す方法を紹介します。 Ren'Py がなぜ Python をサポートしているかが 分かってくると思います。

Python support can be accessed in two ways. A line beginning with a dollar-sign is a single-line python statement, while the keyword "python:" is used to introduce a block of python statements.

2つの方法で Python を使う方法があります。 1行だけで済む場合は行の先頭にドル記号「$」を付けます。 複数行の場合はそれをブロックとし、ブロックの頭に「python:」を付けます。

Python makes it easy to store flags in response to user input. Just initialize the flag at the start of the game:

Python を使うと、プレイヤーの選択に応じてフラグを格納することができます。 その場合、フラグ用の変数はゲームの最初の方で初期化しておきます。

label start:
    $ bl_game = False
label start:
    $ bl_game = False

You can then change the flag in code that is chosen by menus:

ゲーム内でメニューから選択したときに フラグ用の変数の値を書き換えるには次のようにします。

label hentai:

    $ bl_game = True

    m "Why it's a game with lots of sex."
    s "You mean, like a boy's love game?"
    s "I've always wanted to make one of those."
    s "I'll get right on it!"

    jump marry
label hentai:

    $ bl_game = True

    m "エッチなシーンのあるゲームのことだよ"
    s "それってBLのゲームみたいなの?"
    s "そういうの作ってみたかったんだ。"
    s "もちろん。やらせて!"

    jump marry

And check it later:

また、フラグ用の変数の値を後で参照する場合はこうです。

    "And so, we became a visual novel creating team."
    "We made games and had a lot of fun making them."

    if bl_game:
        "Well, apart from that boy's love game she insisted on making."

    "And one day..."
    "そういう訳で、僕らは一緒にビジュアルノベルを作ることになった。"
    "僕らはいろんなゲームを作り、ゲームを作る人たちも増えていった。"

    if bl_game:
        "彼女が製作にこだわっていたボーイズラブなゲームは別として、だけど。"

    "そしてある日……"

Of course, python variables need not be simple True/False values. They can be arbitrary python values. They can be used to store the player's name, to store a points score, or for any other purpose. Since Ren'Py includes the ability to use the full Python programming language, many things are possible.

もちろん、シンプルな真偽値以外の Python の変数も使うことができます。 Python で使える任意の値を入れることができるので、 たとえばプレイヤーの名前や何かの得点、その他いろんな目的に使えます。 Ren'Py では Python の機能をフルに使えますから、 やり方しだいでたくさんのことができるでしょう。

Releasing Your Game
作ったゲームを公開しよう

Once you've made a game, there are a number of things you should do before releasing it:

ゲームができたら、次は公開するための下準備をしましょう。

options.rpy の編集

Edit options.rpy. The options.rpy file, created when you create a new game, contains a number of settings that you may want to customize. Some of them, like the screen height and screen width, should probably be set before making the game. Others, like the window title, can be set any time.

新規プロジェクト作成時に作られる options.rpy というファイルを修正することで いろんなカスタマイズができます。 カスタマイズできる項目の中には、 画面サイズなど、ゲーム作りを始める前に決めておくべき項目と 、ウィンドウのタイトルなど後で変更しても問題ないものがあります。

Ren'Py のためのプラグを追加

Add a plug for Ren'Py. This step is completely optional, but we do ask that if you have credits in your game, you mention Ren'Py in them. We suggest using something like "Made with the Ren'Py visual novel engine.", but that's just a suggestion, and what you write is up to you.

この項目はオプションですが、 ゲーム内のクレジットに Ren'Py についての表記が入っているかを確認します (※ ここの訳は自信ないです)。 「Made with the Ren'Py visual novel engine.」 といった表記を推奨しますが、あくまで「推奨」ですので、 最終的にどうするかはあなたの判断で決めてください。

We think that the games people make are the best advertising for Ren'Py, and we hope that by including this, you'll help more people learn how to make visual novels in Ren'Py.

「推奨」としているのは、 あなたの作ったゲームに Ren'Py のクレジットを含めることが Ren'Py を広める上で最も良い方法だからです。 そうしてもらえると、あなたの助力によって 多くの人に Ren'Py を使ったノベルゲーム作成について知ってもらうことができます。

README の生成

Create a README File. You'll probably want to include a README.txt file in the base directory of your project (that is, the directory above the game directory). We include a sample file with Ren'Py, which you can customize as necessary. You should also consider choosing a license for your game, one that determines how people may distribute it.

プロジェクトを収めたフォルダ(game フォルダの一つ上)に README.txt を置きたい場合、必要に応じてサンプルファイルを修正するとよいでしょう。 ゲームの再配布などを指定するライセンスについても書いておきましょう。

Ren'Py の新バージョンをチェック

Check for a new version of Ren'Py. New versions of Ren'Py are released on a regular basis, to fix bugs and add new features. You should check the download page to see if a new version has come out. You may also want to see if any bug-fixes are available on that page.

Ren'Py はバグを修正したり新しい機能が追加されたときに新バージョンが公開されます。 なので、ゲームを公開する前に ダウンロードページ で 新バージョンが出ていないかチェックしてみてください。

スクリプトのチェック

Check the Script. In the Launcher, you should go to the Tools page, and pick "Check Script (Lint)". This will check your games for errors that may affect some users. These errors can affect users on the Mac and Linux platforms, so it's important to fix them all, even if you don't see them on your computer.

ランチャーのメニューから「Tools」を選び、「Check Script (Lint)」をクリックしましょう。 エラーがないかどうかチェックできます。 こうしたエラーは Mac や Linux ユーザーに何か影響を与えるかもしれませんので、 もしあなたが Mac や Linux で動作確認できなくても チェックしておくことが重要です。

パッケージのビルド

Build Distributions. From the Tools page, click distribute. The launcher will check your script again, ask you a few questions, and then build the distribution of your game.

ランチャーのメニューから Tools → distribute。 ランチャーがスクリプトをチェックし、 その後いくつかの質問に答えていくとあなたのゲームのパッケージができあがります。

テスト

Test. Lint is not a substitute for thorough testing. It's your responsibility to check your game before it is released.

Lint(スクリプトチェッカー)は完璧なものではありません。 公開の前には自分でプレイして動作を確認しましょう。

公開

Release. You should post the generated files (for Windows, Mac, and Linux) up on the web somewhere, and tell people where to download them from. Congratulations, you've released a game!

おめでとう! ここまできたら、後は生成されたパッケージを Web で公開しましょう。

If you want, you can tell us about it at the Lemma Soft forums.

よかったら Lemma Soft forums であなたのゲームについて教えてくださいね。

Script of The Question
The Question のスクリプト

You can view the full script of The Question here.

The Question の完全なスクリプトは ここで見ることができます。

Where do we go from here?
もっと知りたい場合は

This Quickstart has barely scratched the surface of what Ren'Py is capable of. For simplicity's sake, we've omitted many features Ren'Py supports. To get a feel for what Ren'Py is capable of, we suggest playing through the demo, and having Eileen demonstrate these features to you.

このクイックスタートマニュアルでは Ren'Py でできるいろんなことのうち 少ししか触れていません。 シンプルにまとめるため、多くの事柄を省略しました。 Ren'Py を使って他にどんなことができるか知りたい場合、 Ren'Py に付属しているゲーム「demo」をプレイすると良いでしょう。 Eileen が Ren'Py の機能について説明してくれます。

To learn more about Ren'Py, we suggest starting with the Ren'Py Web Tutorial. The Cookbook contains recipes that show how to do accomplish various tasks with Ren'Py, from the fairly simple to the complex. The Reference Manual is complex, but contains quite a bit of information on how to do things with Ren'Py.

Ren'Py についてもっと知りたい場合は Ren'Py Web Tutorial を読むのをおすすめします。 Cookbook には簡単なことから複雑なことまで、 さまざまなことを Ren'Py で行うためのレシピがあります。 Reference Manual はとっつきにくいかもしれませんが、 さまざまなことを Ren'Py で行うための情報がたくさん含まれています。

If you have questions, we suggest asking them at the Lemma Soft forums, the official forum of Ren'Py. This is the central hub of the Ren'Py community, and we welcome new users, and the questions they bring.

何か分からないことがあったら Ren'Py の公式フォーラムであり Ren'Py コミュニティの中心地となっている Lemma Soft forums で質問してみてください(ただし英語)。 初心者とその質問は喜んで迎え入れられるでしょう。

Thank you for choosing the Ren'Py visual movel engine. We look forward to seeing what you can create with it!

最後に、Ren'Py を選んでくれてありがとう。 面白いゲームを作ってくださいね。


原著作者: PyTom
日本語訳: sonota
    初出: 2007-07
最終更新: 2007-08

元のドキュメントのライセンスは以下の通りです。

Copyright 2004-2007 PyTom <pytom@bishoujo.us>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Copyright 2004-2007 PyTom <pytom@bishoujo.us>

以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。

上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。

ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、それに限定されるものではありません。作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連し、あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、その他の義務について何らの責任も負わないものとします。

訳語の対応

distribution  パッケージ
launcher      ランチャー
user          プレイヤー
transition    画像の切り替え / 画像切り替え / 切り替え
statement     命令
inserted by FC2 system