游戲 學(xué)編程,學(xué)習(xí)游戲開發(fā)?
看這個(gè)問題在這個(gè)版面掛了挺久了,無聊答一發(fā)——純針對(duì)新人,這些步驟希望你能真的一步一步走過去,不要覺得內(nèi)容“太簡單”或者“看起來不像開發(fā)游戲”就想跳過。早20年我會(huì)推薦你Delphi,但是現(xiàn)在C#也算是Delphi的精神續(xù)作了(什么精神續(xù)作,只是主程是同一個(gè)人而已),當(dāng)年開發(fā)游戲可沒有什么引擎一說。
第一步:用C#的Image、Timer寫一個(gè)小程序
要求不高,先自己安裝VS、C#,這個(gè)環(huán)境非常好搭,我不在這里貼鏈接,是希望你首先能做到自己去找必要的知識(shí)。弄完以后,新建一個(gè)工程,在Form1里面拖一個(gè)Image和一個(gè)Timer,然后隨便找一張圖片,小一點(diǎn)的,你喜歡的。你要做的事情是:
Image拉個(gè)640x640就好,里面創(chuàng)建一個(gè)64x64的小方塊,這個(gè)小方塊里是這張圖片的完整樣子,這個(gè)小方塊的坐標(biāo)是相對(duì)于Image的(x:0-Image寬度隨機(jī),y:0)。
確保畫面不要閃爍。
每30毫秒這個(gè)小方塊的y會(huì)增加8,但不要讓小方塊“掉出屏幕”。
小方塊可以根據(jù)你鍵盤輸入的ASDW移動(dòng)(ASDW分別對(duì)應(yīng)什么方向你不知道的話,還是別繼續(xù)了),移動(dòng)速度為40像素/30毫秒。
鼠標(biāo)點(diǎn)擊Image區(qū)域,小方塊會(huì)取消當(dāng)前的移動(dòng),并向點(diǎn)擊的地方移動(dòng)過去,注意是移動(dòng)過去,速度是40像素/30毫秒,而不是瞬間過去。
一步一步做到,這是你開發(fā)游戲的第一步,如果你這步都學(xué)不好,就不建議你打開Unity這種東西,別小看了這步,在這步里,你要解決的問題基本上就是理解貼圖的概念→理解游戲就是Input+Timer+GDI也可以做的東西→理解Input的處理不應(yīng)該是if key==xxx then....,而是要建立一套命令機(jī)制的。對(duì)于一個(gè)正常程序員來說,做這個(gè)最多不超過1小時(shí),但是對(duì)于一個(gè)新人來說,這就算花了3天也沒什么奇怪的,但是最重要的是你能堅(jiān)持下來而不是跳過基本功。
第二步:還是在C#里做一個(gè)倉庫番
這個(gè)要求對(duì)于一個(gè)新人來說是不低的,不要小看倉庫番這個(gè)游戲,他可以讓你學(xué)會(huì)不少游戲開發(fā)的初級(jí)知識(shí)。
為什么我總對(duì)新人說從《倉庫番》開始-GameRes游資網(wǎng)
?
bbs.gameres.com
當(dāng)然這樣一個(gè)倉庫番的要求并不低,在這個(gè)項(xiàng)目里,你會(huì)接觸到游戲設(shè)計(jì)的基本功。這個(gè)項(xiàng)目對(duì)于新人來說可能會(huì)需要1-2個(gè)月完成,尤其是當(dāng)你的興趣移到了策劃技術(shù)下的關(guān)卡設(shè)計(jì)的話,會(huì)沉迷進(jìn)去很久。但是這個(gè)項(xiàng)目最重要的是讓你明白一個(gè)游戲是怎么開發(fā)和設(shè)計(jì)的,純正的基礎(chǔ)知識(shí),一定不要跳過。一些游戲看起來很簡單,比如flappybird,但這些比起倉庫番來說不見得真的簡單,而且更不適合學(xué)習(xí)用。
第三步:做一個(gè)俄羅斯方塊
之所以做一個(gè)俄羅斯方塊,是因?yàn)椋?/p>
開發(fā)技巧:倉庫番其實(shí)還是回合制的,俄羅斯方塊會(huì)讓你第一次遇到“動(dòng)作游戲”操作的問題,別看這個(gè)“動(dòng)作游戲”是打引號(hào)的,當(dāng)你真的遇到不打引號(hào)的動(dòng)作游戲項(xiàng)目的時(shí)候,這種input的經(jīng)驗(yàn)也是有有用的。
策劃技巧:在俄羅斯方塊里,你會(huì)第一次遇到真實(shí)的分析一個(gè)需求——想一想:俄羅斯方塊里,按下A鍵方塊真的是“旋轉(zhuǎn)”嗎?其實(shí)這個(gè)抽象是大錯(cuò)特錯(cuò)的,俄羅斯方塊里從來就沒有方塊是“旋轉(zhuǎn)90度”的,而是從一個(gè)拼圖變成了另一個(gè)拼圖,只是看起來恰好是轉(zhuǎn)了90度,那么如果不是轉(zhuǎn)90度行嗎?加入僅僅只是“玩家可能反應(yīng)不過來”,那怎么讓他們反應(yīng)過來?
開發(fā)技巧:動(dòng)態(tài)碰撞處理,或者說動(dòng)作游戲和回合制游戲的交界點(diǎn)。你注意一個(gè)細(xì)節(jié),俄羅斯方塊在方塊“落地”之前,還能通過左右方向來移動(dòng)方塊,這是為什么?
開發(fā)技巧:消除動(dòng)畫怎么穿插在這個(gè)過程中?
開發(fā)技巧:注意,你見過很多俄羅斯方塊的范例,但他們都犯了一個(gè)錯(cuò)誤——俄羅斯方塊是會(huì)顯示下一個(gè)要出現(xiàn)的方塊的。當(dāng)你注意到這個(gè)問題的時(shí)候,你會(huì)發(fā)現(xiàn)70%以上的范例做法都是錯(cuò)的。
策劃技巧:無限關(guān)卡的游戲應(yīng)該怎么設(shè)計(jì)?俄羅斯方塊關(guān)卡變化函數(shù)所需要的參數(shù)只有一個(gè)——方塊的下落速度,那么這個(gè)速度真的需要隨關(guān)卡一直增加嗎?還是增加到一個(gè)程度之后就不需要增加了?空想沒有意義,自己做了試試看再回答。
開發(fā)技巧:當(dāng)方塊下落速度過快的時(shí)候,你會(huì)遭遇到跳幀。
俄羅斯方塊是一個(gè)游戲程序員(Gameplay方向)和游戲策劃走上正軌之前的最后一個(gè)挑戰(zhàn)項(xiàng)目,你第一次真的“寫對(duì)”俄羅斯方塊,你也會(huì)經(jīng)歷代碼重構(gòu)(因?yàn)槟愣喟胧且淮螌懖粚?duì)的),然后重新整理思路和重構(gòu)設(shè)計(jì)的階段。
接下來,用Unity之類的引擎把它們做出來
當(dāng)你完成這3個(gè)挑戰(zhàn)之后,你再去熟悉Unity,才是一個(gè)好的開始。而這個(gè)時(shí)候你也差不多知道自己的興趣所在了——究竟是做一個(gè)設(shè)計(jì)師,還是做一個(gè)程序員。這2個(gè)游戲的開發(fā)中蘊(yùn)含了幾乎所有RPG、SLG游戲的主要技巧,但是主要還只是主要,不是全部。如果你不服,可以試著先從坦克大戰(zhàn)(FC)開始繼續(xù)做游戲。
整個(gè)過程中最重要的幾點(diǎn):
不要心急,不要覺得這些事情都是小事,沒有意義。如果說學(xué)計(jì)算機(jī)語言是扎馬步,那么這些游戲是屬于你進(jìn)了少林以后挑水這些事情,他不是練武,但卻是練你的底子。
帶著思考去做,想想看有些技巧,用在較大型的游戲是怎樣的?技巧是一樣的技巧,關(guān)鍵看你怎么玩出花。
別管游戲是幾D的,大多游戲邏輯上都是2D就夠了的,3D只是Render而已。一個(gè)做法正確的游戲,2D到3D轉(zhuǎn)換障礙并不大,想想Evoland,還有DQ系列最近幾座,也都支持2D 3D切換,為什么呢?
不要為了實(shí)現(xiàn),妥協(xié)你的設(shè)計(jì)。領(lǐng)悟一個(gè)策劃的基本功——什么是What to do的,什么是how to do的,how to do的是設(shè)計(jì),what to do不過是玩家牢騷而已。明白了how to do,你也會(huì)修正你對(duì)what to do的看法,這對(duì)于設(shè)計(jì)的理性一面是很有幫助的。比如倉庫番一次推2格行不行?為什么?
刺激戰(zhàn)場游戲是怎么編程出來的?
刺激戰(zhàn)場用的是虛幻四引擎開發(fā),在虛幻四引擎中建模開發(fā)和編程
游戲外掛編程如何系統(tǒng)學(xué)習(xí)?
需要很多經(jīng)驗(yàn),比如你要了解服務(wù)器端開發(fā)的結(jié)構(gòu),命名參數(shù),組織結(jié)構(gòu),然后根據(jù)每個(gè)游戲的細(xì)節(jié)制定外掛程序,總之,你可以開發(fā)外掛,基本上是有游戲開發(fā)經(jīng)驗(yàn),所以,還是開發(fā)游戲賺點(diǎn)安穩(wěn)錢吧,不要開發(fā)外掛,沒你想的那么好玩,游戲公司也黑著呢。
以上就是關(guān)于游戲 學(xué)編程和學(xué)習(xí)游戲開發(fā)的相關(guān)問題解答,希望對(duì)你有所幫助。