見出し画像

非プログラマのRen'Pyノート:ビルド(パッケージング)の基本とポイント

ビルドとは何なのか? 人によっては「パッケージング」とか「ROM版」と言ったりするし、自分もよく分かってないんですが「ビルドしないと、一般の人=エディタやエンジンをDLしてない人は遊べない」認識でいます。つまり公開する=ビルド必須と言って間違いないでしょう。多分。

ノベルゲームエンジンRen'Py(以下renpy)にはもちろん公式マニュアルがあり、ビルドについても記載されているのですが、記事内容はめっちゃ難しくて「つまりどうしたらビルドできるのか」初見ではまっったくわかりません

しかし、上記がまっったく理解できない私でもビルドは簡単にできますので、最低限の基本と気をつけるポイントについて記しておきます。

本記事後半では、ビルドの基本以外にファイルを暗号化する方法やブラウザ版についても触れているので、ビルド前に一旦最後までご一読くださると作業がスムーズに進められるかも知れません。

ビルド以前にrenpyでこれからゲーム作る方は上記記事からご覧ください


ランチャーを数クリックすればビルド完了

まずビルドしたいプロジェクトをランチャー左から選択し、右中央やや下の「配布物のビルド」クリックで行います。

押すと、データをチェックしてくれてスタックバグなどがある場合はちゃんと止めてくれます。エラーが出て怒られた場合はゲームを最初から最後まで遊んでから再トライしてみましょう。

バージョン名などに規格外の文字(スペースや全角文字等)があるとビルドしてもらえません。エラーが出て怒られますので、これも直して再トライしましょう。

チェックボックスON/OFFの注意点

エラーが出なかった場合、このウィンドウに進みます。ここまできたら、右下の「ビルド」を押せばパッケージができます。デフォルトでzipにされてしまう親切設計で、renpyフォルダ内に生成されているはずです。

なお、自分は基本的に左下は無視して右上、パッケージの種類は希望のものにチェックを入れます。

気をつけないといけないのは右下「設定:」の「from節をcallステートメントに加える」、これ公式を検索すると「やっておいた方がいい」と記されているのですが、初心者こと私の場合これにチェックを入れると、callのある部分が全部書き換えられてしまってリカバリ方法がわからなくなり大変だったので、renpyやゲーム開発のことがよくわからない場合は入れないのをおすすめします。

202309追記:https://ja.renpy.org/doc/html/label.html#special-labels
上記マニュアルによると「公開したゲームを後から更新する場合」は入れないとセーブデータが壊れる可能性があるとのことなので「内部でちょっとチェックする」ときは入れず、「ゲームをストアにアップする最終データ」ならチェックを必ず入れるのが良いと思います!

暗号化? アーカイブ化? する方法

しかし単に上記の方法をなぞるビルドでは、テキストや画像ファイルがユーザーから丸見えの状態になってしまいます。このままでは一枚絵(CG/スチル)でネタバレになるし、フリー音源やフォント類が二次配布に当たらないか心配です。

renpyでは、ビルド前に特定の箇所を書き換えるとファイルを見えないようにすることができます。正確に言うと手練プログラマがあらゆる技術を駆使すれば解読できるらしいんですけど、少なくとも一般のお客さんからはまず見れなくなりますので安心です。

なお、自分は「暗号化」と呼んでいますがこの文言が正しいかは調べてもちょっとわからなかったのと、renpyでは「アーカイブ化」として以下マニュアルにまとめられています。しかし……、

これを読んだだけでは何のことかまっったくわからない初心者こと私のために、手順と日本語とメモを残しておきます。書き換える場所はoption.rpyの下の方にあります。


    ## classify(分類)を None に設定したファイルは配布物から除外されます。
    ##これはつまりtestファイルとか、開発時だけに必要なものをビルド時に強制的に省く 便利だぜ

    build.classify('**~', None)
    build.classify('**.bak', None) ##つまり、末尾が.bakファイルは除外される
    build.classify('**/.**', None)
    build.classify('**/#**', None)
    build.classify('**/thumbs.db', None)

    ##↑ここまで公式のまま ちなみにrpycファイルは削除したらかなりあかんやつみたいです
    #https://ja.renpy.org/doc/html/build.html#archives

    ## アーカイブ(書庫化・暗号化)したいファイルは 'archive'(または任意の文字列)に分類します。
    ## build.classify('game/tl', 'archive')#フォルダごと不可視にしたい時この書き方だとうまくいかない  

    build.classify('**.png', 'archive') #フォルダ指定しなくてもこれで全体をいい感じにどうにかできる
    build.classify('**.jpg', 'archive')
    build.classify('**.webm', 'archive') #動画
    build.classify('game/**.ttf', 'archive')#フォントは著作権あるものもあるので不可視化推奨
    build.classify('game/**.ttc', 'archive')
    build.classify('game/**.otf', 'archive')   
    build.classify('game/**.rpy', 'archive')
    build.classify('game/**.rpyc', 'archive') #一応……    
    build.classify('**.mp3', 'archive')
    build.classify('**.wav', 'archive')

    ## 以下公式のまま##############################
    ## documentation(ドキュメント)に指定したパターンと一致するファイルは mac
    ## 用アプリのビルドで複製され、app と zip のどちらにも含まれるようになります。

    build.documentation('*.html')
    build.documentation('*.txt')


ブラウザ版ビルドはrenpy7なら可能

renpyではwin、Linux、Mac版だけでなくブラウザ版もビルドすることができますが、これは2023年2月現在renpy7のみ+ベータ版となっています。

自分もブラウザ版を作ってアップロードしてみたことがあるんですがどこがベータなのか? よく分かっていません。問題なく動いて遊べました。

なのでブラウザ版に挑戦してみたいという方はrenpy7最新版をDLして挑戦してみるのも良いかと思います。以下記事に詳しく、いい感じでまとめられています。

renpy「以外」のビルドに関する注意点

ノベルゲームを作るにあたり、過去色々なエディタを使ってみたことがあるのですが、「ビルド時点で問題が発生しかねない」ものも割とありました。

  • エディタ開発者に頼まないとビルドしてもらえない

  • 開発時プレビューとビルドの結果が違う

  • 一定の容量を超えるとパッケージできない

  • モバイル版はムービーが再生できなくなる

いずれも数年前に遭遇したものですので現在は改善されているかも知れませんが、これらの罠は「開発初心者である場合、上記いずれもゲーム開発終盤になって初めて発覚して、完成したのに配布できない絶望の地獄に叩き落とされる可能性がある」ことかと思います。悲劇の根幹として「エディタ・エンジン開発者に悪意はないし、そういう人は大体つよめのプログラマなのでプレビューとビルドが異なる可能性も熟知しているが、初心者は大体最初から順番になぞって作ることが多く、ビルドの意味もよくわかんないので、まさか配布直前に新たな問題が発生すると思い至らない」ことからくるミスマッチが挙げられるでしょう。

「開発環境と配布物(ビルド)はイコールとは限らない」そして「ノベルゲームエディタ・エンジンは企業ではなく個人が開発しているものが多い」を念頭に、新しいエディタやエンジンに挑戦される場合は、序盤や途中まで動くものを作ってみてまず配布時に発生しそうな問題がないか、序盤で実際にビルドしたりマニュアルを読み検証・対策しておくことを強く推奨します。

この記事が気に入ったらサポートをしてみませんか?