框架的诞生-零:为什么写框架? #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
Uh oh!
There was an error while loading. Please reload this page.
-
题外话
大家好,很高兴,能写这篇文章分享给你们看,也很感谢你们能看我的文章。
如果能和你们交流最好了。
做游戏开发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