Ren'Py memo

Ren'Pyの個人的なメモ

ルビ(ふりがな)をオンオフできるようにする

引用
https://www.reddit.com/r/RenPy/comments/1gthq3l/enablingdisabling_text_tags/
https://ja.renpy.org/doc/html/text.html#ruby-text
https://ja.renpy.org/doc/html/custom_text_tags.html

ルビの設定
screens.rpy

style ruby_style is default:
    size 30
    yoffset -50
    color None

style say_dialogue:
    ruby_style style.ruby_style

永続変数の設定
options.rpy

default persistent.ruby_pref = False

設定画面を作る
screens.rpy

        if preferences.language == None:
            vbox:
                style_prefix "radio"
                label _("ふりがなの有無")
                null height 30
                hbox:
                    textbutton _("あり") action SetVariable("persistent.ruby_pref", True), Function(gui.rebuild)
                    null width 10
                    textbutton _("なし") action SetVariable("persistent.ruby_pref", False), Function(gui.rebuild)

ルビの設定
options.rpy

        def ruby_tag(tag, argument, contents):
            if persistent.ruby_pref:
                return [
                        (renpy.TEXT_TAG, u"rt"),
                    ] + contents + [
                        (renpy.TEXT_TAG, u"/rt"),
                    ]
            else:
                return ""

        config.custom_text_tags["ra"] = ruby_tag

バックログでスルーされないよう設定
screens.rpy

define gui.history_allow_tags = ("rb","rt","ra","alt","noalt","i", "k")

テスト
script.rpy

”傘{ra}かさ{/ra}”

Ren'Pyのスクリーンショット機能にウォーターマークを入れてみる

※この方法はスクリーンショットの度にウォーターマークがチラつくため、あまり実用的ではありません。内容としてはRen’Py内のSキーを押した時に使用されるスクリーンショット機能に画像を表示する動きを挟むものです。外部ソフトによるスクリーンショットでは実行されません。

1.スクリーンを用意する

screens.rpy

screen logo():
    timer 0.01 action Hide("logo")
    add "logo.png" xpos 10 ypos 10 # 画像の場合はこちら
    text "circle name" xpos 10 ypos 10 #テキストの場合はこちら

ウォーターマークを表示する用のスクリーンを用意する。logoの名前は変更可能。画像を用意する場合はaddの行を使い、textをコメントアウトする。テキストのみにする場合は逆の方法で。どちらも使う場合はどちらも残す。xpos yposなどで位置を調整。表示した後、時間経過で閉じるようにtimerを記述している。

2. Config変数に記述する

options.rpy(どこでもいい)

define config.pre_screenshot_actions =  [Hide("notify", immediately=True),Show("logo")]

引用:Config 変数 — Ren'Py Documentation

スクリーンショットを撮るときに呼び出されるアクションのリストの変数config.pre_screenshot_actionsに、上記で作成したスクリーンの表示を指定する。スクリーンショットに移したくない要素の一時的な非表示のために使用されるが、今回はウォーターマークの表示のために使う(Hide("notify")~はデフォルトで設定されている内容)

余談

    transform alpha_set:
        alpha 0.8

透明度を設定するtransformを作って add や text の一番後ろに at alpha_set(名前変更可)で調整することも可。

Winter Visual Novel Jam 2024のススメ

itch.io

※ この記事は非公式です。

itch.ioで開催されるノベルゲームジャムに参加してみませんか?という記事です。このジャムはオンラインで開催される「冬」がテーマのノベルゲームジャムで、「冬に関係するビジュアルノベル」であればソロでも、前から作りかけていたゲームでも参加が可能です。(流血描写・性的描写が露骨なものは不可です)

ジャムに参加するとゲームを見つけてもらえる確率が上がるので、短編を作ろうかなと思っている人がいらっしゃればおすすめです。

続きを読む

リンクに下線が出ない・uタグが効かない

出典:Unable to underline strings with a capitalized "P" - Lemma Soft Forums

フォントによって下線が出ない・途中で切れてしまう場合があるようです。
手っ取り早い解決法としては別のフォントに変えることをおすすめします。

