游戲編程十年總結(下)


    游戲編程十年總結的上篇總結了前五年初學編程的經歷,下篇總結的是開始工作之后的經歷,前面五年算是一帆風順,而接下來的經歷,則充滿了挫折與失敗。

第一份工作

    由於學歷不高,還沒畢業,經驗不足讓我吃了不少閉門羹,在大三剛開始時就開始在網上投放簡歷了,但基本是石沉大海。雖然沒有面試邀請,我還是獨自一人來到了深圳,因為對深圳這個城市很有好感(因為前面來深圳比賽的經歷)。為了得到面試的機會,我不惜跑到人家的辦公樓去霸王面,可惜並沒有獲得面試的機會,但現在回想起來,直闖人家的辦公樓要求霸王面的時候,還是蠻有魄力的,雖然沒有拿到面試機會,但年輕人就該如此,想做的事情就放膽去做,不要逃避,不要讓自己后悔。
    初來深圳時,已經在深圳做了幾年游戲開發的梁師兄對我很是照顧(過來深圳比賽時認識的),在深圳晃盪了一周之后,終於否極泰來,接到了兩個面試通知,面試的過程很順利,也學到了不少東西,兩邊的面試官都對我挺滿意的,拿到了一份轉正后3K的3D客戶端開發Offer和一份試用期4K的C++服務端Offer,於是我選擇了后面的那份Offer,除了因為薪資高些之外,上班的地方在師兄附近(后來住的地方也在師兄附近)。
    在工作的第一年里學習到了非常多的知識,網絡編程和Linux服務器開發是我從未接觸過的,幾乎是從入門到熟練掌握服務器開發,這段時間的進步比以往任何時候都要快。在入職之前BOSS就給我描繪了一下美好的未來,C++服務端這個部門現在就你和另外一個工作一年的程序,但是馬上會有3位經驗豐富的大牛入職,其中有超過10年經驗的大神,而且我們還有一位非常強力的技術支持——於彤,來自博雅的服務端大神,他為我們提供了一套高並發的服務端底層框架,雖然他只是偶爾來客串一下,但卻給了我非常大的幫助,也很大程度上影響了我,他的話不多,但每句都很受用。在認識的人中他的技術幾乎是最好的,但也是最謙虛的,他的頭銜是架構師,但他說他只是一個程序員。
    首先復習了網絡編程的基礎,並將其搬到linux上,這是我把linux玩得最溜的一年,在於彤的指點下看完了《APUE》《Unix網絡編程》《TCP/IP詳解 卷一》等著作,大學時看《TCP/IP詳解》如讀天書,但在了解網絡編程之后再看這本書反而津津有味,下班之后沒有其他事情,獨自回到白石洲的農民房里就是看書。為了解答疑惑、解決問題而學習比起普通的系統學習效率要高得多,因為目標非常明確。
    在工作中還了解了sql以外的nosql數據庫,如memcached、redis、mongodb等等,讓人大開眼界,在於彤的指點下,自己依葫蘆畫瓢用epoll+單線程非阻塞的模式寫了一個簡單的服務器框架,用這個框架實現了一個負載均衡的服務器,於彤看后贊賞有加,跟我重申代碼要簡潔,這個詞深深刻入了我的腦海里。那時寫的服務器能在數萬並發連接的生產環境中穩健運行,是一份非常寶貴的經驗,像什么遠程調試,core和日志的分析,性能瓶頸分析也是那時候總結下來的經驗。
    后面在讀過於彤的底層框架、memcached和libevent等開源代碼之后,自己又寫了一個開源的迷你服務器框架,之后包括現在的項目,用的都是這套框架在開發。如何設計分布式的服務器架構,來保證服務器的可擴展性,保證每台服務器的功能單一簡潔,滿足一些跨網關的實時轉發的交互需求等等,這又是另外一份寶貴經驗。一個靠譜的后端程序員需要擁有能夠解決各種問題的能力,與前端程序員不同,后端程序員更多是靠經驗堆起來的,沒有經驗的后端程序員連可能會遇到什么問題都不知道。
 
