School Years

School Years

Not enough ratings
创意工坊
By 砖块菌
指南介绍了《初恋日记》创意工坊的制作步骤
   
Award
Favorite
Favorited
Unfavorite
订阅
创意工坊内容由Steam社区产生和维护,欢迎各位充满激♂情的小伙伴前来参与创作,也欢迎大家订阅创意工坊内其它作者创作的作品。
成功订阅作品后,运行客户端时会自动下载订阅的内容,下载完成后,你就可以在设置界面里将“故事”由“简体中文”切换成所订阅的作品了,遇到喜欢的作品一定要点赞收藏哦~!
创建作品
各位亲爱的“初学家”们,是不是对在创意工坊将自己奇思妙想的故事制作成游戏已经跃跃欲试了呢?
接下来我将为大家简单说明本创意工坊的使用方式
如果你还没有创建自己的作品,那么你首先需要点击游戏主界面左下角的创意工坊按钮,打开创建作品页面,点击“创建作品”按钮,等待提示创建成功后即可
目录、文件说明
本节将介绍创意工坊的主要文件目录,需要说明的是,游戏本体中的所有音频、图片资源默认都可以被您的作品直接调用,所以不用另外复制一份过来了。

打开文件目录
作品创建成功后,在Steam库中右键点初恋日记,选择选择“管理->浏览本地文件”,打开游戏的本地文件夹。在上传作品前,你需要将你自己准备的作品封面预览图放在这里,封面尺寸为16*9,支持jpg和png文件格式

Workshop目录
打开Workshop目录,接下来你的主要资源都将存放在这个目录中。
另外在Workshop目录下,还有两个配置文件,分别是:
main.op 主要作用是配置封面的背景图以及演出方式
actors.setting 作用是配置游戏中出场人物立绘的其它别名(在对白中切换表情时用得到)和字幕颜色

Audio目录
这里存放将使用在游戏中的各种声音资源
BGM 背景音乐资源放在这里
SE 各种游戏音效放在这里
Voice 人物语音放在这里
音频资源支持".ogg"格式和".wav"格式(不支持.mp3文件)

Diary目录
这个里面可以放一些郝强的日记。。估计各位也用不到

Graphic目录
各种图片资源都放在这里

Story目录
剧情脚本的根目录,其子文件夹中的".story"文件就是游戏中的剧情脚本了,各位可以通过撰写这些剧情脚本,实现各种各样的游戏剧情和演出
注意:脚本在保存时需要注意选择以UTF-8编码的方式保存,不然可能无法正常读取哦
剧情脚本语法一览
本节将主要说明本作品剧情脚本中命令的语法规则,在编辑剧情的过程中,你可以通过查阅这些规则,实现一部视觉小说中的常见功能

0、脚本注释
//单行注释的各种内容
/*
可以跨行的注释
*/
注:被注释掉的各种内容在编译时都会被直接扔掉不执行,注释的作用是提高剧本的可读性。

1、变量声明语句(所有变量都是整数)
格式一:
Var 变量名
格式二: //声明一个变量的同时对其值初始化
Var 变量名 = 数字
注: 字母 var 后面有一个空格,只有声明后的变量才能够用于进行表达式、逻辑等运算,变量名不可以重复(在不同的文件中也不要重复申明)。
建议是在所有剧本中第一个执行的剧本一开始申明游戏中的所有变量,既方便你查阅,也能够保证所有变量在使用前都已经申明了;

2、标签
格式一:
===标签名=== //注:等号数量可自由添加,最少以三个等号开头
格式二:
TAG:标签名 //或者为小写
格式三:
标签:标签名
备注:标签不能重复

3、表达式
【表达式:赋值表达式】
注:其中,左边的“表达式:”是关键字,中括号是关键符号,“赋值表达式”是一个算术式子,如加减乘除,例:
【表达式:a = (a +5) * b】
【表达式: 亲情 = 亲情 +1】
【表达式:心理阴影面积 = 5】
上述表达式中,所用到的这些变量在使用之前注意需要先声明,否则是无效的表达式。

4、日期
格式:
【日期|2020年5月17日 星期日】

