2020年4月技術導讀

貓冬發表於2020-04-13

首先,感謝所有將自己時間貢獻在知識分享的人們。

本文將簡單地介紹下最近我看到的想學的、有意思的教程、視訊等,內容不僅限於遊戲開發。大家可以做個參考,說不定其中就能找到適合自己的教程,進一步打算接下來的學習。

這個文章型別和之前寫的都不一樣,一方面有自己時間少、沉澱不夠、不能持續輸出的原因,另一方面是因為這些東西都比較碎,也不好在記錄生活的微博上釋出一些專業的東西。至於這個導讀會不會成為一個系列來更新,還要看看我有沒有足夠東西來分享啦。

書籍

《程式設計師修煉之道(第2版)》

豆瓣地址

在我經過了入門階段之後,發現很多以前學的很多教程,都很難在工作中進行參考。恰巧雲鳳翻譯的第二版已經出版了,裡面的內容讓我對程式設計“修煉”有了更深的理解。

投資知識,收益最佳。 ——本傑明·富蘭克林

enter image description here

學習學習再學習!

遊戲開發:世嘉新人培訓教材

豆瓣地址

這本書我從 17 年等到現在,三年了,拿到手之後覺得所有的等待都是值得的。

從第一章就能看出作者踏實的程式設計功底和力求和對優化的不倦追求。一個命令列推箱子游戲從過程式的實現,到運用 C++風格的物件導向的實現,到章節末為了講解底層記憶體儲存結構而把專案中所有變數都存在一個記憶體陣列中的實現。從中作者講解基礎的 C++ 語法、位運算、指標和引用的異同等概念。

接下來的章節,作者還講解 2D 圖形處理、狀態、碰撞、數學等等遊戲密不可分的章節,由於作者都為章節提供了類庫,因此不必擔心書是否會過時,讀者只需踏踏實實跟著作者打基礎即可。

雖然我很少寫 C++,也清楚學 C++ 在遊戲開發中是逃不開的,乾脆就啃這本書的同時把 C++ 也給上手了,一箭雙鵰!

這本書也是我近期著重看的一本書,同步更新練習在:Latias94/game-programmer-book-training

Data-Oriented Design

一本深度講解面向資料設計的書籍,當你熟悉了物件導向程式設計,可以嘗試看看這本書,用一種不同的思維方式看待你的資料。Unity 開發者在 ECS 正式版公佈之前,也可以先深入瞭解一下面向資料設計的模式。

作者在其網站公開了書籍內容,地址為:Data-Oriented Design

同時也可以參考這篇導讀:Highly recommended read : dataorienteddesign.com/dodbook

公開課

圖形學

零基礎如何學習計算機圖形學?——閆令琪的回答

遊戲程式設計類書籍涉及的內容太雜,不適合用作專門學習圖形學的參考資料。OpenGL / Shader 確實是應該學習的內容,但是以我的理解來看,更適合先入門圖形學基礎之後再去進一步學習,這樣會簡單很多。這也是我個人的理念:我們要學的是圖形學,而不是圖形學 API,這兩者應該完全分開看待。另外 OpenGL / Shader 這塊學多了會容易讓人產生理解偏差,覺得圖形學就等於實時渲染(當然是錯的,但是很多人真的這麼認為!)。

於是閆老師釋出了一門公開課:“GAMES101: 現代計算機圖形學入門”。

本課程將全面而系統地介紹現代計算機圖形學的四大組成部分:(1)光柵化成像,(2)幾何表示,(3)光的傳播理論,以及(4)動畫與模擬。每個方面都會從基礎原理出發講解到實際應用,並介紹前沿的理論研究。通過本課程,你可以學習到計算機圖形學背後的數學和物理知識,並鍛鍊實際的程式設計能力。

官網:GAMES101: 現代計算機圖形學入門

B站錄播:GAMES101-現代計算機圖形學入門-閆令琪

課程作業系統:GAMES2020線上課程:計算機圖形學(閆令琪)課程作業系統

國外 MIT CMU 部分課程翻譯

Simviso 是一個翻譯國外課程的民間組織,目前已經翻譯了:MIT 6.004 計算機組成原理MIT 6.824 分散式系統 2020CMU資料庫15-445/645史丹佛編譯原理 等頂級教程。他們接下來的翻譯計劃也在 simviso 國外MIT CMU 史丹佛計算機科班頂級課程翻譯系列 中提到。(我在想這一段字的知識濃度得有多高 Orz)

原理性的東西參考這些教程最好不過了,我們還可以跟著課程手寫一個資料庫、CPU 等等。

教程

Custom SRP

Catlike Coding > Custom SRP

Catlike Coding 的教程一向是從基礎講到進階應用,在 SRP 的主題中,他寫了不少基於 Unity 2019 版本的自定義渲染流水線的教程,目前還在持續更新。

Ray Tracing In One Week

跟著 Ray Tracing In One Week 系列教程一步步來做個光線追蹤器,也可以在學完上面圖形學公開課中的光線追蹤部分後來看這個教程作為補充。這個教程也可以用 Unity 來做,例如我的 Latias94/RayTracingInOneWeekWithUnity,雖然只跟到第八章 = =。

跟完這個教程之後,如果對進一步的 DOTS、優化方面學習感興趣的話,我還提供了下面四篇文章/專案作為參考。

Go 語言探索萬物原理

瞭解了當前使用的技術,可以擴寬領域,學習一些和專案不相關的東西,說不定會帶來靈感。

老司機帶你飛系列

Github 地址:happyer/distributed-computing

  1. 《老司機帶你用 Go 語言實現 MapReduce 框架》
  2. 《老司機帶你用 Go 語言實現 Raft 分散式一致性協議》
  3. 《老司機帶你用 Go 語言實現 Paxos 演算法》
  4. 《老司機帶你用 Go 語言實現分散式資料庫》

7 天用 Go 動手寫/從零實現系列

Github 地址:geektutu/7days-golang

  1. 7天用Go從零實現Web框架 - Gee
  2. 7天用Go從零實現分散式快取 GeeCache
  3. 7天用Go從零實現ORM框架 GeeORM

視訊

文章

  • Ray Wenderlich - Introduction to Shaders in Unity
    • Ray Wenderlich 的教程通常會提供初始專案,手把手帶你寫程式碼,加上獨特風格的配圖,很適合用來入門某個技術。這次帶來的是如何寫 Unity Shaders,實現一個簡單的水流 Shader。

最後

看了看內容,這次分享的視訊和文章都偏少了,其實主要是想分享前面的書籍和公開課,有機會的話有價值的視訊和文章我也會多關注,並且分享到導讀中。如果你喜歡這系列,或者想對這個系列有其他的想法,歡迎在評論區告訴我。

相關文章