日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

游戏编程十年总结(上)

發(fā)布時(shí)間:2023/12/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 游戏编程十年总结(上) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

自敲第一行代碼起,已經(jīng)十年多了,今天既不是十年整的日子,也不是一個(gè)有特定意義的日子,本來(lái)像這種大總結(jié)的文章,當(dāng)擇良辰吉日,齋戒沐浴三日,方可動(dòng)筆。一開(kāi)始計(jì)劃是寫(xiě)一篇五年總結(jié)的,但各種原因一拖再拖,于是就變成了十年總結(jié)。光陰似箭,時(shí)不我待,轉(zhuǎn)眼已經(jīng)在奔三的路上了,離大叔的稱(chēng)呼很近了,但離大神的稱(chēng)呼還很遠(yuǎn),在此謹(jǐn)以此文總結(jié)反思這十年技術(shù)生涯的點(diǎn)滴,與諸君共勉。

編程之前

? ??大概是讀初一的時(shí)候,家中有幸讓我得到了一臺(tái)二手電腦,那時(shí)的心情比現(xiàn)在讓我得到一堆蘋(píng)果電腦更加興奮。但這是一臺(tái)不能連網(wǎng),也沒(méi)有任何游戲和軟件的電腦(掃雷、紙牌接龍等內(nèi)置程序除外),這樣的電腦能有什么用呢?只能瞎折騰,很快電腦被折騰壞了。去電腦店修了幾次之后(被宰了幾次),決定自學(xué)電腦維修。

? ? 跑了很多書(shū)店才買(mǎi)到跟電腦維修相關(guān)的書(shū)籍,也就是在這時(shí)建立了對(duì)計(jì)算機(jī)的初步認(rèn)識(shí),并掌握了屢試不爽拔插內(nèi)存條、重裝系統(tǒng)大法。還從幫我修電腦的大叔身上學(xué)到了修電腦的裝逼套路,在幫別人修電腦時(shí)不論如何,一定要進(jìn)一下BIOS搗騰一下,一定要在DOS的黑窗口下快速地敲幾條命令,讓旁人看不懂,以彰顯我的技術(shù)高超。在2002年左右,像老家那種小地方,估計(jì)會(huì)重裝系統(tǒng)的人都不多。

? ? 之后從修電腦的大叔那買(mǎi)了不少游戲碟,如CS、紅警、帝國(guó)、炎龍騎士團(tuán)等等,安裝游戲是一個(gè)隱藏天賦,只要把游戲碟插入光驅(qū)中,這個(gè)隱藏天賦就會(huì)被自動(dòng)激活,自己摸索著把游戲裝上去。從此電腦上的內(nèi)容開(kāi)始豐富了起來(lái),獲得了近視成就。玩游戲的同時(shí)也對(duì)游戲和游戲的背后產(chǎn)生了濃厚的興趣,那時(shí)候經(jīng)常會(huì)思考游戲是怎么做出來(lái)的?實(shí)際上更多的同學(xué)比我接觸電腦和游戲更早,但他們對(duì)游戲的背后并沒(méi)有什么興趣,所以他們現(xiàn)在很多都成了小老板,而我成為了苦逼的程序員。

初學(xué)編程

? ? 2005年的某日,應(yīng)該是在信息技術(shù)或數(shù)學(xué)課上,第一次接觸到了編程語(yǔ)言Basic,一開(kāi)始用的并不是VB6.0,而是一個(gè)藍(lán)底黃字的命令行IDE,雖然只能倒騰出HelloWorld和一些簡(jiǎn)單的數(shù)學(xué)程序,但對(duì)此仍然有著濃厚的興趣,因?yàn)槲抑懒擞螒蚴峭ㄟ^(guò)編程來(lái)實(shí)現(xiàn)出來(lái)的,那時(shí)候滿(mǎn)腦子都是,游戲是怎么做的?但沒(méi)人告訴我,我只能自己探索。

