Ren'Pyで思い出をゲーム化する
思い出を埋もれさせないために
皆さんは旅行やイベントの思い出をどのように保存していますか?
写真に残す、日記に書き留める、ブログに残すといった方法が考えられます。
しかし共有がしにくかったり、新しいデータで埋もれてしまったりといった課題があります。
思い出をゲーム化するという提案
そこで新しい選択肢として、ゲーム化するを提案します。
ゲームのジャンルは「ノベルゲーム」とします
ノベルゲームとは
グラフィックとメッセージでゲームが進行し、途中に出る選択肢で展開結末が変わるゲームのジャンルのこと。
個人的には視覚的な情報とテキストの情報が組み合わさり、登場人物の経験を追体験することができる、非常に優れたメディアだと思っています。
使うツール Ren’Py
Ren’PyというPythonを使ってノベルゲームを作成することが可能なソフトを使います。
なんと無料だし、様々なプラットフォームで公開できるし、自分が用意したサーバーで公開も可能。
無料で商用利用も可能です(ライセンス表記は必要)。
使い方は意外とシンプル
ノベルゲームをやった人にとって、自分で作るとなると画像・BGM・テキストの同期や分岐の処理が大変そう、と思われるかもしれません。プログラミングの知識も必要そう。私もそう思っていました。
しかし、触ってみてその印象は変わりました。
非常にシンプルで混乱のない書き方で記述ができるのです。
基本的にいじるのはscript.rpyと画像フォルダのみ
テキストやセリフといったゲーム上の文字情報は全てこのファイルにまとめて書くことができます。
pythonファイルですが、pythonの知識は不要です。
scriptファイル内で、場面で必要なキャラクターの立ち絵、背景画像を設定することができます。
使用する画像ファイルをimagesディレクトリに配置すれば、自動で読み込んでくれます。
画像ファイルの作り方 横縞ディザがおすすめ
画像ファイルは画面サイズと同じ解像度にする必要があるので、例えばデフォルトの1920×1080に設定した場合、それにする必要があります。あるいはscripts上で、拡大するかどうかを記述する必要があります。
ここで私がおすすめしたいのは、背景やキャラクターの画像をあえて粗くする、ということです。
「横縞ディザ」という言葉を知っているでしょうか。表現できる色数に限界があった時代のゲームで、破綻を起こすことなく元の画像を表現するために編み出されたテクニックがあります。
荒い画素が醸し出す独特の雰囲気というものがあります。
一眼レフ、コンデジを使うまでもなく最近のスマホであれば間違いなく高精細な写真が撮れます。
しかし、そういった写真だと写っているもの全てにピントがあい、読み手はそれら全てに注意を向けてしまい、この写真で何を伝えたいのかがぼやけることがあります。背景画像は単に場所の転換だけを読み手に知らせれば良い場合が多いです。
荒い画像であれば、こういった場所での出来事なんだな、程度の感情を受け手は感じるだけで済みます。
情報を減らすことの効果
ここで、情報をあえて絞ることの効用についてもう少し語ります。
ラジオやポッドキャストというメディアは、音のみですが、人の心に深く直接語りかけ、想像力を引き出す力を持っています。例えば相撲中継をラジオで聞いてみてください。これほど実況することが難しいスポーツはないと思いますが、手に汗を握る体験をすることができます。
私の実家の茶の間にはテレビがなく、それゆえ野球や相撲といった中継をNHKのラジオから聞く機会が多く、そのことがかえってメディアの持つ特性に気づく機会をくれました。
情報量があればいいというわけではないのです。
さらに言えば、風のリグレットというゲームでもそれは証明されています。「リアルサウンド」というコンセプトで敵の姿が見えない「エネミーゼロ」というゲームを作った後の飯野賢治が、WARPから発表した画面すらないゲームです。私はこの作品で何度も泣きました。
「画像変換 for MSX」で画像変換
画像変換 for MSX」というサイトを利用すると良いでしょう。このサイトでこの設定で変換した後に、作成している画面サイズに合わせて引き伸ばしてください。
なんらかのツールを作っても良いですが、このコマンドでもできます。
sips -z 1080 1920 [入力ファイル名]
私は「このファイルとこのファイルを1920×1080に変換して」とエディタ内でAIにまとめて依頼してます。
テキストの作成はAIを介して作成
テキスト部分の作成については、私はscriptファイルを直接いじることはほぼしません。AIエディタに指示を投げることでほぼ全てのテキストを書いてもらいます。
その方がツールの記法に則った記述をミスなくしてくれるし、指示したエピソードの前後のセリフやテキストを埋めてくれるので圧倒的に効率が良いです。
今回、例として北海道に家族3人で帰省した時のノベルゲーム作成手順を紹介します。
- Ren’Pyで新規プロジェクトを作成します。
- なんらかのAIエージェントにコードを読み込ませます。
- 今回は、エディタにCursor、モデルはclaude-4-sonnetを使用しています。好みによってClaudeCodeでもなんでも良いでしょう。
- 「コードベースを理解してください」と指示を投げコードベースを理解してもらい、これはノベルゲームを作成するためのプロジェクトだと認識させます。
- 変更の管理のためにGit Initをしてもらいます。
- ここから指示を出していきます。
- 大まかな設定、登場人物、語り手といった情報を渡します
- プロンプト例「家族旅行をノベルゲームにします。主人公は年長の男の子。お父さんお母さんと一緒に北海道に住むおじいちゃんおばあちゃんの家に遊びにいき、5日間を過ごしました。初日の9/4(木)は空港に降り立つシーンから始まります。最初のセリフは「涼しい!」、そして車で移動し…」
- こんな内容を思いつくままにAIエージェントにどんどん投げていきます。「二日目はここにいったエピソードを朝ごはん後に追加して、あ、お父さんの『XXX』というセリフもここに追加して」のように
- キャラクター画像、背景画像の設定
- imagesディレクトリ内にrawimagesディレクトリを作成し、そこにMSX風の粗い画像に変換した画像を突っ込んでいきます。画像ファイル名は判別しやすいように変えておきます。
- BGMを設定
- 手間なので私はやりませんでしたが、BGMを自分で作成するなりして追加するとより臨場感のあるゲームになるでしょう
- タイトル画像を設定
guiディレクトリにmain_menu.pngという名前でファイルを配置します
デプロイ、公開
自分だけで楽しむでも良いですが、サーバー上にホスティングすることで、一般公開し、誰にでもみて体験してもらうことができます。
私はNetlifyを使用して非常に簡単にデプロイができました。
デプロイパッケージの作成
RenPyのメニューから選ぶだけでデプロイパッケージが作成できます。
以上です。技術ブログにしては全く難易度の低い手順で恐縮です。
Netlifyでデプロイ
Netlifyにアカウントを作り、作成されたパッケージ(zipではない方)をアップロードするだけです。
そうすることで、WebAssembly (Wasm)の技術を使っているので、初回ロード時に時間がかかります。
完成イメージとして、私が作成したゲームのリンクを貼っておきます。
まとめ
ここまでお読みいただきありがとうございました。
旅の最中にscriptを随時更新しながらゲームを作成するのは新しい体験でした。
写真とテキストを同時に視聴することで、これまでにない思い出の振り返りができるのではないかと思っています。個人的にはすごく気に入っています。
将来的には、GUIだけで、個人の思い出をノベルゲーム化できるサービスが出てくるんじゃないかという気すらしています。
興味を持った方はぜひ試してみてください。
Discussion