文字游戏(galgame)及其开发工具(源码和教程) 环球时讯
2023-01-27 17:48:03 来源:哔哩哔哩

文字游戏(galgame)及其开发工具(源码和教程)

首页是文字游戏。菜单→文字游戏→在线设计游戏动画,可在线设计游戏动画。设计好保存后,在首页展示。


(相关资料图)

有大量的人物可选,人物的表情、口型、穿着、肢体动作,可随剧情而变化。文字转语音,有男声和女声。

有大量的背景图片可选,每个背景图片又分为白天、傍晚、晚上,还可以设置晴天或下雨。

有大量好听的背景音乐可选。

影院模式:在立体的影院场景中,观看游戏动画。可以选座位,从而从不同视角观看动画。

人工智能对话:菜单→智能对话→进入智能对话。

你可以教动画人物知识,然后提问教过的知识,或动画人物已知的知识。

现在知识库知识太少,请按使用说明(问答方法),先教后问,不要直接就问。教和问不能一起发送。

还可以向动画人物提问故事里的事情(保存剧情时需勾选“语义理解”)。

动画人物有自动学习和推理功能。

还附带原理教程、小说写作技巧、网页游戏《心有一玉》、博客、相册等。

此程序完全开源、完全免费。先看完教程,才能看懂源码,教程在菜单里。

首页:

影院模式:

菜单栏:

游戏动画设计:

人工智能对话:

网页游戏《心有一玉》:

博客(白天模式):

博客(夜晚模式):

相册:

剧情设计

主话语是对话框每次显示的人物话语,可以连带(附带)提问选项、后果影响、前提条件。

主话语框的内容,一次不要写的太多,建议分多次写完,免得文字溢出对话框。

主话语要选择说话人和表情(一般、高兴、忧伤、生气、惊讶)。

说话人阿哲不显示阿哲的人物图片,因为阿哲是用户视角,只显示对话文字。

说话人和人物图片要对应,否则说话人和人物图片不匹配。

场景模式分为:正常、无名、有景无人、全屏文字。

正常:有景有人。

无名:不显示名字框。用于主人公的旁白和心理自述。

有景无人:有背景图片,但是没有人物,用于介绍环境。

全屏文字:黑颜色的背景,人物和背景环境都没有,用于介绍故事背景。

场景图片(背景图片)、人物图片、音乐,共同构成了影片画面。所以选择说话人和写主话语时,不要忘记在右边栏中设置相应的场景图片、人物图片、背景音乐。

每个场景可以选择时间:白天、傍晚、晚上。时间不同,图片的光影效果就不同。还可以选择天气:晴天、下雨。

人物设置上,如果不选人物2(人物2为“无”),就是只有1个人物,居中显示。如果选择了人物2,画面中就有两个人物,人物1在左,人物2在右。

如果你不了解书写规范,就在剧情设计界面的各个小框里写,然后点“小框内容提交到剧情栏”。如果你了解书写规范,可以直接在界面左边的剧情栏里写。

只有剧情栏的内容会被保存,小框的内容不会被保存,所以小框内容必须提交到剧情栏,才有效。

不是写一行保存一行,而是剧情栏里都写完了,最后点保存按钮,保存剧情栏的所有内容。保存前,还可以在剧情栏里检查和修改。

保存时,如果勾选了“语义理解”,就会人工智能的语义分析,这样就可以向动画人物提问故事里的事情。例如故事里写“阿玉喜欢猫。”就可以问“阿玉喜欢什么”

剧情设计界面,如果填写了选项框,播放剧情时,就会弹出选项框。点击选项,就会显示选项的回答。

最好把分支归一框填了,否则每个选项后面,就开启一条剧情线。如果其中哪个剧情线后面忘写了,而用户又偏偏点了那个选项,后面就没东西了,故事也就提早终结了。而如果填了分支归一框,无论用户选择哪个选项,选项回答后,下一句话都是分支归一框的内容,这样就避免分成多个剧情线。

书写规范:

(1)主话语在前,其它方面(例如场景、音乐、选项)写在后面(下一行开始)。

不同内容,每次要换行,不能写在一行上。

(2)人物说话:

人物名字(表情):话语内容。

如果表情是一般,则省略不写。

阿玉:你好。表示阿玉的表情为一般。

阿玉(高兴):你好。表示阿玉的表情为高兴。

(3)场景:

场景(时间、天气):场景名称。

如果时间为白天,则省略不写。如果天气为晴天,则省略不写。

场景:卧室1。表示场景为卧室1,时间为白天,天气为晴天。(白天和晴天都省略不写)

