2020年5月技術導讀(遊戲向)

貓冬發表於2020-05-23

最近一直在思考自己在技術學習上是否過於低效的問題。出現這個問題的緣由是,自己工作下班之後沒多少精力和時間去留給自己學習。本來就有限的時間,如果還沒有合適的學習計劃,而是一昧憑興趣去學一些離自己目標方向比較遠的東西,可能會事倍功半。

就我而言,自己目前的水平更像是“磨”出來的,東學學西學學,什麼都有點印象,但是專業方向的知識之間的連線卻非常離散。讀研的時候有大量時間給我“磨”,總歸能學會點什麼,但工作則不一樣。

例如一本《Shader 入門精要》目前看了兩次,但仍然害怕離開書來寫 Shader。再者,一門技術很久不用,再拿起來也需要時間。為此,我總結了三點原因:

  1. 工作中很少用到,遊戲有特效師,自己也不會主動地思考怎樣的 Shader 能為遊戲帶來更好的效果。
  2. 學的時候只光看了,跟著書敲了,但一直沒有走出書本,去自己實現自己想要的功能。
  3. 覺得 Shader 像 CSS 一樣,要記各種東西,憑經驗實現效果,而這種知識自己最容易不用就忘。(當然這是錯的,這也是為什麼我在上期導讀選擇跟 Games101 圖形學課程打基礎)

基於上面的原因,導讀也是偏向自己打基礎的方面。

上一期的博文在:《2020年4月技術導讀》

書籍

《軟技能2:軟體開發者職業生涯指南》

豆瓣地址

其實正如上文所說,我學東西靠的是“磨”,但這並不是什麼好的學習方式。而且除去程式設計,作為一個開發者,我們仍然有很多“軟技能”需要注意,例如自己的職業規劃、如何發現技能短板、如何推進職業生涯等等。

我相信不止是我,很多開發者也在不斷地摸索如何成為一個目標中資深且專業的開發者。而本月出版的這本書就是為這方面而量身定做的,是著名的《軟技能》的第二版。這本書目前看到的翻譯都十分優秀,每次開卷都有益。如果你也想專注於自己的職業發展,我十分推薦這本書。

下面是書中介紹的十步學習法,自己根據它來調整了下學習計劃:

十步學習法

公開課

Games101 圖形學入門

這門公開課我已經在上期導讀中提到:《2020年4月技術導讀》,再次提到是因為經過學習,我認為課程中理論部分講的深入淺出,而且也能瞭解到當下流行的圖形技術和它們是怎麼跟我們所學的聯絡在一起。

閆老師提到他的學習方式是:Why, What then How,課程也是按照這種思路來設計的。先問為什麼要學這個東西,然後問學的是什麼,最後瞭解這東西具體是怎麼運作的、怎麼用。How 部分是最不重要的,也是最容易忘的部分,我們只需把握好 Why 和 What 部分即可。

那課程是怎麼把知識點聯絡起來的呢,就憑藉一個個 Why 來連線。拿光線追蹤來舉例,下面是我做的筆記:

光線追蹤筆記截圖

如果你對筆記感興趣,我也將其分享了出來:《光線追蹤》

The Cherno 的遊戲引擎教程

油管地址

B站搬運地址

教學版引擎倉庫地址

Up 主 The Cherno 在自己的 CPP 和 OpenGL 教程之後,再基於兩者推出了遊戲引擎教程。引擎的倉庫是跟著視訊教程的進度而推進的,有興趣的可以瞭解下。

The Missing Semester of Your CS Education

課程地址

B站搬運地址

這門公開課是通過知乎專欄《6.NULL:恨不相逢“未嫁時”》瞭解到的。

Classes teach you all about advanced topics within CS, from operating systems to machine learning, but there’s one critical subject that’s rarely covered, and is instead left to students to figure out on their own: proficiency with their tools. We’ll teach you how to master the command-line, use a powerful text editor, use fancy features of version control systems, and much more!

簡而言之,這門課不是教計算機的理論,而是介紹一些常用的工具,讓你在面對問題的時候有更多的手段。自己可以看看一些不熟悉的主題查漏補缺。

MIT 教授 Gilbert Strang 「線性代數」課程

課程地址

這門公開課是通過知乎專欄《86歲還在錄網課:MIT教授Gilbert Strang最新「線性代數」課程上線》瞭解到的。

這門課程在今年錄製,目前有 6 個視訊講座,對於之前錄製的課程也可以在 B 站找錄播,例如:麻省理工公開課:線性代數

具體介紹可以看知乎專欄,自己對於這門課程優先順序比較低,線代遇坎兒了再學。

其他計算機公開課

有網友總結了國外的計算機課程,還附上了視訊連結,可以參考《電子工程和電腦科學系》

文章

  • Entity Component System for Unity: Getting Started
    • Ray Wenderlich 的教程通常會提供初始專案,手把手帶你寫程式碼,加上獨特風格的配圖,很適合用來入門某個技術。這次帶來的是 Unity ECS 的入門,用 Entities 包實現一個坦克射擊遊戲。
  • Fixing Performance Problems - 2019.3
    • Unity 發表的關於解決效能問題的教程,裡面有很多小知識點,對初學者可能有幫助。雖然之前好像看過,但這是 2019.3 版本的。
  • Cache的基本原理
    • 作者圖文並茂地講解了快取內部是如何運作的,Visio 手繪風格的圖畫也很清晰明瞭。對快取感興趣的還可以進一步關注作者的專欄。
  • Refactoring.Guru
    • 這網站也圖文並茂地介紹了重構、 設計模式、 SOLID 原則 (單一職責、 開閉原則、 里氏替換、 介面隔離以及依賴反轉) 以及其他和智慧程式設計主題相關的內容。
  • 每位程式設計師都該知道的記憶體知識
  • Zero allocation code in C# and Unity
    • 文章作者開源過叫 Svelto 的 ECS 框架,這篇文章是他對 Zero allocation 程式碼(也就是自己管理記憶體)的理解,也介紹了相關的概念、書籍和很多檢視記憶體分配的工具,對想了解 DOTS 的同學可以閱讀一下。

最後

其實本篇導讀相當一部分在講的是我個人怎麼樣看待自己目前學習情況,每次導讀中所有的內容我其實只能看完一部分,怎麼樣更高效地學和怎麼樣更好地平衡生活是我最近不斷思考的問題。當然了,我不會放棄。

這次導讀分享的多是遊戲記憶體、快取、圖形學相關的的內容,自己沒分享過某種具體實現的 Shader 的文章,是因為我認為自己基礎要先打好,這也是我對其他 Shader 課程的態度。希望這次分享能對讀者有幫助。

相關文章