后端主程
    在公司待了一年,只為公司的一個頁游開發了一個PVP系統,之后由於沒有項目做,閑得發慌。由於和主程相處的不是很融洽,所以也就打算離開了,他的脾氣火爆,不尊重人,並且不喜歡承擔責任,在項目中解決了他的不少BUG,例如死循環、內存泄漏等等。記得他曾使用strlen來判斷一個結構體的長度,向他指出這個錯誤之后,他跟我扯我不懂操作系統內核實現的原理,於彤知道后笑了,說那你讓他講講操作系統內核是怎樣實現這個原理的。火爆脾氣的主程去到其他公司之后,聽那邊的朋友說,他的火爆脾氣一點沒改,並且還掌握了使用挖掘機挖坑的高級技巧。
    過完年,部門發生了巨大的變化,C++開發部的兩個大神就離開了。本來我也打算離開了,拿到了Double薪資的Offer,但由於是做Java,心里並不是太願意。然而在准備提離職之前,公司讓我做后端主程負責一個新的MMO手游項目的后端開發,我一下子就來精神了,這顯然比寫Java要好得多,這可是領導對我的信任啊!而且如果去新公司的話,我上班得多踩10分鍾的自行車吧。開新項目的同時,新的血液也注入了進來,有3個小伙子進入了我們部門,其中的穗智小師弟后來成為了我最得力的助手,但有一個小伙子表現不佳,怎么帶都沒帶好,后來他轉行去做測試了,主管問我,他不是我面試的嗎?他是怎么通過我面試的?我說面試的時候,我出的各種題目他都答得很好啊,其他人都沒答對,就他答對了呀。直到前幾天想起這個問題才恍然大悟,面試時是在他們的培訓機構面試的,一群人在外面輪流面試,只准備了一份面試題,前面的人答錯了,我都會跟他們講解一下,估計最后一個進來的他,已經了解了所有的面試題......
    於彤說主程並不是要自己成功,而是要幫助下面的每一個人取得成功,這樣才是成功。所以后面招了一些新人進來的時候,我總會花比較多的時間進行培訓,當大家都能獨當一面的時候,主程也就輕松了。磨刀不誤砍柴工,幫助其他人進行提升,也是磨刀。新項目的后端比較簡潔,人也不多,開發進度也是穩步向前,但前端的進度看上去頗為糟糕,起碼從給我看到的一些代碼來看,算是耦合性較高,可讀性較差的代碼了。構建在這樣代碼之上的程序,BUG自然也是頗多,這個做不了,那個無法實現。在這個項目中我在技術上並沒有多大的提升,只是默默地攢着主程、管理的經驗值,包括如何規划分配任務、溝通傳達、如何上政治課、如何給他們打氣加油、碰到問題幫忙解決等等。雖然是初任主程,但秉着負責的態度,基本上保證了后端的開發進度穩定快速。
    這一年因為總體上比較悠閑,所以業余時間自學了一下Irrlicht和Ogre等3D游戲引擎,翻譯了Ogre的初級和中級教程,CEGUI的相關教程以及PhysicX物理引擎的官方文檔,並用OpenGL開發了一款物理冒險游戲《小鐵蛋歷險記》。在差不多年底的時候,還和師兄使用Cocos2d-x一起開發了一款ios手機游戲。
    然而又是過完年,項目組發生了巨大的變化,項目經理、主策、客戶端程序紛紛離職,然后又空降了一波人過來,原先寫的代碼全部推翻,使用新的后端主程帶來的框架,項目重新開始...。新的后端主程也是一個經驗豐富的程序員,帶來了一套Windows的MMO服務器框架,什么東西都是現成的,需求大部分都是在這套框架上稍微改一改就做出來了,有點類似所謂的換皮,復制粘貼成為了最常用的開發技巧。但我並不喜歡做這些工作,也不喜歡開發Windows的服務器,與Linux相比性能要糟糕很多,在這里完成了一些簡單的模塊,吸收了框架里的一些經驗之后,我提了離職。
    這是一次裸辭,因為我和一個美術同學(我稱他為淡總)使用Cocos2d-x一起開發一款病毒塔防游戲,想離職了好好把這款游戲做好,業余時間開發游戲還是蠻累的,但這款游戲是我目前為止做過最棒的游戲了,有強力美術的加盟就是不一樣。這次辭職並沒有成功,改為了請兩個月的假期,假期里基本將游戲的代碼寫完了,還接入了ShareSDK,但是淡總慫了,因為后續要制作的各種關卡需要花費的時間太多了,從關卡的設計,到關卡中每個地圖的繪制,再到數值的調整,這些看上去還是需要一個專業的策划才能搞定,於是這款游戲被擱置了。之后淡總提議用這套美術資源開發一些其他的不需要關卡的游戲,不要浪費,於是我們使用這套資源開發了病毒射擊和病毒消除小游戲,這兩個游戲都做完了,但是玩起來感覺很單調,於是病毒射擊又改成了病毒射擊塔防,在病毒射擊的基礎上增加了很多新元素,設計了各種地形,各種道具,看上去游戲的可玩性增強了很多,但最后又回到了和病毒塔防一樣的問題,關卡、場景、數值.....結果這些游戲一個都沒出來。
    在這些小游戲的開發過程中,總結了不少經驗,那時Cocos2d-x剛剛興起,資料還很匱乏,於是有了編寫Cocos2d-x書籍的念頭,小游戲不搞了,那就將Cocos2d-x積累的經驗寫成書吧。
