惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
PCI Perspectives
PCI Perspectives
H
Help Net Security
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
雷峰网
雷峰网
S
Secure Thoughts
Jina AI
Jina AI
Attack and Defense Labs
Attack and Defense Labs
大猫的无限游戏
大猫的无限游戏
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Security @ Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Recent Commits to openclaw:main
Recent Commits to openclaw:main
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
T
Tor Project blog
小众软件
小众软件
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
博客园 - 【当耐特】
G
Google Developers Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cyber Attacks, Cyber Crime and Cyber Security
C
Cisco Blogs
T
The Blog of Author Tim Ferriss
I
Intezer
S
Schneier on Security
S
Securelist
W
WeLiveSecurity
C
Cybersecurity and Infrastructure Security Agency CISA
P
Palo Alto Networks Blog
Scott Helme
Scott Helme
Project Zero
Project Zero
Google Online Security Blog
Google Online Security Blog
T
Threatpost
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Engineering at Meta
Engineering at Meta
Blog — PlanetScale
Blog — PlanetScale
V
Visual Studio Blog
Last Week in AI
Last Week in AI
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
A
Arctic Wolf
GbyAI
GbyAI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LangChain Blog

机核

游戏性能旗舰最强之选,一加 Ace 6 至尊版国补到手价2999元起 6元钱自己更换电动车刹车线 《生化危机9:安魂曲》编剧Haris Orkin专访 摸金游戏?音乐游戏!暗区新赛季这把能弹的琴有何来历? 好评国产武侠SRPG《息风谷战略》免费DLC现已推出 | 机核 GCORES 碎片 《生化危机:安魂曲》将于5月实装首个免费更新内容 | 机核 GCORES 新锐东方游戏,谱写世界新章! 沉浸式恋爱视觉小说游戏《心象演算》免费试玩版现已正式上线 | 机核 GCORES 互动影游《代号三国:龙起》上线!穿越三国与曹操并肩、与佳人同行、与权谋博弈! 《老头收集梦想生活》,游戏酒桌会6,录音笔VOL.689 | 机核 GCORES 破界·共生——《白日梦:无限世界》五大核心游戏特点解析 价格已到史低,锐龙5 9600X/锐龙7 9700X正适合抄底 时间循环之旅即刻启程!《归环》一周目测试今日开启 热门在线韩游变魂游,洛奇衍生作能否打破“花瓶”魔咒? LG UltraGear evo 全新高端显示器系列:当“5K”遇见“AI”,不止强大,更懂热爱 反套路三国互动影游《代号三国:龙起》今日上线! 愿望单登记人数突破10万!备受瞩目的“女儿养成游戏” 《梦幻魔法公主》今日于Steam平台上线!限时八折优惠中 《黑神话:悟空》全球音乐会2026巡演将于4月29日12时开票 | 机核 GCORES “Snowguelike”生存肉鸽挖矿新作《蛙穿雪境》公布发售日期,5月7日正式上线 | 机核 GCORES 重塑移动办公、AI创作新境!全新华硕灵耀Air系列、ProArt 骁龙版震撼首发,创芯未来 均分88:《Saros》媒体评分汇总 | 机核 GCORES 上海烛龙公布合作遗迹探险游戏《吉时已到》首支预告片 | 机核 GCORES 首个独立游戏《萝薇日记》已上线Steam! 烛龙新IP《吉时已到》首曝,打造国内首款中式合作遗迹探险游戏 喜加一:《暗黑破坏神Ⅳ》国服现已开启限时免费领取本体活动 | 机核 GCORES 新版《生化危机》电影定于9月18日上映,官方网站现已上线 | 机核 GCORES 《冲就完事模拟器2》“星球大战”联动DLC正式宣布 | 机核 GCORES SteamController将于5月4日发售,售价99美元 | 机核 GCORES 事已至此,内存这么用也算省钱了,“2+1”非对称双通道应用实测 505游戏母公司现已收购《明末:渊虚之羽》IP | 机核 GCORES 基石 手动杂谈12|格斗游戏也能讲好故事 | 机核 GCORES I Love You Mr Snowball 我的向日葵小姐 会比GTA6先发售吗?最硬核的生存游戏《DAYZ》要推新DLC了 周记02:在2026遇到新怪谈 什么硬件,能让游戏Loading界面快速消失? | 机核 GCORES GadioSpec《百年风云世界杯》免费试听集 | 机核 GCORES 百年风云世界杯Vol.1丨足球崛起 | 机核 GCORES 100年前,一群人提前替我们经历了AI恐惧 | 机核 GCORES 《呼啸山庄》2026 ——一辆当代艺术的大卡车冲撞了我的大脑 手游《天穗之咲稻姬:日之香巡灵传》宣布将于7月27日停服 | 机核 GCORES 集结梦之队,征战世界杯,《最佳球会ONLINE》上线Steam 山水绝景随心拼 休闲建造游戏《千里山河录》Steam商店页公开 巫师帽、法袍、魔杖,为什么它们是影视、游戏里的法师必备三件套? 《无鞘信使》-第一章 复古风自动战斗肉鸽《终结之终结》Steam商店页面现已上线 电脑里有一款不破不立的MMO,录音笔VOL.688 | 机核 GCORES 《生化危机》30周年纪念周边发售,这次是真的“保护伞” 可靠耐用+AI全能,惠普战66 2025锐龙版深度体验 《时之书:无尽终章》关卡“大航海时代”全球首次公开 经典名作《乌龙派出所》改编经营模拟游戏《乌龙派出所~阿两的商店街物语~》正式宣布支持简体中文 明日开冲,解锁反套路三国互动影游《代号三国:龙起》即将上线 独立游戏《这是我的宝藏!》已发售~ 降低难度不是唯一解,无压力死亡也是好体验 Netflix官宣新片《普通人》:讲述韩国现代史上的权力风暴 《生化危机:安魂曲》全球销量现已突破700万份 《绝地鸭卫》PC版5月15日正式发售 亡妻回忆录?女性向情感叙事游戏《S-mail》现已正式发售 全新酷黑风格,酷睿Ultra 200S PLUS的高性价比搭档!七彩虹BATTLE-AX B860M-PLUS S WIFI7 V20 超级黑刃主板测评 胖狗 索尼发布了港台地区PS5产品价格调整公告,将于5月1日起实施 二次元怪猎+性感美女!《碧蓝幻想:无尽黄昏》开启Beta公测 这款怪谈类型中式恐怖游戏居然更新了?! 《百日战纪 -最终防卫学园-》改编漫画将于今年冬季开启连载 《如被附身,请致电我们》:匈牙利黑色幽默恐怖小说 《竹屿山房杂部卷五》(译文) 大树 超越引擎 摄影分享丨四月 碎片杂记vol.72 当老式FPS与老式动画技术碰撞出新时代的火花—《神探杰克鼠》 想做独游,如何避免首个项目就褒姒? 在线多人动作游戏《OCTOPinbs》将于5月12日上线Steam! 《酒鬼女神的酒诡》确定将于2026年登陆Steam 《CRYMELIGHT》将于11月5日(周四)正式发售!4月25日开始预购! 钢铁国度MKI部落Evolution,蛮兵部分 【钢铁国度】部落-Primal MK I,蛮兵部分 这是一个高中生用ai跑出来的作品,我自称他为物理神话 钢铁国度MKI部落Metamorphosis,蛮兵部分上 钢铁国度MKI部落Metamorphosis,蛮兵部分下 INDIE Live Expo于4月25日举办:首发9款新作,超200款独立游戏亮相 暗黑卡牌策略新作《魔忌:穷鼠啮狸》发布全新中文试玩版和发售预告片,4月30日正式上线在即 战锤40K长篇小说:变节者・苦难主宰(三)(全书完) 战锤40K长篇小说:变节者・苦难主宰(二) 战锤40K长篇小说:变节者・苦难主宰(一) 英语语言学习丨短语专题1:短语的特点 唯一的EVE战争 【少前同人】【M200】战术人形会梦见音乐会吗 【昏迷3】即将发售,前作主角悉数到场!“恶灵”宋老师化身可操控角色 业内人士:游戏公司“十有八九”使用生成式AI,包括卡普空 欢庆一周年:《光与影:33号远征队》全新纪念艺术图、超值折扣与免费更新同步上线 才刚刚开始呢 【抽奖】《星际卡车司机》推出免费大型更新,四折平史低折扣进行中 四人合作FPS游戏《佣兵猎手》抢先体验重大更新 1 现已上线 Raw Fury新作《深馅地牢 Deep Dish Dungeon》将于今秋加入 XGP 塔防幸存者游戏《魔怪来袭》推出首个 DLC 《饿狼传说:群狼之城》1周年纪念!新DLC“沃尔夫冈·克劳萨”今日参战 猫狗相伴 欢乐闯关 双人合作平台跳跃游戏《猫狗同行》上线Steam商店页 《同行:月球逃脱》(Together: Moon Escape)上线将于明日上线Steam
剧情管理的探索之路
mnikn · 2023-04-16 · via 机核