? ? 這時(shí)候?qū)Τ绦虻牧私?#xff0c;也只是最簡(jiǎn)單的一些語(yǔ)法而已,直到一個(gè)親戚送了一套VCD,是開(kāi)天辟地的視頻教程,里面介紹了VB6.0,在我看來(lái),那是非常適合新手,培養(yǎng)程序思維的一套教程,在大叔那買(mǎi)了3塊錢(qián)一張的VB碟子,裝上VB6.0之后,就跟著視頻中的示例操作起來(lái)了。于是我寫(xiě)出了人生中的第一個(gè)游戲,一個(gè)猜數(shù)字的小游戲,并嘗試著改變游戲的規(guī)則,制作類(lèi)似石頭剪刀布這樣的游戲。

? ? 視頻教程中的東西很少,很快就學(xué)完了,但這遠(yuǎn)遠(yuǎn)不夠,我只能寫(xiě)出一些簡(jiǎn)單的數(shù)字游戲,尋找新的資料成了當(dāng)務(wù)之急,但騎著單車(chē)翻遍了老家周?chē)綀A十幾公里的新舊書(shū)店,都沒(méi)能找到合適的資料,如果是在廣州深圳這樣的城市或者是像現(xiàn)在這樣的網(wǎng)絡(luò)環(huán)境,應(yīng)該可以很快地找到合適的資料,最后通過(guò)學(xué)校的上機(jī)課,上網(wǎng)找到了一本《Visual Basic游戲編程21天自學(xué)通》的書(shū),學(xué)校的網(wǎng)速經(jīng)常只有幾KB,尋找以及下載這本書(shū)都相當(dāng)不易,實(shí)際上這本書(shū)也不是最適合我的,中間存在嚴(yán)重的知識(shí)斷層,但是最終我硬著頭皮挺過(guò)去了。

? ? 書(shū)中的第二個(gè)例子是一個(gè)模擬細(xì)胞生存的游戲,里面用到了一些簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)和算法,但在這時(shí)候我還不知道什么是數(shù)據(jù)結(jié)構(gòu),對(duì)書(shū)中的代碼盡是問(wèn)號(hào),大約經(jīng)過(guò)了一周的死磕,在炎炎夏日,昏暗悶熱的小房間里,汗水不斷流進(jìn)眼中,不為所動(dòng),因?yàn)橥耆两诖a中了,全神貫注地做一件事情,這是一種奇妙的感覺(jué),這段回憶很是深刻。

? ? 最后終于將細(xì)胞生存的游戲跑起來(lái)了,這是我到目前為止寫(xiě)過(guò)最酷的東西了,并且在這個(gè)例子中領(lǐng)悟了簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)與算法,貪吃蛇怎么寫(xiě)?飛機(jī)游戲怎么寫(xiě)?俄羅斯方塊怎么寫(xiě)?五子棋怎么寫(xiě)?似乎都能從腦海中模擬出來(lái)了,應(yīng)該用怎樣的結(jié)構(gòu),怎樣的邏輯?我想這就是初步的程序思維了。接下來(lái)的時(shí)間里,我將腦海中想到的游戲都一個(gè)一個(gè)地實(shí)現(xiàn)了,雖然實(shí)現(xiàn)的效果看上去慘不忍睹(使用Windows自帶的畫(huà)圖工具繪制)。但依然是很有成就感的。細(xì)胞生存小游戲用的大概是一個(gè)簡(jiǎn)單的圖結(jié)構(gòu),在做貪吃蛇的時(shí)候,依葫蘆畫(huà)瓢,寫(xiě)出了一個(gè)鏈表結(jié)構(gòu),然而直到后面學(xué)習(xí)c語(yǔ)言的時(shí)候,我才知道這是數(shù)據(jù)結(jié)構(gòu)、是鏈表......

?