U3D主程
    結束兩個月的假期回到公司,就開始了打雜,這時手機游戲和手機游戲引擎Unity3D、Cocos2d-x正是非常火熱的時候,BOSS希望搭建一套通用的Unity3D底層框架,把游戲的規則抽象出來,每開發一個游戲都只需要繼承一些類,然后實現類里面的一些接口即可,這樣就可以很快的開發一款新游戲。但我完全沒有接觸過Unity3D,多次的開會討論都沒有得出一個好的結果,因為這種框架很虛,如果說有這樣一套框架的話,那不就是Unity本身嗎?最后只是用C#的委托實現了一套消息機制底層,另外由於原先U3D的網絡底層實在是太糟糕了,根本無法重用,於是實現了一套U3D通用的網絡底層框架,代碼非常地簡潔易用。后面這套消息機制和網絡底層被應用在了公司的所有U3D項目上,MMO手游項目的新主程接手項目的時候,直接推翻了所有的代碼,只保留了這套消息機制和網絡底層,再后面一些這套消息機制和網絡底層也被應用到了不少其他公司的項目上了,然而在代碼中關於作者和日期等注釋信息,卻被刪掉了......這種感覺就是,我寫的東西,變成了別人的了,再跟我沒有任何關系。
    編寫框架並沒有花費我太多的時間,但為了設計好,為了簡潔好用,我投入的精力卻不少。業余時間仍然是和淡總他們一起開發着病毒系列小游戲。公司的一個主策建哥很有想法,很能忽悠,在他的忽悠下我和穗智小師弟也幫他開發了一些小玩意,穗智幫他開發了一個看美女圖片的應用,穗智拿到建哥整理給他的性感美女圖片時,穗智吐槽了建哥“這樣的圖片我百度可以隨便找到一堆”,都是一些普通的泳裝美女圖片,這款手機軟件的功能,就是一張張地翻閱這些圖片,30張之后的每10張會有一個密碼。建哥打算回老家賣低端的安卓機器,順便推銷這款軟件,當用戶需要看到心癢癢的時候,密碼輸入框彈出來了,然后用戶就要帶着手機過來找他,交錢之后,建哥偷偷地把密碼輸入進去,就是這么一個商業模式,建哥說靠這款破軟件,他一年就可以進賬100萬,雖然最后這款軟件一份都沒有賣出去,但建哥混的要比我們好得多,我還是主程,他已經是四個輪子的CEO了。
    另外一個獨立開發手機游戲的小團隊邀請我加入,他們策划美術程序齊全,但我沒有答應,經過了反復的游說,我答應幫他們用Cocos2d-x搭建一個框架和基礎的Demo,僅僅是友情協助。在開發的溝通過程中,感覺並不是很靠譜,因為游戲不好玩,美術不好看,很多東西反而要我去催。Demo如期交付了Demo,一段時間之后,這個團隊解散了,因為在開發的過程中有人還去接外單,當這個團隊解散時,項目的進度仍然停留在我交付Demo的那一刻。這個團隊的解散給了我很深刻的印象,要么不做,要做就全力以赴,兼職開發的這種小團隊,一個拖后腿全部完蛋!每個人都要有很強的責任心,對自己做的東西有強大的信心,主動往前才行,如果是由一個帶頭的推着整個隊伍前進,這樣是走不遠的。不久之后,我和淡總的病毒游戲也告了一段落,大家都太累了,病毒系列的幾個項目的代碼沉睡在了硬盤上的某個角落。
    接下來學習了一下U3D,發現U3D這個引擎比Cocos2d-x成熟的地方太多了,了解了各種更加成熟的理念,C#這門語言用起來也非常爽快。我開始作為U3D主程負責一個項目,這是一款局域網對戰的項目,類似一個游戲平台,內部可以嵌套很多個小游戲,公司已經做了一年多,已經做爛了,原項目組的程序都跑去MMO的項目組了,於是從新招了2個U3D客戶端一起搗鼓這個項目。項目的代碼實在是非常糟糕,各種不規范,BOSS希望我在這個基礎上繼續,然而我選擇了推翻重構。因為項目的業務邏輯都寫到了我的網絡底層框架里面了(像這種東西就該做成庫,不然他們改),原本這款游戲是可以單機和局域網對戰,BOSS希望可以加入廣域網對戰的功能,但廣域網對戰暫不開發。我和兩個小伙伴花了2個多月的時間,只保留了原有的美術資源,所有代碼全部重寫,重新設計。並實現了一些新的功能,完成了這個項目!重構之后的項目代碼簡潔,耦合性低,巧妙使用了消息機制,完成了單機版本之后,只花了1~2天,就把所有的小游戲實現了局域網對戰,再花上少量的時間,我們可以很輕松地實現廣域網對戰。雖然開發過程中換了3次人,來了又走,但我們還是按時完成了任務,最后打包的那天,我們好像加班到了快2點,這是加班的最高記錄。
    最后,這款游戲在商務階段,沒有了下文,又是一個無疾而終的項目,而這些絞盡腦汁寫出來的代碼,又在硬盤上的某個角落,沉睡了。
