《夏末盛开的花》自定义指南

English Guide >

1. 关于语言补丁

《夏末盛开的花》官方支持语言补丁。这意味着,用户可以自由地修改和添加所需的语言,并在游戏内随心切换。
此外,游戏还提供了多种辅助语言补丁的功能。以下指南可供您在为《夏末盛开的花》制作非官方语言补丁时参考。

 

1-1. 生成语言

您可以使用Ren’py的“生成翻译”功能为《夏末盛开的花》创建基本的语言模板。在生成语言时,请务必记住“语言代码”。语言代码通常由不含空格的小写英文字符串组成。例如,英语(English)可以是“english”,简体中文(Simplified Chinese)则可以是“schinese”
需要注意的是,作为基础语言的韩语,其语言代码为不带引号的 None

 

1-2. 注册语言

要将新语言应用于《夏末盛开的花》的系统,您必须先注册该语言。当您在未注册语言的模板中注册语言,或将已注册语言的补丁放入游戏时,《夏末盛开的花》会根据用户系统的语言设置来匹配游戏语言。
此外,通过系统内置的语言选择器,用户也可以自由控制语言。

为此,请创建一个.rpy文件,并将其放置在 tl/(语言代码文件夹)/lang_setting.rpy 的路径下。在该.rpy文件的最顶端,必须包含以下格式的源代码:

init -1:
    register_language(name="该语言的名称", id="语言代码", subtitle_text="①语言的英文名称", uifont_path="UI中使用的默认字体路径",
                      dialoguefont_path="对话框中使用的默认字体路径", breaking_method="②换行预设", locale="③系统区域设置的语言部分", script="④系统区域设置的script部分", 
                      region=("⑤系统区域设置的地区部分1", "系统区域设置的地区部分2..."), version="⑥版本")

 

①语言的英文名称:如果像“English”这样不需要额外指定英文名称,请输入表示“空”的 None

②换行预设:可在此链接中查看。通常,“unicode” 适用于大多数语言。

 

各语言的系统区域设置可在此链接中查看。下面将以系统区域设置为 “ko-kr” 为例进行说明。

③系统区域设置的语言部分:在此处填写语言部分,即 “ko”

④系统区域设置的script部分:对于大多数语言,通常只需填写表示“空”的 None 即可,此项仅在macOS上使用。在Windows环境中,此部分不被使用也不存在,但在macOS中,虽然大多数语言没有此部分,但像 “zh-hans-cn” 这样的少数语言是存在的(此时在Windows上可能只是 “zh-cn”)。这里的 “hans” 就是script部分。请填写这部分内容。如前所述,如果系统区域设置是 “ko-kr”,则在script部分直接填写不带引号的 None,表示该项为空。所有使用script的语言,可参考此链接中的 Table B-4 进行确认。

⑤系统区域设置的地区部分:在此处填写后面的地区部分,即 “kr”

 

综上所述,当系统区域设置为 “ko-kr” 时,最后三个部分将是 “ko”, None, “kr”。但对于韩语,其实无需识别 “kr”,因此建议用 None 替代 “kr”。这样就可以输入为 “ko”, None, None
如果需要识别的地区部分超过一个,可以像 (“这样”, “的”, “形式”) 一样添加多个地区。
所有与系统区域设置相关的代码都请使用小写字母。

 

字体可以放置在 game/tl/(语言代码)/fonts 路径下,也可以直接使用《夏末盛开的花》原有的字体路径。
示例如下:

 

韩语:

init -1:
    register_language(name="한국어", id=None, subtitle_text="Korean", uifont_path="fonts/NanumSquareB.ttf",
                      dialoguefont_path="fonts/NanumSquareRoundB.ttf", breaking_method="korean-with-spaces", locale="ko", script=None, 
                      region=None, version="1.0")

英语:

init -1:
    register_language(name="English", id="english", subtitle_text=None, uifont_path="fonts/NanumSquareB.ttf",
                      dialoguefont_path="fonts/NanumSquareRoundB.ttf", breaking_method="unicode", locale="en", script=None, 
                      region=None, version="1.1")

简体中文:

init -1:
    register_language(name="简体中文", id="schinese", subtitle_text="Simplified Chinese", uifont_path="tl/schinese/fonts/DreamHanSans.ttf",
                      dialoguefont_path="tl/schinese/fonts/975maru.ttf", breaking_method="korean-with-spaces", locale="zh", script="hans", 
                      region=("cn", "sg"), version="1.0")

 

最后的⑥版本是一个区分符,当语言补丁版本更新时(例如,字符串有变动时),可以修改它以便确认。

 

