Ren’Py GAL开发学习笔记

Ren’Py作用

Ren’Py是以python编译的支持安卓、pc、web的多平台GALgame开发引擎,具有脚本简单、支持广等优点。

脚本编辑

script.rpy脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
define s = Character('希尔维亚', color="#c8ffc8")
define w = Character('我', color="#c8c8ff") //定义角色名和角色名颜色
define e = Character("艾琳", image="eileen") //定义了角色图片
define p = Character("player_name", dynamic=True) //从一个变量中获取角色名称
default wodouyao = False //后宫flag

label start: //label语句,用于剧情块。此处创建了start标签,是“start game”游戏入口。

scene bg meadow //scene清空所有图像,后面两个参数是tag标签(文件名)和属性(多个对应属性)。bg习惯指背景图片。图片输出命名规律如bg meadow.jpg、bg uni.jpg。

\# 这是一条注释。

//图像默认居中相接于底部

with fade //with转场标签,后方参数为转场样式。此处是褪色。

"希尔维亚" "嗨!今天的课怎么样?"

play music "illurock.ogg" //播放音乐

"我" "挺好的……" //say语句,第一个参数是说话角色,第二个参数是正在说的话。**“\”**反斜杠是转义符。

e happy "不过这都是过去的事了。" //等价于show eileen happy
e @ happy "虽然还挺有趣的。" // `@`表示临时改变,此句之后变回去


"我当然不会承认,上课的时候内容只是左耳进右耳出。" //内心所想?或**旁白**?

stop music
play sound "effect.ogg" //音效,不会循环播放

w "你现在要回家了吗?要不要跟我一起走?"

s "当然!"

show sylvie green smile //标签为sylvie的图片,后两个为属性。忽略图片扩展名。
with dissolve //溶解

"她把脸转向我,上面挂着微笑。她看起来兴致高昂。我觉得自己刚才的紧张情绪已经消散。"

"我得问问她!"

m "嗯呣……你是否可以……"

m "你是否可以做我的视觉小说画师?"

show sylvie green surprised //同标签,将自动替换之前的,常用于表现角色表情变换

"沉默。"

s "我立刻去办!"

hide sylvie //隐藏该图形,角色消失
pause 3.0 //暂停3秒,不指定时间,则等待鼠标点击

show sylvie green sad

s "你为什么那么熟练啊!"

show sylvie green smile at right //图像靠左。right等关键词可自定义。

menu:

"你们都是我的翅膀!":
jump badend //可任一跳转到其他rpy文件中

"我能有什么办法,不是我花心,是tm船裂了啊!":
jump book

label badend:

$ wodouyao = True //后宫选项被选中,赋值。$表示py语句。

".:. Bad结局预定"

return //结局


if wodouyao:

"渣男死路一条" //wodouyao为真

else:

"不选也是死路一条。" //wodouyao为假

Ren’Py游戏脚本详细

1
2
3
4
5
6
7
8
脚本
├── 语句块(block) #多行脚本构成
| ├── 各行脚本
| | ├── 基本元素(element)
| | ├── 基本元素(element)
| 语句块(block) #多行脚本构成
| └── 各行脚本 #核查证件上传类
| └── 基本元素(element)

game目录下有多个.rpy文件组成。在Ren’Py启动时,会将.rpy文件编译为.rpyc文件。

python基础(略)

重要语句解释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
label loop_start:  //jump跳转

e "哦,不!看起来我们陷入了一个无限循环之中。"

jump loop_start


e "首先,我们调用一个子程序(subroutine)。" //call可带参

call subroutine

call subroutine(2)

call expression "subroutine" pass (count=3)

label subroutine(count=1):

e "我来过这里 [count] 次了。"
e "接着,我们会返回到子程序(subroutine)。"

return

控制图像

控制图像的四种语句:

  • image - 定义一个新的图像(image)。
  • show - 在图层上(layer)显示一个图像。
  • scene -清空图层(layer),并可选是否在那个图层上显示一个图像。
  • hide - 将图层(layer)上的某个图像移除。
  • with - 用于图像切换,降低图像变化的突兀感。
1
2
3
4
5
6
7
8
image eileen happy = "eileen_happy.png"
image black = "#000"
image bg tiled = LiveTile("tile.jpg")

image eileen happy question = VBox(
"question.png",
"eileen_happy.png",
)

控制菜单

1
2
3
4
5
6
7
menu:
"向左": //选项
...
"向右":
...
"向前看" if drank_tea: //值为真,则可选
...

GUI图形界面定制(暂略)

御坂游戏项目

嘛,目前缺立绘、缺场景素材、缺剧本,抽时间吧,看6月前搞不搞得出来个短剧本GALgame demo。

-------------本文结束感谢您的阅读-------------