BlogVN 构思
想开坑,写一个能够把 HTML 当作脚本的网页视觉小说引擎。这样子就可以把博文当作视觉小说展示了。
黄鼠希望它所用的脚本能尽量符合 HTML 语义,并且尽量做到能够使同一篇文章(同一段 HTML)既能以直接文章方式显示,又能够以视觉小时方式被这个引擎显示。
(全文: https://short.fiveyellowmice.com/16632/blogvn )
项目描述大概会是 “Turn your blog article into a visual novel” 这样子。名字还没有想到特别满意的,暂且叫 BlogVN 这个没有创造力的名字好了,希望没有撞名字。
这里是大概的构思:
一个 <p> 在 HTML 中含义是一个段落,所以在 BlogVN 中,每段 <p> 中的内容结束之后,就会是一个需要点一下才会前进的文字内容。在遇到下一个 <p> 开始时,先清空对话框中的内容,然后再显示下一个 <p> 中的文字。在 <p> 外的文字会被忽略。
如果 <p> 中内容的开头几个字包含冒号(全角或半角都可),则冒号之前的文字会被当作角色名称显示,冒号之后的文字会被当作该角色说的话显示。这个行为要能通过为 <p> 添加 blogvn-no-dialog 类来禁用,以避免真的在独白中要包含冒号时没有办法。此外,最好还能够让文章作者自定义对话的这个解析方式,也许可以让文章作者提供一个 RegEx 来作为引擎初始化的选项,比如可以把它设置成 (?<name>.*?):「(?<text>.*)」 来让文章中可以把对话包上引号。
<img> 中的图片会被默认会被作为背景显示,替换掉当前使用的背景图片。 data-blogvn-bg-size 属性可以是 cover 或 contain ,对应 CSS 中 background-size 这两个值的含义。
人物立绘可以在引擎初始化选项中定义,然后每当人物出现于对话中时,立绘也会被显示。此行为默认启用,默认值可以被引擎初始化选项更改。此行为也可以被单个 <p> 中的 blogvn-character-image-enable 和 blogvn-character-image-disable 类来单次启用和禁用。
遇到 <audio> 会播放效果音。遇到 <video> 会播放视频。
一个带有 blogvn-goto 类的 <a> 会被当作 goto 对待,标签的内容会被忽略。它的 href 属性中若只包含有 URL fragment , goto 的目标则是此 fragment 指定的 HTML 元素。脚本的解释会从那个元素继续进行。因此,每个带有 id 的元素都可以被当作 label 。
一个带有 blogvn-choices 类的标签(通常会是 <p> 、 <div> 、 <ul> 或 <ol>)会被当作视觉小说的选项列表,玩家需要选择一个选项才可继续。其中每个带有 blogvn-choice 类的 <a> 都会被当作一个选项,点击后行为与 goto 一致。
一个带有 data-blogvn-if 属性的标签(通常是 <aside> 或 <section>)会首先 eval 此属性中的 JS ,只有 truthy 才会解释其中的内容。 data-blogvn-unless 属性的行为与此相反。如果这两个属性被用在 <p> 上,其中的文字会被忽略,这可以用来编写这样的内容: <p data-blogvn-if="gameVars.goodDeedCount >= 3">如果你做了 3 件或以上好事,<a class="blogvn-goto" href="#good-end">前往好结局章节继续</a>。 ,指示用户点击链接的文字不会在视觉小说中显示。
要设定会改变剧情走向的变量,使用 <script type="application/x-blogvn-javascript"> 标签并在其中写 JS ,其中含有的 JS 会在引擎遇到它时被执行。其中的 JS 可访问的变量有 gameVars ,一个用于保存玩家过去行为的 Object 。
不计划做存档功能。考虑到这些视觉小说大概都会是博文的长度,存档似乎没有必要。
不计划做语音功能。考虑到这些视觉小说大概都是随便简单写的博文,大概不会有配音的需求。
BlogVN 应该会能够嵌入在现有的任何能自定义 HTML 的 CMS 中。启动 BlogVN 的方式大概会是这样的:作者首先需要在网页中创建一个 <iframe> 作为引擎渲染视觉小说的目标,将其指定在 BlogVN 的初始化参数中。与此同时指定于初始化参数中的,还有包含有“游戏脚本”的 HTML 元素。举例:
<iframe id="vn-render-target"></iframe>
<div style="height: 40px"></div>
<article class="post">
<p>这是一个测试。</p>
<p>你好。</p>
<script type="application/x-blogvn-javascript">
gameVars.random = Math.random();
</script>
<section data-blogvn-if="gameVars.random < 0.5">
<p>这句话只有 50% 的几率被显示。</p>
</section>
<p>再见。</p>
</article>
<script src="blogvn.min.js"></script>
<script>
var a = new BlogVN({
renderTarget: document.getElementById('vn-render-target'),
scriptElement: document.getElementsByTagName('article')[0],
defaultBackground: 'black',
});
</script>
这只是黄鼠日常想开的大坑中的又一个,感觉很大,所以会和 Posea 那样咕咕咕也是十分正常的。
也希望会有人对这个计划有兴趣,能够提出一点想法呢。
开会,提到这个月得做一个update给金主Gates Foundation,一个人说,哎呀他们都离婚了,希望不会影响到Foundation...
不管Gates出于什么目的,付我们这么多钱来做研究,我们是非常感激的。单细胞测序这么贵,一般人还真是承担不起。
这些富豪里,心系第三世界人民,关注和资助传染病的研究和防控,似乎只有Gates吧。艾滋病、疟疾、结核病...还有我们做的COVID-19。
Zuckerberg倒是也有个Chan Zuckerberg Initiative,也资助了不少研究,不过都是比较"高端前沿"的能吸引biotech investments的有赚钱潜力的fancy的领域。
Musk的脑机接口...我都懒得吐槽。"一年内植入人脑,可修复任何大脑问题"...这人真是很擅长吹牛,拿个领域内已经有的却还不成熟的技术包装一下,就去大肆捧吹和圈钱。
还是Gates实在。做传染病研究赚不到什么钱,现在医药领域的热钱都在慢性病领域,特别是癌症,再就是fancy的个体化精准医疗这些。所以Gates能拿钱出来应对传染病,提高世界上那么多穷困人群的福祉,值得点赞。
故事是指已发生过的事吗?还是指虚拟故事
@miiiiii 集体主义 从很小开始每个班都要有每个班的口号
「ぐるっと360度回って元に戻っちゃった」…😥
RT @Na_Gredmin@twitter.com
但是本剧的节奏相当出彩,优秀的编剧卡好每个故事一集开始下集结束,言情点到为止,男主神仙但仙的合理,讲师各具魅力但不离谱,主角团体验的是一路的失败而不是一发成功,结局也并不是大团圆,有成有败:大结局东京大学发榜作为观众的我紧张地右手拿香蕉拿了十分钟却一口都没有咬,仿佛看发榜的是自己
🐦🔗: https://twitter.com/Na_Gredmin/status/1389941177722363910