5、字幕
示例
张三:(微笑)你大舅,你二舅,都是你舅!|张三_123
其中括号里对应立绘的表情变化,不会显示在字幕上,”|”后面对应的是这句话语音的文件名,位于Voice文件夹内
注:在冒号左边的东西会被识别为人物的名字,在冒号或者逗号右边,被小括号包裹的文字(如上面的“高兴”和“做鬼脸”)会被识别为该人物在说这句话时的表情,与如果引擎中设置了相应的人物并设置好了这个表情,读取到这里的时候立绘会自动更换表情。被小括号包裹的东西都不会打印出来,人物表情只有紧跟在其它标点符号后面时,才是有效的。

6、关键字
【BEGIN】//作为一个位置的标记
【RETURN】//脚本执行到这里会向上返回到BEGIN标记的位置
【END】//作为一个位置的标记
【BREAK】//脚本执行到这里会向下前往END标记的位置

7、条件语句
格式:
【如果:逻辑表达式】
注:“如果”,冒号可换成空格,表达式为真顺序执行,表达式为假程序则会跳转到目标ELSE或者END所在的位置,例:
【如果:依赖度 > 5】
注:条件语句建议与目标【END】成对,逻辑表达式中可以是关于已经定义的变量的一些逻辑运算(与或非大于小于等于),写法与其它编程语言均类似,此处不再赘述。

8、三目运算式
格式:
【如果:逻辑表达式?赋值表达式1:赋值表达式2】
例:
【如果:temp == 1?temp=2:temp=0】
注:当逻辑表达式值为真执行赋值表达式1,否则执行赋值表达式2(也可以没有表达式2,既什么也不做),如上例的式子中,当变量temp的值如果等于1时,该语句的执行结果是temp的值变成2,当变量temp的值为其它数值时,该语句的执行结果是temp的值变为0。
9、随机执行
格式:
【随机】
其它命令1
其它命令2
其它命令3
【以上随机】
注:随机命令的执行,只会执行上述几条命令中的其中一条命令。

10、选项
例:
<选项:向左走|向前走>
<选项:告诉她>
在界面上显示若干选项,等待玩家选择一个"目标",时间到时前往[不选]目标

11、目标
格式:
<文字>
<ELSE>
<END>
除了【ELSE】/【不选】/【NONE】和【END】为特殊的目标外,其它目标为一般目标,用来作为选项或者触发器控制的剧本逻辑跳转时的参考位置。
备注:目标与标签的作用都是标记剧本执行位置,但标签不能重复,目标可以重复;

12、画面遮罩效果
用遮罩图片遮挡画面,例:
【眨眼】 //遮罩图片先从上向下移动,又立刻从下向上移动
【闭眼】 //遮罩图片从上向下移动,之后保持
【睁眼】 //遮罩图片从下向上移动
【幕布】 //遮罩图片逐渐显示清晰
【撤幕布】 //遮罩图片逐渐变为透明
注:上述命令务必单独写一行,具体效果可在剧本中测试一下。

13、触发器
格式:
【触发器】
等待玩家选择一个“目标”
用于look at剧情或迷宫等人物可以走动的剧情中,程序读取到该命令,会等待玩家触发某个特定的目标,需要配合“目标”命令使用,如在look at剧情中点击画面中的人物或物品的事件、迷宫中玩家打开了某个门的事件。

14、自由图片
【图片|层|x,y,scale,alpha,duration|imageName】
【图片|1|25,35,1,1,1.5|imageName】
如上例,会经过1.5秒,在坐标(25,35)的位置显示一张名称为imageName的图片,最终透明度为1

16、协程
格式:
【开启协程】
【关闭协程】
为了方便理解,“开启协程”也可以写做为【新时间线】,关闭协程也可以写为【主时间线】
程序读取到【开启协程】的时候,游戏主时间线会从【关闭协程】的位置继续执行,而被包含在【开启协程】和【关闭协程】中间的这部分命令将作为一个与主时间线平行的时间线与主线中的命令同时执行。各个平行时间线中的文字将显示在画面顶部。你可以通过变量的运算配合条件命令来实现各个时间线之间执行逻辑相互影响。
17、背景音乐
格式一:
【BGM:音乐名称|目标音量|渐变时间】
如:
【BGM:美好的一天|65|2】
//执行的效果是,将当前音乐设置成“美好的一天”,该音乐的音量将从当前音量经过两秒的时间逐渐变化为65
格式二:
【BGM:音乐名称】 //该模式下音乐会以默认音量播放
目标音量:范围为0~100; 渐变时间:单位为秒;
特殊:
【BGM淡出】/【BGM停止】
效果是当前音乐淡出/或停止
18、音效
格式一:
【音效:音效名称】
格式二:
【音效名称】
注:如果直接使用音效名称,该名称中务必包含“声”字(如“脚步声”、“物品落地声”、“布料摩擦声”等)
格式三:
【音效名|音量|渐变时间】
注:采用这种格式写时,该音效将被挂在一个循环的音频源上一直循环播放,因此请留意在后面不需要播放该音效的时候务必将该音效消除
特殊:
【音效淡出】/【音效停止】
该命令能够将当前正在播放的循环音效淡出/停止