1-3. 设置字体

接下来,需要为UI设置字体。

《夏末盛开的花》UI元素的字体可以通过 lang_style.rpy 进行调整。
可从以下链接下载模板。

lang_style.rpy 模板下载 (3.0+)

请适当修改该 lang_style.rpy 文件,并将其放置在 tl/(语言代码文件夹)/lang_style.rpy 的路径下。
在该模板中,所有 translate (language name) 部分的 (language name) 都应替换为要应用的语言代码。
例如,如果语言代码是 “english”,那么 translate (language name) style default: 应改为 translate english style default:

 

1-4. 应用UI图片

《夏末盛开的花》的UI大部分由图片构成。
可从以下链接下载UI PSD模板。

《夏末盛开的花》UI模板下载 (3.0+)

默认情况下,《夏末盛开的花》中,当鼠标悬停(hover)在按钮上时,会使用半透明的图片。悬停状态的图片(除非图层名称中另外指定了透明度值)透明度为基础图片的50%

 

1-5. 应用视频字幕

为了支持《夏末盛开的花》中“最后的愿望”烟花过场演出以及双语字幕,需要根据不同语言应用相应的视频字幕。
这同样可以通过修改模板轻松实现,具体应用方法和自定义模板可在后文的 1-9. “最后的愿望”过场演出与视频自定义字幕系统 中找到并下载。

 

1-6. 不直接翻译英文原文的字符串

在翻译文件 common.rpy 中,有几个英文短语不应将原始字符串视为 “old” 字符串,而应将下面提供的“新的基准字符串”视为新的 “old” 字符串,并在此基础上编写您的 new 字符串。

1.
old "Saved screenshot as %s."

(原文)

new "%s"

(新的基准字符串)

 

2.
old "This save was created on a different device. Maliciously constructed save files can harm your computer. Do you trust this save's creator and everyone who could have changed the file?"

(原文)

new "This save was created on a different device.{vspace=1}{size=23}Save files from untrusted sources may harm your device.\nYou may see this message if the save file from Steam Cloud was created on a different device.\nDo you trust this save and want to continue?{/size}"

(新的基准字符串)

 

《夏末盛开的花》中实际使用的韩语原文如下:

new "다른 PC에서 생성된 저장 파일입니다.{vspace=1}{size=23}신뢰할 수 없는 출처의 저장 파일은 PC에 해를 끼칠 수 있습니다.\nSteam Cloud의 저장 파일이 다른 PC에서 생성되었을 경우 이 메시지가 보일 수 있습니다.\n이 저장 파일을 신뢰하며, 계속 진행할까요?{/size}"

 

3.
old "Do you trust the device the save was created on? You should only choose yes if you are the device's sole user."

(原文)

new "Do you trust all the saves made on this device?{vspace=1}{/size}{size=23}Only click the confirm button to continue if the save file was created by another device, \nnot downloaded from an unknown web source or elsewhere. \nOnce you click the confirm button, any save file created on this device will be loaded without asking.{/size}"

(新的基准字符串)

 

《夏末盛开的花》中实际使用的韩语原文如下:

new "이 PC의 모든 저장 파일을 신뢰할까요?{vspace=1}{size=23}출처를 모르는 웹 등에서 다운로드한 것이 아닌,\n다른 PC에서 직접 생성한 저장 파일인 경우에만 확인 버튼을 눌러 계속하세요.\n확인 버튼을 누르면, 앞으로 이 PC에서 생성된 저장 파일은 질문 없이 불러옵니다.{/size}"

 

1-7. 应以韩语译文为原文进行翻译的字符串

screens.rpy 中的部分字符串,为了防止因《夏末盛开的花》版本更新导致在其他语言中出现乱码等问题,其原文被设置为英文而非韩文,在游戏语言设置为韩语时,系统会将其转换为韩语显示。
因此,原始的英文字符串可能无法完全传达韩语字符串的所有含义,翻译时应以韩语原文作为“old”字符串的基准。

以下是所有相关的字符串列表。