场景:卧室1(傍晚)。表示时间为傍晚,天气为晴天。(晴天省略不写)

场景:卧室1(下雨)。表示时间为白天,天气为下雨。(白天省略不写)

场景:卧室1(傍晚、下雨)。表示时间为傍晚,天气为下雨。(没有可省略的)

错误的写法:

场景:卧室1(白天),因为多写了白天。

场景:卧室1(晴天),因为多写了晴天。

场景:卧室1(白天、晴天),因为多写了白天和晴天。

(4)不变的就不用重复再写

最初的第一句话,要写场景、人物、音乐。随后的话语中,不变就不写,变化了才写。

阿玉:你好。

人物:阿玉

场景:街1

阿玉:很高兴见到你。

人物:阿玉(不要写这一句,因为人物没有变化,不用重复写)

场景:街1(也不要写这一句,因为场景没有变化,不用重复写)

但是,即便场景名称没变,时间或天气变了,也要重写场景。

(5)两个角色时,人物名用顿号分开。

人物:阿玉。表示一个人物。

人物:阿玉、小茜。表示两个人物。

(6)全屏和有景无人

全屏文字时,写全屏:内容。

有景无人时,写无人:内容。

无名模式时,写无名:内容。

全屏文字模式回到正常模式,要重新写场景和人物,因为全屏文字时,之前的场景和人物都没了。

有景无人模式回到正常模式,要重写人物,因为有景无人模式时,之前的人物没了。

(7)选项:

有选项时,在主话语后面写选项和答。例如:

选项1:选项内容。

答:回答的内容。

选项2:选项内容。

答:回答的内容。

选项归一:归一的内容。

现在有个小缺点:剧情最后一句话不会被保存。

具体看下面的例子,就是剧情中“简单介绍”的剧本文字:

标题:简单介绍

阿玉:初次见面,我叫阿玉。我来为大家介绍这个网站。在线设计游戏动画栏目,可以把剧本文字转化为游戏动画。

场景:卧室2

人物:阿玉

音乐:主旋律1

阿玉:接下来为大家介绍表情系统。人物有五种表情,以适应不同的剧情。现在是一般表情。

阿玉(高兴):生活中总有些快乐的事情,让我喜笑颜开。

阿玉(悲伤):但是人生中有阳光就有风雨,有时我也会悲伤。

阿玉(生气):有些事情,惹得我生气。

阿玉(惊讶):还有些事,会让我表情惊讶。

阿玉:人物不仅可以选择表情,还可以选择穿着。现在我换成了校服,在人物下拉框里设置。

人物:阿玉(校服)

小茜:大家好,我是可爱的小茜。场景中可以设置两个人物喔,在人物2里设置另一个人物。有很多人物可以选择。

人物:阿玉(校服)、小茜

小茜:说话人和人物图片要对应,否则说话人的名字和人物图片不匹配。

小茜:接下来,由我来介绍场景系统。场景就是背景图片,有很多种场景可以选择。每种场景分为白天、傍晚、晚上三种光影模式,还可以设置晴天或下雨。

人物:小茜

小茜:现在切换到傍晚模式,夕阳余晖下的房间。在具体场景中切换。

场景:卧室2(傍晚)

小茜:随后,夜晚降临。拉上窗帘,打开了灯。

场景:卧室2(晚上)

小茜:场景模式上,正常就是有景有人,有景无人用于介绍环境,全屏文字用于介绍故事背景。

无人:现在是有景无人模式。

全屏:现在是全屏文字模式。

小茜:现在恢复回正常模式。想出去走走。

场景:卧室2(晚上)

人物:小茜

小茜:来到了家门口。

场景:家门口2

小茜:下雨啦。

场景:家门口2(下雨)

音乐:下雨1

小茜:主话语是对话框每次显示的话语。最好每次少写,多次写完。主话语可以附带提问选项、后果影响、前提条件,也可以只写主话语。

小茜:如果填写了提问选项,就会弹出选项框,点击不同选项,产生不同回答。例如想吃点什么?

选项1:苹果

答:小茜:给你一个青苹果。

选项2:西瓜

答:小茜:给你一块大西瓜。

选项归一:小茜:要填写分支归一。这样的话,无论用户选择什么选项,回答后,下一句话都是分支归一框的句子。

小茜:后果影响是主话语句对条件状态的改变。如果条件变化了,下次可能由满足条件的剧情,变为不满足条件的剧情。

小茜:前提条件是满足条件时,才执行主话语句,否则执行不满足条件时的句子。

小茜:带大家到学校看看。

场景:教室2

音乐:一般1

