2d遊戲引擎 8年,從2D到3D,我的學習之路

2021-10-11 04:21:48 字數 2651 閱讀 6565

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...