? ? 雖然寫(xiě)出了一些簡(jiǎn)單的游戲,但我想寫(xiě)的遠(yuǎn)不止這些,我想變強(qiáng)啊啊啊!!!我想寫(xiě)出更好玩更炫酷的游戲,就像當(dāng)時(shí)非常火的游戲《大話(huà)西游》,什么代碼可以寫(xiě)出這么炫酷的畫(huà)面,什么代碼可以讓兩個(gè)人的屏幕同步出現(xiàn)這么炫酷的畫(huà)面呢?后來(lái)在云大組織的廣州skynet大聚會(huì)上面討論實(shí)時(shí)同步方案時(shí),提到過(guò)在高中時(shí)就有在思考大話(huà)西游的實(shí)時(shí)同步,大家都笑了,這是一句緩解個(gè)人緊張情緒的話(huà),但并不是信口開(kāi)河。

? ??《Visual Basic游戲編程21天自學(xué)通》介紹了DirectX,看上去使用它就可以寫(xiě)出更酷的游戲,但書(shū)中的代碼片段無(wú)法編譯,而且并不是循序漸進(jìn)地介紹DirectX,掙扎了很久只能放棄。

? ? 在這之后,又學(xué)習(xí)了一下ASP、Html以及JavaScript,這一方面是因?yàn)閷?duì)網(wǎng)頁(yè)開(kāi)發(fā)也略有興趣,另外一方面主要還是沒(méi)有好的學(xué)習(xí)資料,有什么資料就學(xué)什么。

? ? 當(dāng)我知道,做游戲應(yīng)該用C/C++語(yǔ)言的時(shí)候,就開(kāi)始尋找C/C++的資料,那時(shí)候沒(méi)有找到合適的入門(mén)書(shū)籍,不知從哪里找來(lái)一本VC++的編程書(shū),一上來(lái)就是MFC框架的消息映射,各種控件等等,讓我覺(jué)得,C++真的好難啊。

? ? 學(xué)校的上機(jī)課,我都用來(lái)找資料,下載資料。在網(wǎng)上找到了一些簡(jiǎn)單的C語(yǔ)言資料,開(kāi)始自學(xué)C語(yǔ)言,那時(shí)候最最讓我頭疼的就是指針了,聽(tīng)很多人說(shuō)指針很難,所以在這方面下了不少功夫。初步掌握了C語(yǔ)言之后,接下來(lái)開(kāi)始學(xué)習(xí)一本《C語(yǔ)言游戲編程從入門(mén)到精通》,雖然沒(méi)讓我精通,但還是跟著寫(xiě)了一些簡(jiǎn)單的小東西出來(lái),學(xué)到了不少古董級(jí)的知識(shí),例如如何用圖形模式調(diào)用哪些系統(tǒng)中斷來(lái)繪圖,這些大概是最古老的像素游戲的開(kāi)發(fā)技術(shù)了。

? ?學(xué)生的時(shí)間是最多的,上課的時(shí)間,腦海里想的都是游戲編程,偷偷地看著編程書(shū)籍。高中三年過(guò)得很快,轉(zhuǎn)眼就到了高考。像我這種不愛(ài)學(xué)習(xí)不認(rèn)真上課的人,自然考不出好的分?jǐn)?shù),那時(shí)候?qū)ξ磥?lái)的憧憬大概就是,如果考得不好,那就在一家小網(wǎng)吧里面當(dāng)當(dāng)網(wǎng)管,修修電腦,繼續(xù)這種自學(xué)編程的日子。最后高考雖然沒(méi)考好,但還是考上了位于韶關(guān)的一所沒(méi)有什么名氣的大專(zhuān)學(xué)院,在那里,由于佛祖的庇佑,我的技術(shù)迎來(lái)了一個(gè)飛躍,并結(jié)識(shí)了不少益友。

大學(xué)之路

? ? 高考之后的暑假,決定系統(tǒng)地學(xué)一下C++,由于家里拉上了寬帶,所以極大方便了我找資料,在網(wǎng)上找到了孫鑫老師的C++視頻,通過(guò)這套視頻對(duì)C++、面向?qū)ο蠛蚆FC,都有了一個(gè)初步的了解,但對(duì)很多概念都還是一知半解。

