smmcat-galmake:GAL文字游戏创作!

smmcat-selfhelp 分支出来的应用实例,是为了它的生态和发展

相关介绍:【qqbot】在QQ群里玩GAL文字游戏_哔哩哔哩_bilibili
相关教程(粗糙):【QQbot】Koishi中GAL制作演示_单机游戏热门视频


梦的开始

分支带来多结局

持有物影响剧情推动

通过 /当前持有 指令,查看当前剧本中你持有的物品

通过 /剧本成就 查看当前从剧情中获得的 成就 和 获取时间

退出 或 会话超时 自动存档

通过 /重置进度 指令,清空当前记录的 持有物、剧情存档


通过创建文件夹生成对应映射关系的多分支简单galgame游戏制作插件

  • result.text 中的内容代表最终的结局(会忽略同级并同级后续的文件夹)

  • title.text 中的内容代表该层级剧情的描述

只要上述文件放置在对应文件夹中,就会有对应的效果

通过 %标识符% 去实现 跳转分支、条件跳转、获得道具、失去道具、判断道具是否持有 等功能

  • %getTime% → 获取当前时间
  • %rollACGimg% → 获取随机动漫图片
  • 通过设置 %jumpBranch% 并可在 | 右侧传路径值,走到该分支后会后实现跳转分支
  • %jumpByLostProp% 标识符,通过交出持有物才可跳转分支 举例:参数示例:%jumpByLostProp|金币*4?1-1-1%
  • %jumpByCheckProp%标识符,通过查询是否携带持有物才可跳转分支,参数示例:%jumpByCheckProp|金币*4?1-1-1%
  • %getProp%标识符,获得道具 参数示例:%getProp|金币*4%
  • %lostProp%标识符,失去道具 参数示例:%getProp|金币*4%
  • %getAchievements%标识符,通过 %getAchievements|成就名% 立刻赋予玩家对应成就

解决文件夹创建深度问题

由于Windows的文件系统(如NTFS和FAT32)设计时,路径长度被限制在256个字符以内

更多玩法

当启用word-coreword-core-grammar-basic插件后,可以将回复接入词库解析


如果你对 galgame 感兴趣,或者想一起写剧本;欢迎加群

如若对你有莫大的帮助,或者您手有闲钱,感谢给我一瓶维他柠檬茶!

3 个赞

想起童年的诺基亚网页游戏了 :smiling_face_with_tear:

2 个赞

0.0.6 更多提示

  • 增加可选项 tipsProp 可以开关是否提示需要的道具。(考虑解密剧情,该功能可选)

需要提交某物品才可以选择的分支,会做额外提示

需要携带某物品(无需提交)才可以选择的分支,也会做额外提示

2 个赞

0.1.0 持久化、成就系统

  • 0.1.0 版本强制增加了 smmcat-localstorage 必须服务,用于保存用户数据至本地
  • 增加了 /剧本成就 指令,用于查看被赋予的成就,和赋予时间
  • 可以在任何分支的文本中通过 %getAchievements|成就名% 立刻赋予玩家对应成就

现在重启 koishi 后,玩家存档信息依然保留 (没图,随便粘一个吧)

使用 %getAchievements|成就名% 的文本,会在用户显示该分支文本时自动获得

内容撰写

对应效果

通过成就系统 留下永恒的回忆

3 个赞

windows有最大路径长度的限制吧,文件夹层数太深就创建不了了(

2 个赞

嗯…确实有,大工程还是得考虑在 json 上下功夫,还好文件夹只是生成 json 文件的,实际上还是依赖 json

或者采用跳到别的文件路径下继续(纵向不行那就横向

比如如果放置根文件夹中有个文件名是 __discard,将不会在列表中显示。然后到达最底部时,使用
%jumpBranch|__discard下的路径% 用来藏扩展的剧情,使之能继续下去

(将部分线藏起来,用来扩展后续剧情)

2 个赞

0.1.2 解决文件夹深度问题

既然纵向无法发展,那我们就横向发展!

  • 当文件夹名字包含 __discard 关键字,不会在菜单中显示;且无法选择

通过名字的关键字对选项隐藏,来阻止剧情的主动进入

文件夹结构

操作效果

例如:当文件夹深度置底后,可使用 %jumpBranch% 跳到 __discard 下的分支继续向后推进演算

3 个赞

也许可以加入让用户输入自定义内容?
比如让用户输入名字然后存在一个变量里或者在下文引用 :thinking:

2 个赞

举个用途例子?

3 个赞


像这种…?:thinking:

对了,单个分支剧情好像不支持一次性获得多个物品

2 个赞

可以暂时使用扩展新的页面去获得,这个本身做一个多选的不难。我新版本加一个

%getMoreProp|物品1*1+物品2*1+物品3*1%

2 个赞

另外,为什么每个关卡只能得到一个,这是有原因的。

考虑用户会有概率重新回到原来的位置,所以又会再次触发持有物获取的判断。所以为了避免重复获得刷道具,我使用的是路径来判断是否获得道具。

所以你虽然 %getProp% 都可以触发,但是当得到第一个的时候,会记录当前路径已经获得了道具。所以第二个道具的获得就被拦截了

%lostProp% 可以多次触发,因为没有拦截它的参数。读到这个标识符就会失去一件指定物品

1 个赞

这种还是选项式够用了…要加输入方式,这代码增量多,而且降低性能
你们有制作群没,让我进一下

2 个赞

制作群的话没有,剧本是朋友在写,如果比较困难的话就不用实现了 :grinning:

1 个赞

未来计划:

  • 玩家血量(其实开局给 %getProp|血量*10% 也可以实现,然后扣血分支 %lostProp|血量*1%)
  • 概率跳转分支 %jumpChanceBranch|20*1-1-1-1% 相当于 20% 概率会跳转对应分支
  • 不持有跳转分支 %jumpBynoneProp|信*1% 相当于如果你背包没有信或者数量不满足,就会跳到对应分支
2 个赞

0.1.4 标识符更新

  • 增加 %jumpByNoneProp% 标识符,用于判断用户若不存在某物则执行跳转,存在则返回上一层

当持有 麻痹戒指 时,不能选择该选项

文本层

效果展示

1 个赞

加word-core和grammar-basic的话会有个(wi)允许输入内容

1 个赞

(如果必须要的话也许这个也是一个办法之一

1 个赞

它是要实现 only 的效果,即只会在剧本不重置进度前只能触发一次获得的判定。

1 个赞