没想到距离上篇开发日志过了半年有多,这段时间由于各种客观原因加上懒癌发作,开发进度算是停滞不前,现在开始重整旗鼓再次开发,还是要每隔一段时间发篇日志来防止自己懒癌发作,先暂定最迟两周一篇日志吧。
这篇日志主要讲下最近关于 ink 的探索使用,第一个问题是为什么我不用之前自己写的剧情管理软件,改用 ink 呢?因为在目前 ai 的加持下,ink 开发的效率比我之前用自己软件管理的要快。
ink 写剧情都是纯文本形式,而纯文本非常适合于用 ai 处理,想要让 ai 给我搞段新剧情生成非常简单,只需要先让它熟读下 ink 的语法就好,同时 ink 难做国际化的缺点在 ai 时代也很容易解决,所以经过我几秒钟的深思熟虑,决定投坑到 ink 中。
想要在 godot 上使用 ink story,目前有两种方法,一种是用 ink 的 c# 插件,一种是用 gdscript 版 inkgd 插件,我目前选择的是 inkgd,因为之后想要魔改的话还是直接拿插件源码方便,虽然运行效率比不上 c#,不过我这游戏本身也不怎么耗性能。
ink story 的语法我就不谈了,整体给我的感觉是 ink 的思维方式是把整个故事平铺管理,不倾向于零散的片段管理,故事能够从头走到尾,最好是能够在 ink 里面把所有的剧情、逻辑都实现好,当然实际上也不可能把所有逻辑都放在 ink,我目前的做法是一些简单的运算(玩家生命值计算、金钱计算)放在 ink 里,然后把 godot 和 ink 的数据双向绑定,这样大部分的场景都可以解决了。
不过在使用 ink 中一个比较难的点是,怎么根据 godot 中 object 列表数据转为 ink 的分支,因为 ink 的 LIST 实际上是 bool set,也不支持 json,我的做法是先在 godot 给 ink 塞一个相当于 id 列表的东西,然后绑定一个 external 的函数能够根据 id 获取里面各种属性,属于可以实现但是有点绕的方法。
整体使用 ink 的感想是,想要的功能都可以实现,不过一些特殊的操作需要一些特殊的技巧。
暂无关于此日志的评论。