old "Language Switch Shortcuts"
new "언어 전환 단축키"
old "Multi-language Subtitles"
new "다중 언어 자막"
old "Labs"
new "실험실"
old "Flowers Blooming: Main Game"
new "‘여름의 끝에 피는 꽃’ 본편"
old "You are currently running the Main Game of Flowers Blooming \nat the End of Summer. Thank you sincerely for your purchase and support."
new "현재 ‘여름의 끝에 피는 꽃’ 본편을 실행 중이에요.\n‘여름꽃’을 구매하고 후원해주셔서, 진심으로 감사드립니다."
old "Flowers Blooming: Steam Edition"
new "‘여름의 끝에 피는 꽃’ 스팀 에디션"
old "You are currently running the Steam Edition of Flowers Blooming \nat the End of Summer. Thank you sincerely for your purchase and support."
new "현재 ‘여름의 끝에 피는 꽃’ 스팀 에디션을 실행 중이에요.\n‘여름꽃’을 구매하고 후원해주셔서, 진심으로 감사드립니다."
old "This Supporter’s Edition includes achievements, cloud saves, and \nSteam Points Shop rewards like Trading Cards, Avatars, and Profile Backgrounds."
new "도전 과제와 스팀 클라우드 등 편의 기능이 포함된 후원판입니다.\n트레이딩 카드, 아바타, 프로필 배경 등 포인트 상점 아이템을 포함합니다."
old "Flowers Blooming: Design Works"
new "‘여름의 끝에 피는 꽃’ 디자인 웍스"
old "The official digital artbook, featuring behind-the-scenes \nstories, setting details, concept art, and storyboards from development."
new "‘여름의 끝에 피는 꽃’의 공식 디지털 아트북입니다.\n개발 비화, 설정, 컨셉 아트, 스토리보드 등을 포함합니다."
old "Flowers Blooming: Soundtrack"
new "‘여름의 끝에 피는 꽃’ 사운드트랙"
old "The official OST with 16 tracks, \nincluding two previously unreleased bonus songs."
new "‘여름의 끝에 피는 꽃’의 공식 사운드트랙입니다.\n본편에 미공개된 두 곡을 포함, 총 16곡입니다."
old "Flowers Blooming: Wallpaper"
new "‘여름의 끝에 피는 꽃’ 디지털 월페이퍼"
old "Official wallpapers showcasing event CGs, \nincluding some that do not appear in the main game."
new "‘여름의 끝에 피는 꽃’의 공식 디지털 월페이퍼입니다.\n본편에 미공개된 이벤트 CG를 포함합니다."
old "Open"
new "열기"
old "Purchase"
new "구매"
old "Owned"
new "보유 중"
old "Play"
new "실행"
old "Open Design Works Now"
new "디자인 웍스 바로 열기"
old "View in Folder"
new "폴더에서 보기"
old "DLC installed but path not found.\nConfirm files haven’t been deleted, moved, or renamed."
new "DLC가 설치되었으나, 설치된 경로를 찾지 못했습니다.\n파일을 삭제 혹은 이동, 혹은 파일의 이름을 바꾸지 않았나 확인해 주세요."
old "DLC installed but path not found.\nConfirm files haven’t been deleted, moved, or renamed.\nThis may occur if your Free Edition and DLC paths differ.\nWould you like to launch the Steam Edition instead?"
new "DLC가 설치되었으나, 설치된 경로를 찾지 못했습니다.\n파일을 삭제 혹은 이동, 혹은 파일의 이름을 바꾸지 않았나 확인해 주세요.\n이는 현재 실행 중인 Free 버전과 설치된 경로가 달라서 그럴 수 있어요.\n대신 Steam 에디션을 실행할까요?"
old "Can access DLC folder but files are missing.\nConfirm files haven’t been deleted, moved, or renamed.\nOpen installation folder instead?"
new "DLC가 설치된 폴더는 열 수 있으나, 파일을 찾지 못했습니다.\n파일을 삭제 혹은 이동, 혹은 파일의 이름을 바꾸지 않았나 확인해 주세요.\n대신 설치된 폴더를 열까요?"
old "Game and soundtrack may have different installation paths.\nPlease check each path separately in Steam."
new "게임이 설치된 경로와 사운드트랙이 설치된 경로가 다를 수 있습니다.\n이 때는 Steam에서 각각의 설치 경로를 확인해 주세요."
old "Original expected path"
new "원래 존재해야 하는 경로"
old "This save file was created with a mod that is not currently installed.\nTo load this save file, you need to install the mod first."
new "{size=35}현재 설치되지 않은 모드에서 저장된 파일입니다.\n이 저장 파일을 불러오려면, 먼저 해당 모드를 설치해야 합니다.{/size}"
old "This save file has the following mod applied:"
new "이 저장 파일에 적용된 모드:"
old "The currently applied MOD file does not have a translation for this language ([lang_current]).\nText may appear broken.\nPlease download the latest version of the MOD or a MOD file translated to this language."
new "현재 적용된 MOD 파일에는, 해당 언어([lang_current])의 번역이 존재하지 않습니다.\n텍스트가 깨져 보일 수 있습니다.\nMOD의 최신 버전이나, 해당 언어로 번역된 MOD 파일을 다운로드해 주세요"

 