因为我一直想做个 rpg 游戏,而对于做 rpg 来说,科学地管理游戏剧情是不可或缺的,所以我对于这方面做了一些探索。

初期探索阶段

计算机领域有句话叫不要重复造轮子,意思就是与其自己从零开始探索制作,不如借助已有的东西。我作为一个懒惰的人也深谙此道,所以一开始我就探索了各式各类的剧情管理软件,最后发现主要是这几个比较能够用于实战:

  • yarn:脚本语言和卡片的结合管理,算是在灵活和方便管理中取个折中。

  • ink:完全由脚本语言管理剧情,优点是极致的灵活,用写代码的思路来管理剧情。缺点也很明显,基本上不支持多语言。

  • articy draft:基于卡片式管理剧情,更像是一个游戏的数据库,能够定义各类数据嵌入,但是灵活程度有限(至少是不方便在剧情中嵌入代码,或者是有方法但是我不知道?)

  • excel:没错!大道至简大巧不工,也有不少人用 excel 管理一整个游戏剧情,毕竟 excel 都能用来玩三国杀,管理游戏剧情也自然不在话下是吧

上面一圈试用下来,每个软件都有一些我的不爽点。例如大部分卡片式的剧情管理软件都是让你拖线连接创建卡片,我是觉得手动拖线基本上属于伪需求,因为大部分情况下剧情都是线性执行,只有在一些关键节点才会做跳转,为了小部分的场景就要大部分时间都要浪费在拖线连接上属于得不偿失了。然后我是打算在剧情管理软件中嵌入一些游戏逻辑,所以需要软件能够给个特殊的节点触发事情或者能够直接嵌入代码。