小茜:如果你了解书写规则,可以直接在剧情设计界面左边的剧情栏里写剧情。

小茜:小框的内容要提交到剧情栏,因为小框的内容不会被保存,只有剧情栏的内容才会被保存。不是写一行保存一行,是都写完,最后再保存。

阿玉:保存剧情时,如果勾选了语义理解,动画人物就会通过人工智能方式理解剧情。然后可以向动画人物提问剧情里的事情。

人物:阿玉(校服)、小茜

阿玉:也可以向动画人物教知识,然后提问教过的知识,或动画人物已知的知识。由于知识库知识太少,所以请按问答方法,先教后问。

阿玉:先简单介绍这些,更多内容请点击菜单按钮。

小茜:以后请大家多多关照。

人工智能对话:

问答方法

方式1:你可以教机器人知识,然后提问教过的知识,或机器人已知的知识。

知识库知识太少,所以请先教后问。教和问不要一起发送。

方式2:剧情设计界面,保存剧情时,如果勾选了“语义理解”,则可以提问剧情的内容。

提问动作执行者(主语)或动作对象(宾语)用:谁、什么、啥

教:猫吃鼠

问:猫吃什么

答:鼠

注意1:不要写“教:”直接写猫吃鼠。也不要写“问:”直接写猫吃什么。

注意2:问主语或宾语,用“谁”或“什么”,不要再加多余的字。例如问猫吃什么,不要问猫吃什么动物,多加“动物”两个字,就错了。

问:什么吃鼠

答:猫。

双宾语结构:谓语动词后面有两个名词。

教:猫给鼠苹果

问:猫给鼠什么

答:苹果

宾语补足语结构:宾语后面还有动词。

教:猫让鼠跳舞

问:猫让谁跳舞

答:鼠

提问动作(谓语动词)用:怎么

教:猫吃鼠

问:猫怎么鼠

答:吃

提问行为(动作及动作对象)用:干什么、做什么

提问主语的行为:

教:猫喜欢跑步

教:猫讨厌游泳

问:猫喜欢干什么

注意:不要问猫喜欢什么,提问动作(动词)要用“干什么”,提问名词才用“什么”

答:跑步

问:猫讨厌干什么

答:游泳

提问宾语的行为:

教:猫让鼠跳舞

问:猫让鼠干什么

答:跳舞

提问主语的身份、性质、状态(表语)用:是什么

教:猫是动物

问:猫是什么

答:动物

提问形容词用:什么样的

教:猫吃黑色的鼠

问:猫吃什么样的鼠

答:黑色的

提问数词用:多少、几

教:猫吃两只鼠

问:猫吃多少鼠

答:2只

提问所属(名词所有格)用:谁的、什么的

教:阿哲的猫吃鼠

问:谁的猫吃鼠

答:阿哲的

提问动作方式(副词)用:怎么的

教:猫经常吃鼠

问:猫怎么的吃鼠

答:经常

提问时间用:什么时候,什么时间

教:昨天猫吃鼠

问:什么时候猫吃鼠

答:(显示昨天的年月日)

提问地点用:在哪里、什么地方

教:猫在花园吃鼠

问:猫在哪里吃鼠

答:花园

“吗”字句:

教:猫咬鼠

问:猫咬鼠吗

答:是的

问:猫咬蛇吗

答:没听说过

已知句(教过的句子,再教):

教:猫咬鼠

答:这个我知道

原因结果连接词:所以、因为

教:猫饿了,所以猫吃鼠

或者教:因为猫饿了,猫吃鼠

或者教:猫吃鼠,因为猫饿了

提问因果关系:为什么、所以怎样、结果怎样

问:为什么猫吃鼠

答:猫饿了

问:猫饿了,所以怎样

答:猫吃鼠

其实输入原因(猫饿了),直接就会回答结果(猫吃鼠)

输入结果(猫吃鼠),直接就会回答原因(猫饿了)

先后顺序连接词:然后

教:猫吃饭,然后睡觉

提问先后顺序:然后怎样,然后干什么,之前怎样

问:猫吃饭,然后怎样

答:猫睡觉

目的连接词:为了、目的是

教:猫吃饭,为了生存

或者教:猫吃饭,目的是生存

提问目的:为了什么,目的是什么

问:猫吃饭,为了什么

答:猫生存

词句决定回答

只要句子中包含指定的词句,就会产生指定的回答。

书写规范:冒号左边是词句,冒号右边是回答。多个词句(条件)用逗号隔开。要有一个含动词的词句。

例如教:看见熊:很惊讶

问:我出去玩时看见熊了

答:很惊讶

问:我在河边竟然看见熊游泳