臨危受命
    項目失敗之后,又有去意,但此時已經差不多是10月份了,想着過完年再說吧。離職的主管介紹了一份不錯的兼職,開發一款Cocos2d-x游戲,有點類似憤怒的小鳥吧,穗智小師弟跟我一起接了這個單子,大概花了3個月的業余時間比較輕松地完成了這款游戲,期間搭建了一個不錯的物理框架,設計好,代碼簡潔,開發效率自然高。游戲的美術和關卡設計都挺不錯的,我們簽了一份5萬塊的外包合同,然而游戲做完之后我們只拿到了4萬塊,因為最后的一萬塊是要游戲上線之后才給,上線到Appstore時由於某個原因被打回來,然后這家公司就倒閉了......這個項目的代碼又在硬盤上的某個角落進入了沉睡。
    在接外包之前,公司又開了一個新項目,這是一款精簡的多人在線大富翁游戲,主要是山寨一款PC上的大富翁,我們都覺得這款游戲很好玩,把它搬到手機上肯定有戲。於是我作為后端主程開始了這款游戲的后端開發,當前端還沒出Demo的時候,后端已經完成了復雜的游戲邏輯,例如各種隨機事件的觸發,並做了一個簡單的文本界面客戶端對服務端的邏輯進行了測試。大富翁的后端邏輯不同於一般的后端,一般是一個請求一個響應,但大富翁的一個請求可能觸發的事件是不一定的,事件的流程也會隨着不同的環境發生改變,並且中間有可能導致玩家之間的復雜交互。游戲的邏輯完全跑在后端,前端只需要執行少量的顯示邏輯即可。由於進度超前,所以也有足夠的時間完成外包項目。
    到了發Demo版本的時間,前端的版本問題很多,延期了一兩周還是沒能順利給出版本。由於突發了一些我們並不知道的緊急情況,經理對這次的延期有很大的意見,並決定親自操刀,他仔細閱讀了前端的代碼,並對一些代碼進行了刪改,對前端的代碼提出了很多疑議,並整天坐在前端小伙伴旁邊看着他們寫代碼,要求每一行代碼都寫上注釋,前端幾乎停止了開發,每天都在寫注釋。游戲也已經完全跑不起來了.....
    在前端小伙伴們奄奄一息的時候,經理找到了我,想讓我把前端帶起來,我一聽嚇了一跳。原計划是年前出一個Demo版本,年后一個月內出一個Alpha版本,經理希望我按照原計划把版本趕出來,在會議室中幾個人對着我猛灌雞湯,仿佛我能推平山岳,扛起這一切,把這個項目帶向成功。而如果我拒絕,這個項目就進垃圾桶了,難道我做的項目又不能上線了嗎????
    內心掙扎了很久之后,終於把這碗雞湯干了。干完雞湯之后,我大概向經理提了10個條件,包括不允許經理再看前端代碼,以及坐在前端程序身邊看他們寫代碼。砍掉了一些不必要的功能。給前端同學放一天帶薪假放松一下。給我一筆經費,在過年的時候將一些完不成的任務打包,明碼標價,外包給前端程序去做,這些任務量並不繁重,但價格還算比較不錯的,這樣即可以在過年期間讓項目前進,又可以避免前端同學年后回來對代碼生疏了,需要重新花時間熟悉代碼。各種討價還價之后,雷厲風行地扛起了前端項目的開發,接下來Demo和Alpha版本都按照原計划完成了。雖然名義上是前后端主程,但實際上后端的工作已經完全丟給穗智小師弟了。
    版本完成之后,又是各種新需求和周邊系統,包括AI和托管等麻煩的功能,大概是五月份左右,騰訊的天天富翁上線了,我一看,跟我們的游戲一樣,這對整個團隊的打擊都很大,而過年前,經理就已經提前知道騰訊會代理這款游戲了,也就是這個原因,他才親自操刀。游戲接下來要做的功能已經不多了,但游戲的前景卻是一片迷霧。之后開始對項目的前端框架各種優化總結,沉淀了一套通用的UI框架、資源管理框架以及新手引導框架。沉淀下來的框架簡單易用,而且靠譜,這歸功於長期基類下來的設計經驗,以及在使用的過程中不斷地調整打磨,還有對模糊的技術點的徹底研究,例如 Unity AssetBundle爬坑手記,只有徹底搞清楚了,才可以更好地使用它。
    由於版權的問題,這個游戲最終還是沒有上線。這些代碼再次沉睡在了硬盤中。所以說,山寨並不靠譜,創新才是王道!
    又是一段空閑期,我和淡總商量了一下,決定快速開發一款小游戲,於是我們開發了一款躲避類的游戲,類似宮爆老奶奶,為了能吸引到眼球,我們決定嘗試一下色色的主題,也就是卵子躲避精子,游戲命名為《避孕達人》,經過精心的策划之后,這款游戲上了一些安卓平台。幾次優化之后,我們都覺得可玩性還可以,打算就靠賣點廣告來賺錢,結果到現在就賺了21塊錢的廣告費,其中的20塊還是我自己點的廣告......
