feat: initial commit of XinLanDiary v0.0.6 dev
首次提交莘澜日记项目源码,包含第一章剧情脚本、UI 界面、角色素材及游戏配置。 排除了编译产物(.rpyc)、运行时存档、缓存及敏感密钥文件。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
68
.gitignore
vendored
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
# =============================================
|
||||||
|
# Ren'Py Compiled Files (auto-generated)
|
||||||
|
# =============================================
|
||||||
|
*.rpyc
|
||||||
|
*.rpyb
|
||||||
|
game/cache/
|
||||||
|
game/saves/
|
||||||
|
game/temp/
|
||||||
|
|
||||||
|
# =============================================
|
||||||
|
# Runtime Logs
|
||||||
|
# =============================================
|
||||||
|
log.txt
|
||||||
|
traceback.txt
|
||||||
|
errors.txt
|
||||||
|
game/log.txt
|
||||||
|
game/traceback.txt
|
||||||
|
game/errors.txt
|
||||||
|
|
||||||
|
# =============================================
|
||||||
|
# Sensitive Credentials (NEVER commit these)
|
||||||
|
# =============================================
|
||||||
|
*.keystore
|
||||||
|
*.jks
|
||||||
|
|
||||||
|
# =============================================
|
||||||
|
# macOS System Files
|
||||||
|
# =============================================
|
||||||
|
.DS_Store
|
||||||
|
.DS_Store?
|
||||||
|
._*
|
||||||
|
.Spotlight-V7
|
||||||
|
.Trashes
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# =============================================
|
||||||
|
# Editor & IDE
|
||||||
|
# =============================================
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
|
||||||
|
# =============================================
|
||||||
|
# Backup Files
|
||||||
|
# =============================================
|
||||||
|
*.bak
|
||||||
|
*.orig
|
||||||
|
*.backup
|
||||||
|
|
||||||
|
# =============================================
|
||||||
|
# Claude Code Session Files
|
||||||
|
# =============================================
|
||||||
|
.claude/
|
||||||
|
|
||||||
|
# =============================================
|
||||||
|
# Ren'Py / Android Build Artifacts
|
||||||
|
# =============================================
|
||||||
|
progressive_download.txt
|
||||||
|
rapt/
|
||||||
|
.android/
|
||||||
|
|
||||||
|
# =============================================
|
||||||
|
# Python
|
||||||
|
# =============================================
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*.pyo
|
||||||
100
CLAUDE.md
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
**莘澜日记 (XinLanDiary)** 是一款使用 Ren'Py 引擎开发的中文视觉小说游戏,当前版本 dev0.0.6,由 RYT Studio 制作。游戏以校园为背景,通过多角色关系数值追踪和多视角叙事推动剧情。
|
||||||
|
|
||||||
|
## 开发环境与运行
|
||||||
|
|
||||||
|
本项目没有传统的构建脚本。开发和构建均通过 **Ren'Py SDK** 完成:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 在开发模式下运行游戏(需要安装 Ren'Py SDK)
|
||||||
|
/path/to/renpy.sh /Users/lipeng/Documents/projects/XinLanDiary-b2-dev
|
||||||
|
|
||||||
|
# 检查脚本语法错误(Ren'Py 会在启动时自动编译 .rpy 文件)
|
||||||
|
# 错误日志位于:game/traceback.txt 和 log.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
构建多平台发行版需通过 Ren'Py 启动器 GUI 操作,配置见 `project.json` 和 `android.json`。
|
||||||
|
|
||||||
|
## 已知语法错误(需要修复)
|
||||||
|
|
||||||
|
- `game/Chapters/Chapter1.rpy:31` — 引用了未定义的变换 `move_to_bottomleft`
|
||||||
|
- `game/screens.rpy:318` — 按钮定义中存在非法中文标点符号(`。`)
|
||||||
|
|
||||||
|
## 项目架构
|
||||||
|
|
||||||
|
### 核心文件
|
||||||
|
|
||||||
|
| 文件 | 作用 |
|
||||||
|
|------|------|
|
||||||
|
| `game/script.rpy` | 入口点:角色定义、变换效果、start 标签跳转 |
|
||||||
|
| `game/options.rpy` | 游戏配置:版本、音频、转场、存档目录 |
|
||||||
|
| `game/screens.rpy` | UI/屏幕布局(1622行) |
|
||||||
|
| `game/gui.rpy` | GUI 样式配置,分辨率 1920x1080 |
|
||||||
|
| `game/Chapters/Chapter1.rpy` | 第一章剧情脚本 |
|
||||||
|
| `剧情/Chapter1.txt` | 剧情草稿(中文原稿) |
|
||||||
|
|
||||||
|
### 角色系统
|
||||||
|
|
||||||
|
所有角色在 `game/script.rpy` 中定义。每个角色有专属颜色、发言速度和独立的关系数值字典。
|
||||||
|
|
||||||
|
**主要角色速查表**:
|
||||||
|
|
||||||
|
| 变量名 | 全名 | 颜色 | 独特数值 |
|
||||||
|
|--------|------|------|----------|
|
||||||
|
| `me` | 任懿涛(主角) | #71b4e4 | selfAcceptance, humorSense, studyStress (0-10) |
|
||||||
|
| `xingyu` | 陈星宇 | #cff3ff | affection, cooperation, helpfulness (0-100) |
|
||||||
|
| `lhy` | 刘泓予 | #ffc052 | affection, trust, empathy (0-100) |
|
||||||
|
| `lzx` | 李泽瑄 | #631e2c | infoOpenness (0-10),神秘角色 |
|
||||||
|
| `xiaowei` | 林晓薇 | #f4a7b9 | affection, synergy, interactionFrequency;网络ID:薇风拂晓 |
|
||||||
|
| `yutong` | 苏雨桐 | #69cae7 | affection, attention, academicSupport |
|
||||||
|
| `yh` | 颜涵 | #d4b8e0 | affection, understanding, support |
|
||||||
|
| `xwhy` | 徐卫浩宇 | #9dffdb | affection, reliance, helpfulness |
|
||||||
|
|
||||||
|
**数值定义模式**:
|
||||||
|
```python
|
||||||
|
default {char}_stats = {
|
||||||
|
"{stat_name}": 0, # 说明
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 场景与标签规范
|
||||||
|
|
||||||
|
- 场景入口:`label Chapter{#}_Scene{#}:`
|
||||||
|
- 背景命名:`bg_{地点}_{光照}_{特殊}`(如 `bg_classroom_morning`)
|
||||||
|
- 角色素材:`{缩写}_{状态}`(如 `ryt_normal`, `lhy_embarrassed`)
|
||||||
|
- 网络身份后缀:`_w`(如 `xiaowei_w`, `me_w`)
|
||||||
|
|
||||||
|
### 核心叙事机制
|
||||||
|
|
||||||
|
- **多视角切换**:第三场景从主角视角切换至苏雨桐、林晓薇视角
|
||||||
|
- **关系数值驱动分支**:玩家选择同时影响多个角色的多项数值
|
||||||
|
- **隐藏数值**:`h_` 前缀(如 `h_academicSupport`)用于更精细的关系追踪
|
||||||
|
- **剧情内社交媒体**:包含论坛帖子和私信场景
|
||||||
|
|
||||||
|
### 变换效果(Transforms)
|
||||||
|
|
||||||
|
在 `script.rpy` 中定义的常用变换:
|
||||||
|
- `shake_rotate` — 抖动旋转动画(0.5秒)
|
||||||
|
- `slide_right(distance, duration)` — 向右滑动
|
||||||
|
- `zoom_to_upper_right` — 镜头缩放并移向右上角
|
||||||
|
- `c1s2_ryt_pos`, `c1s4_ryt_pos` — 特定场景角色定位
|
||||||
|
|
||||||
|
## 多平台构建配置
|
||||||
|
|
||||||
|
- **macOS**:`project.json`(当前激活,force_recompile=true)
|
||||||
|
- **Android**:`android.json`(横屏锁定,包名 `com.rytstudio.xinlandiary`,堆内存 3GB)
|
||||||
|
- **Web/其他**:通过 Ren'Py launcher 配置
|
||||||
|
|
||||||
|
## 错误排查
|
||||||
|
|
||||||
|
运行时错误日志:
|
||||||
|
- `game/log.txt` — 运行日志
|
||||||
|
- `game/traceback.txt` — 崩溃堆栈
|
||||||
|
- `game/errors.txt` — 编译错误
|
||||||
|
|
||||||
|
Ren'Py 在启动时自动将 `.rpy` 编译为 `.rpyc`,语法错误会阻止游戏启动并写入上述日志。
|
||||||
BIN
android-icon_background.png
Normal file
|
After Width: | Height: | Size: 803 B |
BIN
android-icon_foreground.png
Normal file
|
After Width: | Height: | Size: 372 KiB |
BIN
android-presplash.png
Normal file
|
After Width: | Height: | Size: 261 KiB |
24
android.json
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"expansion": false,
|
||||||
|
"google_play_key": null,
|
||||||
|
"google_play_salt": null,
|
||||||
|
"heap_size": "3",
|
||||||
|
"icon_name": "\u8398\u6f9c\u65e5\u8bb0",
|
||||||
|
"include_pil": false,
|
||||||
|
"include_sqlite": false,
|
||||||
|
"layout": null,
|
||||||
|
"name": "\u8398\u6f9c\u65e5\u8bb0b0.0.6",
|
||||||
|
"numeric_version": 1,
|
||||||
|
"orientation": "sensorLandscape",
|
||||||
|
"package": "com.rytstudio.xinlandiary",
|
||||||
|
"permissions": [
|
||||||
|
"VIBRATE",
|
||||||
|
"INTERNET"
|
||||||
|
],
|
||||||
|
"source": false,
|
||||||
|
"store": "none",
|
||||||
|
"update_always": true,
|
||||||
|
"update_icons": true,
|
||||||
|
"update_keystores": true,
|
||||||
|
"version": "1.0"
|
||||||
|
}
|
||||||
389
game/Chapters/Chapter1.rpy
Executable file
@@ -0,0 +1,389 @@
|
|||||||
|
# Chapter 1: 画廊风波
|
||||||
|
# Characters defined here that are not in script.rpy
|
||||||
|
|
||||||
|
|
||||||
|
label Chapter1_Scene1:
|
||||||
|
scene bg classroom featryt with fade
|
||||||
|
|
||||||
|
me "{cps=25}九月的风还带着夏末的燥热,那道斜切过窗台的阳光,在黑板上画出一道明晃晃的线。\n就像我的人生,被分成了两半——线的那头,是重点班;线的这头,是我。"
|
||||||
|
me "这道光就这么直直地切过来,像是在提醒我,你就在这儿,也只能在这儿了。\n曾经唾手可得,如今遥不可及。"
|
||||||
|
|
||||||
|
pause 0.5
|
||||||
|
show xingyu thinking at left
|
||||||
|
|
||||||
|
xingyu "涛哥,你咋又对着黑板发呆?"
|
||||||
|
show xingyu laughing
|
||||||
|
xingyu "该不会是在研究光线折射角度吧?"
|
||||||
|
hide xingyu
|
||||||
|
|
||||||
|
show ryt dialogue normal at right
|
||||||
|
me "{cps=28}错!{cps=1} {cps=17}我在思考一个深刻的哲学问题 ——{cps=5} {cps=18}为什么物理老师的头发总是逆着地心引力生长?"
|
||||||
|
hide ryt
|
||||||
|
|
||||||
|
show lhy dialogue normal at left
|
||||||
|
lhy "根据观察,王老师的发际线在过去六个月里上移了0.8厘米,主要集中于期中考试前后。\n相关性系数0.76。"
|
||||||
|
|
||||||
|
show ryt hit at right
|
||||||
|
me "你们看!{cps=6} {cps=20}这就是重点班的余孽,看什么都得用数据说话。吃我一掌!"
|
||||||
|
|
||||||
|
show lhy dialogue normal at left, shake_rotate
|
||||||
|
lhy "你的发力角度今天调整了,从之前的斜上45度改为42度,动能转化效率提升了约5\%。有进步。"
|
||||||
|
hide lhy
|
||||||
|
show lhy dialogue normal at left
|
||||||
|
show ryt dialogue embarrass pocket at right
|
||||||
|
|
||||||
|
show xingyu laughing big
|
||||||
|
xingyu "{cps=5}哈哈哈哈哈{cps=15}!\n真是一对苦命鸳鸯!"
|
||||||
|
|
||||||
|
play sound "audio/xiakering.mp3"
|
||||||
|
scene bg black with fade
|
||||||
|
pause 1.0
|
||||||
|
scene bg playground twilight
|
||||||
|
|
||||||
|
show xingyu laughing 2
|
||||||
|
xingyu "终于放学了!\n操场!走,三对三!今天必须把九班那群人打趴下!"
|
||||||
|
hide xingyu
|
||||||
|
mom "「17:40校门口便利店,别迟到。」"
|
||||||
|
show ryt dialogue normal at right
|
||||||
|
me "......妈妈又给我发这消息"
|
||||||
|
me "我得等车。\n你们先打,下次我一定来 {cps=3} {cps=20}——前提是我妈能接受她儿子在篮球场上挥洒青春而不是在车里背单词。"
|
||||||
|
show xingyu at left
|
||||||
|
xingyu "涛哥,你这样不行啊,迟早得「起义」。"
|
||||||
|
stop sound fadeout 1.0
|
||||||
|
|
||||||
|
hide xingyu with dissolve
|
||||||
|
|
||||||
|
me "那声'起义'在心里荡开了一个小涟漪。"
|
||||||
|
me "他说得对——但说出口的代价,比他想的要重得多。"
|
||||||
|
hide ryt with dissolve
|
||||||
|
|
||||||
|
pause 0.8
|
||||||
|
|
||||||
|
lzx "画廊更新了,有惊喜。友情提示:这次可能会火。"
|
||||||
|
|
||||||
|
me "……“任懿涛观察日志?”"
|
||||||
|
system_ "【画廊更新】力学之美:作用力与反作用力在友谊中的应用。\n图注:请注意研究对象在空中时的肢体协调度与落地后的平衡恢复能力。"
|
||||||
|
#system_ "图注:请注意研究对象在空中时的肢体协调度与落地后的平衡恢复能力。"
|
||||||
|
|
||||||
|
show ryt dialogue embarrass pocket at center with dissolve
|
||||||
|
me "三张连拍……全程记录,还加了学术注释。行吧,就是个玩笑。"
|
||||||
|
hide ryt with dissolve
|
||||||
|
|
||||||
|
$ lhy_stats["affection"] += 3
|
||||||
|
$ lhy_stats["trust"] += 2
|
||||||
|
$ xingyu_stats["affection"] += 3
|
||||||
|
$ xingyu_stats["cooperation"] += 2
|
||||||
|
$ tao_stats["humorSense"] += 2
|
||||||
|
$ lzx_stats["infoOpenness"] += 1
|
||||||
|
|
||||||
|
jump Chapter1_Scene2
|
||||||
|
|
||||||
|
label Chapter1_Scene2:
|
||||||
|
scene bg classroom morning featryt with fade
|
||||||
|
#system_ "【第二天早上】"
|
||||||
|
|
||||||
|
me "第二天早上,一切都不一样了。"
|
||||||
|
me "刚踏进七班,就感觉空气里有种微妙的兴奋。"
|
||||||
|
me "几个别班男生挤在后门,看到我进来——"
|
||||||
|
tongxue "涛哥!高手啊!"
|
||||||
|
tongxue "这弹跳力,不考虑加入校篮球队?"
|
||||||
|
tongxue "刘泓予还好吗?需要验伤不?"
|
||||||
|
|
||||||
|
show ryt dialogue normal at c1s2_ryt_pos with dissolve
|
||||||
|
me "笑,我只管笑。"
|
||||||
|
hide ryt with dissolve
|
||||||
|
|
||||||
|
me "走到座位,拿出手机——"
|
||||||
|
system_ "【匿名论坛·置顶】震惊!高二学霸竟在教室对同学实施「物理攻击」!\n 回复:502层 | 转发:88"
|
||||||
|
|
||||||
|
show ryt dialogue embarrass pocket at c1s2_ryt_pos with dissolve
|
||||||
|
me "……五百多层?"
|
||||||
|
me "李泽瑄那个链接,被人转到论坛上了?!"
|
||||||
|
hide ryt with dissolve
|
||||||
|
|
||||||
|
scene bg playground morning aerial with fade
|
||||||
|
me "课间操,成了公开处刑。"
|
||||||
|
me "站在队列里,我能感觉到四面八方投来的目光,听到各处的窃窃私语。"
|
||||||
|
|
||||||
|
|
||||||
|
#show ryt hit at center with dissolve
|
||||||
|
scene bg playground with dissolve
|
||||||
|
me "深吸一口气——经过八班队列时,我故意做了个跳起来打空气的动作,表情夸张。"
|
||||||
|
hide ryt with dissolve
|
||||||
|
tongxue "哈哈哈哈——"
|
||||||
|
me "果然,又是一阵笑声。"
|
||||||
|
me "我的那层盔甲还在。 对吗?"
|
||||||
|
|
||||||
|
pause 0.3
|
||||||
|
|
||||||
|
# 关键场景:刘泓予看穿
|
||||||
|
show lhy dialogue normal at right with dissolve
|
||||||
|
lhy "你刚才那个假动作,面部肌肉的紧张程度是平时的1.3倍。"
|
||||||
|
show ryt dialogue embarrass pocket at left with dissolve
|
||||||
|
me "……"
|
||||||
|
lhy "高强度社交应激状态下,人体会产生应激性微表情抑制行为。你的眼轮匝肌收缩时序比平时延迟了0.2秒。"
|
||||||
|
|
||||||
|
hide ryt with dissolve
|
||||||
|
hide lhy with dissolve
|
||||||
|
|
||||||
|
me "他说这话的时候,语气跟讲公式一模一样。"
|
||||||
|
me "但不知道为什么,被他这么一说……我反而松了口气。"
|
||||||
|
me "有人看见了,但没有嘲笑。只是……记录。"
|
||||||
|
|
||||||
|
$ lhy_stats["affection"] += 5
|
||||||
|
$ lhy_stats["trust"] += 5
|
||||||
|
$ lhy_stats["empathy"] += 3
|
||||||
|
$ tao_stats["selfAcceptance"] += 1
|
||||||
|
$ tao_stats["studyStress"] += 2
|
||||||
|
|
||||||
|
jump Chapter1_Scene3
|
||||||
|
|
||||||
|
label Chapter1_Scene3:
|
||||||
|
# —— 视角A:苏雨桐·学生会会议室 ——
|
||||||
|
scene bg meetingroom meeting with fade
|
||||||
|
"{cps=20}【同日下午·学生会会议室】" # system_ "【同日下午·学生会会议室】"
|
||||||
|
|
||||||
|
me "下午的学生会会议室里,宣传部的干事滔滔不绝。"
|
||||||
|
ganshi "——就像最近论坛里很火的那个'力学之美'系列,这种原生内容特别容易引发共鸣,我们宣传部可以朝这个方向多发掘——"
|
||||||
|
|
||||||
|
pause 0.3
|
||||||
|
scene bg meetingroom featlxw at zoom_to_upper_right
|
||||||
|
yutong "稍等。"
|
||||||
|
pause 0.5
|
||||||
|
yutong "这类内容涉及肖像权问题。根据《民法典》第一千零一十九条,未经同意使用他人肖像,即便没有营利目的,如果造成当事人困扰,也涉嫌侵权。"
|
||||||
|
yutong "尤其是这种可能引发负面关注的传播,我们需要更谨慎。"
|
||||||
|
|
||||||
|
me "会议室陷入短暂沉默。" # 把me删掉? 不删!.lzx
|
||||||
|
|
||||||
|
scene bg meetingroom meeting with dissolve
|
||||||
|
ganshi "雨桐提醒得对……这个问题我们后续会注意的。那继续下一项——"
|
||||||
|
|
||||||
|
"{cps=20}会议继续。没人看见,她放在桌下的手机屏幕上——" # 这个me也删掉?删掉!.lzx
|
||||||
|
system_ "【苏雨桐手机·加密相册·新增1张】"
|
||||||
|
yutong "……力学之美……有趣的视角。"
|
||||||
|
"{cps=20}她把第三张连拍放大,看了很久。"
|
||||||
|
"{cps=20}那个落地踉跄、表情错愕的瞬间,和高一时那个数学竞赛获奖后,在走廊里短暂发呆的男生,微妙地重合了。"
|
||||||
|
yutong "「给岁月以文明,而不是给文明以岁月。」"
|
||||||
|
yutong "我那天递给他的纸条上可不仅写了“恭喜”二字……"
|
||||||
|
yutong "这句话,他没有回应。\n 或许他根本就没有看见……"
|
||||||
|
|
||||||
|
$ yutong_stats["affection"] += 3
|
||||||
|
$ yutong_stats["attention"] += 5
|
||||||
|
$ yutong_stats["h_academicSupport"] += 1
|
||||||
|
|
||||||
|
pause 0.5
|
||||||
|
|
||||||
|
# —— 视角B:林晓薇·高二一班走廊 ——
|
||||||
|
scene bg corridor with dissolve
|
||||||
|
"【同日下午·高二一班走廊】"
|
||||||
|
|
||||||
|
show xiaowei at left with dissolve
|
||||||
|
"同一时间,另一个人也在看那张照片。"
|
||||||
|
tongxue "晓薇你快看!这不是你们一班那个任懿涛吗?他怎么还是这么搞笑!"
|
||||||
|
xiaowei "拍得好生动啊!你们说,要是我也这样跳起来打人,会不会也这么有效果?"
|
||||||
|
tongxue "哈哈哈哈!"
|
||||||
|
hide xiaowei with dissolve
|
||||||
|
|
||||||
|
"{cps=20}她笑着,眼睛却没有离开屏幕。"
|
||||||
|
"{cps=20}那种真实的活力,让她觉得……在礼貌而疏离的文科班里,有什么东西被触动了。"
|
||||||
|
|
||||||
|
#system_ "【切换账号:薇风拂晓】"
|
||||||
|
scene bg classroom phone closeup with dissolve
|
||||||
|
system_ "好友列表:逍遥剑客 [[在线]"
|
||||||
|
xiaowei_w "在吗?问个事。你们学校是不是有个挺搞笑的人?最近好像因为什么照片火了。"
|
||||||
|
"发出去的瞬间她就后悔了。太突兀了——但已经来不及撤回。"
|
||||||
|
pause 0.8
|
||||||
|
me_w "???你哪个学校的?"
|
||||||
|
xiaowei_w "就随便问问,不想说算了。"
|
||||||
|
me "她收起手机。上课铃响了。"
|
||||||
|
me "路过七班门口时,她下意识往里看了一眼——"
|
||||||
|
show ryt dialogue normal at right with dissolve
|
||||||
|
show xingyu at left with dissolve
|
||||||
|
me "任懿涛正背对门口,和陈星宇比划着什么。大概又是游戏攻略。"
|
||||||
|
hide ryt with dissolve
|
||||||
|
hide xingyu with dissolve
|
||||||
|
|
||||||
|
$ xiaowei_stats["affection"] += 4
|
||||||
|
$ xiaowei_stats["interactionFrequency"] += 2
|
||||||
|
$ xiaowei_stats["is_xiaowei_w"] = False
|
||||||
|
|
||||||
|
jump Chapter1_Scene4
|
||||||
|
|
||||||
|
label Chapter1_Scene4:
|
||||||
|
scene bg classroom wide afterschool with fade
|
||||||
|
"{cps=20}【同日放学后·七班教室】" # system_ "【同日放学后·七班教室】"
|
||||||
|
|
||||||
|
show ryt dialogue normal at right with dissolve
|
||||||
|
me "放学了。教室里还剩几个人。"
|
||||||
|
me "'薇风拂晓'……你哪个学校的?"
|
||||||
|
me "这个账号……我好像只在游戏里见过。"
|
||||||
|
|
||||||
|
show xingyu at left with dissolve
|
||||||
|
xingyu "涛哥,你咋了?还在想那个破照片的事?"
|
||||||
|
me "我在思考更严肃的问题——为什么总有人对我的英姿如此念念不忘?"
|
||||||
|
me "我来看看画廊的统计数据,\n论坛转发之后,访问量肯定不少——就当看个热闹。"
|
||||||
|
|
||||||
|
hide ryt with dissolve
|
||||||
|
system_ "【画廊后台·访问统计】今日新增:347次 | 来源:匿名论坛转发"
|
||||||
|
|
||||||
|
show ryt dialogue normal at right with dissolve
|
||||||
|
me "果然,三百多。论坛一转,全涌进来了。"
|
||||||
|
me "不过……"
|
||||||
|
me "我往下翻,手指停在了一条记录上。"
|
||||||
|
hide ryt with dissolve
|
||||||
|
|
||||||
|
system_ "固定IP · 实验楼三层 · 每隔2-3天 · 晚9-10点"
|
||||||
|
system_ "最早记录:高一上学期(画廊建立初期)"
|
||||||
|
|
||||||
|
show ryt dialogue embarrass pocket at right with dissolve
|
||||||
|
me "……等等。这个IP,从高一就开始了?"
|
||||||
|
me "星宇,实验楼三层的网络,是不是只有13班和实验室在用?"
|
||||||
|
xingyu "哟,有人盯上你了啊。对,那个段就是13班和几个竞赛实验室专用。"
|
||||||
|
xingyu "怎么,涛哥的英姿连重点班都征服了?"
|
||||||
|
hide xingyu with dissolve
|
||||||
|
show ryt dialogue embarrass pocket2 at right with dissolve
|
||||||
|
|
||||||
|
me "13班。那个我刚离开的世界。"
|
||||||
|
me "……是谁?"
|
||||||
|
|
||||||
|
pause 0.5
|
||||||
|
hide ryt with dissolve
|
||||||
|
|
||||||
|
# 反侦察行动
|
||||||
|
show xingyu at left with dissolve
|
||||||
|
xingyu "各位!我有个绝妙的主意——"
|
||||||
|
xingyu "既然那个画廊这么喜欢拍涛哥,咱们不如搞个「反侦察行动」!"
|
||||||
|
xingyu "找出那个偷拍者,然后拍他的黑历史!怎么样?"
|
||||||
|
|
||||||
|
show lhy dialogue normal with dissolve
|
||||||
|
lhy "理论上可行,但需要注意几个问题:\n第一,如何确定拍摄者会再次行动;\n第二,如何在保护自身隐私的前提下进行反追踪;\n第三——"
|
||||||
|
xingyu "哎呀小卡你别扫兴!就是玩嘛!涛哥,你说干不干?"
|
||||||
|
hide lhy with dissolve
|
||||||
|
|
||||||
|
show ryt dialogue normal at right with dissolve
|
||||||
|
me "看着眼前这群人。认识不过一个多月——但他们就这么凑过来,商量这种无聊又有趣的计划。"
|
||||||
|
me "在重点班时,从来没有过这样的时刻。"
|
||||||
|
me "行啊!但咱们得专业!要有分工!有排班表!有应急预案!还要有——"
|
||||||
|
hide ryt with dissolve
|
||||||
|
hide xingyu with dissolve
|
||||||
|
pause 0.4
|
||||||
|
|
||||||
|
# 颜涵出场
|
||||||
|
show yh camerabag at left with dissolve
|
||||||
|
yh "要有旁观席位。"
|
||||||
|
#me "声音从后门传来。颜涵,拎着相机包,表情平静。"
|
||||||
|
yh "我负责记录你们的失败过程。"
|
||||||
|
hide yh with dissolve
|
||||||
|
tongxue "哈哈哈哈哈!"
|
||||||
|
|
||||||
|
show ryt dialogue normal at right with dissolve
|
||||||
|
me "我也跟着笑。但眼睛不自觉地望向窗外。"
|
||||||
|
me "夕阳下的实验楼泛着暖黄的光,三楼东侧的窗户反射着落日的余晖。"
|
||||||
|
me "那里有谁,在看着我?"
|
||||||
|
me "还有那个'薇风拂晓',到底是谁?"
|
||||||
|
hide ryt with dissolve
|
||||||
|
|
||||||
|
$ xingyu_stats["affection"] += 5
|
||||||
|
$ xingyu_stats["cooperation"] += 5
|
||||||
|
$ xingyu_stats["helpfulness"] += 3
|
||||||
|
$ lhy_stats["affection"] += 3
|
||||||
|
$ yh_stats["affection"] += 3
|
||||||
|
$ yh_stats["understanding"] += 2
|
||||||
|
$ tao_stats["selfAcceptance"] += 2
|
||||||
|
|
||||||
|
pause 0.5
|
||||||
|
|
||||||
|
# 便利店
|
||||||
|
scene bg convenience store with fade
|
||||||
|
system_ "【傍晚17:25·校门外便利店】"
|
||||||
|
|
||||||
|
show ryt normal spec at c1s4_ryt_pos with dissolve
|
||||||
|
me "17:25,准时出现在校门外三百米处的便利店。"
|
||||||
|
me "买瓶饮料,站在店门口等车,看着其他学生自由地走过。"
|
||||||
|
me "骑车的,步行的,三五成群说笑的。每个人脸上都有种松弛感。"
|
||||||
|
#hide ryt with dissolve
|
||||||
|
|
||||||
|
show aunt normal at left with dissolve
|
||||||
|
"便利店主" "小任,新品。尝尝,你们年轻人喜欢这个。"
|
||||||
|
#show ryt dialogue normal at right with dissolve
|
||||||
|
me "谢了阿姨。"
|
||||||
|
hide ryt with dissolve
|
||||||
|
hide aunt with dissolve
|
||||||
|
|
||||||
|
me "拧开那瓶柚子味气泡水,靠在栏杆上。"
|
||||||
|
pause 0.6
|
||||||
|
|
||||||
|
# 苏雨桐骑车经过——本章关键镜头
|
||||||
|
scene bg schoolgate featsyt with dissolve
|
||||||
|
me "那是 ——{cps=1} {cps=20}苏雨桐"
|
||||||
|
me "她推着自行车从校门口出来。车篮里放着一本厚厚的书。"
|
||||||
|
me "她停在路口等红灯,低头看了眼手机——"
|
||||||
|
me "然后嘴角很轻地抬了一下。几乎算不上笑,只是一个微小的弧度。"
|
||||||
|
scene bg convenience store with dissolve
|
||||||
|
show ryt normal spec at c1s4_ryt_pos with dissolve
|
||||||
|
show ryt normal spec at slide_right(distance=200, duration=0.5) with dissolve
|
||||||
|
me "我下意识往便利店的阴影里退了半步。"
|
||||||
|
hide ryt with dissolve
|
||||||
|
scene bg sunset featsyt with dissolve
|
||||||
|
me "绿灯。她跨上车,黑发在傍晚的风里扬起,朝着与我家相反的方向骑远了。"
|
||||||
|
|
||||||
|
scene bg convenience store with dissolve
|
||||||
|
pause 0.5
|
||||||
|
me "自由。"
|
||||||
|
me "这个词突然撞进脑子里——不是解题时的快感,而是一种更基础的东西:掌控自己轨迹的权利。"
|
||||||
|
|
||||||
|
mom "「到了。」"
|
||||||
|
show ryt dialogue normal at right with dissolve
|
||||||
|
me "挺好的。特别开心。"
|
||||||
|
hide ryt with dissolve
|
||||||
|
me "……我说出这句话的时候,语气轻松得像是真的。"
|
||||||
|
me "车驶入车流。靠在车窗上,看着外面倒退的街景。"
|
||||||
|
|
||||||
|
$ yutong_stats["affection"] += 2
|
||||||
|
$ yutong_stats["attention"] += 3
|
||||||
|
$ tao_stats["selfAcceptance"] += 1
|
||||||
|
$ tao_stats["studyStress"] += 1
|
||||||
|
|
||||||
|
pause 0.5
|
||||||
|
|
||||||
|
# 双视角结尾
|
||||||
|
scene bg black with fade
|
||||||
|
system_ "【同夜·城市另一头】"
|
||||||
|
|
||||||
|
me "城市的另一头,苏雨桐刚回到家。"
|
||||||
|
yutong "TaoliTaoli……今天依然没有更新。"
|
||||||
|
system_ "【任懿涛画廊·访问计数器:+1】"
|
||||||
|
me "她一张张翻看那些照片。相册里已经积累了二十几张,按时间顺序排列。"
|
||||||
|
yutong "……在这个高度秩序化的生活里,观察一个如此不协调、如此鲜活的存在……有种奇妙的慰藉。"
|
||||||
|
|
||||||
|
$ yutong_stats["affection"] += 3
|
||||||
|
$ yutong_stats["attention"] += 4
|
||||||
|
|
||||||
|
pause 0.5
|
||||||
|
system_ "【几公里外·林晓薇的房间】"
|
||||||
|
me "几公里外,林晓薇躺在床上,盯着天花板发呆。"
|
||||||
|
me_w "你问的那个人,确实是我们学校的。怎么,你认识?"
|
||||||
|
me "那条回复躺在对话框里,她还没想好怎么回。"
|
||||||
|
me "她翻看相册,看着任懿涛在空中那个狰狞又认真的表情,看着落地时那个措手不及的踉跄。"
|
||||||
|
me "然后,她做了个决定。"
|
||||||
|
xiaowei "明天,课间的时候,以真实身份去七班找他。"
|
||||||
|
xiaowei "就说:那张照片拍得真好,特别生动。"
|
||||||
|
xiaowei "……就想看看,他会是什么反应。"
|
||||||
|
|
||||||
|
$ xiaowei_stats["affection"] += 3
|
||||||
|
$ xiaowei_stats["interactionFrequency"] += 3
|
||||||
|
|
||||||
|
pause 0.5
|
||||||
|
|
||||||
|
# 章节尾声
|
||||||
|
scene bg black with fade
|
||||||
|
me "窗外,九月的夜晚渐渐深了。城市灯火一盏盏亮起,每扇窗户后都是一个正在展开的故事。"
|
||||||
|
me "任懿涛的故事,在这一天,因为几张滑稽的照片,悄悄拐上了一条他自己都未曾预料的道路。"
|
||||||
|
me "这条路上,已经有两位女生在等着他——"
|
||||||
|
me "一个在暗处静静观察,一个在明处准备靠近。"
|
||||||
|
pause 1.0
|
||||||
|
me "而他自己,还不知道。"
|
||||||
|
pause 1.5
|
||||||
|
system_ "【第一章·画廊风波·完】"
|
||||||
|
|
||||||
|
return
|
||||||
88
game/Chapters/intro_discarded.txt
Executable file
@@ -0,0 +1,88 @@
|
|||||||
|
# intro.rpy
|
||||||
|
label splashscreen:
|
||||||
|
scene black
|
||||||
|
with Pause(1.0)
|
||||||
|
|
||||||
|
# 1. 环境铺垫
|
||||||
|
show bg school_gate with dissolve:
|
||||||
|
zoom 1.2
|
||||||
|
linear 5.0 zoom 1.0
|
||||||
|
play music "audio/intro_ambient.mp3" fadein 3.0
|
||||||
|
|
||||||
|
"2029年,上海青澜高中"
|
||||||
|
"一所普通的市重点,有着不普通的故事"
|
||||||
|
|
||||||
|
# 2. 快速剪辑:主角的多个侧面
|
||||||
|
show bg classroom_empty with pixellate
|
||||||
|
"他是数学课上的王者..."
|
||||||
|
|
||||||
|
show bg basketball_court with pixellate
|
||||||
|
"篮球场上的活跃分子..."
|
||||||
|
|
||||||
|
show bg computer_lab with pixellate
|
||||||
|
"游戏世界的攻略者..."
|
||||||
|
|
||||||
|
# 3. 引入关键道具/符号
|
||||||
|
show phone_screen:
|
||||||
|
xalign 0.5 yalign 0.5
|
||||||
|
zoom 0.0
|
||||||
|
linear 0.5 zoom 1.0
|
||||||
|
"当他的生活被放上名为「任懿涛画廊」的网站..."
|
||||||
|
|
||||||
|
show gallery_website with dissolve:
|
||||||
|
xalign 0.5 yalign 0.5
|
||||||
|
"标签,比本人传播得更快"
|
||||||
|
hide gallery_website with dissolve
|
||||||
|
|
||||||
|
# 4. 关键冲突提示
|
||||||
|
scene bg corridor with dissolve
|
||||||
|
show shadow boy at left
|
||||||
|
show shadow girl at right
|
||||||
|
"重点班 → 普通班"
|
||||||
|
"学霸 → 偏科生"
|
||||||
|
"独立 → 依赖"
|
||||||
|
|
||||||
|
# 5. 角色群像闪现(可选,如果立绘已准备好)
|
||||||
|
show liuhongyu silhouette at left with dissolve
|
||||||
|
show yanhan silhouette at center with dissolve
|
||||||
|
show xuwei silhouette at right with dissolve
|
||||||
|
"在这段充满矛盾的高二生活中..."
|
||||||
|
hide liuhongyu
|
||||||
|
hide yanhan
|
||||||
|
hide xuwei
|
||||||
|
|
||||||
|
# 6. 核心问题
|
||||||
|
scene black with dissolve
|
||||||
|
show text "{size=40}当所有人都通过标签认识你...{/size}" at truecenter with dissolve
|
||||||
|
pause 1.5
|
||||||
|
hide text
|
||||||
|
|
||||||
|
show text "{size=40}你该如何认识自己?{/size}" at truecenter with dissolve
|
||||||
|
pause 2.0
|
||||||
|
hide text
|
||||||
|
|
||||||
|
# 7. 游戏标题
|
||||||
|
scene bg sunset with dissolve
|
||||||
|
show text "{size=80}{font=fonts/custom.ttf}青澜日记{/font}{/size}" at truecenter:
|
||||||
|
yalign 0.4
|
||||||
|
show text "{size=25}——任懿涛的高中恋爱物语——{/size}" at truecenter:
|
||||||
|
yalign 0.6
|
||||||
|
|
||||||
|
play sound "audio/title_appear.wav"
|
||||||
|
with hpunch
|
||||||
|
pause 3.0
|
||||||
|
|
||||||
|
# 8. 制作信息
|
||||||
|
scene black with dissolve
|
||||||
|
show text "游戏灵感来自真实事件" at truecenter with dissolve
|
||||||
|
pause 1.5
|
||||||
|
hide text
|
||||||
|
|
||||||
|
show text "任懿涛画廊真实存在:\nhttps://gallery.lizexuan.com" at truecenter with dissolve
|
||||||
|
pause 2.0
|
||||||
|
hide text
|
||||||
|
|
||||||
|
show text "按下任意键开始" at truecenter with dissolve
|
||||||
|
pause 1.0
|
||||||
|
|
||||||
|
return
|
||||||
BIN
game/audio/xiakering.mp3
Normal file
BIN
game/fonts/AlibabaPuHuiTi-3-55-Regular.ttf
Normal file
BIN
game/fonts/GenJyuuGothic-Normal-2.ttf
Normal file
BIN
game/fonts/SmileySans-Oblique.ttf
Normal file
BIN
game/fonts/SourceHanSansLite.ttf
Executable file
453
game/gui.rpy
Executable file
@@ -0,0 +1,453 @@
|
|||||||
|
################################################################################
|
||||||
|
## 初始化
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
## “init offset”语句可使此文件中的初始化语句在任何其他文件中的“init”语句之前运
|
||||||
|
## 行。
|
||||||
|
init offset = -2
|
||||||
|
|
||||||
|
## 调用 gui.init 会将样式重置为合理的默认值,并设置游戏的宽度和高度(基准分辨
|
||||||
|
## 率)。
|
||||||
|
init python:
|
||||||
|
gui.init(1920, 1080)
|
||||||
|
|
||||||
|
## 启用对屏幕或变换中无效或不稳定属性的检查
|
||||||
|
define config.check_conflicting_properties = True
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## GUI 配置变量
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
## 颜色 ##########################################################################
|
||||||
|
##
|
||||||
|
## 界面中文本的颜色。
|
||||||
|
|
||||||
|
## 整个界面中使用的强调色,用于标记和突出显示文本。
|
||||||
|
define gui.accent_color = '#003366'
|
||||||
|
|
||||||
|
## 当文本按钮既未被选中也未被悬停时使用的颜色。
|
||||||
|
define gui.idle_color = '#707070'
|
||||||
|
|
||||||
|
## 小的颜色用于小的文本,需要更亮/更暗才能达到同样的效果。
|
||||||
|
define gui.idle_small_color = '#606060'
|
||||||
|
|
||||||
|
## 当按钮和滑条被悬停时使用的颜色。
|
||||||
|
define gui.hover_color = '#003366'
|
||||||
|
|
||||||
|
## 当文本按钮被选中但非焦点时使用的颜色。当一个按钮为当前屏幕或设置选项值时,会
|
||||||
|
## 处于选中状态。
|
||||||
|
define gui.selected_color = '#555555'
|
||||||
|
|
||||||
|
## 当文本按钮无法被选择时使用的颜色。
|
||||||
|
define gui.insensitive_color = '#7070707f'
|
||||||
|
|
||||||
|
## 滑条未填充的部分使用的颜色。这些颜色不直接使用,但在重新生成条形图像文件时使
|
||||||
|
## 用。
|
||||||
|
define gui.muted_color = '#6684a3'
|
||||||
|
define gui.hover_muted_color = '#99adc1'
|
||||||
|
|
||||||
|
## 对话和菜单选择文本使用的颜色。
|
||||||
|
define gui.text_color = '#404040'
|
||||||
|
define gui.interface_text_color = '#404040'
|
||||||
|
|
||||||
|
|
||||||
|
## 字体和字体大小 #####################################################################
|
||||||
|
|
||||||
|
## 游戏内文本使用的字体。
|
||||||
|
define gui.text_font = "fonts/AlibabaPuHuiTi-3-55-Regular.ttf"
|
||||||
|
|
||||||
|
## 角色名称使用的字体。
|
||||||
|
define gui.name_text_font = "fonts/SmileySans-Oblique.ttf"
|
||||||
|
|
||||||
|
## 游戏外文本使用的字体。
|
||||||
|
define gui.interface_text_font = "fonts/AlibabaPuHuiTi-3-55-Regular.ttf"
|
||||||
|
|
||||||
|
## 普通对话文本的大小。
|
||||||
|
define gui.text_size = 30
|
||||||
|
|
||||||
|
## 角色名称的大小。
|
||||||
|
define gui.name_text_size = 42
|
||||||
|
|
||||||
|
## 游戏用户界面中文本的大小。
|
||||||
|
define gui.interface_text_size = 33
|
||||||
|
|
||||||
|
## 游戏用户界面中标签的大小。
|
||||||
|
define gui.label_text_size = 36
|
||||||
|
|
||||||
|
## 通知屏幕上文本的大小。
|
||||||
|
define gui.notify_text_size = 24
|
||||||
|
|
||||||
|
## 游戏标题的大小。
|
||||||
|
define gui.title_text_size = 75
|
||||||
|
|
||||||
|
|
||||||
|
## 标题和游戏菜单 #####################################################################
|
||||||
|
|
||||||
|
## 标题菜单和游戏菜单使用的图像。
|
||||||
|
define gui.main_menu_background = "gui/main_menu.png"
|
||||||
|
define gui.game_menu_background = "gui/game_menu.png"
|
||||||
|
|
||||||
|
|
||||||
|
## 对话 ##########################################################################
|
||||||
|
##
|
||||||
|
## 这些变量控制对话如何在屏幕上逐行显示。
|
||||||
|
|
||||||
|
## 包含对话的文本框的高度。
|
||||||
|
define gui.textbox_height = 278
|
||||||
|
|
||||||
|
## 文本框在屏幕上的垂直位置。0.0 是顶部,0.5 是居中,1.0 是底部。
|
||||||
|
define gui.textbox_yalign = 1.0
|
||||||
|
|
||||||
|
|
||||||
|
## 叙述角色名字相对于文本框的位置。可以是从左侧或顶部起的整数像素,或设为 0.5 来
|
||||||
|
## 居中。
|
||||||
|
define gui.name_xpos = 360
|
||||||
|
define gui.name_ypos = 0
|
||||||
|
|
||||||
|
## 角色名字的水平对齐方式。0.0 为左侧对齐,0.5 为居中显示,而 1.0 为右侧对齐。
|
||||||
|
define gui.name_xalign = 0.0
|
||||||
|
|
||||||
|
## 包含角色名字的方框的宽度、高度和边框尺寸,或设为 None 来自动确定其大小。
|
||||||
|
define gui.namebox_width = None
|
||||||
|
define gui.namebox_height = None
|
||||||
|
|
||||||
|
## 包含角色名字的方框的边界尺寸,以左、上、右、下顺序排列。
|
||||||
|
define gui.namebox_borders = Borders(5, 5, 5, 5)
|
||||||
|
|
||||||
|
## 若为 True,则名字框的背景将平铺;若为 False,则名字框的背景将缩放。
|
||||||
|
define gui.namebox_tile = False
|
||||||
|
|
||||||
|
|
||||||
|
## 对话相对于文本框的位置。可以是相对于文本框从左侧或顶部起的整数像素,或设为
|
||||||
|
## 0.5 来居中。
|
||||||
|
define gui.dialogue_xpos = 402
|
||||||
|
define gui.dialogue_ypos = 75
|
||||||
|
|
||||||
|
## 对话文本的最大宽度,以像素为单位。
|
||||||
|
define gui.dialogue_width = 1116
|
||||||
|
|
||||||
|
## 对话文本的水平对齐方式。0.0 为左侧对齐,0.5 为居中显示,而 1.0 为右侧对齐。
|
||||||
|
define gui.dialogue_text_xalign = 0.0
|
||||||
|
|
||||||
|
|
||||||
|
## 按钮 ##########################################################################
|
||||||
|
##
|
||||||
|
## 这些变量以及 gui/button 中的图像文件控制着按钮显示方式。
|
||||||
|
|
||||||
|
## 按钮的宽度和高度像素数。如果为 None,则 Ren'Py 将计算大小。
|
||||||
|
define gui.button_width = None
|
||||||
|
define gui.button_height = None
|
||||||
|
|
||||||
|
## 按钮两侧的边框,按左、上、右、下的顺序排列。
|
||||||
|
define gui.button_borders = Borders(6, 6, 6, 6)
|
||||||
|
|
||||||
|
## 若为 True,则背景图像将平铺。若为 False,则背景图像将线性缩放。
|
||||||
|
define gui.button_tile = False
|
||||||
|
|
||||||
|
## 按钮使用的字体。
|
||||||
|
define gui.button_text_font = gui.interface_text_font
|
||||||
|
|
||||||
|
## 按钮所使用的文本大小。
|
||||||
|
define gui.button_text_size = gui.interface_text_size
|
||||||
|
|
||||||
|
## 按钮文本在各种状态下的颜色。
|
||||||
|
define gui.button_text_idle_color = gui.idle_color
|
||||||
|
define gui.button_text_hover_color = gui.hover_color
|
||||||
|
define gui.button_text_selected_color = gui.selected_color
|
||||||
|
define gui.button_text_insensitive_color = gui.insensitive_color
|
||||||
|
|
||||||
|
## 按钮文本的水平对齐方式。(0.0 为左侧对齐,0.5 为居中对齐,而 1.0 为右侧对
|
||||||
|
## 齐)。
|
||||||
|
define gui.button_text_xalign = 0.0
|
||||||
|
|
||||||
|
|
||||||
|
## 这些变量覆盖了不同类型按钮的设置。关于可用的按钮种类以及每种按钮的用途,请参
|
||||||
|
## 阅 gui 文档。
|
||||||
|
##
|
||||||
|
## 这些定制由默认界面使用:
|
||||||
|
|
||||||
|
define gui.radio_button_borders = Borders(27, 6, 6, 6)
|
||||||
|
|
||||||
|
define gui.check_button_borders = Borders(27, 6, 6, 6)
|
||||||
|
|
||||||
|
define gui.confirm_button_text_xalign = 0.5
|
||||||
|
|
||||||
|
define gui.page_button_borders = Borders(15, 6, 15, 6)
|
||||||
|
|
||||||
|
define gui.quick_button_borders = Borders(15, 6, 15, 0)
|
||||||
|
define gui.quick_button_text_size = 21
|
||||||
|
define gui.quick_button_text_idle_color = gui.idle_small_color
|
||||||
|
define gui.quick_button_text_selected_color = gui.accent_color
|
||||||
|
|
||||||
|
## 您还可以通过添加正确命名的变量来添加自己的定制。例如,您可以将以下几行取消注
|
||||||
|
## 释来设置导航按钮的宽度。
|
||||||
|
|
||||||
|
# define gui.navigation_button_width = 250
|
||||||
|
|
||||||
|
|
||||||
|
## 选项按钮 ########################################################################
|
||||||
|
##
|
||||||
|
## 游戏内菜单使用的选项按钮。
|
||||||
|
|
||||||
|
define gui.choice_button_width = 1185
|
||||||
|
define gui.choice_button_height = None
|
||||||
|
define gui.choice_button_tile = False
|
||||||
|
define gui.choice_button_borders = Borders(150, 8, 150, 8)
|
||||||
|
define gui.choice_button_text_font = gui.text_font
|
||||||
|
define gui.choice_button_text_size = gui.text_size
|
||||||
|
define gui.choice_button_text_xalign = 0.5
|
||||||
|
define gui.choice_button_text_idle_color = '#707070'
|
||||||
|
define gui.choice_button_text_hover_color = "#003366"
|
||||||
|
define gui.choice_button_text_insensitive_color = '#7070707f'
|
||||||
|
|
||||||
|
|
||||||
|
## 存档按钮 ########################################################################
|
||||||
|
##
|
||||||
|
## 存档按钮是一种特殊的按钮。它包含一个缩略图和描述该存档内容的文本。存档使用
|
||||||
|
## gui/button 中的图像文件,就像其他类型的按钮一样。
|
||||||
|
|
||||||
|
## 存档位按钮。
|
||||||
|
define gui.slot_button_width = 414
|
||||||
|
define gui.slot_button_height = 309
|
||||||
|
define gui.slot_button_borders = Borders(15, 15, 15, 15)
|
||||||
|
define gui.slot_button_text_size = 21
|
||||||
|
define gui.slot_button_text_xalign = 0.5
|
||||||
|
define gui.slot_button_text_idle_color = gui.idle_small_color
|
||||||
|
define gui.slot_button_text_selected_idle_color = gui.selected_color
|
||||||
|
define gui.slot_button_text_selected_hover_color = gui.hover_color
|
||||||
|
|
||||||
|
## 存档所用缩略图的宽度和高度。
|
||||||
|
define config.thumbnail_width = 384
|
||||||
|
define config.thumbnail_height = 216
|
||||||
|
|
||||||
|
## 存档网格中的列数和行数。
|
||||||
|
define gui.file_slot_cols = 3
|
||||||
|
define gui.file_slot_rows = 2
|
||||||
|
|
||||||
|
|
||||||
|
## 定位和间距 #######################################################################
|
||||||
|
##
|
||||||
|
## 这些变量控制各种用户界面元素的位置和间距。
|
||||||
|
|
||||||
|
## 导航按钮左侧相对于屏幕左侧的位置。
|
||||||
|
define gui.navigation_xpos = 60
|
||||||
|
|
||||||
|
## 快进指示器的垂直位置。
|
||||||
|
define gui.skip_ypos = 15
|
||||||
|
|
||||||
|
## 通知界面的垂直位置。
|
||||||
|
define gui.notify_ypos = 68
|
||||||
|
|
||||||
|
## 菜单选项之间的间距。
|
||||||
|
define gui.choice_spacing = 33
|
||||||
|
|
||||||
|
## 标题菜单和游戏菜单的导航部分中的按钮。
|
||||||
|
define gui.navigation_spacing = 6
|
||||||
|
|
||||||
|
## 控制设置项目之间的间隔量。
|
||||||
|
define gui.pref_spacing = 15
|
||||||
|
|
||||||
|
## 控制设置按钮之间的间距。
|
||||||
|
define gui.pref_button_spacing = 0
|
||||||
|
|
||||||
|
## 存档页面按钮之间的间距。
|
||||||
|
define gui.page_spacing = 0
|
||||||
|
|
||||||
|
## 存档按钮之间的间距。
|
||||||
|
define gui.slot_spacing = 15
|
||||||
|
|
||||||
|
## 标题菜单文本的位置。
|
||||||
|
define gui.main_menu_text_xalign = 1.0
|
||||||
|
|
||||||
|
|
||||||
|
## 框架 ##########################################################################
|
||||||
|
##
|
||||||
|
## 这些变量控制在不存在覆盖层或窗口时可以包含用户界面组件的框架的外观。
|
||||||
|
|
||||||
|
## 通用框架。
|
||||||
|
define gui.frame_borders = Borders(6, 6, 6, 6)
|
||||||
|
|
||||||
|
## 用作确认界面部分的框架。
|
||||||
|
define gui.confirm_frame_borders = Borders(60, 60, 60, 60)
|
||||||
|
|
||||||
|
## 用作快进界面部分的框架。
|
||||||
|
define gui.skip_frame_borders = Borders(24, 8, 75, 8)
|
||||||
|
|
||||||
|
## 用作通知界面部分的框架。
|
||||||
|
define gui.notify_frame_borders = Borders(24, 8, 60, 8)
|
||||||
|
|
||||||
|
## 框架背景是否应平铺?
|
||||||
|
define gui.frame_tile = False
|
||||||
|
|
||||||
|
|
||||||
|
## 条,滚动条和滑块 ####################################################################
|
||||||
|
##
|
||||||
|
## 这些语句控制条,滚动条和滑块的外观和大小。
|
||||||
|
##
|
||||||
|
## 默认的 GUI 仅使用滑块和垂直滚动条。所有其他栏仅在创建者编写的屏幕中使用。
|
||||||
|
|
||||||
|
## 水平条,滚动条和滑块的高度。垂直条,滚动条和滑块的宽度。
|
||||||
|
define gui.bar_size = 38
|
||||||
|
define gui.scrollbar_size = 18
|
||||||
|
define gui.slider_size = 38
|
||||||
|
|
||||||
|
## 若为 True,则条的底图平铺。若为 False,则条的底图线性缩放。
|
||||||
|
define gui.bar_tile = False
|
||||||
|
define gui.scrollbar_tile = False
|
||||||
|
define gui.slider_tile = False
|
||||||
|
|
||||||
|
## 水平边框。
|
||||||
|
define gui.bar_borders = Borders(6, 6, 6, 6)
|
||||||
|
define gui.scrollbar_borders = Borders(6, 6, 6, 6)
|
||||||
|
define gui.slider_borders = Borders(6, 6, 6, 6)
|
||||||
|
|
||||||
|
## 垂直边框。
|
||||||
|
define gui.vbar_borders = Borders(6, 6, 6, 6)
|
||||||
|
define gui.vscrollbar_borders = Borders(6, 6, 6, 6)
|
||||||
|
define gui.vslider_borders = Borders(6, 6, 6, 6)
|
||||||
|
|
||||||
|
## What to do with unscrollable scrollbars in the game menu. "hide" hides them,
|
||||||
|
## while None shows them.
|
||||||
|
define gui.unscrollable = "hide"
|
||||||
|
|
||||||
|
|
||||||
|
## 历史 ##########################################################################
|
||||||
|
##
|
||||||
|
## 历史记录屏幕显示玩家已经阅读过的对话。
|
||||||
|
|
||||||
|
## Ren'Py 将保留的对话历史块数。
|
||||||
|
define config.history_length = 250
|
||||||
|
|
||||||
|
## 历史屏幕条目的高度,或设置为 None 以使高度变量自适应。
|
||||||
|
define gui.history_height = 210
|
||||||
|
|
||||||
|
## 在历史记录屏幕条目之间添加额外的空间。
|
||||||
|
define gui.history_spacing = 0
|
||||||
|
|
||||||
|
## 所指定叙述角色的标签的坐标、宽度和对齐方式。
|
||||||
|
define gui.history_name_xpos = 233
|
||||||
|
define gui.history_name_ypos = 0
|
||||||
|
define gui.history_name_width = 233
|
||||||
|
define gui.history_name_xalign = 1.0
|
||||||
|
|
||||||
|
## 对话文本的坐标、宽度和对齐方式。
|
||||||
|
define gui.history_text_xpos = 255
|
||||||
|
define gui.history_text_ypos = 3
|
||||||
|
define gui.history_text_width = 1110
|
||||||
|
define gui.history_text_xalign = 0.0
|
||||||
|
|
||||||
|
|
||||||
|
## NVL 模式 ######################################################################
|
||||||
|
##
|
||||||
|
## NVL 模式屏幕显示 NVL 模式的角色所产生的对话。
|
||||||
|
|
||||||
|
## NVL 模式背景窗口的背景边框。
|
||||||
|
define gui.nvl_borders = Borders(0, 15, 0, 30)
|
||||||
|
|
||||||
|
## Ren'Py 所显示的 NVL 模式条目的最大数量。当要显示的条目多于此数量时,最旧的条
|
||||||
|
## 目将被删除。
|
||||||
|
define gui.nvl_list_length = 6
|
||||||
|
|
||||||
|
## NVL 模式条目的高度。将此设置为 None 可使条目动态调整高度。
|
||||||
|
define gui.nvl_height = 173
|
||||||
|
|
||||||
|
## 当 gui.nvl_height 为 None 时,NVL 模式条目之间的间距,以及 NVL 模式条目和 NVL
|
||||||
|
## 模式菜单之间的间距。
|
||||||
|
define gui.nvl_spacing = 15
|
||||||
|
|
||||||
|
## 所指定叙述角色的标签的坐标、宽度和对齐方式。
|
||||||
|
define gui.nvl_name_xpos = 645
|
||||||
|
define gui.nvl_name_ypos = 0
|
||||||
|
define gui.nvl_name_width = 225
|
||||||
|
define gui.nvl_name_xalign = 1.0
|
||||||
|
|
||||||
|
## 对话文本的坐标、宽度和对齐方式。
|
||||||
|
define gui.nvl_text_xpos = 675
|
||||||
|
define gui.nvl_text_ypos = 12
|
||||||
|
define gui.nvl_text_width = 885
|
||||||
|
define gui.nvl_text_xalign = 0.0
|
||||||
|
|
||||||
|
## nvl_thought 文本(由 nvl_narrator 字符表示的文本)的位置,宽度和对齐方式。
|
||||||
|
define gui.nvl_thought_xpos = 360
|
||||||
|
define gui.nvl_thought_ypos = 0
|
||||||
|
define gui.nvl_thought_width = 1170
|
||||||
|
define gui.nvl_thought_xalign = 0.0
|
||||||
|
|
||||||
|
## NVL menu_buttons 的位置。
|
||||||
|
define gui.nvl_button_xpos = 675
|
||||||
|
define gui.nvl_button_xalign = 0.0
|
||||||
|
|
||||||
|
|
||||||
|
## 本地化 #########################################################################
|
||||||
|
|
||||||
|
## 该变量控制允许在何时换行。默认值适用于大多数语言。可用的值请参见 https://
|
||||||
|
## www.renpy.org/doc/html/style_properties.html#style-property-language
|
||||||
|
|
||||||
|
define gui.language = "unicode"
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## 移动设备
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
init python:
|
||||||
|
|
||||||
|
## 该变量增加快捷菜单按钮的尺寸来使它们在平板和手机上更容易被按到。
|
||||||
|
@gui.variant
|
||||||
|
def touch():
|
||||||
|
|
||||||
|
gui.quick_button_borders = Borders(60, 21, 60, 0)
|
||||||
|
|
||||||
|
## 该变量更改各个 GUI 元素的尺寸和间距来确保它们在手机上更容易被辨识。
|
||||||
|
@gui.variant
|
||||||
|
def small():
|
||||||
|
|
||||||
|
## 字体大小。
|
||||||
|
gui.text_size = 45
|
||||||
|
gui.name_text_size = 54
|
||||||
|
gui.notify_text_size = 38
|
||||||
|
gui.interface_text_size = 45
|
||||||
|
gui.button_text_size = 45
|
||||||
|
gui.label_text_size = 51
|
||||||
|
|
||||||
|
## 调整对话框的位置。
|
||||||
|
gui.textbox_height = 360
|
||||||
|
gui.name_xpos = 120
|
||||||
|
gui.dialogue_xpos = 135
|
||||||
|
gui.dialogue_width = 1650
|
||||||
|
|
||||||
|
## 更改各元素的尺寸和间距。
|
||||||
|
gui.slider_size = 54
|
||||||
|
|
||||||
|
gui.choice_button_width = 1860
|
||||||
|
gui.choice_button_text_size = 45
|
||||||
|
|
||||||
|
gui.navigation_spacing = 30
|
||||||
|
gui.pref_button_spacing = 15
|
||||||
|
|
||||||
|
gui.history_height = 285
|
||||||
|
gui.history_text_width = 1035
|
||||||
|
|
||||||
|
gui.quick_button_text_size = 30
|
||||||
|
|
||||||
|
## 文件按钮布局。
|
||||||
|
gui.file_slot_cols = 2
|
||||||
|
gui.file_slot_rows = 2
|
||||||
|
|
||||||
|
## NVL 模式。
|
||||||
|
gui.nvl_height = 255
|
||||||
|
|
||||||
|
gui.nvl_name_width = 458
|
||||||
|
gui.nvl_name_xpos = 488
|
||||||
|
|
||||||
|
gui.nvl_text_width = 1373
|
||||||
|
gui.nvl_text_xpos = 518
|
||||||
|
gui.nvl_text_ypos = 8
|
||||||
|
|
||||||
|
gui.nvl_thought_width = 1860
|
||||||
|
gui.nvl_thought_xpos = 30
|
||||||
|
|
||||||
|
gui.nvl_button_width = 1860
|
||||||
|
gui.nvl_button_xpos = 30
|
||||||
BIN
game/gui/bar/bottom.png
Executable file
|
After Width: | Height: | Size: 838 B |
BIN
game/gui/bar/left.png
Executable file
|
After Width: | Height: | Size: 522 B |
BIN
game/gui/bar/right.png
Executable file
|
After Width: | Height: | Size: 522 B |
BIN
game/gui/bar/top.png
Executable file
|
After Width: | Height: | Size: 838 B |
BIN
game/gui/bubble.png
Executable file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
game/gui/button/check_foreground.png
Executable file
|
After Width: | Height: | Size: 104 B |
BIN
game/gui/button/check_selected_foreground.png
Executable file
|
After Width: | Height: | Size: 158 B |
BIN
game/gui/button/choice_hover_background.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
game/gui/button/choice_idle_background.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
game/gui/button/hover_background.png
Normal file
|
After Width: | Height: | Size: 269 B |
BIN
game/gui/button/idle_background.png
Normal file
|
After Width: | Height: | Size: 269 B |
BIN
game/gui/button/quick_hover_background.png
Executable file
|
After Width: | Height: | Size: 198 B |
BIN
game/gui/button/quick_idle_background.png
Executable file
|
After Width: | Height: | Size: 198 B |
BIN
game/gui/button/radio_foreground.png
Executable file
|
After Width: | Height: | Size: 104 B |
BIN
game/gui/button/radio_selected_foreground.png
Executable file
|
After Width: | Height: | Size: 158 B |
BIN
game/gui/button/slot_hover_background.png
Executable file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
game/gui/button/slot_idle_background.png
Executable file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
game/gui/frame.png
Executable file
|
After Width: | Height: | Size: 7.1 KiB |
BIN
game/gui/game_menu.png
Executable file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
game/gui/main_menu.png
Executable file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
game/gui/namebox.png
Executable file
|
After Width: | Height: | Size: 503 B |
BIN
game/gui/namebox_bg.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
game/gui/notify.png
Executable file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
game/gui/nvl.png
Executable file
|
After Width: | Height: | Size: 39 KiB |
BIN
game/gui/overlay/confirm.png
Executable file
|
After Width: | Height: | Size: 38 KiB |
BIN
game/gui/overlay/game_menu.png
Executable file
|
After Width: | Height: | Size: 38 KiB |
BIN
game/gui/overlay/main_menu.png
Executable file
|
After Width: | Height: | Size: 39 KiB |
BIN
game/gui/phone/bar/bottom.png
Executable file
|
After Width: | Height: | Size: 838 B |
BIN
game/gui/phone/bar/left.png
Executable file
|
After Width: | Height: | Size: 522 B |
BIN
game/gui/phone/bar/right.png
Executable file
|
After Width: | Height: | Size: 522 B |
BIN
game/gui/phone/bar/top.png
Executable file
|
After Width: | Height: | Size: 838 B |
BIN
game/gui/phone/button/check_foreground.png
Executable file
|
After Width: | Height: | Size: 111 B |
BIN
game/gui/phone/button/check_selected_foreground.png
Executable file
|
After Width: | Height: | Size: 176 B |
BIN
game/gui/phone/button/choice_hover_background.png
Executable file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
game/gui/phone/button/choice_idle_background.png
Executable file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
game/gui/phone/button/hover_background.png
Executable file
|
After Width: | Height: | Size: 583 B |
BIN
game/gui/phone/button/idle_background.png
Executable file
|
After Width: | Height: | Size: 583 B |
BIN
game/gui/phone/button/radio_foreground.png
Executable file
|
After Width: | Height: | Size: 111 B |
BIN
game/gui/phone/button/radio_selected_foreground.png
Executable file
|
After Width: | Height: | Size: 176 B |
BIN
game/gui/phone/button/slot_hover_background.png
Executable file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
game/gui/phone/button/slot_idle_background.png
Executable file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
game/gui/phone/nvl.png
Executable file
|
After Width: | Height: | Size: 38 KiB |
BIN
game/gui/phone/overlay/game_menu.png
Executable file
|
After Width: | Height: | Size: 38 KiB |
BIN
game/gui/phone/overlay/main_menu.png
Executable file
|
After Width: | Height: | Size: 39 KiB |
BIN
game/gui/phone/scrollbar/horizontal_hover_bar.png
Executable file
|
After Width: | Height: | Size: 466 B |
BIN
game/gui/phone/scrollbar/horizontal_hover_thumb.png
Executable file
|
After Width: | Height: | Size: 464 B |
BIN
game/gui/phone/scrollbar/horizontal_idle_bar.png
Executable file
|
After Width: | Height: | Size: 465 B |
BIN
game/gui/phone/scrollbar/horizontal_idle_thumb.png
Executable file
|
After Width: | Height: | Size: 464 B |
BIN
game/gui/phone/scrollbar/vertical_hover_bar.png
Executable file
|
After Width: | Height: | Size: 806 B |
BIN
game/gui/phone/scrollbar/vertical_hover_thumb.png
Executable file
|
After Width: | Height: | Size: 804 B |
BIN
game/gui/phone/scrollbar/vertical_idle_bar.png
Executable file
|
After Width: | Height: | Size: 805 B |
BIN
game/gui/phone/scrollbar/vertical_idle_thumb.png
Executable file
|
After Width: | Height: | Size: 804 B |
BIN
game/gui/phone/slider/horizontal_hover_bar.png
Executable file
|
After Width: | Height: | Size: 704 B |
BIN
game/gui/phone/slider/horizontal_hover_thumb.png
Executable file
|
After Width: | Height: | Size: 140 B |
BIN
game/gui/phone/slider/horizontal_idle_bar.png
Executable file
|
After Width: | Height: | Size: 703 B |
BIN
game/gui/phone/slider/horizontal_idle_thumb.png
Executable file
|
After Width: | Height: | Size: 140 B |
BIN
game/gui/phone/slider/vertical_hover_bar.png
Executable file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
game/gui/phone/slider/vertical_hover_thumb.png
Executable file
|
After Width: | Height: | Size: 145 B |
BIN
game/gui/phone/slider/vertical_idle_bar.png
Executable file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
game/gui/phone/slider/vertical_idle_thumb.png
Executable file
|
After Width: | Height: | Size: 145 B |
BIN
game/gui/phone/textbox.png
Executable file
|
After Width: | Height: | Size: 13 KiB |
BIN
game/gui/scrollbar/horizontal_hover_bar.png
Executable file
|
After Width: | Height: | Size: 466 B |
BIN
game/gui/scrollbar/horizontal_hover_thumb.png
Executable file
|
After Width: | Height: | Size: 464 B |
BIN
game/gui/scrollbar/horizontal_idle_bar.png
Executable file
|
After Width: | Height: | Size: 465 B |
BIN
game/gui/scrollbar/horizontal_idle_thumb.png
Executable file
|
After Width: | Height: | Size: 464 B |
BIN
game/gui/scrollbar/vertical_hover_bar.png
Executable file
|
After Width: | Height: | Size: 806 B |
BIN
game/gui/scrollbar/vertical_hover_thumb.png
Executable file
|
After Width: | Height: | Size: 804 B |
BIN
game/gui/scrollbar/vertical_idle_bar.png
Executable file
|
After Width: | Height: | Size: 805 B |
BIN
game/gui/scrollbar/vertical_idle_thumb.png
Executable file
|
After Width: | Height: | Size: 804 B |
BIN
game/gui/skip.png
Executable file
|
After Width: | Height: | Size: 720 B |
BIN
game/gui/slider/horizontal_hover_bar.png
Executable file
|
After Width: | Height: | Size: 523 B |
BIN
game/gui/slider/horizontal_hover_thumb.png
Executable file
|
After Width: | Height: | Size: 114 B |
BIN
game/gui/slider/horizontal_idle_bar.png
Executable file
|
After Width: | Height: | Size: 522 B |
BIN
game/gui/slider/horizontal_idle_thumb.png
Executable file
|
After Width: | Height: | Size: 114 B |
BIN
game/gui/slider/vertical_hover_bar.png
Executable file
|
After Width: | Height: | Size: 839 B |
BIN
game/gui/slider/vertical_hover_thumb.png
Executable file
|
After Width: | Height: | Size: 111 B |
BIN
game/gui/slider/vertical_idle_bar.png
Executable file
|
After Width: | Height: | Size: 838 B |
BIN
game/gui/slider/vertical_idle_thumb.png
Executable file
|
After Width: | Height: | Size: 111 B |
BIN
game/gui/textbox-bu.png
Normal file
|
After Width: | Height: | Size: 315 KiB |
BIN
game/gui/textbox.png
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
game/gui/textbox_bg.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
game/gui/thoughtbubble.png
Executable file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
game/gui/window_icon.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
game/icon.icns
Normal file
BIN
game/images/aunt normal.png
Normal file
|
After Width: | Height: | Size: 342 KiB |
BIN
game/images/bg black.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |