框架的诞生-零:为什么写框架? #2
AILHC
started this conversation in
Game Development Blogs
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
题外话
大家好,很高兴,能写这篇文章分享给你们看,也很感谢你们能看我的文章。
如果能和你们交流最好了。
做游戏开发3、4年了,我用过这些游戏引擎。
Unity,Cocos2dx,CocosCreator,LayaAir,Egret。
用得最久的是LayaAir,因为工作需要嘛。
但最喜欢的还是CocosCreator,因为社区的小伙伴、引擎组的人都很好很可爱,他们分享的东西都让我受益匪浅。
谢谢~
第一次写文章,如有不当之处请多多见谅。
什么是框架?
我想有的人心里有答案,有的人也有疑问。
这里我提供别人对框架的见解链接:
某乎文章:什么是框架?为什么要使用框架?我告诉你理由哦!
@金戈的回答: 什么是框架?
我的个人见解:▼
我们的游戏程序都是基于某个平台的,以及可能会使用现成的渲染框架,来实现我们游戏的玩法和业务。同时针对开发和生产环境部署,我们需要一些工具协助。
框架在渲染框架层和业务层之间,封装部分通用能力供业务层使用。起到支撑业务开发的作用。
我的层级图的灵感来自 @白玉无冰 大佬拍的panda大大讲的一页一个PPT:CocosCreator跨平台的引擎架构。▼
对于游戏客户端框架来说
框架具有一定的约束性,指的是,我们需要在一定范围内按照框架作者的设计和规范去使用和扩展。
比如:
在CocosCreator框架中。
如果要加载一个资源,那就需要调用cc.assetManager.loadxxx 或者cc.loader.loadxxx,传规定的参数,传错了就可能出问题。
如果需要加载自定义的资源就需要安装assetManager的规范去扩展。具体可参考CocosCreator的文档,不按规范扩展就可能出问题。
框架有部分已经实现的功能,可以直接使用或者稍微扩展就可以用来实现业务逻辑。
大部分游戏客户端框架都包含很多功能模块,甚至不是我们项目需要的。
比如:
框架中包含UI管理框架,事件通讯框架,网络模块,等等。
我们可能只需要事件通讯模块或者UI管理模块,只能手动去剔除不需要的。
框架所能解决的问题有限,有边界。
比如:
有的框架只是一个UI管理框架只解决了复杂UI管理的问题
框架可能跟底层强相关。
比如:一个基于CocosCreator的UI管理模块,里面耦合了CocosCreator的加载,prefab文件,resource文件夹的规范等,可能也耦合了cc.Node的使用等等。
框架解决什么问题?
大家对框架的第一印象可能是
我学不动了
提高开发效率,快!!!
我个人觉得好坏还得看框架和看个人
为什么写框架?
为了造一个更好更适合的轮子
有现成的框架为什么不拿来直接用,干嘛自己造轮子浪费时间?
现成的框架没法满足需求,有无法解决的问题。
现成的框架和自己的思想不符。
为了学习和实践
写框架可以督促我去学习其他框架是如何设计的,为什么这样设计,能解决什么问题,为什么能解决这些问题。
然后反过来去思考我工作和开发中遇到的问题,我学着去分析,去尝试找解决方案,以及思考如果我写框架怎么解决这些问题。怎么去设计。
写出来的框架很挫怎么办?怕个毛线,继续学习,继续思考,然后解决问题,大不了推翻重写。
写出来的框架不能用在公司的项目中去实践怎么办?这个想法有点危险,哈哈哈,可以自己写项目来验证。不过还有另外一种解决方案。下一篇会讲。
写框架是一场历练,督促着我去学习和沉淀所学,打磨我的知识体系,让它更加完善。
总结
什么是框架?
是游戏程序的一部分,是支撑游戏业务逻辑的架子,但也是具有一定约束的框框。
框架解决什么问题?
可以统一多开发人员的风格(框架的风格)
可以让开发人员减少维护程序架构的心智负担,减少纠结(按照框架的思想来就行)
可以大大提高开发效率,大部分时间专心写业务逻辑就可以了
为什么写框架?
去学习其他框架怎么设计,怎么解决它们面对的问题。
解决自己工作和开发中遇到的问题
积累和沉淀自己的知识
一些游戏客户端框架参考
心里话
我想和优秀的小伙伴一起开发好玩的游戏
我希望能通过我做的游戏,我的能力获得用于生活和学习的报酬。
我也希望
有人能从我的游戏中获得快乐,或者有所收获
也希望
有人能因我的分享而有所收获
然后我能说一句
谢谢你玩我的游戏
谢谢你信任我
谢谢你用我的框架
谢谢大家阅读我的文章,希望大家能有所收获。
最后
欢迎关注我的公众号,更多内容持续更新
公众号搜索:玩转游戏开发
或扫码:
QQ 群: 1103157878
博客主页: https://ailhc.github.io/
掘金: https://juejin.cn/user/3069492195769469
github: https://github.com/AILHC
Beta Was this translation helpful? Give feedback.
All reactions