一段有趣的面試經歷
    接下來朋友推薦了一個Cocos2d-x的面試,面試官並不是很友善,大概就是這種“呵呵,你很牛逼是吧?”,然后就試圖在面試中把我難倒,問了一些主觀性的問題,兩個人的思路根本就不在同一個頻道上,例如我說搭建U3D的網絡框架,他說U3D的網絡底層框架有什么好搭建的?不就是個連接連上去就可以了嘛。我說提供對socket的封裝,異步請求,自動處理半包粘包,將tcp流分割為完整的包最后傳遞到客戶端主線程的一個服務處理對象中進行處理。答完看上去他對半包粘包這些好像一點都不知道,追問了我一句,那你是如何處理TCP丟包的呢??然后我就不想討論這個話題了,TCP的定義講得很清楚,TCP提供可靠連接,TCP底層實現是可以保證不丟包的,我反問了一句你們又是如何處理TCP丟包的呢?他說很簡單啊,如果對方沒收到就循環發送,估計到了這里面試官已經自動將我判斷為沒有處理TCP丟包經驗的程序員。例如說到將第一個U3D項目代碼推翻時,他問我為什么要推翻,我說因為代碼耦合性太高了,游戲的業務邏輯都寫到我的網絡底層框架中,他說那說明你的框架設計得很糟糕(這個功能完全不需要寫在框架中,框架的接口足夠實現這個功能的,也許是這個框架無法處理TCP丟包,所以真是糟糕啊)。例如問了我一個特別泛的問題,大意是如何設計一個框架,我說這個要根據需求來啊,你可以現場提需求,我來設計,他堅持讓我回答這個問題,我也只能回答一些比較泛的答案,然后他說不對,我問他那正確答案是什么?他說是抽象和封裝......要不是看在我朋友的面子上,我真想抽他!
    本來我想通過這次面試,來積累點面試經驗,補充一下自己的不足,沒想到會變成這個樣子,接下來他開始問了我一些Cocos2d-x和Box2d的問題,我有氣無力地回答着他,扯了這么久,水都不給喝一杯,我都困了。反正我也不想和他共事,又學不到什么新的東西,就想草草結束這次面試了。接下來HR妹子和他一起來跟我聊,HR說他們的技術對我已經有了一個了解,雖然我了解的東西挺多的,但都不精通。嗯,我點點頭,我確實離精通還很遠。HR接着說到我的Cocos2d-x經驗比較欠缺,還沒有到達一定的水平。我愣了一下,剛剛明明Cocos2d-x相關的問題一個都沒難倒我好嗎,並且有些問題我還提出了比他們現在更好的實現方式,我已經用Cocos2d-x做了四五個游戲了,我那本Cocos2d-x的書也已經完成了第一次重構了,引擎的代碼更是讀了N遍,你可以說我其他的什么不精通,但你就算問我Cocos2d-x引擎底層的渲染流程我都可以給你詳細地說出來。我真想拽拽地對面試官說一句,那就請你隨便問一些Cocos2d-x的問題,來難倒我好嗎?但我克制住了自己,因為沒有意義,點了點頭說道,確實對Cocos2d-x不怎么熟悉。然后他們問我薪資要求,我說了一個14K。HR說我們覺得你不值這個價格,11K怎么樣?我點了點頭,嗯,確實,如果我對Cocos2d-x熟悉一些的話,應該會好一點。后來HR打電話勸我過去,說面試官覺得我還是可以培養的,轉正之后,如果你表現好的話,還是有可能拿到這個薪資的,我婉言謝絕了。
    后面,我帶過的一個小師弟意外地去到了這家公司面試,被格外器重,我不知道當時的面試官還在不在,只知道他們給小師弟開了12K。
 