1-8. 其他可能有用的信息

1-8-1. 注释 (Tooltip)

您可以为特定词语添加说明性的悬浮注释。这项工作可以在翻译用的.rpy文件中进行。
例如,要在以下译文的 “comment” 一词上插入悬浮注释,请按以下步骤操作。

translate english prologue_466c17b0:

    # "흘러가는 시간 속에서, 기억은 조각나 파편이 되기 마련이다. "
    "Hello? This is comment test.\nThank you!"

1. 用标签包裹要添加注释的单词

首先,用 {cmt=(注释代码)}{/cmt} 将需要显示注释的单词 “comment” 包裹起来。
注释代码必须是唯一的,不能与其他语言或其他注释的代码重复。示例如下:

translate english prologue_466c17b0:
    
    # "흘러가는 시간 속에서, 기억은 조각나 파편이 되기 마련이다. "
    "Hello? This is {cmt=english_466c17b0}comment{/cmt} test.\nThank you!"

2. 注册注释

在之前提到的 lang_setting.rpy 文件中,新建一个python块,并添加以下格式的源代码来注册注释。

init python:
    TooltipComment("(注释代码)", "(注释内容)")

应用后,变量将如下所示。注释代码可以输入任何不重复的代码。

init python:
    TooltipComment("english_466c17b0", "This is the content of the comment.")

如果要注册多个注释,可以保持Python块不变,分多行注册注释,如下所示:

init python:
    TooltipComment("english_466c17b0", "This is the content of the comment.")
    TooltipComment("english_3af24308", "This is the content of the comment. (2)")
    TooltipComment("english_06bfe242", "This is the content of the comment. (3)")
    # ... (以此类推)

这样,在对应的对话框中,将鼠标光标悬停在单词上时就会显示注释。

 

1-8-2. 字体授权(许可证)

您可以添加并注册字体的版权(授权/许可证)信息。
字体的授权文件可以 .txt 格式放置在 game/License/Fonts 文件夹中。

 

init -2 python:
    register_font(name="(字体名称)", font_path="(字体路径)", license_path="License/Fonts/(文件名).txt")

示例如下:

init -1:
    register_font(name="Roboto", font_path="tl/english/fonts/Roboto.ttf", license_path="License/Fonts/Roboto.txt")

这样,授权信息就会被添加到“制作人员”界面的“字体授权”屏幕中。

 

1-8-3. 添加制作人员

只需在 game/tl/(语言代码文件夹)/lang_developer/ 文件夹中添加图片,即可为各语言版本添加语言补丁的制作人员名单。
该图片将在主菜单的“制作人员”选项卡内的“翻译人员”选项卡中显示。

例如,当语言代码为 ‘schinese’(简体中文)时,如果当前游戏语言也设置为中文,系统将显示 “schinese.png”。如果当前《夏花》的语言设置为韩语,则会显示 “none.png”。(在此,韩语的语言代码被视为小写的 ‘none’。)此外,您还可以包含一张通用的制作人员名单图片 “others.png”,用于在其他所有语言中显示。“others.png” 的内容最好使用英文书写。

当然,语言补丁的开发者不必考虑所有情况,只需包含与自己添加的语言相对应的制作人员名单图片即可。例如,如果开发者制作的是 ‘schinese’(简体中文) 的语言补丁,那么只包含 “schinese.png” 就足够了。这样,在所有语言环境下都会显示 “schinese.png”


语言代码为 ‘schinese’ (简体中文) 时,制作人员名单图片翻译的示例。

此外,您还可以通过在 lang_setting.rpy 文件中添加以下格式的源代码,将您自己的网页链接添加到制作人员名单中。

init -4:
    $ developer_webpage['(语言代码)'] = {(网站图标1): '(网页链接1)', (网站图标2): '(网页链接2)', ...}

网站图标为 43×43 大小的图片,《夏末盛开的花》默认提供以下4种模板:

developer_webpage_icons['x']
developer_webpage_icons['x_oldbird']
developer_webpage_icons['steam']
developer_webpage_icons['others']

另外,网站图标部分除了输入上述的 developer_webpage_icons[‘x’] 等图标模板外,如果需要,您也可以直接输入自定义的43×43图片路径,例如 ‘tl/schinese/gui/github.png’。需要注意的是,只有自定义路径需要用单引号括起来,而 ‘developer_webpage_icons…’ 等模板则不需要。

 

