@yangyc
2019-03-14T10:26:41.000000Z
字数 2422
阅读 625
未分类
Mickey 写了一篇 《一个本科毕业生创业两年的感悟》,从他的视角,总结了我们合作的两年经历。
我也来写一篇,介绍我的学习之路,希望对大家有所帮助,谢谢大家~
1.直接从0开始做项目,边做边学习,并在做的过程中不断地思考和反思设计和实现,不断地修正,不断地迭代开发。
2.做完一个项目后,沉淀和升华:
a)根据做项目中遇到的问题,针对性的看一些经典书籍
b)可以写一些文章,分享自己的学习经历和技术心得
从我真正开始编程做项目到现在,大概4年
从真正开始编程做项目到可以有能力开发引擎,大概1年半
TODO 在详见中可以给出截图、博文链接、Github地址!!!!!!!
我是很幸运的,能够一直专一地在一个领域积累。从刚开始学编程到现在,一直都在前端领域学习,先后学习了开发网站->开发2D游戏和引擎->开发前端富应用app->开发3D引擎和编辑器。
我非常感谢老师对我的信任,让我能在第一个项目就负责开发一个比较大规模的完整网站~
整个项目历时8个月,前端和后端和数据库我都要开发。
通过该项目,我学习了测试驱动的思想(后端和逻辑层写了很多测试)、分层架构、MVC、重构、领域驱动的思想,学习了前端、后端、数据库的技术。
再次感谢老师的支持,让我能够自由地研究自己感兴趣的内容。
做完网站后,我先后开发了 贪吃蛇->连连看->炸弹人 这三个js游戏,整个过程历时半年,中间又做了几个小网站。
其中,我完全使用测试驱动来开发炸弹人游戏,测试覆盖100%。
详见:
通过做游戏,我学习并应用了面向对象的思想和设计模式,学习了2D游戏中的基本概念和领域模型。
从做的游戏中,我看到了这几个游戏中的一些通用模式,促使我开始提炼游戏引擎。
详见:
在拿到工作Offer后,我就开始毕业设计,使用提炼的2D引擎,开发一个即时战略的2D游戏。我还开发了对应的编辑器,编辑地图和关卡。
详见:
我在上学的时候,通过边做项目边学习,看了很多书。
此处分享我看了哪些书、看了几遍、有什么心得,详见:2011-2014年收集的经典书和心得
我还参考三国战记的游戏,用引擎写了个demo。
详见:
在工作上,我有幸加入了钉钉的前端开发团队,参与桌面版钉钉的开发。
具体学习了Angular,开发了搜索、群组、快捷键等功能。
通过参与该项目,我学习了一个真正的商业项目是怎样开发的,也学习了前端的更多技术,感谢项目老大~
此时我看到了Babylonjs的3D demo,感觉非常震撼。我已经迫不及待地想要学习3D技术了!我也加入了北京的一个创业公司,开始接触到WebGL技术。
感谢该公司~技术上对我有很多启发~比如我第一次看到了用类似于Unity的组件化的架构来写引擎,而我之前一直是参考Cocos 2D,用继承架构。而且我也学习了渲染命令队列来解藕逻辑和渲染的思想。
我是如何开始学习WebGL的呢?
1.我找到了《WebGL编程指南》这本书,把大部分demo自己实现了一遍;
2.第二遍实现demo,开始提炼3D引擎的雏形;
3.用提炼的引擎实现了一个“自由浏览场景”的demo。
通过学习3D,我感受到了3D引擎的巨大魅力,我决定自己开发一个3D引擎!
辞职,回家,从0开始,开发3D引擎。
在第一轮的开发中,我是出于学习的目的,尽可能地加入更多地功能(模型,动画,地形,水,阴影。。。。。。),并没有考虑给别人使用。
虽然我测试是全覆盖,并且注重代码质量,但是性能方面没有进行过多地优化,也没有外部的使用反馈,所以就是个自己玩的玩具。
开发了一年后,我认为需要到外界获取一些反馈和交流,所以我参加了工作,并在工作中收集相关反馈,继续改进引擎。
我用引擎做了一些demo,并开始应用到手机端。
同事反馈:引擎太笨重,应该更加地模块化。感谢同事对引擎的改进建议,让我看到了引擎很多的不足。
辞职,回家,我决定重写引擎。
此时我开始学习函数式编程的思想,再次刷新了我的认知。因此我从面向对象切换到函数式编程,开始重写设计引擎,立足于真正的商业应用,能够支持大型场景:
1.使用js库,进行函数式编程
2.支持多线程
3.支持WebGL2
4.支持延迟渲染
随着Mickey的加入,我们开始真正的创业:开发引擎和编辑器,打造Wonder,建立Web 3D生态。
我继续开发引擎,Mickey开发编辑器。
开发一段时间后,我认为用js库进行函数式编程非常不方便,代码不好看,而且性能也不好。
我关注到Reason的发展,认为Reason已经足够成熟,可以使用了。
于是我们引擎和编辑器完全重写,从Typescript切换到Reason,开始真正的函数式编程。
从重写到发布,《一个本科毕业生创业两年的感悟》已经很好地总结了这段时间的经历。
终于,Wonder 1.0正式版发布,完成了我们创业的第一步,交付了第一个可以真正使用的产品。
我们会继续开发Wonder 2.0版本,打造和完善Web 3D生态,为大家带来更多的便利和服务。
详见路线图。
因为兴趣,就会自发地想去学习,每天都有兴奋感。当解决一个个问题后,也很有成就感。
感谢互联网的便利,所有相关的知识都可以在网上搜索到。所以现在是最好的时代,能走到哪里全凭自己驱动。
我们做的Wonder产品-3D引擎和编辑器,技术上很有挑战,永无止境,这不就是对我最好的礼物吗?
我会持续地学习3D开发,把Wonder打造成世界上成熟的产品,让Web 3D开发变得轻而易举,为世界作出贡献。
感谢您能阅读到这里,每天都是最好的一天!