小班同學學習經歷分享(一)遊戲程式設計師成長札記

涼鞋的筆記發表於2020-06-25

作者資訊

暱稱:目及遠方

課程設計 HumanFramework:

https://github.com/cyclons/HumanFramewo

正文

大四畢業,心血來潮,閒餘之際,撰文留念。

萌芽

遊戲程式設計師,把這個分成兩塊的話就是,遊戲,程式。

這兩個中,只有一個,遊戲,在我很小的時候就開始接觸,在那個視電子遊戲如電子海洛因,父母抵制到要送孩子去網癮治療所的年代,三年級的我就已經在玩ps2了,周圍的同學還在玩紅警qq大亂鬥冒險島飛車的時候,我已經玩高達戰神龍珠古墓麗影,最終導致和周圍同學沒有共同話題。

隨後,按順序入手了nds,psp,xbox360,ps4,可以說從小到大,遊戲沒有停過。

如果說這條職業路上我有什麼超前之處,就是玩遊戲玩得多。

起步

那什麼時候開始想做遊戲了呢?要等到大學。

整個大一的我沉浸在社團幹事與學習中,完全沒有接觸過遊戲程式設計,學了個譚浩強的c語言,寒假裡把下學期的高數學了一遍,然後發現課堂上除了能裝個逼好像也沒什麼特別大用。

直到下半學期的一天夜裡,我在床上思考,以後究竟幹什麼比較好,突然一個念頭冒出來,要不去做遊戲吧!這個想法一冒出來,我猛地從床上坐了起來,彷彿一股能量貫穿了全身一般,於是我下定決心買一臺電腦,開始我的程式之路。

暑假的時候,搜了好久,終於找到一個感覺靠譜的教程,那就是SIKI,現在已經是遊戲網課的巨頭了,然而當時僅僅只是一個維持了一個小小的公眾號而已,唯一收費的只有一個A計劃,終身費只要400塊。當時選擇的原因有很多,其中最主要的就是大量的免費課程,一個個案例都是自己想要實現的遊戲,總感覺每實現一個,就離成為遊戲製作人更近一步(當時沒有遊戲職業概念)。

成長

剛開始學的階段,可以說我就是個沙雕,半吊子中的半吊子,打字速度20字母/s,不懂語法,大小寫不分,對著視訊敲程式碼。(彎路)

後來發現儘管照著視訊做出來了,但仍然不熟練,於是逼迫自己,看視訊不寫程式碼,寫程式碼不看視訊,偶爾實在不知道怎麼做了,再回去看視訊裡怎麼做,一個視訊要看兩三遍。(稍微正了一些)

