天天看點

遊戲程式設計十年總結(下)

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

第一份工作

    由于學曆不高,還沒畢業,經驗不足讓我吃了不少閉門羹,在大三剛開始時就開始在網上投放履歷了,但基本是石沉大海。雖然沒有面試邀請,我還是獨自一人來到了深圳,因為對深圳這個城市很有好感(因為前面來深圳比賽的經曆)。為了得到面試的機會,我不惜跑到人家的辦公樓去霸王面,可惜并沒有獲得面試的機會,但現在回想起來,直闖人家的辦公樓要求霸王面的時候,還是蠻有魄力的,雖然沒有拿到面試機會,但年輕人就該如此,想做的事情就放膽去做,不要逃避,不要讓自己後悔。

    初來深圳時,已經在深圳做了幾年遊戲開發的梁師兄對我很是照顧(過來深圳比賽時認識的),在深圳晃蕩了一周之後,終于否極泰來,接到了兩個面試通知,面試的過程很順利,也學到了不少東西,兩邊的面試官都對我挺滿意的,拿到了一份轉正後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,或者深入地學習一下算法,這些東西都非常有趣。