引擎要集成某种特性,至少要满足以下条件:
必要性:
比如楼主说的这个方案,引擎本来就不是用 plist,所以没有优化必要。
可行性:
有实际数据对比,知道性能在什么平台、什么机型、什么项目里面获得多少提升。对大多数平台、大多数品类的游戏都有提升。指标全面,不是只有单项指标上升(比如 DrawCall),而是整体性能提升。稳定性可靠,可以大规模推广。
通用性:
引擎是一个完整产品,优化方案要能具备跨平台的可能性,解决方案能覆盖到引擎的各个模块。而不是针对部分组件能有效果,其它组件没效果。如果方案不具备通用性,那引擎的实现将会四分五裂,平台差异扩大到一定程度将变成代码的
山,无能力长远维护。
可用性:
方案必须有一定的可行性、易用性,文档能写得清楚,使用成本低,如果会带来很多新问题的话我们将无法承担相应的技术支持成本。
一个东西要做出来不难,难的是产品化、商用化。
说白了,今天自研引擎跟商业引擎的竞争,不在一个维度上。商业化产品靠的是成熟度、完整度、编辑器体验和生态,去 PK 各个大厂的自研引擎。商业引擎要考虑到全面发展,确实没办法像自研引擎那样针对各个项目进行深度定制和裁剪。所以如果单论具体的性能、包体、某些渲染特效、迭代速度,商业产品和自研引擎肯定是会有差距的。实际上大厂即便使用了商业引擎,往往也需要对其进行深度定制,有些项目甚至改得妈都不认得。
所以引擎才有开源的必要,一个易扩展、易定制的底层至少提供了可能性,不会成为特定项目的阻碍。