Proxyos Weekly 030
Laurence-042
- 2 minutes read - 266 wordsTL;DR 概览
第二章编码完成,待测试。这期有点感冒,下期歇一期
本期目标
下期优先搞定任务系统和开发环境配置,尽量打通一条路
任务系统
- 任务系统大修(包含脚本验证)
- 第二章任务定义(需创建
task_defs/chapter2/目录)- 任务 01:
2_01_sensitive_word_filter— 训练任务 - 识别敏感词 - 任务 02:
2_02_auto_reply_module— 小嘴抹了蜜 - 自动回复 - 任务 03:
2_03_scheduled_tasks— 小嘴有时候抹了蜜 - 定时器 - 任务 04:
2_04_random_events— 小嘴有时候可能抹了蜜 - 随机延迟 - 任务 05: 电子美颜与素颜 - 标签处理
- 任务 06: 旧日之影 - 追查真相
- 任务 01:
编程任务框架代码
- 玄云观任务文件(需创建
fs/cybertaoism/目录)-
chat_filter/main.py— 任务 01 框架 -
sweet_chat/main.py— 任务 02 框架 -
sweet_chat/checker.py— 任务 03/04 框架 -
chat_filter/truth_lens.py— 任务 05 框架
-
- 任务验证逻辑
- 任务 01: 敏感词检测(单元测试)
- 任务 02: 自动回复(单元测试)
- 任务 03: 定时器(时间检测)
- 任务 04: 随机延迟(统计检测)
- 任务 05: 标签处理(字符串比对)
开发环境配置
- 首次编程任务引导
- 控制节点备注弹窗机制
- 引导任务自动解锁配置文件
其他
- 标签处理插件应用到轻聊历史记录的逻辑(任务 05 完成后触发,通过把玩家在 任务 05 的脚本复制到轻聊插件里加载来实现)
- 章节完成检测(任务 06 完成后进入第三章/demo 结束提示)
进展速记(Changelog)
本期假设 / 预期
我当时以为世界是怎样的? 这个预期中,哪一条被证伪 / 被削弱 / 被确认?
基本就是内容填充,但是我需要把控好任务的教学性和对剧情的适配。可能需要调整部分剧情
实际上剧情没调,但是细节确实需要很多把控。下下期我需要在游玩过程中一边测功能一边逐步优化内容细节。
问题最大的反而是之前认为只需要教函数咋调用的那个任务,最初我觉得让玩家用 sync 的 sleep 就可以了,但是单单这样很难让玩家意识到函数的作用,所以我需要往里面塞俩 websocket ipc 伪装成的类 http 调用。而这俩调用是 async 的,导致了整个任务脚本 async 化。我得想个办法避免玩家的关注点被偏移,或者重新思考下这个任务怎么设计
本期确定性变化
哪些东西现在「更确定」或「被明确否定」了? “确认 X 不可行” “删掉 Y 抽象” “意识到 Z 是伪问题”
新增:
- 为 NotificationDrawer 添加了打开时标记所有通知已读的功能
- 添加了控制面板的拖动功能
- 扩展任务需求块功能,使其支持检查脚本
- 轻聊添加了插件排序系统
- 实现了通用的检查脚本和对应的数据
- 预埋了 i18n 机制,但脚本还是中文脚本,真要上英语区再说
- 所有任务的资源文件
- 在剧本里加了开发者备忘来说明每个任务的设计目的
- 新增了 Demo 结束界面和对应的触发 action
变更:
- 优化了剧本配置,现在更直观了
- 优化了主界面的通知的
- 把 NotificationDrawer 作为 title 的一部分加了回来
- 调整了 user://的文件来源目录位置和目录结构,以此简化项目管理
- 调整了游戏内脚本和玩家编写脚本都会调的 proxy_os_ipc 位置,并添加了对应的路径配置
修复:
删除:
主要进展内容/本期关键判断点
我做出了哪些「如果错了也要付代价」的判断?
本期主要是内容期,以下是第二章涉及的主线任务
| 任务 | 主题 |
|---|---|
| 开发环境准备 | 尽可能简单地配置环境 |
| 训练任务 - 识别敏感词 | 使用循环,通过 in 检查关键词 |
| 小嘴抹了蜜 - 自动回复 | 在之前的基础上从 dict 中查数据,学习 Python 中使用循环在 dict 中检查 key 是否存在并获取 value 的这一常见操作 |
| 小嘴有时候抹了蜜 - 定时器 | 函数的使用 |
| 小嘴有时候可能抹了蜜 - 随机延迟 | 自己上网查某个功能应该怎么写 |
| 电子美颜与素颜 - 标签处理 | 自己分析一段代码的功能,并进行修改 |
| 旧日之影 - 追查真相 | demo 结束和对第三章的引入 |
其中基本没啥大问题,有问题的主要是小嘴有时候抹了蜜 - 定时器这个任务
最初我觉得让玩家用 sync 的 sleep 就可以了,但是单单这样很难让玩家意识到函数的作用,所以我需要往里面塞一些包装了复杂逻辑的函数。
但这个任务中不该让玩家的注意力被复杂现有逻辑吸引走,所以函数又不能太复杂。思来想去就把 proxy_os_ipc 拉了出来,通过其类 http 调用来两三句撑起一个函数。
但问题来了,proxy_os_ipc 的调用是 async 的,导致了整个任务脚本 async 化。玩家的关注点反而又可能被 await 带走
虽然我觉得这样周围全是不熟悉的东西反而减少了玩家关注其他地方的概率,但我不确定这个是真的会让玩家集中注意力写一句 sleep,还是会让玩家直接蒙圈
瓶颈与问题清单
哪些问题还没解,但也许我已经知道“它们不是什么”?
我需要思考下“函数的使用”这个主题的任务应该怎么改进
下下期计划
这期有点感冒,下期歇一期
- 测试第二章,并修复涉及开发环境准备和前两个任务的问题
- 优化开发环境准备和前两个任务的文案
试玩版
预计第一个可玩版本将在第二章的主线内容完成后推出