mickey 寫了一篇 《乙個本科畢業生創業兩年的感悟》,從他的視角,總結了我們合作的兩年經歷。
我也來寫一篇,介紹我的學習之路,希望對大家有所幫助,謝謝大家~
1.直接從0開始做專案,邊做邊學習,在做的過程中不斷思考和反思當前的設計和實現,不斷地修正,不斷地迭代。
2.做完乙個專案後,沉澱和昇華:
a)根據做專案中遇到的問題,針對性地看一些經典書籍和學習資料
b)寫一些文章,分享自己的學習經歷和技術心得
非常感謝老師對我的信任,讓我能在第乙個專案就負責開發乙個比較大規模的完整**~
整個專案歷時8個月,前端、後端、資料庫我都要開發。
通過該專案,我學習了測試驅動的思想(後端和邏輯層寫了很多測試)、分層架構、mvc、重構、領域驅動的思想,學習了前端、後端、資料庫的技術。
再次感謝老師的支援,讓我能夠自由地研究自己感興趣的內容。
做完**後,我先後開發了 貪吃蛇->連連看->炸彈人 這三個html5遊戲,中間又做了幾個小**。 其中,我完全使用測試驅動來開發炸彈人遊戲。
詳見:發布我製作的jquery貪吃蛇遊戲
連連看炸彈人遊戲開發系列
通過做遊戲,我學習並應用了物件導向的思想和設計模式,學習了2d遊戲中的基本概念和領域模型。
從做的遊戲中,我看到了一些通用模式,促使我開始提煉遊戲引擎。
詳見:提煉遊戲引擎系列
發布html5 2d遊戲引擎yengine2d
詳見:發布html5 rts遊戲-古代戰爭
我在上學的時候,通過邊做專案邊學習,看了一些書。
此處分享我看了哪些書、看了幾遍、有什麼心得,詳見:2011-2023年收集的經典書和心得
webgl、3d引擎等方面可以參考:
分享收集的webgl 3d學習資源
分享我收集的引擎、圖形學、webgl方面的電子資料
我用提煉的引擎寫了個demo。
詳見:動作類遊戲demo
在工作上,我有幸加入了釘釘的前端開發團隊,參與桌面版釘釘的開發。
我學習了angular,開發了搜尋、群組、快捷鍵等功能。
通過參與該專案,我學習了乙個真正的商業專案是怎樣開發的,也學習了前端的更多技術,感謝專案老大~
此時我看到了babylonjs的3d demo,非常震撼。我已經迫不及待地想要學習3d技術了!我加入了北京的乙個創業公司,開始接觸webgl技術。
感謝該公司,技術上對我有很多啟發~比如我第一次看到了類似於unity的元件化架構的引擎,而我之前一直參考cocos 2d,用的是繼承架構。我也學習了使用渲染命令佇列來解藕邏輯和渲染的設計思想。
我是如何開始學習webgl的呢?
1.我找到了《webgl程式設計指南》這本書,把大部分demo實現了一遍;
2.再次第二遍實現demo,提煉3d引擎的雛形;
3.用提煉的引擎實現了乙個「自由瀏覽場景」的demo。
通過學習3d,我感受到了3d引擎的巨大魅力,我決定自己開發乙個3d引擎!
辭職,回家,從0開始,開發3d引擎。
我學習了函式式反應程式設計的思想,模仿rxjs,寫了個wonder-frp庫,這就花了我1個月的時間,為我以後學習函式式程式設計埋下了伏筆。
我出於學習的目的,盡可能地加入更多的功能(模型,動畫,地形,水,陰影。。。。。。),並沒有考慮給別人使用。
雖然引擎是全覆蓋的單元測試用例,並且我注重**質量,但是效能方面沒有過多地優化,也沒有外部的使用反饋。所以引擎屬於自己玩的玩具。
開發了一年後,我認為需要到外界獲取一些反饋和交流,所以我參加了工作,並在工作中收集相關反饋,繼續改進引擎。
我用引擎做了一些demo,並開始應用到手機端。
同事反饋:引擎太笨重,應該更加地模組化。感謝同事對引擎的改進建議,讓我看到了引擎很多的不足。
辭職,回家,我決定重寫引擎。
此時我開始學習函式式程式設計的思想,這再次重新整理了我的認知。因此我從物件導向切換到函式式程式設計,開始重寫設計引擎,立足於真正的商業應用,能夠支援大型場景:
1.使用js庫,進行函式式程式設計
2.支援多執行緒
3.支援webgl2
4.支援延遲渲染
開發一段時間後,我認為js庫進行函式式程式設計非常不方便,**不好看,而且效能也不好。
我關注到reason的發展,認為reason已經足夠成熟,可以使用了。
於是我們引擎和編輯器完全重寫,從typescript切換到reason,使用data oriented設計,開始真正的函式式程式設計。
從重寫到發布,《乙個本科畢業生創業兩年的感悟》已經很好地總結了這段時間的經歷。
終於,wonder 1.0正式版發布,完成了我們創業的第一步,交付了第乙個可以真正使用的產品。
從學習3d,到發布1.0產品,經歷了4年。
詳見路線圖。
因為興趣,就會自發地想去學習,每天都有興奮感。解決乙個個問題後,也很有成就感。
我也看好web 3d的潛力,這是乙個有技術門檻,需要長期鑽研,厚積薄發的領域,很適合我。
感謝網際網路的便利,所有相關的知識都可以在網上搜尋到。所以現在是最好的時代,能走到**全憑自己驅動。
我們做的wonder產品-3d引擎和編輯器,技術上很有挑戰,永無止境,這不就是對我最好的禮物嗎?
我會持續地學習3d開發,把wonder打造成世界上成熟的產品,讓web 3d開發變得輕而易舉,為世界作出貢獻。
8年,從2D到3D,我的學習之路
mickey 寫了一篇 乙個本科畢業生創業兩年的感悟 從他的視角,總結了我們合作的兩年經歷。我也來寫一篇,介紹我的學習之路,希望對大家有所幫助,謝謝大家 1.直接從0開始做專案,邊做邊學習,在做的過程中不斷思考和反思當前的設計和實現,不斷地修正,不斷地迭代。2.做完乙個專案後,沉澱和昇華 a 根據做...
2D轉換 3D轉換
轉換是使元素改變形狀 尺寸和位置的一種效果。能夠對元素進行移動 縮放 轉動 拉長或拉伸。2d轉換 瀏覽器相容 1 internet explorer 10 firefox 以及 opera 支援 transform 屬性。2 chrome 和 safari 需要字首 webkit 3 interne...
2D縮放和3D位移
2d 平面空間的元素變形。變形屬性 transform transform的屬性值為功能函式。2d功能函式 2d的位移 2d的旋 2d的縮放 2d的傾斜 transform translate x,y 位移 transform translatex x軸移動的距離 transform transla...