Cocos2d-x主程
    在2014年的年底,公司又開了一個新項目,是一款實時橫版競技塔防手游,我兼任Cocos2d-x主程和后端主程,游戲的進展還算比較順利,在這個項目中又沉淀了大量的經驗和一套好用的框架,踩了Cocos2d-x大量的坑,使用一套通用簡單的方案解決了實時同步的錯誤糾正以及斷線重連等等(后面有空會寫一篇文章分享一些實時同步的經驗),相比起項目剛開始時的設想手機網游實時同步方案,經歷實踐之后的方案更加地成熟。
    和策划們一起用心打磨這款游戲的戰斗系統,實現了非常多的玩法,支持策划配置各種特色關卡,例如雙方爭奪某個要塞,例如護送某個角色到達指定位置等等。各種擁有特殊能力的兵種都可以通過策划配置出來,不需要程序調整代碼,類似LOL妖姬的標記,LOL大發明家的安置炮台,還有分身、閃現、傳送、魅惑、隱身、召喚、復活、放逐等等一堆亂七八糟的功能,都可以配置出來。游戲關卡中的戰斗場景也支持豐富的互動,例如一個寒冰法術打過去會順帶凍住場景后的植物,例如一個火焰爆炸開場景中的植物也會被灼燒,甚至旁邊的石塊也會被炸飛,這些都可以通過策划配置出來。開發的氛圍很好,沒有出現推卸責任這樣的情況,大家一起認真地討論着某個功能的實現,怎樣能讓它有更好的體驗。
    開發了一年左右,皇室沖突強勢上線了,這意味着我們做不了首款實時競技的策略手游了,或許會被套上山寨的帽子,或許山寨皇室沖突的游戲會爛大街,從而影響到我們游戲......,所以我們必須把游戲做得更好,比皇室沖突更好!誰說國人就只會山寨?
    通過不斷地打磨,關卡副本和PVP玩起來已經算是比較有意思了。直到現在,游戲終於到了最后的尾聲,周邊系統也基本完善,估計一兩個月內就可以發布最終的版本,希望這款傾注了我們大量心血的游戲到時能夠順利上線吧,皇室沖突的成功也證明了手機上的即時策略游戲是大有可為的,如果這樣一款有特色、有創意、玩法有趣、注重品質和細節的游戲都能失敗的話,我真不知道怎樣的游戲才能成功了。(為避免廣告嫌疑,現在手上的項目就不詳細介紹了,也不上圖)
   在繁忙的工作中,我完成了第一本Cocos2d-x書籍,這是第三次的推翻重寫。每次寫了一段時間之后,回過頭看之前寫的文章,頓時覺得慘不忍睹,必須推翻重寫,或者是Cocos2d-x的接口又改了,或者是自己能力的提升推翻了之前的一些想法。總之不想將就,就得重構!就這樣斷斷續續地寫了三年多,直到最近這本書終於出版了。雖然希望做到極致,但能力有限,精力有限。中間看着Cocos2d-x的出版物逐漸多了起來,有過停筆的想法,但最終還是堅持了下來,這個過程比想象中要難得多了,但語言組織能力、表達能力都能得到很大的提升,對於要表述的技術點也清晰了很多。寫書不易,經常加班的IT人寫書更是不易,有了這么一個經歷之后,對一些寫得不是很好的書籍,我也不會去吐槽它了。大概在項目上線的時候,第二本Cocos2d-x的書也該交稿了。第一本書介紹了Cocos2d-x的基礎,雖然是基礎,但有很多點還是挖得比較深,例如指針、內存、紋理、渲染等。這些往往是一些初級程序掌握得不好的點,相信對於基礎不扎實的同學會有很大的幫助。第二本的內容要比第一本精彩得多,聽了網友紫蝦的建議,把第二本寫成了一本雜文集,深入總結了Cocos2d-x實際開發中的各種技術,例如跨平台開發的相關知識、實時同步游戲的前后端開發、Cocos2d-x的各種調試技巧、Shader、裁剪遮罩、加密解密、分辨率適配、Lua、Spine等等一系列實用的內容。甚至開發了一個類似U3D編輯器一樣,可以實時調試Cocos2d-x游戲內容的界面工具,這些內容都是實際工作中一點點總結出來的心血結晶。在征得出版社同意的前提下,接下來會將書中的一些章節發布到博客中。
    當完成書和項目之后,會有一段難得的空閑時間,可以好好陪陪家人,可以好好寫寫博客,可以好好踢踢球,可以把駕照考了。接下來也許會找一些志同道合的朋友繼續做一些獨立游戲,也許會好好學習一下如何編寫操作系統,或者是研究一下Arduino,或者深入地學習一下算法,這些東西都非常有趣。
打賞

免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號  © 2018-2021 CODEPRJ.COM