答:很惊讶

也就是说,只要句子中包含词句“看见熊”电脑就会回答“很惊讶”

多个词句(条件),就可以灵活决定回答。多个词句之间,用逗号隔开。

例如教:森林,看见熊:逃跑

再教:动物园,看见熊:观赏

问:我在森林的时候看见熊了

答:逃跑

问:我在动物园里面,看见熊了

答:观赏

最多可以由4个词句(条件)决定一个回答。

当提问满足多种回答时,优先选择满足词句(条件)最多的回答。

例如前面教过看见熊:很惊讶,后面又教过森林,看见熊:逃跑。那么问我在森林看见熊,应该回答很惊讶,还是回答逃跑?会选择符合词句多的回答,所以回答逃跑。

抽象思维

我不可能教机器人所有的具体知识,只要教抽象知识,就等于教了很多具体知识。

第一步教导抽象知识,第二步说清归属关系:用“属于”或“是”,第三步提问。

如果教过具体知识,优先按具体知识回答。如果没有具体知识,才开始抽象思维回答。

单句的抽象问答:

(1)抽象回答:

例如:没有教过狼吃羊,但是教过动物吃肉,且教过狼属于动物。那么问狼吃什么,虽然无法回答羊,但是电脑把“狼吃什么”抽象成“动物吃什么”之后,就会回答肉。

(2)抽象到具体的回答:

例如:教:哺乳动物吃鱼。教:熊属于哺乳动物,鲤鱼属于鱼。问:熊吃什么。答:鲤鱼。而不是答鱼,就是由抽象到具体了。

双句的抽象问答:

(1)关联句的回答:

教:人吃动物,所以动物怕人

再教:我属于人,牛属于动物

问:我吃牛

电脑把“我吃牛”抽象化为“人吃动物”(全抽象化)、“人吃牛”(主语抽象化)、“我吃动物”(宾语抽象化)

其中“人吃动物”这一条知识是教过的,所以就能回答

答:牛怕你

注意:双句关系要写连接词(例如所以、然后),不能写“人吃动物,动物怕人”(不能省略“所以”)

再例如教:老师爱护学生,所以学生尊敬老师

再教:张三是老师,李四是学生

问:张三爱护李四。或者问张三爱护李四,所以怎样

答:李四尊敬张三

(2)甲乙句

例如教:甲踢乙,所以乙打甲

问:张三踢李四

答:甲踢乙,所以乙打甲

状态判断

一、文字形式的状态:

(1)具体的句子:

我饿了,所以吃饭。这样说话太抽象,应该具体问题具体分析:

教:如果我在家,我饿了,所以自己做饭

教:如果我在外面,我饿了,所以餐馆吃饭

如果句就是条件。对于同样的提问(我饿了),条件不同(在家或在外面),回答就不同。

教:我在家

问:我饿了

答:自己做饭。

有了“我在家”这个条件约束,就会回答“自己做饭”,而不是回答餐馆吃饭,否则默认回答餐馆吃饭。

注意1:带“如果”二字的句子,只表示假设,不表示事实条件。例如前面教了“如果我在家”,还需要另外单独再教“我在家”。也就是说,不带“如果”二字,才算满足“我在家”这个事实条件。

注意2:人们一般的说话习惯“如果我在家,我饿了,自己做饭。”此句中少了连接词“所以”,提问就无法回答。

(2)抽象的句子:

教:如果食肉动物饿了,食肉动物看见食草动物,所以食肉动物吃食草动物

教:狼是食肉动物,羊是食草动物

教:狼饿了

问:狼看见羊

答:狼吃羊

既然告诉了电脑狼是食肉动物,那么教狼饿了,在狼与羊的关系句中,就等于教了“食肉动物饿了”这个条件,也就表示满足此条件,从而能回答。

二、数字形式的状态:

每个对象(事物)都有多个属性(对象的状态、对象拥有的物品数量)。

属性的三种操作:前提条件,后果影响,自动触发。

(1)前提条件:

输入:心情大于60,体力大于40,去公园

下次再输入去公园,如果心情小于60,或体力小于40,那么“去公园”这件事就无法执行,电脑会回答不满足条件。

要知道心情是多少,在对象分析栏目下可以查看。

(2)后果影响

输入:写作业,心情减20

现在心情已经减了20,以后每次输入写作业,心情都会减20

那么现在再输入去公园,就无法执行了,因为心情减20后,心情不足60了,不符合去公园的前提条件。

输入:玩游戏,心情加30

以后每次输入“玩游戏”,心情都会加30。现在心情恢复到60以上了,再输入去公园,又可以执行了(电脑回答这个我知道,而不是回答不满足条件)。

