-
Notifications
You must be signed in to change notification settings - Fork 78
TODO
woctordho edited this page Oct 24, 2024
·
128 revisions
目前我们对Nova的开发以自用为主,欢迎各位小伙伴贡献代码
有什么想做的可以直接开一个issue,做完了可以直接开一个PR
读代码的时候遇到任何问题也可以开一个issue
- 把ToLua换成纯C#的Lua runtime,以方便跨平台
- 把ToLua打成单独的包
- 目前Nova本体依赖ToLua,生成的wrap代码依赖Nova本体,ToLua又依赖生成的wrap代码,所以需要修改生成代码的方式,让生成的wrap代码自己注册到ToLua,消除循环依赖
- 支持给不在namespace Nova下的class生成wrap代码
- 把Nova打成单独的包
- 做一个比较简单的样例工程和一个比较全面的样例工程,目前的样例工程上手还是有点难
- 资源系统迁移到Addressables
-
AssetLoader.Load
从Addressables里读东西 - linsyking/Nova-WXM实现了一部分
-
- 支持加载未打包的文件,以方便制作mod
- 动画系统迁移到unity-tweens,或者其他更合适的包(不用DOTween是因为它的开源协议与MIT协议不兼容)
- 多语言支持迁移到Unity的Localization
- 支持多个场景,把DontDestroyOnLoad的东西放到
NovaController
下面 - 如果有合适的方法处理Lua AST,让
DialogueEntryPreprocessor
通过AST而不是regex来匹配那些函数 - 在各个平台上重新编译ToLua runtime
- 详见 https://github.com/Lunatic-Works/tolua_runtime/tree/new
- 需要跟上LuaJIT的最新版本
- 以前macOS、iOS、WebGL由于不支持JIT,所以用的不是LuaJIT而是原版Lua,造成Lua脚本的某些行为不一致。但是LuaJIT其实有一个关闭JIT的模式,现在应该有办法统一用LuaJIT
- Windows、Linux、Android已经搞定了
- 如果搞起来太麻烦,就统一换成原版Lua
- macOS需要支持Intel和苹果芯片,并且最好能从Windows或Linux上交叉编译
- 适配鸿蒙系统
- 用bc7enc_rdo压缩图片
- 控制sprite生成的mesh的顶点数,比如用Unity-SpriteAssist
- 用texture streaming加载图片,以减少内存占用
- 支持Live2D/E-mote
- 需要一个开源的框架,比如Inochi2D或者Project AZUSA
- 在手机和低端设备上自动降低分辨率和帧率(目前
QualityManager.cs
里写了一句话) - 动态降低帧率
- 如果没有动画正在播放,就把帧率降低到10 FPS左右(UI的响应仍然依赖于这个帧率),可以写在
QualityManager.cs
之类的地方
- 如果没有动画正在播放,就把帧率降低到10 FPS左右(UI的响应仍然依赖于这个帧率),可以写在
- 解决蓝牙耳机延迟的问题,特别是Android/iOS上
- 可能要加一个设置来调节DSP buffer size
- 在Android/iOS上后台播放BGM
- 在Windows/macOS/Linux上统一鼠标/触摸板/键盘上下键的滚动速度
- 每隔5分钟,如果有新的进度,则自动存档一次
- 给存档加个锁,如果游戏的其他实例(比如Unity Editor里的版本和build出来的版本)已经在运行,则不能运行新的实例
- 选过的选项变色
- 图片/音乐鉴赏的配置文件支持纯文本导入/导出
- 音效的数量过多时,停止/减弱旧的音效(polyphony)
- 画面左侧上下滑动调节亮度,右侧上下滑动调节音量,长按快进
-
Screen.brightness
现在在所有OS都能用了吗
-
- 局域网内同步存档
- 语音收藏
- 其实不用单独做一个语音收藏界面,可以在存档界面里加一个播放语音的按钮
- 绿色安装模式
- 在Windows下,可以选择把存档和设置保存在安装文件夹下,并且不往注册表里写东西
- 没有耳机时禁止播放声音
- macOS/Linux上可以设置窗口保持最前
- 自动生成文档(包括C#和Lua)
- 把文档翻译成英文
- 把教程翻译成英文
- 加一个接口来解锁一个没到过的开始节点
- 流程图
- 重构一些代码,消除循环依赖
- 重构
SaveViewController
,把后端功能拿出来 - 重构
LogController
,把后端功能拿出来 - 立绘鉴赏
- 立绘裁剪支持因为max size而缩小后的图片
- 在脚本中支持类似于
姓名::表情::台词
的语法 - 重构
RectTransformAnimationProperty
和OpacityAnimationProperty
,使其初始值的行为与其他AnimationProperty一致 - 回跳时不一定停止所有动画
- 如果回跳之前和之后在同一段持续动画之内,就不停止这段持续动画
- 编辑存档的描述
- 预加载头像
- 预加载选项图片
- 图片和音乐的metadata需要
id
吗 - 文本插值支持多语言
- Parse脚本之后检查
jump_to
和branch
跳转到的节点存在 - 图片鉴赏中的缩略图支持多语言
- 优化存档体积,详见存档系统的设计
- 第一次正常关闭log界面时,出现提示:“鼠标滚轮上滚可以打开文本回顾界面”
- 手机上不出现
- 目前的
before_checkpoint
和after_dialogue
代码块没什么用处,我们应该在每个代码块之后等待动画,具体来说,每条对话应该这样执行:- 执行
before_checkpoint
代码块,anim_hold_end
必须放在这里 - 等待对话内动画,若玩家点击则直接终止
- 创建checkpoint
- 执行
default
代码块,anim_hold_begin
必须放在这里 - 添加文本
- 等待对话内动画和文本动画,若玩家点击则直接终止
- 等待玩家点击
- 执行
after_dialogue
代码块 - 等待对话内动画,若玩家点击则直接终止
- 进入下一条对话
- 执行
- 对话框翻页时应该有文本动画
- 某些情况下,读取一个损坏的存档/
globalSaveIdentifier
不兼容的存档会使得global.nsav
的文件体积变得很大 - 播放视频时,如果玩家试图关闭游戏窗口,退出游戏的警告框会被视频挡住
- 重构
DialogueBoxController
- 不要在
DialogueBoxControllerRestoreData
里存所有历史文本,而是像LogController
一样只存需要interpolate的文本 - 对话框可以有多个
- 用脚本隐藏/显示对话框时有动画
- 不要在
- UI手柄支持(目前来看会导致改UI更麻烦)
- 角色说话时BGM减轻(duck volume)
- Windows上可以设置窗口保持最前
- 把立绘差分打成atlas(目前来看对性能没有显著的改进)