遊戲引擎真的是拿錢堆出來的

高考完開始到現在每隔一段時間就搗鼓一下自己的引擎,剛開始鬥志滿滿的我漸漸被掉下去的坑搞得不成人樣了,想著所有東西都自己開發簡直就是個愚蠢的想法,進度總體來說真的緩慢,還花了比較多時間重新設計架構和改進代碼風格。現在我的思路就很養生了,設計好架構之後就做個積木粘合者吧,那是多麼得舒服啊

.

至今連陰影貼圖都還沒動手去實現,渲染技術還沒研究多少,就被一堆坑和bug拖著了。暫時遇到的大坑數一下

  • GUI系統:GUI系統的設計沒有想像中簡單啊,怪不得輪子哥把GacUI做那麼龐大複雜和騷氣,大一的時候連MVC模式都不知道,也沒有去實現一個事件系統,所以GUI系統的設計還是得再思考思考。
  • shader組織框架:大二上編譯原理想順手熟悉下,還想簡易地替代下Effect11框架,結果發現shader的各種參數、變數等的設置都要顧及到的話,那真不知道這個要做到什麼時候。所以還是先用著Effect11吧唉
  • 模型載入:先是搞了下簡單的模型格式例如STL,OBJ等,但是發現這樣子不能批量地載入有複雜設置、貼圖的模型,也不能充分利用專業建模工具的特性,所以又自己寫了個3ds文件的解析器。結果3ds文件格式似乎沒什麼標準,自己寫的解析器有點迷之bug,載入的模型數據不太穩定,真的氣。一氣之下就換了FBX SDK,雖然是閉源,但是我也不用管那麼多細節了,舒服。這裡以後可能還會涉及3DMAX/MAYA的模型導出插件開發,真心是大坑。
  • 守望先鋒、steam、音樂創作、足球:咳咳(說不定我之後要手寫音頻引擎了)

總之別說遊戲引擎這些包含一系統成熟工具鏈和其他支持的大工程了,就是做個渲染引擎都是要拿錢去堆的。上圖是網上隨手找的unreal 4的渲染圖,真的必須的給跪啊。還有unity這些等等的商用引擎,一個人甚至小團隊都挺難比的,畢竟就算你再厲害,精力也是有限的,所以遊戲引擎這種東西,還是拿錢來堆比較靠譜啊

說點題外話,今晚de出了一個陳年驚天大bug,這還是因為用了更新過一次的VS2015的Graphic Debugger才de到的。就自從加入了切線空間之後的某一天我發現,有些切線與z軸平行的地方,無論怎麼調光照和材質,怎麼調換頂點順序、更改光柵化設置,都是一片死沉的黑。但只要切線剛好不和z軸平行,那個地方就又有了顏色。這bug百思不得其解,因為在搞其他功能和開發其他項目,這個bug放了挺久的。直到今天在搞FBX模型載入的時候,發現正方體還是有兩個面始終是全黑的。

排查了不是數據問題之後,還是果斷上了Visual Studio的圖形調試器,看半天沒看出什麼。我還專門把模型刪剩那個黑的面來測試。我把能展開的選項卡都展開了,終於發現了。。。。。。。

喂進shader的切線向量只有xy分量????????

?????

在c++代碼裡面Input Layout描述的Tangent的格式居然因為粗心設置成R32G32???

真的是醉了,錯在這麼隱秘的地方,浪費生命啊。不過陳年bug調試出來了還是很開心的,微軟大法好!

最後還是說一句吧,獨立開發遊戲引擎什麼的,自己玩玩鍛煉下開心下就好了,想跟商業級的團隊和產品正面剛可以直接放棄了,真是活多幾輩子都剛不過的,現在最大的願望就是到畢業時頭髮別掉光吧(誤)

推薦閱讀:

極樂技術周報(第二十五期)
如何設計一種演算法或程序,使得它難以設計專用硬體加速(或者作用有限)?
基礎都掌握了卻還是敲不出代碼?編程新手如何快速提升coding能力?
無我編程十誡

TAG:计算机图形学 | 编程 | 游戏引擎 |