(3)自动触发

输入:心情小于10,自动触发睡觉

注意:在事件前写“自动触发”四个字,才算是自动触发。

以后只要心情发生变化,且变化到10以下,就会自动执行事件“睡觉”。也就是说,只有刚刚改变了的属性,才会自动判断是否自动触发事件。否则即便满足自动触发的条件,也不会触发事件,这是为了避免频繁的自动触发。

由于现在心情还大于10,不能自动触发“睡觉”。那么反复输入写作业,每输入一次,心情就减20。直到心情减到10以下时,就会自动执行“睡觉”。

说明1:心情、体力等就是对象的属性。用户可以自定义属性:用户输入的话语中,如果出现了表中没有的属性,就会自动添加为新属性。那么新创建的属性的初始值是多少?最初话语里属性后面的数字就作为初始值。

说明2:前面输入的话语(心情大于60)里,并没有对象。其实省略对象,默认就是指电脑阿玉。

要指定对象应该这样写:猫的心情大于60,猫的心情加20。就是说明对象的属性。

说明3:可以一次写多个前提条件,或多个后果影响。

如果写了多个前提条件(逗号隔开),就必须全部满足,才算满足条件。

如果写了多个后果影响(逗号隔开),每个影响都会执行。

说明4:前提条件操作符:大于、小于、等于、为。例如心情大于50。

后果影响操作符:加、减、为。例如心情减10。

说明5:如果一个数值,上限是100,应在数值后面加星号*,例如心情大于30*,表示心情的最大上限是100。如果超过100,按100算。再例如体力加40*,表示属性体力的最大上限为100。如果不加星号,则不设上限。属性的最小值低于0时,按0算。

查找对象的属性和对象的事件:

对象分析栏目下,有查找对象,输入对象名称。

如果之前教过:猫的心情大于90,猫玩耍。而且前面已经教过关于猫的事件(例如猫吃鼠),那么查找对象猫,就会显示猫的属性和事件。

链式思维

教:张三摔倒,所以张三受伤。

再教:张三受伤,所以张三去医院。

再教:张三去医院,然后张三治疗。

再教:张三治疗,然后张三出院。

也可以不按先后顺序,或中间间隔其它教导,反正只要教完这四条就可以。

形成链式关系:张三摔倒-张三受伤-张三去医院-张三治疗-张三出院。

也可以直接一次教:张三摔倒,所以受伤。张三受伤,所以去医院。张三去医院,所以治疗。张三治疗,所以出院。

如果省略主语,就自动用上一句话的主语。

电脑进行正向推理和逆向推理。

问:张三摔倒

提问的内容在链的开头,所以只有正向推理。

电脑回答:张三摔倒,所以张三受伤。张三受伤,所以张三去医院。张三去医院,所以张三治疗。张三治疗,所以张三出院。

问:张三去医院

提问的内容在链的中间,所以既有正向推理,也有逆向推理。

电脑回答:正向推理:张三去医院,然后张三治疗。张三治疗,然后张三出院。逆向推理:张三受伤,所以张三去医院。张三摔倒,所以张三受伤。

如果提问的内容在链的末尾,只有逆向推理。

注意1:句子之间的关联,要用所以、然后等词,否则不作为关联。

注意2:如果有提问词,例如问:张三受伤,所以怎样。电脑只回答去医院,不会继续关联下去。

网页游戏:心有一玉

网页剧情游戏《心有一玉》开源源码,是用游戏开发工具RPG maker(mv版本)开发的,而图片素材是RPG maker(mz版本)的。

游戏特点1:救回阿玉后,可人工智能对话。阿玉可以理解和学习用户所教的话语,可以提问用户教过的知识和阿玉已知的知识。

游戏特点2:夜景系统,灯光夜景很漂亮。

游戏特点3:潜行类游戏。很难战胜妖怪,以躲避妖怪为主。妖怪有视野(区块表示),不要出现在妖怪视野范围里。

鼠标左键点击要移动的位置。

Esc键菜单。

鼠标右键返回。

走到场景边缘,自动切换到下一场景。

开着的门(黑色表示)可以进入。

点击人物可以上前对话。人工智能对话需找到阿玉之后。

关键词: RPGMAKER 抽象思维 人物图片 游戏动画 动画人物 剧情游戏 食草动物 表情系统 食肉动物 动画设计 写作技巧 人工智能 文字转语音 文字游戏 一般的说 网页游戏 galgame 哺乳动物 肢体动作 使用说明 简单介绍 背景音乐 故事背景 出去走走 回答这个