? ? 暑假很快就過(guò)了,2008年的九月份,來(lái)到了學(xué)校報(bào)到,飽受了缺乏資料之苦后,看到大學(xué)圖書(shū)館中海量的計(jì)算機(jī)書(shū)籍,仿佛幾年沒(méi)吃肉的人看到一盤(pán)美味的紅燒牛肉!這次的興奮僅次于得到生命中的第一臺(tái)電腦。在圖書(shū)館中找了一些VC++21天自學(xué)通之類(lèi)的書(shū)籍,鞏固了一下C++基礎(chǔ),以及如何使用C++來(lái)開(kāi)發(fā)游戲的《VC++游戲開(kāi)發(fā)》一書(shū),讀完后嘗試著用了GDI寫(xiě)了一些游戲,例如《坦克大戰(zhàn)》(這個(gè)應(yīng)該是第二學(xué)期做的)。另外也鞏固了一下VB的基礎(chǔ),使用VB做了一個(gè)簡(jiǎn)單的系統(tǒng)管理工具,有點(diǎn)類(lèi)似優(yōu)化大師。

?

? ? 由于高中階段的努力,讓我自認(rèn)為在同齡人中的技術(shù)已經(jīng)是很不錯(cuò),開(kāi)始有些驕傲膨脹的時(shí)候,蚊子和志仔的出現(xiàn)狠狠地打擊了我的“囂張氣焰”,學(xué)無(wú)止境,一旦滿(mǎn)足于當(dāng)前的技術(shù),那便是逆水行舟不進(jìn)則退。

? ? 蚊子并不是我們學(xué)校的,是一位大學(xué)同學(xué)的高中同學(xué),同他一見(jiàn)如故(其實(shí)那時(shí)候尚未見(jiàn)面),但相似的經(jīng)歷,對(duì)技術(shù)的熱愛(ài),讓我們有很多的共同語(yǔ)言。蚊子和志仔都是從高中便開(kāi)始自學(xué)編程,并且學(xué)得比我好得多,大一時(shí)蚊子已經(jīng)制作了不少看上去還不錯(cuò)的軟件作品,對(duì)游戲外掛也略有研究,蚊子推薦給我的《Windows游戲編程大師技巧》,讓我受益匪淺,后來(lái)此書(shū)成為了少數(shù)幾本我反復(fù)翻閱多次的書(shū)。《C++Primer》和《EffectiveC++》是另外的兩本,通過(guò)這些比較經(jīng)典的書(shū),我慢慢理解了C++和VC++的區(qū)別,面向?qū)ο蟆⒎盒汀?/p>

? ? 志仔是一個(gè)超級(jí)邋遢的人,發(fā)型雜亂,每次見(jiàn)他都穿著拖鞋和大棉襖,然后掛著一條鼻涕。但很多時(shí)候看上去越邋遢的程序員越牛逼,大一的時(shí)候他就已經(jīng)在研究木馬之類(lèi)的東西了,不是簡(jiǎn)單地使用工具,而是開(kāi)發(fā)木馬,終端控制,屏幕傳輸,視頻壓縮等等,都是他自己做的。對(duì)于php等網(wǎng)頁(yè)編程,他也頗為擅長(zhǎng),對(duì)于OpenGL和一些圖形學(xué)算法也有研究,這兩個(gè)家伙都自己寫(xiě)過(guò)操作系統(tǒng)(當(dāng)然,不是大一的時(shí)候),畢業(yè)之后,他們變得更牛逼了。受志仔和凱文米特尼克的影響,那時(shí)候花了一段時(shí)間玩了玩黑客,但僅僅只是停留在表面,玩了一段時(shí)間發(fā)現(xiàn),編程才是王道,于是丟下手上的黑客工具包,繼續(xù)回到編程的正道上,有牛逼的對(duì)手一起前進(jìn),路上才有意思,這種相互競(jìng)爭(zhēng)相互追趕的感覺(jué)非常地美妙。