ブラウザ版読み込みの高速化(バイトコードキャッシュ)

出典

ja.renpy.org

方法

注意:ブラウザはGoogleChromeを使っているため用語が別になるかも

1. Webからビルドしてブラウザで開くを選択
(既にビルドしている場合はブラウザで開くでも可)

2. ブラウザにゲームが表示されたらF12を押し、コンソールを開く

3. Consoleを押し、一番下の > に downloadBytecode() を貼り付けもしくは手打ち
(貼り付けが出来ず黄色い警告が出る場合がある、警告に順じてallow pastingと打ってエンターすれば貼り付けできるようになる)

4. bytecode-311.rpybがダウンロードされる

5. 元のプロジェクトのgameフォルダを開き、cacheフォルダにbytecode-311.rpybを移動

6. Webでもう一度ビルドする

Ren'Pyのクリップボードボイシング機能はいつからある?

クリップボードボイシングとは:ここではShift+Cを押すと画面内のテキストをクリップボードにコピーしてくれるRen’Pyの機能を指す。マウスでホバーした物も(それがテキストであれば)テキストの内容をコピーしてくれる。アクセシビリティのために作られた機能だが、最近は翻訳に大変便利。

Ren’Py6.99から実装。
Changelog (Ren'Py 6.11 - 6.99) — Ren'Py Documentation

6.99は2015年3 月25日にリリースされたため、(長期開発のゲームは別として)
2016年~2017年以降のRen’Py製ゲームなら標準実装されているはず。
https://www.renpy.org/release/6.99

あまりGUIを変更していないゲームであれば、AboutからMade with Ren'pyの後の数字を見ればどのバージョンか確認可能。

名前入力に関するTipsまとめ

lemmasoft.renai.us

以下は上記tipsの目次をDeepLで機械翻訳したもの(2024/09/09時点)
()←このカッコ内の文章ははtipsの備考を勝手に自分が加筆したものです。

  1. プレーン
  2. 少し複雑な名前入力
  3. 画面上のテキスト入力
  4. モーダルダイアログを使わずに直接テキストをRen'Pyに入力する
  5. キャラクターの名前と苗字を登録する
  6. 動的に変化する名前の登録方法
  7. PCユーザー名の登録方法
  8. レトロなオンスクリーンキーボード
  9. 名前と大文字・小文字の区別について(例:CATHIEと入力→変換してCathieにする)
  10. コンソール(入力したテキストがコンソールログのように表示される)
  11. 名前入力の点滅するテキストカーソルを削除する
  12. MC名の入力の際、NPC名をフィルタして回避する + その他の便利な機能 [Ren'Py 7.4.2]
  13. プロフィールを作成する
  14. ネームジェネレーター
  15. 何も入力しなければランダムな名前を選んでくれる入力画面
  16. 入力中にrenpy.inputの文字色を変更する
  17. タイピング中の効果音
  18. Renpy.Inputの文字数を追跡する画面
  19. 掛け算
  20. プレイヤーが入力すると、あらかじめ決められた単語が入力される
  21. renpy.inputに入力された数値を整数型に変換する
  22. 名前+代名詞の複合選択画面
  23. 材料を入力して1つ以上のレシピを検索
  24. リストから単語を検索する
  25. カスタマイズされた名前を大文字にする
  26. Ren'Pyまたは他の方法で.rpyファイルをエクスポートする(未解決?)
  27. renpy.inputのダイアログをナレーターではなく、キャラクターが発言する
  28. 名前を小文字に変換する

中国語のフリーフォントを探す

猫啃网
https://www.maoken.com/

中国語のフリーフォントまとめサイト

ライセンスと元々の配布場所が明記されており、
収録されている漢字がどれだけ網羅されているかも記載されているため便利です。
数は多くありませんが、ゴシック体・明朝以外の選択肢ができます。

中国語の漢字がゲーム内で表示されない問題を絶対回避したい!ゴシック体・明朝体でもOK!の場合はNotoシリーズフォントの使用をおすすめします。
https://fonts.google.com/?lang=zh_Hans

UnityでVRoidのアウトラインにマスクテクスチャを入れる

VRMに指ハートなどをさせるとアウトラインのゴミが目立つ時などのために

事前準備

・Unity Hub(本体・最新Ver)
・UniVRM(VRMファイルを読み込むために必要なpackage・最新Ver)
・編集するVRM(0.x)

今回使用するもの

【VRoid正式版用】指・肘・膝アウトライン調整マスクテクスチャ

booth.pm

死角撲滅・顔面マスクテクスチャ【VRoid】

booth.pm

続きを読む

無料版NEBを使用してVRoid製VRMにblendshapeを追加する

※2024/08/31時点での情報

VRMのBlendshapeコピーが出来るUnityプラグイン、NEBの備忘録。
5ドル買い切りでPro版の購入も可能です。

公式チュートリアル動画(英語)

www.youtube.com

事前準備

Ko-fiのアカウント(ログインが必要)
Unity hub
・制作済みのVRoidファイル(0.xでしかテストしていませんが1.0でも可能)

続きを読む

透過ありのムービーを使用する

追記(2024/10/27)
ビルド設定に build.classify("game/**.webm", "archive") の追記を忘れずに


資料
ムービー — Ren'Py Documentation
WebM + webM masking on mac : Ren'Py

1.ffmpegをインストールする

やり方と使い方はここより詳しい所がたくさんあるのでぐぐってね……

2.動画素材をお借りしてくる

sozaino.site
OKUMONO+Vさんの動画素材など~

3.動画をリサイズ(任意)

コマンドプロンプトとかターミナルを動画のある場所で呼びます
詳細はここより(略)ぐぐってね……

素材になる動画は割と大きめに作られがちなので先にリサイズします。
解像度と拡張子はアドリブでなんとか!ゲームと同じ解像度がおすすめです。

ffmpeg -i syutyusen_kuro.mov -s 1280x720 kuro.mov

4.マスク用の動画を作る

透過のために用意します。

ffmpeg -i syutyusen_kuro.mov -s 1280x720 -filter:v alphaextract mask.mov

5.合体する

これで出力されるwebmファイルがゲームで使うものになります。

ffmpeg -i kuro.mov -i mask.mov -filter_complex "hstack" -codec:v vp9 -crf 10 syutyusen_kuro.webm

6.動画を使用する

5で出力されたwebm動画をgameフォルダに入れます。
moviesフォルダを作って分けたい場合は"movies/syutyusen_kuro.webm"
みたいな感じでplayのところに指定します。
(imagesフォルダに入れる場合も指定しないと参照されないので注意)

image Movie1 = Movie(play='syutyusen_kuro.webm', side_mask=True, loop=True)

label:

    show Movie1
    a"ほにゃほにゃ"
    hide Movie1

GIFの場合

1. マスク動画を作る

元画像のgif 1.gif
マスクのgif mask.gif

 ffmpeg -i 1.gif -filter:v alphaextract mask.gif

2. ゲーム用の動画を出力

ffmpeg -i 1.gif -i mask.gif -filter_complex "hstack" -codec:v vp9 -crf 10 douga.webm
image Movie1 = Movie(play='douga.webm', side_mask=True, loop=True)

label:

    show Movie1
    a"ほにゃほにゃ"
    hide Movie1

ブックマークメモ

WebGL shader examples

webgl-shaders.com
例になるシェーダーのコードをまとめたサイト。最終更新は5年前ぐらい
ライセンスはCC BY-SA 4.0 DEED
(クレジット表記あり・改変する場合は同じ条件のライセンスで頒布が必要)

Awesome WebGL

github.com
WebGL関係で役立ちそうなリスト

CC0をShaderToyで検索したURL

www.shadertoy.com
CC0であることを明記しているシェーダーの検索リンク
ShaderToyで著者が明記していない場合デフォルトで設定されるライセンスは、
CC BY-NC-SA 3.0 DEED(表示 - 非営利 - 継承 3.0 非移植)になる。非商用
ShaderToy利用規約https://www.shadertoy.com/terms