Infinideastudio/NEWorld

UILib对NEWorld的深度定制版

harrynull opened this issue · 19 comments

  • 移除不需要的特性(如多窗口)
  • 减少重复的模块(如Texture, Math, Logger),同时可以让接口更紧密

话说UILib脱离NW开发本来就是问题之一吧
因为这种东西不是能够通用的,有的时候必须为特定项目对某些方面进行取舍,而这些取舍不一定能够适用所有项目

比如是采用硬编码的UI结构还是动态管理就是一个效率和可扩展性的trade off,而在NW中我们选择了可扩展性,但是如果其他游戏需要效率呢?反之亦然
分开诚然能够带来好处,提高了整体代码的质量,降低了UI和游戏可能存在的耦合
但是,有时候也会导致游戏需要对这个UI库做出让步

如果深度定制了UILib,那不就失去了分开的意义了么?还多了多重维护的麻烦
不如直接集成NW中,反而能够避免很多问题

同时,我不认为UI::Locale是个好主意,在有其他库可代替且更易使用的情况下

我的意思就是集成在一起

@DREAMWORLDVOID

@Miigon 统一一下意见,用哪个local库?

logger的话还是用hook,math的话我同意合并

math只要你们能够写出通用版本,我可以用,因为你们的math是3d设计,vec4和mat44,而我是2d,需要的是vec2, vec3和mat33

集成的话其实会产生不少的维护问题。ui库的整个体系比nw的核心体系要庞大的多。如果合并追求耦合度的话只会增加代码的随意性,很容易就会回到重写前UI部分全局变量满天飞的局面,每次变更一点点都会带来大量的调试以及bug

不是,我说的是完完整整的合并,而不是某一块,也就是说所有能调用shared就调用shared。
追求耦合度和全局变量满天飞没有任何关系,该用的结构还是会用的,而不需要的东西可以删掉进行针对性的优化。

支持@abc612008

不过问题是谁是底层?还是另外开发一个底层工具组?共享的部分确实不少,但是鉴于项目是分开开发的,同步维护还是一个问题

@DREAMWORLDVOID locale有一个很好且轻量的gettext

计划移除的模块:math logger settings audio texture 多窗口
合并之后NW里的UI模块就不更新/单独更新了,也就是说不和那个repo同步了

@abc612008 然后你会发现删不掉多少东西

总之现在就在等UILib的最新版

UILib稍微改改然后跟NW项目合并吧?

@qiaozhanrong 恩,计划是如此(弄某个版本的UILIB和NW深层绑定)

@abc612008 紧急通知,新版本有一个重大bug没有修复(今天电脑坏了,你们要等两天了

……