? ??大學(xué)前期基本都是圍繞著C++游戲開(kāi)發(fā)學(xué)習(xí)游戲賬號(hào)購(gòu)買(mǎi)平臺(tái)。在大一的第二個(gè)學(xué)期,接觸了匯編語(yǔ)言,這是一種與之前的語(yǔ)言完全截然不同的語(yǔ)言,需要運(yùn)用新的思維方式,應(yīng)該算面向寄存器編程,看了一些匯編教程之后,自己調(diào)用各種中斷,用匯編寫(xiě)了一個(gè)打飛機(jī)的小游戲。在后面接觸了面向?qū)ο蟮乃枷胫?#xff0c;就漸漸把匯編忘干凈了。在五一的3天假期中,準(zhǔn)備了泡面在宿舍悶了3天時(shí)間,把之前沒(méi)看完的孫鑫視頻看完了,初步理解了C++的類(lèi)、MFC、多線程、網(wǎng)絡(luò)編程。并制作了一個(gè)內(nèi)網(wǎng)聊天工具,在網(wǎng)上斷網(wǎng)之后可以和其他宿舍的同學(xué)聊聊天。

? ?? 從大學(xué)開(kāi)始就總是給自己制定著一堆完不成的學(xué)習(xí)計(jì)劃,因?yàn)椴幌胱屪约河薪杩谕V箤W(xué)習(xí)。特別是寒暑假,回家的行囊中總是塞滿(mǎn)了計(jì)算機(jī)的書(shū)。

? ?? 大二之后,我漸漸被兩位大牛甩在了后面,因?yàn)檎J(rèn)識(shí)了我現(xiàn)在的老婆,這是一段一波三折的復(fù)雜故事,這里就略過(guò)不談了。雖然學(xué)習(xí)的時(shí)間少了很多,但大二這一年還是看了不少書(shū),例如C++Primer、EffectiveC++等等,對(duì)C++的理解上升了一個(gè)層次。DirectX3D相關(guān)有Windows游戲編程大師技巧,精通DirextX3D圖形與動(dòng)畫(huà)程序設(shè)計(jì)、DirectX9.03D游戲開(kāi)發(fā)編程基礎(chǔ)等等,OpenGL相關(guān)的有OpenGL游戲編程、Nehe的OpenGL教程以及計(jì)算機(jī)圖形學(xué)等等,對(duì)3D編程的理解又上升了一個(gè)層次,計(jì)算機(jī)圖形學(xué)一書(shū)介紹得非常深入,如果完全理解了此書(shū)的內(nèi)容,幾乎可以不依靠OpenGL和D3D手動(dòng)實(shí)現(xiàn)一個(gè)軟渲染3D引擎。另外由于課程需要,還系統(tǒng)學(xué)習(xí)了Java語(yǔ)言,看完馬士兵的Java視頻,非常過(guò)癮,順帶學(xué)習(xí)了一下設(shè)計(jì)模式,感覺(jué)對(duì)面向?qū)ο蟮睦斫庥稚仙艘粋€(gè)層次。如果說(shuō)大一學(xué)習(xí)的是如何將代碼寫(xiě)對(duì),那么大二學(xué)習(xí)的更多是如何將代碼寫(xiě)好。

? ? ?除了看書(shū)之外,大二還做了一些兼職,例如在勤工儉學(xué)那邊幫忙送桶裝水,送一桶水大概能賺5毛錢(qián)。與這種苦力活比起來(lái),賺大錢(qián)的腦力活更適合我,輔導(dǎo)員給我和志仔介紹了一份兼職,維護(hù)一個(gè)PHP門(mén)戶(hù)網(wǎng)站,每個(gè)月兩三百的收入在那時(shí)看來(lái)已經(jīng)頗為豐厚了,做這份工作也學(xué)到了蠻多東西,例如mysql數(shù)據(jù)庫(kù),還有網(wǎng)頁(yè)抓取,正則表達(dá)式等等。