虽然上述软件都有实战案例,我也很清楚它们虽然可能不是那么完美,但是做一些骚操作应该能够满足我的需求,但是一个 rpg 大部分时间都要放在搞剧情上,一个好的剧情管理软件能够极大提升开发心情,所以最后我还是打算自己撸一个简易的剧情管理软件。

第一次尝试

经过上述的尝试我大致得出以下需求:

  • 绝对不要手动拖线,不要玩连连看

  • 能够看情况触发事件

当时看到一个 开发者实现的剧情管理系统 感觉挺符合我的想法的,于是就按照视频上的软件的形式做了一个。

我是用 godot 引擎来做游戏,由于 godot 做插件拓展能力强,所以当时也很自然直接在 godot 上实现了这样一个剧情管理的插件:

可以看出,我在这个软件根据情况设置了一些的数据类型,基本上整体是按照树形的结构来往下堆数据,在当时暂时满足了我的需求,而且感觉用得还挺愉快,直到...

不爽

树形管理的方式有个比较致命的缺点,那就是很难自由地从一个对话点随意跳到另外一个对话点上,而随着我的游戏开发进展,这种灵活性是必要的。

虽然我尝试在这基础上修修补补来实现这一点,但是即使功能能够实现,从管理来说也不太直观,我感觉到没办法再继续这样妥协下去了。

新的构思

由于中途过了一段时间,我也有了各种奇奇怪怪的积累和想法,例如为了管理游戏中各种数据搞了一个 通用游戏数据管理软件,中途参加了各类的 gamejam 和一些平时的想法做了各形各类的游戏,发现只做一个游戏可能只用市面上现成的软件凑合下能勉强做出来,但是如果想做一系列游戏就必须整合自己的工具链才能多快好省地实现,而我倾向是与其花大精力做一个游戏,不如花不大不小的精力做多个游戏。

基于这个理念,我对于自己做出来的软件要求是足够灵活,能够适应自己做不同游戏的需求,同时我看了一篇关于剧情管理的文章 深受启发,而且我想做的游戏剧情点也较为分散,符合文章中 storylet 的想法,于是打算结合这篇文章的想法再做个软件。

重构!

既要追求刺激,那就要贯彻到底了,这时候我打算做得与其说是一个单独管理剧情的软件,不如说是一个定位相当于 articy draft 的游戏数据库,当然功能肯定不会有它那么全,反正我也不太需要太多功能,重要的是简洁并高效,这时我的需求如下:

  • 还是不要玩连连看,这个是底线

  • 灵活与方便管理间取得平衡,可以各节点间动态自由跳转,可以嵌入代码

  • 支持多语言

确定好方向后,后面的开发就水到渠成了,为了美观还有开发效率,就使用我最熟悉的 web 技术栈实现了。