以下是为《夏末盛开的花》内置的 ‘schinese’ (简体中文) 翻译添加网页链接的示例图片和源代码。

init -4:
    $ developer_webpage['schinese'] = {developer_webpage_icons['x']: 'https://x.com/test', developer_webpage_icons['others']: 'https://test.com/'}

 

您可以从以下链接下载制作人员名单的PSD模板文件。
图片文件的优势在于可以自由修改,因此除了标题部分外,内容的布局仅供参考,您可以随心所欲地进行修改。

staff_template.psd 模板下载

 

1-8-4. 想在语言补丁中添加源代码时

建议您将文件添加到 game/tl/(语言代码文件夹)/ 目录下,并命名为 lang_(脚本名).rpy
在tl文件夹内放入与语言翻译无关的额外.rpy文件时,请务必在文件名前加上前缀 “lang_”

 

1-9. “最后的愿望”过场演出与视频自定义字幕系统

注意:如果 game/tl/(语言代码文件夹)/video/lastwish.webm (=预先嵌入字幕的视频文件) 已存在,“最后的愿望”烟花过场演出将优先播放该视频,而不会显示自定义字幕。若要自定义“最后的愿望”的字幕,语言补丁内不应包含 lastwish.webm 文件。

自《夏末盛开的花》四周年更新起,新增了可应用于视频演出等的自定义字幕功能。
通过此功能,在制作语言补丁时,不再需要直接修改视频文件(特别是“最后的愿望”烟花过场演出),只需修改字幕即可实现支持。
字幕可通过“列表”无限添加(详见 1-9-4. 详细说明:向预定义字幕列表添加字幕),因此也可以用作对字幕内容进行补充说明的注释等。

此外,这在下文“实验室功能”中介绍的双语字幕(Multi-Language Subtitles)功能中也同样有用。也就是说,当视频/图片演出中已经包含特定语言(如原文韩语)的文字时,可以设置在该演出中默认不显示字幕。只有当双语字幕功能开启,且选择了其他语言(如中文、英文等)时,才显示字幕。
在制作语言补丁时,无需关心这些细节,只需在下面提供的模板中修改语言代码和实际字幕内容,即可使语言补丁完美支持双语字幕。