? ?? 除了看書(shū)和兼職之外,另外還做了一些小玩意,例如用自己寫(xiě)的簡(jiǎn)陋的OpenGL游戲引擎做了個(gè)3D的坦克小游戲(3D模型文件的加載是自己在官網(wǎng)研究這種文件格式,然后手寫(xiě)的一個(gè)模型文件解析和渲染類(lèi)),另外還學(xué)習(xí)了生命中的第一個(gè)游戲引擎——HGE,在七夕的這天花了一個(gè)上午用HGE制作了一個(gè)《鴨子下樓梯》小游戲送給了老婆。其他還用Java、VB、C++寫(xiě)了一些亂七八糟的軟件。

?

??? 大三時(shí),編程基礎(chǔ)勉強(qiáng)還算可以了,對(duì)C/C++掌握到一定程度之后,學(xué)習(xí)其他語(yǔ)言都非常快。大三只在學(xué)校待了兩個(gè)月,然后就提前出來(lái)工作了,這兩個(gè)月里就做了兩件事情。參加一場(chǎng)比賽和一場(chǎng)考試,學(xué)期開(kāi)始時(shí)輔導(dǎo)員跟我說(shuō)讓我去深圳參加一個(gè)省里面的比賽,有很多學(xué)校參加,這讓我很興奮,大一入學(xué)時(shí),就聽(tīng)到老師說(shuō)某某學(xué)長(zhǎng)在廣東省的XX比賽中拿到了三等獎(jiǎng),那時(shí)心里滿(mǎn)是羨慕和崇拜,而現(xiàn)在輪到我了。

??? 我決定用HGE制作一款塔防游戲,和老婆組隊(duì)(老婆是美術(shù)),第一個(gè)星期簡(jiǎn)單地學(xué)習(xí)了Lua和Delphi,然后用HGE搭建了游戲框架,使用Lua編寫(xiě)游戲邏輯,另外再用Delphi寫(xiě)了一個(gè)簡(jiǎn)單的游戲編輯工具,寫(xiě)到差不多的時(shí)候出現(xiàn)了一個(gè)重大事故,硬盤(pán)壞了,無(wú)法修復(fù),是希捷的固件門(mén),于是只能重新寫(xiě)過(guò),幸好前些天去機(jī)房的上機(jī)課把代碼拷過(guò)去看過(guò),損失并不算太嚴(yán)重,但從此再也不敢用希捷硬盤(pán)了。

??? 現(xiàn)在看來(lái)當(dāng)年的這款作品實(shí)在是非常糟糕,但憑借著上臺(tái)演說(shuō)時(shí)的對(duì)答如流,僥幸拿了一個(gè)一等獎(jiǎng)。如果志仔也來(lái)參加的話(huà),一定可以拿出一個(gè)比我好很多的作品,但他總是神龍見(jiàn)首不見(jiàn)尾。比賽之后開(kāi)始潛心準(zhǔn)備軟考,2010年的軟考還是蠻難的,考的內(nèi)容特別廣,包括什么編譯原理、網(wǎng)絡(luò)等一大堆東西,考試時(shí)發(fā)現(xiàn)蠻多成年人來(lái)考的,學(xué)校參加這個(gè)考試的人不多,通過(guò)的就更少了,僥幸通過(guò)之后,就開(kāi)始準(zhǔn)備簡(jiǎn)歷,打算到廣州或深圳好好歷練一番。

??? 美好的大學(xué)生活就這樣提前告一段落了,人總是在失去之后才懂得珍惜,工作之后回過(guò)幾次母校,每次回去,看著熟悉的場(chǎng)景,回想起和同學(xué)朋友們?cè)趯W(xué)校渡過(guò)的時(shí)光,心中總是百感交集。大學(xué)生活結(jié)束了,但另外一段苦逼的故事即將開(kāi)始......

總結(jié)

以上是生活随笔為你收集整理的游戏编程十年总结(上)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。