為了提高自己的打字速度,把手機的鍵盤從9鍵變成26鍵。(有一定作用但不是正道,推薦https://www.keybr.com/)

那時候我還心血來潮,趕VR潮流,在學校裡搞起了VR工作室還有VR社團,但剛開始不做技術,是賣硬體的,賣手機紙盒子VR給學生。後來發現潮流過了,硬體沒前途,隨後就想把工作室往技術上轉,當時心裡的想法是邊能學Unity又能搞起一番事業(too young,too simple)。

大二的寒假裡,我馬不停蹄,不斷學習SIKI公眾號上的專案案例,每做完一個就信心爆棚,彷彿自己已經是個優秀的遊戲程式設計師了。之後還在社團裡教大家如何做一個AR應用,Unity小遊戲等等。

在大二的暑假裡,我還認識了一個朋友,一起做汽車VR噴漆,想通過這個賺錢,但最終失敗了。同時,我發現專業偏硬體,於是我轉專業到計算機學院,開始了第二個大二生活。

旅途

後來的日子裡,我依然是一有時間就跟著教程學,但彷彿到了一定的瓶頸,感覺做遊戲不就是調調api,用用外掛,什麼遊戲都能做出來啊,恰巧當時看到心動在搞獨立營活動,我就立即報名了,這也成為了我第一次的gamejam。

gamejam的感覺呢,怎麼說呢,就好像回家了一樣,裡面各個都是人才,說話又好聽,超喜歡這裡面的~。在活動裡,能夠充分體會到周圍人對遊戲的熱愛,精妙的遊戲設計,驚豔的美術,牛逼的程式老哥,主辦方給我們學生還特別優待,給我們免費訂了兩天的五星級酒店,還包早餐,可惜都沒怎麼好好享受到,兩天可能就住了8個小時不到吧,但整個活動充滿樂趣,給我的第一次gamejam留下了非常棒的印象。

之後便開始積極參加各種jam活動,線上線下到現在快應該有10場,每一次都很有收穫,無論是認識了新的朋友,還是看到了非常驚豔的遊戲,每次都是一場充電之旅。

里程碑

改變我職業生涯的是一次比賽。

還記得隔壁工作室的老哥問我一句有個AR的比賽來不來參加,我說來。那次比賽是一次hackthon,恰巧有一個單項獎由網易贊助,而且專門設定的AR題材。對我來說,我不瞭解hackthon,所以就把它當作是一場gamejam,看著周圍一圈985的同學們,壓力山大。

那次我們做了一個AR版本的胡鬧廚房,現在回想起來那程式碼寫得就是一坨屎,但遊戲執行非常順暢,沒有bug,從可玩性來看還是挺不錯的,但和以前看的優秀作品比差距還是太遠。聽到主辦方在選出十個演講隊伍中沒有我們的名字時,我們已經收拾好行李,開始回校了。然鵝,這時候主辦方說不要急著走,網易的獎還沒開,我們一路就火急火燎的趕了回去。

由於來得太晚,演講已經開始了一大半,我們幾個人就站在入口的地方聽演講,看著別人的專案,什麼機器學習,區塊鏈,智慧小車,各個高大上的不行,彷彿改變未來的技術一樣,而且沒有一個是做遊戲的,我這時候意識到,是不是走錯場了?

等其他獎開完了,才等到網易的負責人上臺,大概是這麼說的,“我們在兩支隊伍裡徘徊,所以一直沒能下一個定論,但最終我們在完整度上考慮,最終決定把一等獎給9號隊。”

當時整個人都已經懵逼了,周圍隊友興奮的握著我的手,這時候感到一切的努力都是值得的。

獲獎是次要的,最主要的是一等獎附贈一個網易終面機會,作為專案主程,我成功通過了,拿到了實習offer。

這次事件是里程碑,告訴我在這條路上繼續走下去是值得的。

泥潭

網易實習生活非常豐富,由於是實習生還是在一個偏創新的部門,我和周圍的小夥伴們一起做了非常多好玩有趣的AR遊戲,回來的我也是信心爆棚。

我繼續不斷學習,做專案。但做著做著發現,專案都能跑,但是最終的成品要想改功能,牽一髮而動全身,最後改著改著就變成了一坨屎,而那些神乎其神的外掛,自己始終停留在會用不會做的階段。

那時候的我非常的慌張,加群,逛知乎,看教程。最後我找到了一本遊戲設計模式,看完之後才知道,原來程式碼能這麼寫,好方便啊,這之後程式碼又上升了一個階段。

轉眼又一年經過,大三末的我又開始找實習。我本以為我那專案滿滿,經歷豐富的簡歷,一投一個準,做個offer收割機不是問題,然而事實就是,我就是a piece of shit。

演算法,資料結構,計算機組成原理,是面試的重中之重,而這裡面每一個都是我的弱點,筆試都通不過。做了幾套面試題之後,我意識到,自己的基礎太弱了。

我開始瘋狂看面經,牛客網,leetcode,uwa也看。最終的出來一個結論,原來我就是個小白。

人貴有自知,知道自己多弱是件好事,至少知道自己要補哪些。這時候就非常感謝葉大的遊戲程式設計師學習路線,在書籍的指導下我決定從0開始,從primer cpp開始,從頭重新練,隨著一個個的知識點梳理過去,自己的知識漏洞逐漸補全。

一邊惡補一邊找工作,此時的我就是任人宰割的羔羊,哪家公司要我就去哪裡,大不了過半年,我又是一條好漢。

沒想到,本以為已經涼涼了的騰訊來了電話,那就索性面下去吧,沒想到一路面到了底,拿到了實習offer。。

昇華

這次的實習和之前就完全不是一個感覺,正規的大專案,專業的導師,完善的框架,專業的團隊。據說實習留用率低,感覺壓力山大,一邊做著業務,一邊把手邊該看的基礎書在看。

這次依然運氣可以,上岸了。

回校之後,我開始繼續看基礎部分,但發現學習的面越來越廣,尤其是遊戲這塊更是複雜,因此,我逐漸放緩,雖然我的目標是做遊戲,但具體最終是做哪個職位的研究依然不夠清晰,甚至中途還打起了轉行做策劃的念頭。

我設立了第一個目標,搞一個框架。為什麼是這個目標?原因大致如下:

  • 目前我做了很多遊戲,都是小專案,做大了,程式碼就變成一坨屎,攪都攪不動。
  • 框架可以讓專案變得有結構,是職業必經之路。
  • 想要做大專案,一定要有框架

我搜尋了很多現有的框架,首先就是學著用,其中就包括strangeIoC,還有MVC等。不得不說,StrangeIoC是新手勸退框架,那一堆東西理念對初級程式設計師來說就是一頭霧水,明明三行就能實現的東西,為什麼要8個類幾百行實現。

偶然發現了一個QFramework,github千星專案,還有文件,於是我就開始搞QFramework。

又是一個機會,發現QFramework的作者涼大準備搞事,做一個小班,專心帶學生,12月分期,學生還帶優惠,我轉念一想,當年SIKI還是個小公眾號,現在A計劃永久能賣大幾千,這個車一定要上。

交錢上車後,跟著涼大學,一天兩篇,框架搭建和shader都有涉及。有一說一,雖然是日更的,但是我一般三四天一看,甚至一週一看,剛開始比較勤勞,看得多,有一段時間看著比較累,就斷了一大片。

這裡非常感謝涼大時不時會來私聊,問問學習情況,有沒有遇到什麼困難。我當然也心知肚明,聊完就去補文章了。

正是在這樣的一步步過坎之後,自己的框架意識也逐步建立,共有問題也逐步顯現,C#上欠缺的部分通過中毒篇專欄有了很大的彌補,更重要的是,在未來的路途上有了專業的指導,少走了非常多的彎路,這點真的非常重要。

不知不覺間,一年就過去了,我也幸運的交上了一份畢業設計,學習過程中幾次差點放棄,但看看文章之後覺得這個知識有必要掌握,就一直續到了現在。

本來這篇文章是涼大讓我談談這個框架學習之路,扯了太多自己的東西,這裡就詳細聊聊框架的學習心得:

  • 課程內容裡,最核心的還是框架學習,是主菜,至於shader部分,其實只是一個補充,比如業務裡要用到相關知識,和專業技美或圖形程式不同,屬於副菜。
  • 文章講框架部分寫得非常好,由淺入深,講解細緻,且程式碼詳盡,每一個學習單元都可以做一個小實現。
  • 記得涼大在學習開始的時候提到,小班文章的目的是讓大家看文章就行,不用做筆記,不用真的動手,看就完事了,但這一套在我這邊的嘗試下不太行的通,簡單的或者熟悉的內容可以一遍過,但一些需要反覆理解的如IoC部分,只看文章會覺得迷迷糊糊的。古人有句話,“紙上得來終覺淺,絕知此事要躬行”,對於難理解的內容,一定要下手嘗試,即使簡單的內容,親自做過之後都會有不一樣的感覺,有時間一定要多練習,偷懶只會虧待自己。
  • 明白最終自己想要的是什麼。由於課程涉及方方面面,學員的學習程度也層次不齊,有時候碰到的內容不感興趣,不是自己主要目標的組成部分,那便可以選擇性的不太需要花精力去學習,但這類情況較少,如果平時較為空閒,建議都看,有益無害。
  • 課程不太適合小白,適合有一定專案經驗的同學。
  • 剛開始會充滿激情,但中間會由於各種事情被打斷,最好養成一個看文章的固定時間段,比如996晚上摸魚的時候看,或者在週末挑一個時間。
  • 學習框架的過程為:使用框架to看懂框架to能寫框架,各自為階段,越過會導致許多障礙,比如沒有用過訊息中心很難寫出一個訊息中心
  • 不用害怕學不會,只要方向正確,沒有完成不了的

涼大在小班上非常負責,可以說關心到了每一個成員,內容質量也非常有保證,每每我有“棄坑”的想法時,涼大都會來“善意的提醒”。而我遇到什麼問題時,都能夠得到專業的回答。

大學的前幾年實際上走了不少彎路,如果能夠早期遇到專業的老師來指點的話能少走很多。如果入職一段時間了,職業提升遇到瓶頸,尤其還是從事Unity行業的話,那非常推薦來小班,這裡交流活躍,同行眾多,總有老哥給你指條明路。

在一年結束後,我也最終實現了我的目標,實現了自己的框架——HumanFramework,在大佬眼中應該就是個小不點的存在,但即使這個框架不會成為流行,這個過程也使我對軟體設計的理解更上了一層樓。

退潮

最近各種事情算是告一段落,畢業也好,小班也好,工作也好,自己的學生時代也結束了,即將開啟工作時代,由於之前的幾年坎坷奮鬥,加上自己的身體不算強健,現在留下了點胃病,這幾個月裡都在養生,時不時看看業內新聞之類的,最近越來越對shader相關的內容感興趣了,之後的主要平臺也會變為Unreal,想想也挺有趣的。

在這一年中,學到了很多,尤其是技術分享的重要性,自己也會寫一些文章分享出來,包括HumanFramework的製作過程分享,歡迎來知乎關注

最終祝願所有讀者在學習的同時身體健康,身體是革命的本錢,有好的身體才有力氣追求更美好的生活。

轉載請註明地址:liangxiegame.com

更多內容

QFramework 地址:https://github.com/liangxiegame/QFramework
QQ 交流群:623597263
涼鞋的主頁:https://liangxiegame.com/zhuanlan
關注公眾號:liangxiegame 獲取第一時間更新通知及更多的免費內容。

相關文章