19、跳转语句
能够跳转到指定的标签。
格式一:
【跳转:标签】
注:无条件跳转,将冒号后面的字符串直接作为标签跳转到对应的命令行
格式二:
【跳转:表达式?标签】
注:条件跳转,表达式为真时,跳转到对应的标签,否则继续顺序执行
格式三:
【跳转:表达式?标签1|标签2】
注:条件跳转,表达式为真时,跳转到标签1,否则跳转到标签2

20、演员设置
格式:
【演员名|登场】
【演员名|登场|冬装|上】
【演员名|退场】
【演员名|镜像|TRUE】
【演员名|pose|pose】
【演员名|层次|数字】
【演员名|动作|动作名】 //动作名包括:水平,垂直,放大
【演员名|位置|位置编号】
【演员名|表情|表情名称】
【演员名|移动|位置编号|消耗时间】
【演员名|坐标|x,y,scale,alpha,duration】

21、等待
格式一:
【等待:数字】
注:效果是等待对应的事件,单位秒
格式二:
【等待:逻辑运算式】
如:【等待:temp == 5】、【等待:心理阴影面积 > 5】
注:效果是等待某个逻辑运算式的结果为真时继续执行,你可以在某一个时间线进行一些算数运算改变某些变量的值,而在另一个时间线则是等待某个逻辑表达式的结果为真,从而实现两个时间线之间的执行逻辑相互影响。

22、转场
格式一:
【转场|场景名】
注:其中,采用默认方式为遮罩
格式二:
【转场|场景名|切换方式|x,y,scale】
注:其中,切换方式包括:时钟、横向、纵向、逆时针、横向反、纵向反、淡出、遮罩、闪回
格式三:

23、多周目
举例:
【多周目 通关次数】
//申明一个多周目变量“通关次数”

【多周目 通关次数 = 通关次数 + 1】
//效果是多周目数值“通关次数”自增1

【多周目 通关次数 >1】
//效果是当多周目数值“通关次数”大于1时顺序执行,否则向下找ELSE或者END

24、Message
格式:
【消息:消息名称】
7 Comments
aquatorrent 11 Oct @ 7:48pm 
The text seems to be separated randomly. How do i control when the text breaks? Or at least make them break after a word ends.

So for example for a text like this:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla accumsan turpis nec ornare ornare.

Instead of breaking it like this
Lorem ipsum dolor sit am
et, consectetur adipisc
ing elit. Nulla accumsan turpis
nec ornare ornare. Mae
cenas efficitur maximus cursus.

It can at least break like this
Lorem ipsum dolor sit amet,
consectetur adipiscing
elit. Nulla accumsan turpis
nec ornare ornare. Maecenas
efficitur maximus cursus.
[EU] 本格的ガチムチPANTSW 9 Mar, 2022 @ 2:19pm 
<那么你首先需要点击游戏主界面左下角的创意工坊按钮,打开创建作品页面,点击“创建作品”按钮,等待提示创建成功后即可>

異哉!孤点進了左下角的 創意工坊 按鈕, 進去找不到甚么"創建作品"頁面啊。。。。。。
你今天真好看 8 Nov, 2021 @ 5:29am 
这文档好厉害,有种看编程语言的感觉
Potatotykamani 9 Sep, 2020 @ 8:40am 
:)
whp2019 30 Jul, 2020 @ 6:23am 
这文档厉害了
YDJSIR 6 Jul, 2020 @ 7:45pm 
这文档可还行,看起来程序那边也是做了一套脚本语言的解释与实现的
xiaozhan fans 24 Jun, 2020 @ 7:32pm 
大型编程教学