# 2025-05-15 [[Ren'Py]]をチュートリアルする
興味本位でノベルゲーム制作に特化したゲームエンジン[[Ren'Py]]をチュートリアルしてみる。やったことをメモとして残す。
## インストール
公式サイトから現在最新バージョンである8.3.1の[[Software Development Kit|SDK]]をダウンロードし、インストールする。
>[!check]
> インストールの詳細は以下のNote記事が詳しい。
> - [非プログラマのRen'Pyノート:導入編〜DLと準備〜|みやこ出版|個人ゲーム開発](https://note.com/akutaba/n/nad6b1ab416c5)
## チュートリアル
ランチャーから、「チュートリアル」をプレイ。
環境設定(Preferences)から言語を日本語に変更して読み進めてみる。
>[!note]- チュートリアルゲーム内の項目
> - クイックスタート
> - プレイヤー体験
> - 新規ゲーム作成
> - 会話の書き方
> - 画像の追加
> - 画像の配置
> - トランジション
> - 音楽と効果音
> - 選択肢とPython
> - 入力と補完
> - ビデオ再生
> - NVLモード
> - 開発ツールと対話ディレクター
> - 配布物のビルド
> - より深い機能
> - テキストタグ、エスケープと補完
> - キャラクターオブジェクト
> - 簡単なDisplayable
> - トランジションギャラリー
> - 位置プロパティー
> - Transformとアニメーション
> - Transformプロパティー
> - GUIカスタマイズ
> - スタイルとスタイルプロパティー
> - スクリーンの基本
> - スクリーンDisplayable
> - ミニゲームとCDD
> - 翻訳
上記全てをざっと読み込むと2時間くらいかかりそう。終盤はつまみ読みする。
## プロジェクト内のディレクトリとファイル
新規プロジェクトを作成する。
出力されたテンプレートのディレクトリ構造が以下。
>[!note]- ディレクトリ構造
> ```
> game
> ├── audio
> ├── cache
> │ ├── bytecode-39.rpyb
> │ ├── py3analysis.rpyb
> │ ├── screens.rpyb
> │ └── shaders.txt
> ├── gui
> │ ├── bar
> │ │ ├── bottom.png
> │ │ ├── left.png
> │ │ ├── right.png
> │ │ └── top.png
> │ ├── bubble.png
> │ ├── button
> │ │ ├── check_foreground.png
> │ │ ├── check_selected_foreground.png
> │ │ ├── choice_hover_background.png
> │ │ ├── choice_idle_background.png
> │ │ ├── hover_background.png
> │ │ ├── idle_background.png
> │ │ ├── quick_hover_background.png
> │ │ ├── quick_idle_background.png
> │ │ ├── radio_foreground.png
> │ │ ├── radio_selected_foreground.png
> │ │ ├── slot_hover_background.png
> │ │ └── slot_idle_background.png
> │ ├── frame.png
> │ ├── game_menu.png
> │ ├── main_menu.png
> │ ├── namebox.png
> │ ├── notify.png
> │ ├── nvl.png
> │ ├── overlay
> │ │ ├── confirm.png
> │ │ ├── game_menu.png
> │ │ └── main_menu.png
> │ ├── phone
> │ │ ├── bar
> │ │ │ ├── bottom.png
> │ │ │ ├── left.png
> │ │ │ ├── right.png
> │ │ │ └── top.png
> │ │ ├── button
> │ │ │ ├── check_foreground.png
> │ │ │ ├── check_selected_foreground.png
> │ │ │ ├── choice_hover_background.png
> │ │ │ ├── choice_idle_background.png
> │ │ │ ├── hover_background.png
> │ │ │ ├── idle_background.png
> │ │ │ ├── radio_foreground.png
> │ │ │ ├── radio_selected_foreground.png
> │ │ │ ├── slot_hover_background.png
> │ │ │ └── slot_idle_background.png
> │ │ ├── nvl.png
> │ │ ├── overlay
> │ │ │ ├── game_menu.png
> │ │ │ └── main_menu.png
> │ │ ├── scrollbar
> │ │ │ ├── horizontal_hover_bar.png
> │ │ │ ├── horizontal_hover_thumb.png
> │ │ │ ├── horizontal_idle_bar.png
> │ │ │ ├── horizontal_idle_thumb.png
> │ │ │ ├── vertical_hover_bar.png
> │ │ │ ├── vertical_hover_thumb.png
> │ │ │ ├── vertical_idle_bar.png
> │ │ │ └── vertical_idle_thumb.png
> │ │ ├── slider
> │ │ │ ├── horizontal_hover_bar.png
> │ │ │ ├── horizontal_hover_thumb.png
> │ │ │ ├── horizontal_idle_bar.png
> │ │ │ ├── horizontal_idle_thumb.png
> │ │ │ ├── vertical_hover_bar.png
> │ │ │ ├── vertical_hover_thumb.png
> │ │ │ ├── vertical_idle_bar.png
> │ │ │ └── vertical_idle_thumb.png
> │ │ └── textbox.png
> │ ├── scrollbar
> │ │ ├── horizontal_hover_bar.png
> │ │ ├── horizontal_hover_thumb.png
> │ │ ├── horizontal_idle_bar.png
> │ │ ├── horizontal_idle_thumb.png
> │ │ ├── vertical_hover_bar.png
> │ │ ├── vertical_hover_thumb.png
> │ │ ├── vertical_idle_bar.png
> │ │ └── vertical_idle_thumb.png
> │ ├── skip.png
> │ ├── slider
> │ │ ├── horizontal_hover_bar.png
> │ │ ├── horizontal_hover_thumb.png
> │ │ ├── horizontal_idle_bar.png
> │ │ ├── horizontal_idle_thumb.png
> │ │ ├── vertical_hover_bar.png
> │ │ ├── vertical_hover_thumb.png
> │ │ ├── vertical_idle_bar.png
> │ │ └── vertical_idle_thumb.png
> │ ├── textbox.png
> │ ├── thoughtbubble.png
> │ └── window_icon.png
> ├── gui.rpy
> ├── gui.rpyc
> ├── images
> ├── options.rpy
> ├── options.rpyc
> ├── saves
> │ ├── _reload-2-LT1.save
> │ ├── navigation.json
> │ └── persistent
> ├── screens.rpy
> ├── screens.rpyc
> ├── script.rpy
> ├── script.rpyc
> ├── SourceHanSansLite.ttf
> └── tl
> └── None
> ├── common.rpym
> └── common.rpymc
> ```
[テンプレート内のファイル](https://ja.renpy.org/doc/html/quickstart.html#files-in-template)によると、開発時に注力すべきディレクトリやファイルは以下になる。
- ディレクトリ
- `audio/`
- `gui/`
- `images/`
- `tl/`
- ファイル
- `gui.rpy`
- `options.rpy`
- `screens.rpy`
- `script.rpy`
これらディレクトリやファイルはランチャーから直接開くことができる。
ディレクトリは名前そのまま(`tl`ディレクトリはtranslation、つまり翻訳)の素材ファイルを格納する。
ファイルについては、変更したい箇所に対してどのファイルを編集すればよいのかは、ドキュメントを読み込む必要がありそうだ。
ただし、チュートリアルゲームをプレイしたので、とりあえず`script.rpy`がゲームとしてのテキスト表示や画像・音素材の動作を記述することは分かっている。
実際にゲーム作りを始めようとなった場合はこちらから弄っていきながら覚えていく感じになるだろうか。
## 感想
他のエンジンを触ったことがないので比較はできないが、[[Ren'Py]]というツールをベースに、どのようにゲーム制作を進めていくかのビジョンが見えるチュートリアルだった。