下面提供的 lang_subtitle.rpy 模板是一个已经完成了字幕样式、ID等所有预设的完整模板。
您只需在该 lang_subtitle.rpy 模板中,将所有 (language name) 部分统一修改为实际的语言代码,并将 {‘text’: 之后的文本修改为对应语言的字幕,然后将其添加到 game/tl/(语言代码文件夹)/lang_subtitle.rpy 路径下,即可完成在“最后的愿望”烟花过场演出等场景中的视频翻译字幕应用。

lang_subtitle.rpy 模板下载(3.0+)

 

以下从 1-9-1. 详细说明:字幕设置与样式指定 开始的内容,对于仅仅制作语言补丁而言,只需修改 lang_subtitle.rpy 的内容即可,通常不必了解。

但是,如果您想了解字幕的详细自定义方法,请参考以下内容。

 

1-9-1. 详细说明:字幕设置与样式指定

'settings': {
    'id': '字幕ID', 'language': '语言代码',
    'style': {'pos': (字幕X坐标, 字幕Y坐标), 'anchor': ①(字幕中心点X位置, 字幕中心点Y位置), 'bg': ②(字幕背景X间距, 字幕背景Y间距), 'text_style': '③字幕样式', 'text_font': '④字幕字体路径', 'enabled': ⑤是否启用},
    'alt_style': {'pos': (字幕X坐标, 字幕Y坐标), 'anchor': ①(字幕中心点X位置, 字幕中心点Y位置), 'bg': ②(字幕背景X间距, 字幕背景Y间距), 'text_style': '③字幕样式', 'text_font': '④字幕字体路径', 'enabled': ⑤是否启用}
}

id:输入字幕的唯一ID。可以存在多个具有相同ID但不同语言的字幕。

language:输入该字幕将要显示的语言代码(例如 None, ‘english’, ‘schinese’)。None被视作基础语言韩语。

style:定义字幕的主样式,即通常情况下显示的样式。如果在此处输入 None,则视为不使用字幕样式,字幕将不会显示。如果只想显示 alt_style(例如,仅在双语字幕中作为辅助字幕时),可以设为None来完全不指定样式。

alt_style:字幕的备用样式。当启用下文将要介绍的双语字幕(Multi-Language Subtitles)功能,且该字幕作为辅助字幕显示时,会使用此样式。如果在此处输入 None,则视为不使用字幕样式,字幕将不会显示。

 

①(字幕中心点X位置, 字幕中心点Y位置):指定字幕的中心点位置。范围是0.0到1.0。例如,如果字幕坐标为(300, 300),而此值为(0.0, 0.0),则字幕将从(300, 300)点开始向右、向上对齐显示。但如果此值为(0.5, 0.5),则字幕将以(300, 300)点为基准居中对齐显示。

②(字幕背景X间距, 字幕背景Y间距):可用于为字幕添加黑色背景。通过输入X间距(=padding)和Y间距,例如输入(10, 10),字幕背后会生成一个向四周延伸10像素的黑色背景。

③字幕样式:可以输入通过Style语句定义的样式名称。Style语句可以指定 size(字幕大小)、color(字幕颜色)、font(字幕字体路径)、align(对齐方式)、xsize(字幕最大宽度) 等样式。例如,如果存在一个名为 style custom_subtitles_text_style: 的Style语句,则此处可输入 ‘custom_subtitles_text_style’。该Style语法的用法可参考上面提供的 lang_style.rpylang_subtitle.rpy 文件。

④字幕字体路径:如果在③字幕样式中指定的Style语句里已经声明了字体,此处通常填写 None 以忽略。此外,对于 alt_style,可以填写 ‘language_font’,这样可以动态应用该字幕指定语言代码的默认对话框字体。如果Style语句中未声明字体,也可以在此处用引号手动输入游戏内的自定义字体路径。

⑤是否启用:输入 True 或 False 即可。可用于测试,通常输入True。

 

1-9-2. 详细说明:字幕内容与同步指定
'subtitles': (
    {'text': '字幕文本', 'time': (字幕开始时间(秒), 字幕结束时间(秒)), 'fade': (字幕淡入时间(秒), 字幕淡出时间(秒)), 'warper': ①('字幕淡入缓动方式', '字幕淡出缓动方式')},
    {'text': '字幕文本', 'time': (字幕开始时间(秒), 字幕结束时间(秒)), 'fade': (字幕淡入时间(秒), 字幕淡出时间(秒)), 'warper': ①('字幕淡入缓动方式', '字幕淡出缓动方式')}
    # ...可继续添加
)

①(‘字幕淡入缓动方式’, ‘字幕淡出缓动方式’):此部分用于指定字幕出现和消失的缓动函数。支持 ‘linear’, ‘ease’, ‘easeout’, ‘easein’ 共四种方式。

‘linear’:没有任何缓动的基本淡入/淡出。
‘ease’:开始慢,中间快,结束时再变慢的淡入/淡出。
‘easeout’:开始快,结束时变慢的淡入/淡出。
‘easein’:开始慢,结束时变快的淡入/淡出。

 

1-9-3. 详细说明:合并字幕设置与内容
init -3:
    $ my_custom_subtitles = {
        'settings': {
            'id': 'custom_subtitles', 'language': 'english',
            'style': {'pos': (640, 7), 'anchor': (0.5, 0.5), 'bg': None, 'text_style': 'custom_subtitles_text_style', "text_font": None, 'enabled': True},
            'alt_style': {'pos': (640, 45), 'anchor': (0.5, 0.5), 'bg': (10, 5), 'text_style': 'custom_subtitles_text_alt_style', "text_font": 'language_font', 'enabled': True}
        },
        'subtitles': (
            {'text': 'Test1', 'time': (1.0, 2.0), 'fade': (0.3, 0.3), 'warper': ('linear', 'linear')},
            {'text': 'Test2', 'time': (2.0, 3.0), 'fade': (0.3, 0.3), 'warper': ('linear', 'linear')},
            {'text': 'Test3', 'time': (3.0, 4.0), 'fade': (0.3, 0.3), 'warper': ('linear', 'linear')}
        )
    }

style custom_subtitles_text_style:
    align (0.5, 0.5)
    color '#ffffff'
    font 'fonts/NanumSquareEB.ttf' 
    size 20
    xsize 600

style custom_subtitles_text_alt_style:
    align (0.5, 0.5)
    color '#ffffff'
    size 15
    xsize 500

如上述字幕示例所示,需要将 ‘字幕设置与样式(settings: { … })’‘字幕内容与同步(subtitles: ( … ))’ 合并为一个变量来指定字幕。

在该示例中,当《夏末盛开的花》的语言设置为英语(english)时(style),字幕会显示在(640, 7)的位置并居中对齐,通过 ‘custom_subtitles_text_style’,字幕颜色为白色,字体大小为20px,最大宽度为600像素,并应用了’NanumSquareEB.ttf’字体。
另外,当《夏末盛开的花》的语言设置为其他语言,且英语在双语字幕中被设为显示语言时(alt_style),字幕会显示在(640, 45)的位置并居中对齐,带有横向10像素、纵向5像素的背景,通过 ‘custom_subtitles_text_alt_style’,字幕颜色为白色,字体大小为15px,最大宽度为500像素,并且不单独指定字体,而是直接使用英语(english)的默认对话框字体。

 

1-9-4. 详细说明:向预定义字幕列表添加字幕

在通过上述方式定义了字幕变量后,可以使用 .append() 语法将其添加到预定义的视频自定义字幕列表中。
所有预定义的视频自定义字幕列表如下:

lastwish_subtitle_list
edmovie_subtitle_list
yef1_subtitle_list
yef2_subtitle_list
yef3_subtitle_list
yef4_subtitle_list
yef5_subtitle_list
yef6_subtitle_list
yef7_subtitle_list
yef8_subtitle_list
yef9_subtitle_list
yef10_subtitle_list
yef11_subtitle_list
yef12_subtitle_list
yef13_subtitle_list
yef14_subtitle_list
yef15_subtitle_list
yef16_subtitle_list
yef17_subtitle_list
jef6_subtitle_list
typ_1_subtitle_list
typ_2_subtitle_list
yef18_subtitle_list
yef19_subtitle_list
yef20_subtitle_list
yef21_subtitle_list
yef22_subtitle_list
yef23_subtitle_list
yef24_subtitle_list

如果您像 1-9-3. 节中那样,将自定义字幕定义为 my_custom_subtitles 变量,并希望将其添加到“最后的愿望”过场演出中,可以按以下方式添加字幕。
使用 .append() 添加的字幕数量没有限制。

init -3:
    $ lastwish_subtitle_list.append(my_custom_subtitles)

除了《夏末盛开的花》本篇中预定义的字幕列表外,如果您想为自己制作的模组中的视频/图片过场演出添加自定义字幕列表,请参考 2-2. 添加视频自定义字幕

 

1-10. 实验室功能

《夏末盛开的花》支持语言实验室功能。您可以在控制台(Console)中输入 “labs”,或在设置的语言选择窗口中激活它。
语言实验室功能适用于所有支持《夏花》官方自定义语言补丁功能的语言补丁,对新的语言学习等特别有帮助。
但实验室功能尚未完全完善,可能存在不足之处。

 

1-10-1. 语言切换快捷键 (Language Switch Shortcuts)

在进行故事时,提供可以轻松切换语言的快捷键。
各个快捷键可在语言切换窗口中查看。

 

1-10-2. 双语字幕 (Multi-Language Subtitles)

可以同时显示其他语言的额外字幕来推进故事。
此功能可能对语言学习等有帮助。
双语字幕适用于所有在基本对话框中显示的对话,如需在视频或图片效果中应用双语字幕,请参考 1-9. “最后的愿望”过场演出与视频自定义字幕系统

 

2. 关于自定义模组 (Mod)

《夏末盛开的花》支持用户直接修改作品,即进行模组制作(Modding)。
建议您创建 game/(模组文件名)/ 文件夹,并在其中放入前缀为 “mod_” 的.rpy文件和资源文件。例如,可以是 mod_screens.rpy, mod_script.rpy

模组可以通过控制台(Console)进入或退出。此外,还可以为模组创建自定义的控制台命令。

模组的rpy文件中,必须包含注册模组的源代码,格式如下:

init -1:
    $ modlist.append(("模组标题", "①模组代码", "主界面图片", "②主界面Logo图片", "点击主界面后菜单画面的前景填充图片(经模糊处理的主界面图)", "在菜单画面点击菜单项时前景填充的图片(经模糊处理的菜单画面图)", "③点击主界面后进入的菜单screen", "进入模组时使用的控制台命令", "退出模组时使用的控制台命令", ("④想添加的自定义控制台命令1", "想添加的自定义控制台命令2..."), "版本"))

①模组代码: 用于识别模组的代码。应为简单但具有区分度的代码,如 “flowersblooming”, “custommod1234”,且在模组更新时也不应改变。

②主界面Logo图片: 也支持1280×720的全屏图片文件,因此可以将Logo自由放置在任何位置。

③点击主界面后进入的菜单screen: 在主界面屏幕上点击后,将进入该screen。系统的默认值为 “main_menu_menu”。您可以复制原系统rpy文件中的 “main_menu_menu” screen内容到 mod_screens.rpy 中,然后重新命名为 “main_menu_menu_custom” 并使用它。

④想添加的自定义控制台命令:可以创建自定义的控制台命令。

如果想添加的自定义控制台命令是 “custom1”,可以通过以下label来指定该命令执行的操作。

label custom1:
    (内容)
    return

 

参考《夏末盛开的花》实际系统文件路径的完整示例如下:

init -1:
    $ modlist.append(("여름의 끝에 피는 꽃", "flowersblooming", "gui/main/main/bg_1.png", "gui/main/main/tag_1.png", "gui/blur/0/steam/main.png", "gui/blur/0/steam/menu.png", "main_menu_menu", "entermod", "exitmod", ("customcommand1", "customcommand2"), "1.0"))

 

2-1. 添加自定义角色

在为《夏末盛开的花》制作模组时,添加自定义角色必须遵守以下规则。
若不遵守,可能会导致样式错乱,或四周年更新(3.0)后新增的对话框透明度选项无法正常工作。

 

2-1-1. 使用基本对话框的自定义角色添加示例
define 自定义角色变量名 = Character(_('自定义角色显示名称'), voice_tag="custom_voice_tag", ctc="ctc_blink", ctc_position="nestled")

 

2-1-2. 使用回忆对话框的自定义角色添加示例
define 自定义角色变量名o = Character(_('自定义角色显示名称'), who_style = "dialogue_name_text_letterbox", what_style = "dialogue_text_letterbox", voice_tag="custom_character", window_background = None, ctc="ctc_blink", ctc_position="nestled")

此外,还需一同添加以下代码来注册背景图片的属性。

init -3:
    $ say_background[Image('gui/quickbutton/nvl.png')].append('自定义角色变量名o')

 

2-1-3. 使用带阴影的全屏对话框(NVL)的自定义角色添加示例
define shnvl_自定义角色变量名 = Character(_('自定义角色显示名称'), who_color = "#ffffff00", what_style = "dialogue_nvl_text", voice_tag="custom_voice_tag", window_style = "say_nvl_window")

此外,还需一同添加以下代码来注册背景图片的属性。
该代码是必需的,以便在设置中调整对话框透明度时能正确显示对话框图片。

init -3:
    $ say_background[Image('gui/quickbutton/hiding.png')].append('shnvl_自定义角色变量名')

 

2-1-4. 使用完全透明的全屏对话框(NVL)的自定义角色添加示例
define trnvl_自定义角色变量名 = Character(_('自定义角色显示名称'), who_color = "#ffffff00", what_style = "dialogue_nvl_text", voice_tag="custom_voice_tag", window_background = None)

此外,还需一同添加以下代码来注册背景图片的属性。
该代码是必需的,以便在设置中调整对话框透明度时能正确显示对话框图片。

init -3:
    $ say_background[Image('gui/quickbutton/nvl.png')].append('trnvl_自定义角色变量名')

 

2-2. 添加视频自定义字幕

您可以为自己制作的模组中的视频/图片过场演出添加视频自定义字幕。
以下是在一个视频中显示名为 my_custom_subtitles1 和 my_custom_subtitles2 的两个自定义字幕的示例。

label custom_mod_label:
    # ...

    $ custom_movie_subtitles = [my_custom_subtitles1, my_custom_subtitles2] # 将自定义字幕列表指定为custom_movie_subtitles, 后续可通过.append()添加
    show custom_movie # 播放视频
    $ show_movie_subtitle(custom_movie_subtitles) # 播放自定义字幕(custom_movie_subtitles)
    $ renpy.pause(5, hard=True) # 等待直到视频停止
    hide custom_movie # 停止视频
    $ hide_movie_subtitle(custom_movie_subtitles) # 停止自定义字幕(custom_movie_subtitles)

    # ...

 

关于如何构建自定义字幕,请参考 1-9. “最后的愿望”过场演出与视频自定义字幕系统1-9-1. 详细说明:字幕设置与样式指定 及之后的部分。

 

2-2-1. show_movie_subtitle() 属性

用于播放字幕的 show_movie_subtitle() 接受以下属性:

show_movie_subtitle(自定义字幕列表, exclude=①('要排除的', '字幕', 'ID'), offset=②(要偏移显示的X坐标, 要偏移显示的Y坐标))

①(‘要排除的’, ‘字幕’, ‘ID列表’):可以填写要排除的字幕ID。在某些情况下不应显示字幕时非常有用。

②(要偏移显示的X坐标, 要偏移显示的Y坐标):填写字幕要偏移显示的X和Y坐标。例如,如果填写(-10, -20),原本在(300, 300)显示的字幕将会在(290, 280)显示。

Privacy Preference Center