成品

经过了一段时间的开发和调整,最后做出来这样的东西:

这个软件管理剧情的方式是分散式的,侧边栏展示每个故事片段或者数据,因为这个软件定位是一个游戏数据库,所以除了管理故事还要管理一些静态数据例如物品、敌人这些。

对于故事的管理是采用思维导图式的操作方式和一个横向排列的树,每个节点分为三大类:sentence、branch 和 action,前两个很好理解就是普通的对话语句和分支,action 节点则负责做一些特殊逻辑和演出。

对于静态数据的管理,会先定义一个 schema,然后能根据 schema 动态生成表单,之后在表单上填数据就好了。这个动态生成表单的能力在整个软件中都有体现,可以说这个软件所有的表单都是动态生成的。

故事例子1

我们以一个简单的例子看下这个软件是怎么处理故事的:

绿色的是 sentence 节点,蓝色的是 branch 节点,红色的是 action 节点。整个逻辑基本上就是从左边走到右边,遇到 branch 节点的话,那些连接到 branch 节点的相当于是一个选项了,所以你会看到这些节点左边有个白色的选项名。选中选项就会跳到对应的节点继续执行。

故事例子2

刚才的例子比较线性,但是如果遇到一些节点需要判断状态才能执行的怎么办呢?下面这个是例子:

这个例子中一开始就有个分叉,但是注意到的是这个分叉前可不是 branch 节点,所以是不会有选项的,那么怎么判断要走哪个节点呢?其实每个节点都会有个 Enable check 的字段,这个相当于代码判断,由外部调用判断返回值,如果匹配相当于这个节点可用,否则就是不可用,通过这个判断机制就能灵活选择走哪个节点。首先整个处理逻辑是从左向右,先尝试执行右边第一个节点,如果第一个节点不可用就尝试第二个以此类推。

复杂但实际的故事例子

上面的例子都是在我游戏中比较简单的实例,而有没有更复杂的例子呢,答案是有的,且看下面:

上面是一个故事片段的大体样子,看上去挺复杂是吧,我讲下这个故事片段的大体过程。队伍发现了一个上锁的宝箱,然后玩家有四种选项:砸开,撬开、用钥匙打开和离开,用钥匙打开这个节点可用的前提是需要物品栏中有钥匙,而砸开或者撬开的话又需要选择队伍中的人,选择后要进行能力判定,判断成功就能打开宝箱,判断失败就不行,而且为了让剧情更灵活一点,选择不同的人时这个人在成功和失败时还要说不同的话,而且如果选择砸开或者撬开的话即使打开了宝箱也要进行陷阱的伤害判定。

上面一大串需求中比起之前还需要以下能力:能够从一个节点任意跳到另一任意节点、节点内容复用,那么这个软件是怎么处理的呢?

首先是节点复用,我先定义这两个需要复用的节点,分别是获得物品的和触发陷阱的,这两个节点都是 action 节点, 这些逻辑我都是通过在节点里面编辑代码实现了。

然后 action 节点中会定义个 copy 的类型,能够把目标节点上的内容抄到当前节点,这就实现复用了。

跳转也是相同的道理,定义个 jump 类型,然后选要跳转的节点。

记得我们之前说的触发陷阱要做伤害判定的逻辑嘛,其实判定伤害后也是需要展示伤害值的,如果按照之前的处理是给每个队伍的人创作一个 sentence 节点写受到了多少点伤害,不过由于节点的处理是动态的,这就意味着我能够在执行时插入新的节点,所以这些 sentence 节点我就都由代码创建了。

动态修改节点表单

上面的例子中我们看到每个节点都有不同的编辑表单,不过像我之前说的,其实所有表单都是动态生成的。在设置中会有每类节点的 schema 设置,理论上这些节点的数据甚至都可以改成和剧情管理完全没关系,改下 schema 变成个事件管理软件也完全没问题。

静态数据管理

其实有了动态创建表单的能力,管理一些静态数据是很简单的事情,而且这些数据还能和故事中的数据联动。

示例视频

下面就展示我实际场景中是怎么编辑故事的:

小结

目前这个软件我用了一段时间感觉还不错,基本上符合我的需求,虽然理论上是可以做成公用,不过我可没精力去维护和管理别人的各式各类需求,所以我是会开放源码和一些简易的使用文档,不过具体的教程和要求我就懒得搞了,有兴趣的人更倾向于自己 fork 一份自己改成想要的样子。

参考资料: