框架的诞生-零:为什么写框架?

题外话

大家好,很高兴,能写这篇文章分享给你们看,也很感谢你们能看我的文章。 如果能和你们交流最好了。 做游戏开发3、4年了,我用过这些,Unity,Cocos2dx,CocosCreator,LayaAir,Egret。

用得最久的是LayaAir,因为工作需要嘛。

但最喜欢的还是CocosCreator,因为社区的小伙伴、引擎组的人都很好很可爱,他们分享的东西都让我受益匪浅。

谢谢~

第一次写文章,如有不当之处请多多见谅。

什么是框架?

我想有的人心里有答案,有的人也有疑问。

这里我提供别人对框架的见解链接:

  • 某乎文章:什么是框架?为什么要使用框架?我告诉你理由哦!

    框架的英文为Framework意思是框架、机制、准则。
    最早是源于建筑行业,是一个框子——指其约束性,也是一个架子——指其支撑性。
    是一个基本概念上的结构,用于去解决或者处理复杂的问题。
  • @金戈的回答: 什么是框架?

    框架(Framework)是一个框子——指其约束性,也是一个架子——指其支撑性。
    IT语境中的框架,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。
    在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。

我的个人见解:▼

我们的游戏程序都是基于某个平台的,以及可能会使用现成的渲染框架,来实现我们游戏的玩法和业务。同时针对开发和生产环境部署,我们需要一些工具协助。

框架在渲染框架层和业务层之间,封装部分通用能力供业务层使用。起到支撑业务开发的作用。

我的层级图的灵感来自 @白玉无冰 大佬拍的panda大大讲的一页一个PPT:CocosCreator跨平台的引擎架构。▼

对于游戏客户端框架来说

  • 框架具有一定的约束性,指的是,我们需要在一定范围内按照框架作者的设计和规范去使用和扩展。

    比如:

    在CocosCreator框架中。

    • 如果要加载一个资源,那就需要调用cc.assetManager.loadxxx 或者cc.loader.loadxxx,传规定的参数,传错了就可能出问题。

    • 如果需要加载自定义的资源就需要安装assetManager的规范去扩展。具体可参考CocosCreator的文档,不按规范扩展就可能出问题。

  • 框架有部分已经实现的功能,可以直接使用或者稍微扩展就可以用来实现业务逻辑。

  • 大部分游戏客户端框架都包含很多功能模块,甚至不是我们项目需要的。

    比如:

    框架中包含UI管理框架,事件通讯框架,网络模块,等等。

    我们可能只需要事件通讯模块或者UI管理模块,只能手动去剔除不需要的。

  • 框架所能解决的问题有限,有边界。

    比如:

    有的框架只是一个UI管理框架只解决了复杂UI管理的问题

  • 框架可能跟底层强相关。

    比如:一个基于CocosCreator的UI管理模块,里面耦合了CocosCreator的加载,prefab文件,resource文件夹的规范等,可能也耦合了cc.Node的使用等等。

框架解决什么问题?

大家对框架的第一印象可能是

  • 我学不动了学不动了

  • 提高开发效率,快!!!

我个人觉得好坏还得看框架和看个人

  • 好的框架可以统一多个开发人员的编程风格,方便多人协作
  • 好的框架可以让开发人员减少维护程序架构心智负担,减少纠结。
  • 最重要的是可以大大的提高开发效率,大部分时间专心写业务就可以了。

为什么写框架?

为了造一个更好更适合的轮子

有现成的框架为什么不拿来直接用,干嘛自己造轮子浪费时间?

  1. 现成的框架没法满足需求,有无法解决的问题。

  2. 现成的框架和自己的思想不符。

为了学习和实践

写框架可以督促我去学习其他框架是如何设计的,为什么这样设计,能解决什么问题,为什么能解决这些问题。

然后反过来去思考我工作和开发中遇到的问题,我学着去分析,去尝试找解决方案,以及思考如果我写框架怎么解决这些问题。怎么去设计。

写出来的框架很挫怎么办?怕个毛线,继续学习,继续思考,然后解决问题,大不了推翻重写。

写出来的框架不能用在公司的项目中去实践怎么办?这个想法有点危险,哈哈哈,可以自己写项目来验证。不过还有另外一种解决方案。下一篇会讲。

写框架是一场历练,督促着我去学习和沉淀所学,打磨我的知识体系,让它更加完善。

总结

  • 什么是框架? 是游戏程序的一部分,是支撑游戏业务逻辑的架子,但也是具有一定约束的框框。

  • 框架解决什么问题?

    • 可以统一多开发人员的风格(框架的风格)

    • 可以让开发人员减少维护程序架构的心智负担,减少纠结(按照框架的思想来就行)

    • 可以大大提高开发效率,大部分时间专心写业务逻辑就可以了

  • 为什么写框架?

    • 去学习其他框架怎么设计,怎么解决它们面对的问题。

    • 解决自己工作和开发中遇到的问题

    • 积累和沉淀自己的知识

一些游戏客户端框架参考

心里话

我想和优秀的小伙伴一起开发好玩的游戏

我希望能通过我做的游戏,我的能力获得用于生活和学习的报酬。

我也希望

有人能从我的游戏中获得快乐,或者有所收获

也希望

有人能因我的分享而有所收获

然后我能说一句

谢谢你玩我的游戏

谢谢你信任我

谢谢你用我的框架

框架系列文章

最后

欢迎关注,更多内容持续更新

公众号搜索:玩转游戏开发

或扫码:img

QQ群: 1103157878

博客主页: https://ailhc.github.io/

github: https://github.com/AILHC

9赞

mask!!!!

支持一下!

支持大佬,跟着大佬脚步一起学习

不是大佬,只是在路上的人
路上人

mask还行(噗

mark!!!

mark一下, 确实感觉框架很重要,只玩过cocos,然后接手过4种风格的框架,各有利弊吧,然后吹得最神的一个让我最难受,各种想推翻了自己重写

mark!

mark!

mark!

写的特别好!

2年没更新了
作者还在吗