如你所见, ai 正在编辑代码,而代码正在自动转换成节点图,并注入到千星奇遇地图中,这是生成的节点图效果。由于默认原件没有基础运动器, 所以这里我替换成了我新建的原件。你也可以直接告诉 ai 要用的原件 id, 接着运行看看。 又比如,这是一段标准的 js 代码,包含一些复杂的流程控制,我可以把它直接扔进浏览器 执行,按顺序得到如下结果,而它们可以被无缝翻译成千星奇遇节点图运行后,可以看到日记中出现了完全一样的结果。这是我刚刚开源的 gianjin ts 项目 gascience 编写,全部都是标准的 type script 语法,是 ai 最擅长的编程语言之一。因此你可以利用任何现成的 ai 编码工具进行开发,甚至使用 npm 酷生态。同时还包括代码自带的向版本管理、智能提示、重构方便等好处。 一些像狼人杀之类的强逻辑玩法,通过代码写也会方便很多。所有的函数调用事件参数,全部带有完整的中英文双语注视支持和完全的类型系统支持,你可以悬停查看每一项细节。 一些函数上你还能看到我贴心家的额外使用说明注视,嘿嘿。针对实体等常用类型,还做了一系列针对的优化和各种辅助函数支持单文件指定不同 id 生成多节点图、 列式注册生成多事件复杂图、跨文件同 id 自动合并到同一图函数翻译支持等一系列帮助项目模块拆分的功能。 总之,总算赶在少女 up 前回收了上期视频的预告,接下来你还将看到 npm create 项目模板,支持通用节点图中间 json 格式编辑,支持标准 ts 语法的控制流 for switchf 等。支持 自动变量声明类型推断取用 unit 三 d 与 j s 风格 a p i。 支持中英双语事件注册和节点调用。支持预编一长量表达式优化、 自动局部变量附用优化 j s 风格 satamout satinterval。 支持自动币包补货。支持自动定时器池。支持自动定时器聚合分发优化、自动死代码清理。支持并行编辑、增量编辑。支持自动注入备份注入安全、支持 地图定位、支持实体子类型、全套智能提示系统和专用属性。支持内置的各种物件预设、 id 支持等等一系列特性。我将挑一些重点介绍,更多细节可以查看项目的文档站点。我正在施工中, 在正式开始介绍这些细节前,我需要再特别提及另一个开源项目。虽然不是这个视频的介绍重点,不过在发现这个项目前,我前后也已经花了近一个月时间处理 g e r 和 g o 的 逆向工作, 而这个项目的逆向方案比我的方案更完善。最终我将其作为三方模块引入了本项目,并整合了一些我逆向得到的数据。这个项目的工作非常卓越,且同样密切协议开源,因此也强烈建议大家支持。 接下来是干肾 ts 的 介绍。首先,这个项目有多种不同的使用方式,你可以直接用 npm create 干肾 ts 创建一个开发模板,直接开始开发。你也可以在其他项目中将本项目安装为依赖,使用其中的一些编辑器、 注入器等相关 a p i 用于你的私人工作流。你还可以通过 n p m i 杠 g g 杠 t s。 单独安装命令行编辑器,直接对单个 t s。 文件或 jason 中间描述进行编辑和注入, 也可单独针对导出或生成的 g i 进行注入。我定义了一套 jason 格式的中间表示,并且尽量考虑了可读性和可编程处理器性。因此你也可以基于此创建其他编程语言的支持或原编程,而不必非要用我这套 ts 方案。 使用项目模板创建后,你会看到如下内容,只需要直接 n p m i。 安装依赖后就可以开始开发。你可以使用 n p m round dev 进入监控模式,自动增量编辑、新增和改动代码,并实时注入到地图中。 需要注入时,你需要准确的地图文件名。我这里添加了一个 g s t s maps 命令。你可以直接运行 n p m round maps 获取地图列表,它们按时间排序。 你只需要在编辑器里保存一下,这里就能看到最近更新的地图,然后在配置里填入即可注入。如果你有多个账号或者多个服务器,也可以在配置里填写,以便定位地图目录 配置也都带有详细的双语注示。注入实命令行工具除了做内部数据的注入安全检查,还会额外做一套备份,保障你的地图数据安全。当你使用信号收发相关功能时,如果信号未定义,注入器也会自动提示。当你声明的节点图类型和注入目标的类型不匹配时, 注入器也会自动修正并发出警告。如果你不想用注入,也可以通过代码生成 g r, 导入后手动复制节点图内容。 考虑到很多人对中文节点名和世界名更熟悉,你只需要传入 lines, 咋就会看到类型。系统带来的模法 制能提示能够直接识别到中文的各项定义。定义变量时也只需要用简单的 js 对 象语法传入名称类型合值之后,通过 f、 gap 或 set 取用时,会看到自动的类型推断,自动约束你的传入类型,而不需要像节点图里那样手动选择类型。 既然用了代码,那么编写各种计算和逻辑控制流时,自然不再需要一个个创建节点。可以这样用常规的熟悉的写法,包括一些 return、 break、 continue、 switch 等高级控制翻译器都会自动通过一些连线和条件检测手段为你实现成节点图。 当然,如果你想要完全透明的话, f 调用里依然包含了一比一的节点图、节点定义的流程控制以及所有其他一一对应的节点。 而在代码中编辑一些这样可读可维护的计算是很常见的,编辑器当然不会傻乎乎的把它们处理成一个个节点连接,这样太浪费节点图资源了。编辑器会自动尝试进行优化,比如这么一段复杂的、涉及多种运算和三维向量的处理,最终再转为字幕串打印。 编辑到节点图后,你会看到直接得到了一个打印节点,里面填着最终计算结果的字符串。而如果这时候我引入一个事件参数,加入计算魔法出现了,可以看到变成了两者相加,再转换成字符串。 你也可以在配置中关闭这项优化,将其处理为纯节点图计算。变量计算方面,变异器还会自动使用局部变量节点缓存,降低计算消耗。当你需要做延时处理时,不需要再写启动定时器, 然后创建到期事件检测名称判断后写逻辑,只需要用 j 四环境下熟悉的 saturn out 或者 saturn turbo 就 行,并且嵌套 b 包补货都是支持的。取消定时器也是用一样的 j 四风格代码, 而且这不是简单的创建定时器节点。例如有些场景,一个事件发生后过一段时间做某件事,如果你用一个简单的定时器,而在定时器到期前事件又发生了。由于同名,此时第二个触发的事件不会再触发定时器的效果。而在 ghen 杠 ts 项目中, 变 e 器会根据情况自动生成定时器名称池,进行轮循创建,从而呈现出和真实 j s 环境下 set timeout 相近的效果。你还可以通过标注 at g s t s timer pool 等于四这样的形式指定池的大小。不过这是更高阶的用法了, 一般用不到,很多时候你可能只需要在配置文件中全举指定就行了。翻译器还会尝试对一些简单的定时器事件名称检测做 switch 聚合分发优化,从而改善性能。 在辅助函数方面,项目做了大量的 js 风格和 uni t 三 d 风格 api 支持,比如 vector 三 cross, const a 等于一二三 a push, 二 a dot filter, a dot map, a dot length d i c t dot set dict for each 等等支持。而一些复杂用力很难使用节点图呈现的,比如 const b 等于 excellent 会自动提示建议用 dict 或 raw 声明,比如 object 操作, excellent 也会自动显示警告信息。此外,还有一些局对象和辅助函数, 比如通过 level 或者 stage 快 捷取关卡实体,而且翻译器会将这个关卡对象自动在节点图缓存,从而改善查询性能。你可以直接 stage 点 set 当全区变量用。又比如通过 player 直接查询玩家或者 player character 直接找到玩家的第一个控制角色。各种类型实体也可以这样, item 直接快速取属性,点 pos, 取坐标、 self 点 destroy 括号等等,每一个都可以悬停查看注视,说明一切都会非常自然。 又比如 stage 和 player 这种坐标没有意义的类型,你会发现没有 pos 这个属性。我针对实体做了类型层面的详细优化和各种快捷方法。属性支持 传餐时也会对实体的详细类型验证,避免误用。当然,你随时可以用 int 括号包裹转成通用类型,强制传餐 使用。事件参数同样是自然的,回调取值就和正常编辑 js 代码一样,无法自动推断的范型参数,需要你手动 s type 或者 s j t 数值参数。你可以很自然地直接做下标取值、 forage、 结构组装等等操作,它们都会被编辑器智能地处理成对应的节点图,实现在节点图功能定义的作用域外。你可以编辑常规 ts 代码,引用各种 n p m 库在编辑时运行。你可以用来做比如预编辑生成随机地图、物理模拟 读取一些本地表格数据等等功能,从而方便工作流。你可以用 g s t server 前缀开头的函数 定义节点图作用域内的函数轻松地封装代码,附用翻译器也会处理这部分内容。当然会有一些限制,比如 return excellent 会自动告诉你这些细节。如果你不想用 g s t server 开头, 那只要再包一层函数声明即可。所有这一切靠的都是 t s 类型体操和 excellent 约束, 因此任何现代编辑器都能够开箱即用,天然兼容所有现成 ai 工具,这些类型信息和 sland 规则同样能被 ai 识别,帮助改善代码。所有节点函数调用带有真实的节点图流语义,意味着这些真实的 ts 代码 天然能够被编辑后发布为 npm 库,当做千星奇遇专用库进行复用。总之,整个开发流程就像 unity 开发那样,写代码编辑挂组建节点图。 调试方面,翻译会生成一些中间产物,首先是点 g s, 点 t s 文件,翻译器会将你的代码转换成 f 形式的节点图,节点函数裸调用,你可以直接检查对应的节点实线。 之后会在据此生成 jason, 中间表示描述了变量、节点和连接关系等信息。接着再根据 jason 生成 j 呀, 你可以追溯这些产物已确定问题的根源,一些翻译报错信息也会指向某些产物。未来我可能还会提供 jason 的 格式化预览, 直接还原节点图,从而省去一些时候对编辑器的检查。目前项目首个版本可能会在一些细节处理有不足或 bug, 欢迎进群或在 github 给我反馈。客户端节点图目前还没有支持,需要等我开发,到时候再水一期视频,嘿嘿,爱你们。
粉丝71获赞193

我们在制作关卡时是不是常遇到这种情况?封装的复合节点图后面再修改时,如果动了前后端引角,就需要把所有用到的地方重新连。如果用到的地方比较多,每个都找出来再连一次,这会是一个麻烦的事情。 比如这个复合节点图,它会依次设置三个属性的显示,然后其他地方会用到这个节点图。比如这里。我现在需要修改复合节点图, 按顺序在后面增加一个属性的显示,会修改出口引脚, 然后看到使用的地方已经断开了,需要重新连。为了解决这个问题,分享一个小技巧。为了避免前后端引脚断开,我们将复合节点图的前后端引脚用空节点固定, 空节点没有实际意义,固定在两端不动就行了。这将是我们最后一次重新连引脚, 需要按顺序后面再加一个属性显示, 由于前后端引角没有变化,就不会有重连的问题。止于空节点,目前的执行节点中,设置局部变量节点是比较清亮的,适合模拟无意义的空节点, 这样就不会再为节点图的调整而一个个重新连了。 nice!
