第十九章 克蘇魯神話
字數:58540 加入書籤
本專欄是著重於討論“開發一款遊戲需要怎樣的能力”,以及“如何學習開發遊戲所需的所有技能”。歡迎來到知乎專欄《自學遊戲開發》的第二篇文章。在開始討論我們的兩個主題之前,我認為非常有必要讓初學者了解一下:一個遊戲是如何被設計和開發完成的。
溫馨提示:本文共28900字,包括50張配圖,40段視頻,建議先收藏再閱讀。為了保證閱讀體驗,建議在桌麵瀏覽器環境下閱讀。
我在知乎回答“想要自己做一款遊戲,需要學習哪些知識”下麵簡單列舉了四個能力,分別是:程序、設計、美術、音樂。但是礙於篇幅限製,我並沒有詳細展開來說明每一項能力具體是如何發揮作用,以及發揮作用的形式和功效。如果在學習之前,我們對即將學習的東西一無所知的話,會導致學習中產生不小的迷茫感:不知道為何而學,不知道學了有什麽作用,不知道該學習到什麽程度。帶著這樣的迷茫去學習,會導致學習效率低下,容易受挫,甚至會在達到一定程度後動搖自己理想,懷疑自己的學習能力是否有問題。作為以“引導自學遊戲開發”為使命的一個專欄,我認為非常有必要解除初學者對於遊戲開發的朦朧認識。這也是自學遊戲開發專欄第二篇文章的意義之所在,讓初學者了解:
一個常規的遊戲開發團隊有哪些人,每個人具備怎樣的能力
一個遊戲從最初構想到最終完成開發,會經過一個怎樣的過程團隊中的每個人在遊戲開發過程中的什麽時間,發揮了怎樣的作用
在了解完以上三個問題以後,我們會對自己的情況做一個判斷,根據自己的情況,再對未來的方向做一個規劃。比如說,你是一個喜歡畫畫的人,想從事遊戲相關的美術工作,那麽你就應該知道不同的美術工作在遊戲開發流程的哪一步需要畫什麽樣的東西做什麽樣的美術資源,設計師和技術人員拿到你做的美術資源又會加以怎樣的修改和使用,你在後麵的學習中應該著重練習哪方麵的技術和能力;再比如說,你想成為像我一樣技能覆蓋麵比較廣,各個方麵都知道一點的開發者,那麽你應該如何去組織你的技能,在眾多的技能中考慮到你的性格和你的特長,你更喜歡親自做哪一項工作內容,應該選取哪個作為核心能力,如果今後不做獨立開發而是進遊戲公司工作,你會站在哪個位置工作?在閱讀完本篇的正文後,你會開始思考這些問題,並盡快找到一個大致的答案。
預先了解我們即將從事的工作,預先概覽我們即將學習的知識,這件事對於引導我們前進有重大的意義。為了完成這個環節,我從第一篇文章發布後到現在一直都在籌備此事{邊看春晚邊做配圖}。要讓任何一個從沒接觸過遊戲開發的人,在一篇文章的篇幅內了解整個遊戲開發的全過程,這件事情真的是非常難。我認為真正要做好這件事情,需要一個紀錄片的工作量。要完整地記錄下一個遊戲從設計師的頭腦中轉換到電腦中的過程,然後展現給別人。我本人的搜索能力有限,到目前為止並沒有找到一個非常理想的此類紀錄片,但是在知乎問題“有哪些介紹遊戲開發過程的紀錄片或視頻?”下麵,@indleavez的回答中有非常多零零散散的相關紀錄片{在此也感謝他為這些視頻做的字幕}。在後文中,我會適當地引用其中一些視頻片段以及youtube上的相關視頻來輔助講解。下麵正文開始。
一、遊戲開發團隊的人員配置
一個常規的遊戲開發團隊有哪些人?我們先過目幾張圖:
下圖是一個國內很常規的mmorpg開發&運營人員配置圖。
↓是幾個國外遊戲開發團隊的人員配置圖。
大家把每個頭銜看一遍就行了,不用去記憶。從名字當中,或許大家都能猜到某些崗位是幹什麽的,有些猜不到也沒關係,我正要去一一講解。為了方便闡述,我自己做了一張人員配置圖,融合了以上的實戰配置和我自己對於遊戲開發的理解。{注:為了方便查看,建議另存到本地}下圖:
閱讀指南:
矩形代表“崗位”、平行四邊形代表“工作內容”。
紅色:代表設計能力;藍色:代表計算機編程能力;綠色:代表美術能力;
顏色明度:代表專業性要求;顏色灰度:代表綜合能力要求。{非嚴格遵循}
因為我非常反感國內把gamedesigner叫作“遊戲策劃”的翻譯,還有一些其他崗位翻譯不準確或是在中文語境中遭到了貶低,所以這張表我特地全部使用了英文名詞。每個名詞旁邊有小小的中文注解,放大到100%即可看清。
首先一個標配遊戲團隊中有三大director:creativedirector{創意總監}、technicaldirector{技術總監}、artdirector{藝術總監}。說土鱉點就是:主策、主程、主美。很多新人以為creativedirector{主策劃}就是遊戲團隊中最大的boss,可以拍板說話。但其實三大director上麵還有producer,在公司裏producer上麵還有ceo,ceo上麵還有boardofdirectors。
在國外的話,creativedirector享有更高的權利,他來決定遊戲往哪個方向設計和製作,director決定采用的技術方案,製定遊戲特需的功能和係統,director負責領導製作遊戲所需的美術資源,保證遊戲畫麵的美觀性和統一性。producer更多的是提供三大director需要的資源和幫助,並保證遊戲項目的正常推進和最終發售。當然了,有的製作人本身也擔任創意總監的職責,比如說小島秀夫、席德梅爾。
{講個段子}在國內的話,基本情況就是一層壓一層,逐級給壓力。最上麵的投資人想賺快錢,給ceo壓力,要求其多長時間內實現多少盈利;ceo把壓力分擔給製作人,要求其多長時間內必須完工,上線後的arppu最好要達到多少;製作人菊花一緊,從身體下麵拿出棒子去敲主策的頭:“上頭要求又提高了,你這個武器合成的係統,把坑給我開到要玩家花20人民幣才能填滿。”主策老王頂著一頭包跟跑腿剛回來的執行策劃小王說:“你去把升級武器用的所有材料的價格乘個2。”“好。”小王把軟中華和剩下的35塊錢放到主策桌上,然後跑到主程電腦椅旁蹲下扒著他肩膀:“張哥,上次拜托你們優先查的那個武器合成係統的bug怎麽樣了,我現在要改數值能不能起作用?”老張pia一下把小王打翻在地:“別來煩我,今天美術老趙那邊給的模型放進引擎裏法線一個都不對,我正在愁這事兒呢!”小王懂事地爬起來地回到座位,一隻手指在屏幕的excel表上遊走,另一隻手在鍵盤托裏握著手機,繼續開心消消樂的第652關。差不多到吃中飯的時候,小王跑到主策位置上:“老大,我去跟程序那邊搞了一上午,武器係統那bug他們還沒修好,我現在還改不了數值啊~”“要你有什麽用!給我去買份羊雜湯回來!勞資親自去找他們說去!…………對了加個蛋!”{大誤}
段子講得很有諷刺意味,可能有點過了頭,大家看個開心就好。下麵我將把人員配置圖的每一個角色/工作帶到遊戲開發流程中去講解。
遊戲開發流程
在人員配置圖中還有很多其他的角色,我將在遊戲開發流程中逐個說明他們的作用。現在建議大家把人員配置圖打開放在屏幕的一邊,然後把下麵這張開發流程圖打開放在另一邊,下圖:
這是一個遊戲開發流程的理想模型。我將按階段來逐一講解。
1、立項階段:
一個遊戲項目是如何開始的?一般有三種打開方式:
1.1、始於市場
一般一個大點的公司都會有市場部,也有專門的市場調查公司,他們的日常就包括收集市場數據、分析數據。市場部的人在完成一次調查之後,會得出一些結論。他們把這些結論交至項目部,producer拿到數據分析,會決定下一個項目應該做什麽樣的遊戲。然後producer再把決策告訴遊戲設計師,讓他們來著手開始設計相應的遊戲產品。
比如說:經市場部研究分析,今年三國題材的遊戲,不論遊戲玩法類型如何,都比相同類型的遊戲擁有更多的下載量,預測明年三國題材將會保持這項優勢;今年傳統top-don類型的moba遊戲,總活躍玩家數比去年有輕微下降,但是fps和tps類型的oba遊戲市場大流將會從細分類型top-don轉向fps。公司裏正閑著想做下一個項目的製作人老李拿到這些數據:“噢!那我們就來做一個三國題材的fps+moba遊戲吧!穩賺不賠,就這麽定了!”然後老李就找到禦用主策老王:“你看我們之前那個項目能不能換個皮變成一個三國題材的fps+moba遊戲,或者說你重新設計一個?”這是market->producer->creativedirector模式。
1.2、始於大佬
我這裏說的大佬一般指那些煤老板啊,房地產老板啊,搞賭博網站的老板啊,做互聯網其他領域搞得比較風生水起的各種老板啊,反正就是從來沒有接觸過遊戲行業有錢有人的老板。他們看到遊戲行業賺錢快,忍不住也插一腳進來,扔一筆錢招個團隊組個公司,做個遊戲吧,什麽都行,賺錢多的那種。
事情是這樣的,有一天他關掉37玩大天使之劍的網頁,抽著悶煙突發奇想:馬勒割雞,那些搞遊戲的做這麽個辣雞玩意兒動不動月流水上億?勞資怎麽不去搞一個呢?霧草,就是了,我也搞他媽一個,就不信在自己的遊戲裏還幹不過排行榜第一名那個“熊爸傲哥”。於是他就打電話給二把手:“強子,給我他媽的招個遊戲開發團隊,對,勞資要做個遊戲,就做個37玩大天使之劍那樣的!”後來?後來策劃老王、程序老張、美術老趙把這個煤老板的錢分攤拿去交各自的房子首付了,項目糊弄幾下,上線前幾天一起離職,組隊去了另一家公司,老李的手下。
1.3、始於遊戲設計師
曾經有一個少年,他從小學時就一直玩遊戲,一直玩到高考玩脫。考了個三本。在大二的某一天,他突發奇想:“誒!如果把這個想法做成一個遊戲,簡直太絕了!前無古人啊,一定敲好玩!估計小賺個一兩億沒問題,嗯~”於是他找到下鋪商學院的小李,跟他激動地分享了一下這個想法。小李一臉凝重地點著頭:“好像還行,不如這樣吧,先去網上搜搜看到底有沒有這個類型的遊戲嘛?或者說看看會玩這種遊戲的玩家大概有多少?他們會花錢買嘛?……”時光荏苒,十年過去了,在落地窗前站了許久的老王,突然浮現出異樣的笑容,屁顛屁顛地跑到老李的辦公室:“老李我跟你說,我剛剛想到一個絕妙點子,是這樣的……&*%&……¥……&”老李一臉凝重的點了點頭:“好像還行,不如這樣吧,我讓市場部那邊做個調查,看看你說的這個創意有大市場,要達到收支平衡最多能投入多少資金。”
我寫這個段子並沒有半點諷刺的意思,隻是反映了一下大多數人的情況。實際上,我們少年都是這麽過來的。這個叫做creativedirector->producer->market。
1.4、補充
以上三種呢,隻是遊戲行業比較常見的開啟項目的方式。一般來說,大的公司更喜歡炒冷飯,把他們現有的ip拿來立項開發續作,這樣能保證遊戲的銷量相對穩定,降低風險。這種方式可以歸類於1.1,因為他們是在確定市場的基礎上來立項開發的。至於1.2,前幾年在國內可謂遍地都是,有錢人都想進來賺個快錢,撈一把是一把。後來做遊戲的人中出現了badguy,不靠遊戲銷量賺錢,而是想賺投資人的熱錢,遊戲都不好好做了。一堆一堆的垃圾出現在市場上,垃圾中的戰鬥機沒有玩家買單,於是投資人的熱錢盡數打水漂,全都變成的那些開發者的個人工資,一分都收不回。中套的投資人多了,知道遊戲這個行業已經撈不到好了,於是現在1.2的情況越來越少。相應的是,國內遊戲行業的資本寒冬來臨,越來越少的投資人願意來投遊戲開發團隊了。1.3的情況應該是最理想的,無論是在小型團隊還是大公司,我都傾向於一個創新遊戲的立項之初是來自設計師的想法。因為玩法是一個遊戲的核心,是遊戲與電影以及其他藝術形式得以區分的關鍵因素。對了,1.3中的少年即小王。相信許多正在看這篇文章的少年都有過小王相似的想法,這是好事。但是我鼓勵每一個想自稱遊戲設計師的少年,在有一個想法後,把它置放一年,期間去讀一讀遊戲設計相關的書,反複構思、打磨、驗證你的那個想法。關於一個遊戲創意的想法又能從何而來,我在我自己的設計方法論中有係統的理論分析,但現在不是和盤托出的時候。在此我們就假設我們通過某種思考已經得到了一個遊戲創意的想法。老王:“我有一個想法,老李,給我幾個人讓我們來驗證它吧!”
2、原型階段
當一個遊戲項目成立之後,並不是就會順水推舟地做下去,一直到上線發售。事實上很多遊戲項目會在開發中的各個階段遭到關閉。關閉的原因很多種,包括資金斷裂、成員分歧、發現這個遊戲並不好玩。我們知道一個遊戲立項之初,基本都有一個想法。但是除了設計師本人,其他人都不知道這個想法到底好不好玩,值不值得做,可能設計師本人也並不知道。雖然設計師可以寫出洋洋灑灑的幾萬字的設計文檔,但是從文字上我們也很難能透徹理解其中的精妙之處,就像我們難以用文字來真正了解一份佳肴吃起來是什麽味道。但是當廚師把一堆食材塞到我們嘴裏的時候我們就知道了。原型階段就是一個檢驗遊戲玩法和開發可行性的階段。在這個階段,設計師要向技術負責人闡釋清楚遊戲的玩法框架,遊戲中存在的各個係統。技術總監會仔細聆聽並斟酌設計師想法,在聆聽的時候他的心理活動大概是這樣的:他說的這個資源係統,我們上一個遊戲的應該可以搬過來套用;這個建造係統,好像和《模擬人生》比較像,回頭找找看有沒有開源的方案;等等,國界線可以讓玩家來的動態劃分?這個設定似乎要求地圖的無縫切換功能,這會導致開發難度和服務器性能要求上升,等會兒要提出來看看能不能避免這個設計;乳搖是什麽鬼?勞資沒接觸過這種技術,又要研究新東西了……
圖中creativedirector就是遊戲的首席設計師。最初,他帶著technicaldesigner{技術策劃}跟technicaldirector開會,大致講解遊戲的玩法框架,讓技術總監心裏有個數,下去要研究下哪些新的技術方案。其中techdesigner的作用就是負責協調設計和技術的矛盾之處:幫助技術總監處理掉那些技術上根本不可能實現的設計,優化那些會帶來技術壓力的設計;幫助創意總監在刪減掉一些設計後,補充其他廉價的設計來保障遊戲係統的完整性。所以想要成為設計師的人,必須要了解到掌握編程能力的重要性。一個不懂程序的設計師,往往會天馬行空設計出那些根本不能實現的東西,或是堅持要實現一些對計算機性能消耗很高的設定。《最後的守護者》在立項之初,還沒決定采用什麽作為玩家的同伴時,本來想過用人{一個女孩},但是設計師們考慮到人的行為十分複雜,要用ai做到逼近自然很難,於是才把目光移到了動物身上。他們觀察了貓貓狗狗等各種動物,最後設計出trico這麽個生物。
這是一個很好的例子,他們避免了一個研發的上大坑,但是當時他們不知道一堆羽毛的擬真表現對計算機性能消耗很大{其實開發難度也不簡單},就算是在現在的ps4pro上也隻有30fps的表現。如果說十年前上田文人就知道這些的話,我相信現在的trico可能就不會有這麽多毛了。
在creativedirector和techdirector會帶著其他的gamedesigners把經過修剪的玩法框架填充完整,把每一個係統細節設計出來,編寫成案。在這個過程中,designers的思考過程可以大致參考下麵這個視頻。不過要注意這是遊戲已經開發完成後設計們說的話,大家可以自行腦補成他們正在遊戲設計的前期討論如何設計:
《魔獸世界:經典舊世》幕後傳奇?f=23134891&a=a2hzp.8253876.0.0
這時這群設計師已經知道這個遊戲怎麽玩了。為了檢驗他們的想法是否好玩,之後的一段時間內他們會和programmers一起把這個遊戲做出來。是的,整個遊戲做出來,就在原型階段。隻不過哈哈哈,他們做出來的遊戲原型差不多長成這個樣子:
{第一張圖是《戰地:叛逆連隊》的原型截圖,第二張是《美國末日》的原型截圖,最後一張是玩家自製的《戰地》模擬器:ravenfield}
這些設計師和技術人員坐在一起開發出來的東西確實一個個都是uglybaby。designers和programmers會創建一堆box來替代遊戲中的任何物體,或者用遊戲引擎自帶的預設物體來充數。畫麵中僅有的一點特殊美術資源,也許是technicalartist順手做的。這是techartist參與原型階段的附贈作用,他在此階段更主要的任務是預先製定美術資源的輸出規範,做好美術與技術之間的接口。一個配備了designers、programmers、techartist的小組,在幾個月或者一兩年的時間裏一翻折騰,基本上實現了遊戲所有的玩法、係統和功能,甚至技術細節,做出上麵那種玩意兒。終於可以邀請一堆人坐在一起來玩這個遊戲了,但是得忽略掉畫麵因素,純粹地體驗遊戲性帶來的樂趣。這是檢驗設計師創意的重要環節。現在,我代表ravenfield的製作者steelraven7邀請你,來試玩這款prototype級別的遊戲:ravenfield{如果你當前不便試玩,也可以通過“ravenfield宣傳視頻”來了解它}沒有華麗的畫麵,沒有精致的音效,被剝得赤身的玩法能否給電腦前的試玩者帶來樂趣?還是休息室茶幾上的可樂和薯片更吸引他?如果這個醜陋的遊戲能夠讓每一個試驗者玩得放不下手,那麽它毫無疑問通過了原型測試。但是,往往來試玩的大胖子們會點著頭認真地說:“嗯……我喜歡你們這個遊戲,如果它完成得更好的話。對了我能把零食帶走嗎?”
again,本篇文章著重於討論開發流程,故在此不深入探究設計與迭代的話題。假設大胖子真的被我們的遊戲原型所吸引,讓我們來吃掉他的可樂和薯片,然後愉快地進入下一個階段:alpha階段。
3、alpha階段
我們的玩法已經得到了驗證,我們的功能已經得到了實現。但是之前的這些,隻能算是pre-production。現在,真正的遊戲開發,才剛剛開始。在alpha階段,我們最重要的工作就是給有趣的核心玩法,包裝上一層美麗的外表。不僅僅是視覺上的,還有很多其他東西。所有的這些事情,從highleveldesign開始。
3.1、highleveldesign
我翻譯為:宏觀設計。這項工作,主要是為遊戲架構一個可信的世界。我們喜歡把負責這項工作的遊戲設計師稱作:世界架構師。世界架構師會考慮到遊戲的特性、需求,以此為基礎設計一個虛擬世界。完全的世界架構,以我的經驗為參考,會從“世界法則”開始,然後設計出時間、空間,再之後是自然{以現實為模板就包括:星係、星球、地質、地理、動植物……},最後是文明和曆史。當然,我們往往不會從零開始架構{即使是家們也不會},而是借鑒一個現成的世界,從中間的某一層切斷,保留高層,自行設計低層。就像《魔獸世界》的世界觀,改造於d&d與《魔戒》的魔幻架構;《阿凡達》從現實世界中的行星這一層進行了切斷,自行設計了其下一層的衛星“潘多拉”及之後的內容。《使命召喚:現代戰爭》從現實世界的曆史層進行了切斷,設計了從2011年之後發生的勢力衝突。《俄羅斯方塊》從……對不起這個遊戲沒有進行這項設計工作。在進行世界架構的時候,設計師會充分地考慮遊戲的需要,然後才是調動他們對於世界的經驗認識和豐富的想象力。在完成設計工作後,他們能回答像下麵這樣的問題:
這個世界的最高法則是什麽?這個法則如何運行?
龍族是在什麽時間,什麽地點,以什麽樣的方式誕生的?他們有什麽特點?紅龍和黑龍分化的原因是什麽?如果自然界中的樹木隱藏著比人類更高的智慧,這個世界將會怎樣?什麽樹木是森林的中樞神經?人類是在什麽時間,如何發現這一事實的?在那之後人類文明和森林文明是如何相處的?如果美索不達米亞人在赫剃人進攻之前就掌握了冶鐵技術,曆史將會怎樣?假設古巴比倫王國中有三大勢力,他們是怎樣形成的?如果在一個雙星係統的星球中存在文明,他們會是什麽樣子?如果人類和他們接觸會發生什麽?{請參考《三體》}
看到這些問題的時候,你是什麽感覺?歡迎在評論中發言。一個合格的世界架構師,拿到上麵任何一個問題,都能夠在1秒之內開始回答,並且能夠保持敘述20分鍾不停口。中間你問他任何問題,他都能夠響應你的引導把細節闡述得厘厘入微,並且,在即將完成回答之時,他能夠在邏輯上把之前敘述的離散的內容全部聯結在一起。世界架構師熟悉天文、地理、政治、哲學、曆史、文明、生物、社會,他最重要的技能是:能夠一本正經地具有邏輯地胡說八道。{很多人都知道,想要成為遊戲設計師,最好上知天文,下知地理,中曉人和,盡可能多地去了解世間萬物萬事,這,說的就是對世界架構師的要求。}
在highleveldesign進到中後期,artdirector會進入到世界架構師的團隊,他會搞清楚那些人的腦子現在都裝了些什麽。然後會用速塗的方式,來嚐試著用畫麵表現那些人想出來的世界,並與他們確認。隨後,artdirector就會開始初次設定遊戲世界的畫麵風格,製定繪畫規範。
來看看《魔獸世界》的世界架構師在工作時想了些什麽,視頻中也可以看到藝術家為他所畫的部分東西:
《魔獸世界:經典舊世》幕後傳奇?f=23134891&a=a2hzp.8253876.0.0
與此同時,技術組會開始著手遊戲代碼速實現功能,程序上可能會存在大量的不合理和bug。好一點的情況是對代碼行進優化,補足殘缺的功能,修複bug{這一工作會一直持續到遊戲下架的那一天}。差一點的情況就是重新編寫整個遊戲、使用一個新的引擎或者重新開發一個適合的引擎{很少有專門為一款遊戲而單獨開發引擎的案例,成本太大了}。技術人員們也會開發一些能夠提高工作效率的小工具,向開發組中任何需要人提供服務。
3.2、storydesign&conceptdesign
經過highleveldesign的工作,我們有了一個世界。現在,我們要向這個世界中添加一點有趣的東西:故事。故事的核心:某人,在某時某地,做了某事。劇作家們,非常擅長塑造一個角色形象,也能夠描繪出精彩的故事場景,製造出具有張力的故事情節。因此往往由職業編劇來負責此事。相對於世界架構師,編劇們在完成工作後會知道更具體的一些事情{任何雞毛蒜皮的小事}:
獵空的父母分別叫什麽?來自哪裏?什麽血型?如何相識?生獵空的那天是哪個醫生負責接生?他在獵空的手臂上注入了什麽?這與她後來加入守望先鋒組織有什麽聯係?伊利丹和瑪法裏奧在幼年時關係如何?他們第一次發生矛盾是什麽情況?伊利丹在被囚禁的時候對他的哥哥怒吼了什麽?伊利丹所心愛的人與瑪法裏奧又是什麽關係?維京人把過冬的糧食儲藏在了什麽地方?他們又把從日本商船上劫掠來的貨物堆在哪裏?黑石軍團從什麽地方入侵了他們的家園?黑石軍團戰盾上的紋理是什麽樣?有什麽意義?
為遊戲設計故事不是寫。在stroytelling類型的遊戲中,玩家們要控製故事中的角色,和其他具有性格的人物互動,要走進編劇們想象中的街道和戰場,改變故事發展的進度或順序。玩家會從任何角度觀察遊戲中的人和場景,因此我們必須在視覺上還原編劇們的創作。我們要確切地知道艾米長什麽樣,她窗外的花園是什麽樣,她父親送給她的飛行滑板又長什麽樣。因此我們需要conceptartist,來為每一個人,每一個物品,每個一場景設計概念原型。這個概念原型不一定是一張很完整的美術作品,但是任何一個看到它的人,都能夠拍著設計師的肩膀說:“我get到了這個感覺。”為了完成這項工作,為了得到一個合適的人物形象或道具模型,conceptartist可能會繪製幾十份概念稿,最後從中挑選出一個。現在,我們來欣賞一下概念設計師的創作過程:
來自藝術家camsykes的“霍比特人-索恩橡木盾戰士”概念設計過程;
來自藝術家sycra的飛船概念設計過程;
來自教育網站的場景概念設計過程;
為了把握感覺,概念設計師們會大量地創造原型。最後大部分都會舍棄掉,隻篩選出最好的一兩個,然後為其繪製出線稿。過程請參考下麵{大家可能會比較熟悉的}:
來自國內漫畫家黃嘉偉的陰陽師-酒吞童子的創作過程;
也許大家觀看後會比較激動,“原來遊戲角色是特麽這麽設計出來的!?教練,我想去學做遊戲。”但是我必須在此適時地潑上一盆冷水:遊戲領域中任何表麵上看起來優雅而輕鬆有趣的工作,背後都需要大量繁重地練習和學習。就比如設計一個酒吞童子,表麵上隻是畫幾根線,但背後至少需要知道的東西有:線稿的繪畫技巧、形式美法則、透視原理、人體結構、服裝設計、日本傳統文化等等。這幾樣最基礎的東西,必須像血一樣流淌在你的身體裏,才能夠進行暢快的設計。下文中每一個崗位和工作,都同樣需要掌握龐雜的知識和技能,有的是製作上的技術細節,有的是藝術上的原理法則。在此指出,後文不再贅述。
工作提交:故事設計完成後會得到一個劇本,其中包含了許多故事發展線,人物介紹,戰役介紹;概念設計完成後,會得到一些概念線稿,如下:
3.3stroyboarddesign&evironmentdesign
當我們的世界有了故事以後,我們並不是要把劇本寄給玩家,讓他們知道這個世界中的每一件事。我們要有選擇性地,把一些故事,展現給玩家。如果是硬gameplay類型的遊戲,設計師們會選擇用非常隱弊的方式,把故事藏在遊戲中。比如說《dota2》、《守望先鋒》,如果我們隻玩遊戲而不看周邊,那麽我們隻能從遊戲中角色的對話聽出一些往事。那些被精心設計的對話,讓玩家知道他們生活在一個真實可信的世界中;而像《英雄聯盟》、《夢三國》那樣泛泛之談的人物語音,便讓人有一種虛假的戲劇感。如果你的遊戲是storytelling類型的遊戲,那麽向玩家交代故事劇情就是遊戲設計中的重要工作。預先製作一個storyboard{故事板,本質是“遊戲流程”}是值得推薦的做法。在電影和動畫中,stroyboard的設計是一個核心工作,它幾乎決定了整個影片80%的內容,觀眾將嚴格按照故事板的順序,把每一個畫麵看完。在遊戲設計領域,故事板是眾多元素中的一個。它在stroytelling類型的遊戲中,對於劇情的發展做一個預覽作用。storyboard會交代:玩家在不同進度時,必然會經過的場景和必然會經曆的事件。由於玩家的視角,受控於玩家自己,所以我們不再逐一考慮取景構圖、鏡頭運動和蒙太奇,隻需要記錄場景、行動路線與必然事件{過場動畫另當別論}。
當我們考慮場景時,需要藝術家把相應的場景畫出來。這就是做enviromentdesign工作的第一個目的。在創作場景時,藝術家會聽編劇們描述場景{包括地形、道路、建築布置等},同時也會參考概念設計師確定的視覺風格,然後快速繪畫。其繪畫過程可以參考,如下:
來自藝術家camsykes的戈壁城場景繪畫過程;
當場景圖得到確定之後,藝術家會對它進行下一步刻畫,使其中的物件明確,以指導將來leveldesign的工作。一個細致的遊戲場景是如何繪製的,請參考{讓你們感受一下最強p圖能力-二次繪畫}:
來自藝術家tituslunter的遊戲場景設計過程;
工作提交:藝術家們會提交遊戲場景原畫,如下:
遊戲設計師會提交故事板,其中包含了行動路線和事件。用我過去的工作來做例子吧,要獻醜了,這張圖是我給執行策劃交代任務時隨手做的:
我當時為這張新手村地圖{場景/關卡}設計stroyboard。包括單個任務設計、任務流程、劇情安排、行動路線設計、npc/怪物分布設計。需要考慮的東西也很多,比如:玩家進入場景後看到的第一屏是怎樣的,第一個任務如何預熱玩家/調動興趣,怎麽安排基礎操作教學,第幾分鍾大概到什麽地點什麽任務,什麽時間安排具有挑戰性的事件,用什麽物品來為大的獎勵做鋪墊,如何行動即不重複又能遊覽全部場景等等。
3.4characterdesign
在經過概念設計的工作之後,我們會拿到一些概念設計線稿,其中包含許多角色。characterdesign這項工作就是在那些角色線稿的基礎上繼續設計,完成服裝配色、材質表現等其他工作。其工作過程請參考:
來自藝術家alexgp的角色繪畫過程;
有時,一些重要的角色,為了在後麵的建模時得到更好的比例和結構表現,藝術家們會為他們繪製三視圖,如下:
來自網站的角色三視圖繪製過程;
這些工作一般會交給美術組中的juniorartist去完成,因為相對於概念設計,這一步要求更多的體力勞動,較少的設計能力。而那些才華橫溢的seniorartist,他們會去畫一些美術宣傳畫,像這樣的:
來自藝術家lop的saberlily繪畫過程;
工作提交:這一步工作,最重要的是得到人物/道具設定圖,包括各個角度{三視圖},如下:
美術組再有富餘力量的話,會繪製角色宣傳圖:
這樣的圖,對於遊戲開發的工作,沒有實質的作用,但是it'scool.
3.5modelling
當我們的characterdesign工作完成以後,會得到準確的角色、道具設定,但是那些資源都無法在我們的遊戲裏使用{我們不討論2d遊戲}。真正的遊戲資源製作,是從建模開始。首先,為重要物體建模,需要用到前麵製作的三視圖,來錨定外形和結構,設計師是這麽用的:
來自模型師soepantokurniaan的汽車shelbygt500建模過程;
來自模型師antic的q版房子建模過程;
有時,有些不重要的物體是沒有三視圖的,這就要求模型師能夠僅根據一張圖就製作出模型:
來自團隊drunkenlizardga4a1建模過程;
我也做過這樣的建模練習,當時拿到這樣一張圖:
隻有這樣一張圖,別無參考,結構不明確或不合理的地方需要自己進行二次設計,所以,這要求模型師也需要具備結構設計的能力。當時懶懶散散地做用了三個工作日完成了這個模型:
剛剛在三個演示中,使用的軟件分別是zbrush、3dsmax、blender。在此我想指出一個新手誤區:不要糾結於軟件的選擇,我們什麽都會用。值得一提的是,如果做生物角色的話,一般我們會喜歡從zbrush開始:
來自藝術家haydar的女性角色雕刻過程;
來自藝術家andahk的龍-雕刻過程;
工作提交:{上麵的“龍-雕刻過程”,andahk已經為其簡單的繪製了貼圖,這是下一步的工作。}一般來說,我們的modelling工作結束後,會得到幹淨的素模,如下:
3.6texture&material
模型,是一個遊戲物體的血肉軀體。貼圖,是一個遊戲物體的表皮肌膚。得到模型後,我們緊接著就為其繪製表麵的紋理/材質貼圖。過程請參考:
來自藝術家sedataciklar的角色蘭戈雕刻繪畫過程;{包括了雕刻和貼圖繪製}
來自藝術家joshrobinson的忍者神龜貼圖繪製過程;
下麵展示另一種我們常用的貼圖製作方法-映射:
來自藝術家uartsy的麵部貼圖映射製作過程;
下麵展示器械的材質製作過程:
來自quixel官方的槍械貼圖製作過程;
來自藝術家aldi的jeep汽車貼圖繪製過程;
工作提交:在經過貼圖&材質製作的工作後,我們會得到如下的模型資源:
前幾天我也做了的小練習,可以在左臂上看到我女朋友的名字。
除了為特定的模型製作材質貼圖外,我們還需要製作許多通用的材質,包括但不限於:自然{土地、草地、泥沼、石頭、樹皮…}建築{路麵、牆麵、木紋、鋼材、玻璃…}等等,可以參考如下:substance材質庫。這些通用材質將在遊戲場景搭建時發揮重要作用。
3.7skeleton&rig
經過modelling,我們能夠得到“靜態”的遊戲模型。有些像斧頭、鐵桶這樣的小東西貼上材質貼圖就能夠直接放到遊戲裏用了。但是人物、怪獸這樣會動的物體,我們還需要為其製作動作動畫。skeleton{骨骼}、rig{綁定},是製作動作動畫的前置工作,僅和模型有關,和材質貼圖沒關係,所以可以一邊做材質一邊做骨骼綁定。我們知道現實中生物體的運動,基本上就是骨骼的運動。在cg領域,我們借鑒了大自然的設計。我們也有骨骼,用來驅使模型運動。我們要為人物模型創建人體骨骼、為恐龍創建恐龍骨骼,然後把骨骼綁定到模型上。
動作師在為角色設計動作的時候,是直接在骨骼的層麵上設計動作。
一個綁定師對於他所操作對象,如果是脊椎動物的話,那麽他會熟悉這種動物的真實骨骼。並且他會知道的肌肉與骨骼的附著關係、運動中肌肉的伸縮扭轉狀態等。前段時間美國夢工廠的藝術總監魏照平老先生路過我們這兒,我問到他,現在動畫界最缺的人才是哪些。他的回答中就擲地有聲地指出了“骨骼綁定”{當然世界範圍內最缺的還是優秀的故事}。
由於綁定骨骼這個過程並不具備什麽觀賞性,就不用視頻展示了。
3.8animate
我們拿到一個綁定好骨骼的模型,會為它設計動作片段{注意,是為骨骼設計動作片段}。這時可能材質貼圖也已經製作好了,這樣的話可以邊做動作邊觀察最終效果。過程可以參考如下:
來自ikinemaaction的骨骼動畫製作過程;
除了上麵展示的技術,在一些常規寫實類遊戲中,我們還喜歡用運動捕捉係統來設計動作:
來自tomasliu的光學運動捕捉係統;
上麵這個是一個國內團隊在12年做的展示,雖然看起來比較lo,但是展示很直觀。我目測他們這套設備價格在四五萬元左右。{商業光學運動捕捉係統最便宜也差不多是這個價,因為需要多台紅外攝像機}下麵來看看另一種小團隊比較能承受的廉價係統:
來自snappers的慣性運動捕捉係統;
在視頻中大家能看出來,這個動作動畫比上麵那個要自然多了。但是理論上,光學運動捕捉係統的精確度要比慣性運動捕捉係統高一些,這也是為什麽在影視領域大家都用光學運動捕捉係統。不過一個模型動作的自然度也需要考慮到骨骼、綁定等因素,比如tomasliu他們的模型,很明顯隻是簡單綁定了一下骨骼,手部都沒有綁定{也許是控製點沒有綁定};但是snappers的模型由於有標準的骨骼綁定,即使用的慣性運動捕捉係統,看起來依舊很自然。所以在3.7節中,我們說到綁定非常重要,大家可以直觀感受到。這套慣性運動捕捉設備隻需要一萬元左右就能拿下,並且使用也很方便。
剛剛展示了兩個肢體運動捕捉的案例,下麵來看一下麵部表情捕捉。這是很早很早以前的光學運動捕捉係統,可以看出對於表情的還原非常精確,慣性運動捕捉係統是做不到這一點的。還需要展示的是,動作動畫的重定向。前麵說過了,動作師在是骨骼的層麵上工作,而不是模型。因此,我們做出的動作動畫,可以使用在不同的模型上{隻要它們使用了相同的骨骼}:麵部表情捕捉-重定向。這能夠大大減少我們的工作量。
工作提交:作動師完成工作以後會得到大量的動作動畫片段,包括但不限於:走、跑、蹲、跳、攻擊、防禦、受傷、死亡……動作動畫片段展示-劍盾戰士。配上材質貼圖,大概是這個樣子:動作動畫片段展示_士兵;再看一個《刺客信條》的動作吧:刺客信條動作動畫展示
3.9guidesign&otherartork
實際上我將略過這一環節。因為我認為遊戲中最好的ui,就是沒有ui。但這將是遊戲發展的一個趨勢,我看到許多大廠小廠都在加入這條道路,去ui化:隻在最必要的地方,用幹擾力最小的方式,給予玩家最需要提示。把屏幕空間,還給遊戲世界,我們不需要那麽多文字與圖標。講到這裏,alpha階段的美術工作已經走過一遍。我們可以把必要的gui,和前麵做的所有3d美術資源{模型、材質、動作}提交給遊戲設計師。在這個過程中,technicalartist將發揮一個重要的作用:他將編寫shader腳本,der也是一種美術資源——der{著色器}告訴電腦如何用特有的一種方法去繪製物體。
比如在上麵這幅對比圖中,整個場景使用了完全相同的模型、材質貼圖,並且處於同一個時間狀態,但是因為使用了不同的shader,最後得到的效果也完全不同。通過shader,我們可以讓一個非常寫實的物體,變成卡通風格、水墨風格、像素風格,可以讓它變成半透明,或是隻有一個剪影。可以大致參考:
來自garethstockell的shader效果對比。
shader的製作,屬於編程工作,並且需要具有計算機圖形學知識背景{學習計算機圖形學,需要具備線性代數知識}。那個以為做美術工作就是畫畫的少年,你有什麽想法嗎?
如果沒有,那我們就進入聲音製作的環節咯。{你怎麽沉默低頭不說話了……}
3.10audio&music
製作遊戲不僅需要畫麵,還需要聲音。聲音包括:音效、音樂、配音。
3.10.1、音效製作。包括開槍的聲音、汽車的聲音、腳踩在木板閣樓上的聲音、釋放技能的聲音、點擊遊戲菜單的聲音。最基本的製作方法是實錄,比如《武裝突襲》為了製作真實的槍聲,去軍營裏實錄了所有武器的聲音。還有一種方法是擬音,這是更為經濟實用的方案,用這兩個視頻來了解一下擬音藝術吧:擬音師忽悠女盆友、奇妙的工作:擬音師。我們做遊戲的其實很少有成立專門的擬音組,去製作專門的音效,這在aaa級的stroytelling遊戲製作組中可能會有。我們更喜歡的是使用商業音效庫,裏麵包含了許多現成的音效,像這樣:
另外,我們還會用聲音合成器去製作一些現實中並不存在的聲音,比如說傳送門的開啟聲。
3.10.2、音樂製作。專業術語是:編曲。編曲過程可以參考下麵的視頻,考慮到沒接觸過編曲的人可能看不懂,稍作解釋:視頻中音樂家carolkay一個人用mid鍵盤,先後編寫了:大鑔、大鼓、日本太鼓、小鼓、小號、長號、大號、吊鑔、小提琴、大提琴、貝低提琴、貝斯、豎琴、銅鈸、格洛克、吟唱、長笛、定音鼓、鋼琴、法國號等樂器的音軌:遊戲配樂編曲過程。現在的遊戲音樂,甚至其他流行樂、交響樂什麽的都是這麽編寫出來的。一般是先在軟件裏編好,然後為了追求音質後期再找交響樂團實錄。想要編寫優秀的音樂,樂理是基礎知識,然後需要去熟悉了解不同的樂器不同的音色。編曲和樂器演奏是兩回事,但是具備多種樂器演奏能力是最好的。補一句,在傳統的音樂編曲上,製作遊戲音樂往往還需要考慮超長時間的loop循環,讓人聽一天也不會膩的單曲循環。還有需要程序控製的動態地音樂節奏切換、和弦進行切換、混響效果器切換,以適應遊戲中的事件狀態。所以遊戲配樂會有一些不同。
3.10.3、配音。為npc配音,為過場動畫配音,為遊戲角色的語音包配音。這個工作很好理解,現在不僅在stroytelling遊戲中很重要,在gameplay遊戲中也越來越重要,想一想《守望先鋒》、《dota2》,打著打著萊因哈特會來一句:“護盾快撐不住啦!”;小美會說:“嗨呀~好氣呀~”。但是做這份工作的人群,在國內的生存狀態並不理想。我認為需要給予他們更多的關注,看這兩個視頻了解一吧:“替”聲世界之生存現狀;走進“替”聲世界:夏磊_演講。
聲音資源製作和美術資源製作就到這裏,這些資源統統都會交回到遊戲設計師的手裏。他們在遊戲引擎中把這些資源整合到一起,來完成真正的遊戲製作工作。
3.11leveldesign
在gamedesign方麵,我們剛剛講到了stroyboarddesign。經過這項工作,我們設計了玩家的遊戲流程。在這之後,我們需要進行進一步的設計:在遊戲流程中的具體細節。就像我展示出的我曾經的工作內容一樣,我們會去考慮玩家在流程中的每一步的感受,會去設計我們想要給他帶去的體驗。這就是storyboard之後的gameplaydesign的工作意義。與原型階段的gameplaydesign有一些區別。這更像是做pre-experiencedesign。
經過二次gameplaydesign,經過美術和聲音資源製作工作,我們已經得到了製作一個世界所需的所有資源。在這個基礎上,我們可以開始進行leveldesign我認為可以分成兩層:1、關卡{qia}設計;2、場景搭建。在我的語境中,關卡設計是一種遊戲性設計,會去考慮玩家的行動路徑、決策方案,會考慮戰鬥掩體的布置、地勢高低的布置等元素。這項設計工作與它前置的gameplaydesign密不可分。
場景搭建呢,是一份藝術工作,目的是在遊戲引擎中還原場景原畫師所設計的遊戲場景。其過程可以參考如下:
來自leveldesigner-maverick的快速遊戲場景搭建-森林鐵路以及快速遊戲場景搭建-村莊;
來自leveldesigner-kaan?ztuzun的快速遊戲場景搭建-城市;
上麵三個是unreal4的場景搭建,下麵放一個unity的:
來自leveldesigner-maverick的快速遊戲場景搭建-入海口;
這些都是自由的遊戲場景搭建,實際工作中,房屋的位置、街道的轉折、物體的擺放,都已經由關卡製作的過程預先製定了。在關卡製作中,設計師們用各種簡陋的方體來代替物品,定製關卡中所有碰撞體積的位置{就跟原型階段所做的事情一樣}:
左圖是艾興瓦爾德的關卡設計示意圖,右圖是完成場景搭建後的效果。完成場景搭建後,我們的遊戲基本就擁有了華麗的外表。還記得原型階段給大家展示的截圖嗎,來看一下它們對應alpha階段的截圖對比:
真是激動人心的時刻啊,我們的遊戲完成了脫繭蛻變,完成了華麗麗的升級!但是我們要知道,這背後是許多藝術家、設計師揮汗如雨的辛勤工作。他們可能經曆過靈感的匱乏,經曆過方向的迷失,經曆過未曾預知的錯誤,經曆過拍桌叫板的爭吵,經曆過委屈與絕望,經曆過一年又一年紛飛的雪。看著這些偉大的遊戲的畫麵,鬼知道在這背後我們經曆了什麽。
3.12experiencedesign
遊戲還沒有結束。我們要做最後一次設計工作。我稱之為體驗設計。體驗設計,需要去考慮玩家從點開遊戲的桌麵圖標開始,進入遊戲看到的第一個畫麵,第一個菜單,聽到的第一個聲音,一直到玩家正式進入遊戲場景,開始的第一個事件,收到的一個獎勵,一直到玩家第一次保存並關閉遊戲,下一次再進入遊戲,遇到的最大的挑戰,最緊張的時刻,最刻骨銘心的體驗,一直到玩家人生中最後一次關閉遊戲,把它永久地留在硬盤的某個角落,在這之中會經曆的一切。這項工作會整合所有的遊戲資源{美術上的、聲音上的、故事背景上的},去整體設計玩家的遊戲體驗。就像旅行體驗設計師會做的那樣。
在許多遊戲的製作成員名單中,可能並不會看到experiencedesigner這個詞。因為體驗設計,是一個團隊的工作,整個團隊的工作。每一個環節都會為最終的體驗負責。當然,我建議由熟知產品設計的遊戲設計師來領導完成此事。
到此,遊戲已經完成了alpha階段,也意味著遊戲完成了全部的開發工作。
4、beta階段
beta階段的主要工作,就是對遊戲進行測試與迭代。qualityassurance團隊會進入製作組,對遊戲進行全方位的驗收。他們會去測試遊戲中的每一個按鍵,每一個功能,找出任何出現異常的地方,然後報告給directors,讓他們去修複和完善。同時他們也會再一次檢驗遊戲的玩法。但願他們不會在這時提出否定的意見。否則製作人會崩潰的。暴雪曾因為qa測試無法通過,最後放棄了已經開發了7年之久的《泰坦》,chrismetzen,曾主持過《魔獸爭霸》、《星際爭霸》、《暗黑破壞神》、《魔獸世界》開發工作的暴雪副總裁,崩潰了。在頂著巨大的心理壓力,收拾殘局,製作完《守望先鋒》後,他選擇了離開暴雪,離開遊戲界。這是為什麽,我們需要有原型階段,我們要在原型階段檢驗遊戲的玩法,對待複雜玩法的遊戲,我們都小心翼翼。同時我也致敬暴雪,他們寧願割掉自身的血肉,也不願給玩家一個無聊的遊戲。
好了,我致敬的方式是放兩個ea的遊戲視頻……pia!
還記你在原型階段下載下來玩的那個ravenfield嗎?想知道它在完成alpha和beta階段之後是什麽樣子嗎?請參照:《戰地4》聯機對戰實錄;《戰地4》官方聯機演示。
結語
到這裏,整個遊戲開發流程已經講完了。謝謝你能夠耐心地一直看到這裏。,這個流程是我根據古今中外的實際項目和自己的理解總結出來的理想模型。它可能並不匹配任何一個市麵上遊戲的開發流程,也可能不匹配小團隊獨立遊戲的開發流程。但我盡可能的把各類遊戲開發中需要的工作都整合了進來,讓大家看到一個全麵的工作介紹。有些工作,在你們的遊戲中可能不需要出現,比如《球球大作戰》就不需要highleveldesign,或者你們開發2d遊戲就不需要modelling及之後的工作。甚至有的開發團隊不采用這樣的瀑布流開發模式,而是采用敏捷開發模式{會一邊製作一邊設計,根據玩家的反響實時調整設計方向},這都沒有問題。隻是我個人傾向於采用完整的這套開發流程來製作遊戲。
希望在閱讀完本篇文章後,你已經對遊戲開發的流程有了一個大致的了解。至少在設計和美術上,你已經心裏有數。在分享美術部分的時候,因為這是看得見的部分,所以我高興能夠用視頻和圖片的形式來輔助講解。雖然收集和篩選這些素材花費了我巨大的時間,但是能起到一定的幫助那我便覺得值得。設計部分能夠展示的相對較少一點,程序部分就更少了,幾乎沒有。這也是因為程序部分即便是用視頻圖片還是用文字,都無法充分地展現其精髓。如果直接拿程序代碼出來,絕大部分人又根本無法看懂。但是不用過於擔心對於程序知識的欠缺,因為在本專欄正式引導新人自學遊戲開發的第一部分,我們就會從編程開始。然後逐個地,把每一個工作內容,文中和視頻中展示的每一項技術,每一個知識模塊都學一遍。隻要你學有餘力,就可以跟著我把遊戲開發的所需的所有技能都學一遍,成為一個全能遊戲設計師。在了解所有流程的基礎上,如果你仍舊隻是對某一部分感興趣,那麽你大可規劃好你自己的職業定位,就像開篇所述的那樣,然後針對性地學習,並深入鑽研。
擴展閱讀:
歐美3a遊戲公司的遊戲設計與製作——jiayangyang
北美遊戲業入行門道和從業體驗——avatarye
想要自己做一款遊戲,需要學習哪些知識?——竇月汐
這裏是知乎專欄《自學遊戲開發》第二篇文章:《一個遊戲是如何被設計和開發出來的》。我是竇月汐。如果你是第一次看到本專欄,建議你跳轉到自學遊戲開發--關於本專欄進行了解。如果這篇文章和本專欄對你所幫助,希望你在看到其他遊戲人需要幫助時也能把本專欄推薦給他,向每一個遊戲人致敬。
我公開了我的一個興趣交流群,群號為:474891082。{為避免無聊人士,設置了入群費}
是時候嚐試解決這個終極問題了。
玩遊戲很浪費時間但為什麽那麽多人沉迷其中?
玩遊戲是浪費時間嗎?
玩遊戲真的浪費時間嗎?
為什麽很多人覺得玩遊戲浪費時間?
我想打遊戲,但覺得那很浪費時間,怎麽辦?
知乎上這類的問題多得都可以譜上曲子唱出來了。
那天看到@延靜齋孫回答:
人活一輩子最終都要死,到底幹什麽事不是浪費時間呢?
看得我也是一笑,
瞎說什麽大實話呢。
這麽說話嚇到小朋友多不好呀。
實話就要慢慢說。
1
“xx是不是浪費時間”通常對應著“xx有沒有用”這樣的問題。
玩遊戲有沒有用?
看藝術有沒有用?
上知乎有沒有用?
通識教育有沒有用?
擼管有沒有用?
...
而一般的回答都從有啊有啊有用啊出發,
藝術可以陶冶情操,可以裝逼,可以讓你與更多人談笑風生;
遊戲其中有很多的曆史、地理內容,可以豐富你的知識;
遊戲還可以鍛煉你的手眼協調能力,提高智力;
但是其實這都不過隻是拿一些附帶的次生品來強行回答罷了。
何不就大方地承認:
玩遊戲沒有用!
卵用都沒有。
2
所謂“沒有用”,指的通常就是其要達成的目標沒有意義。
很簡單,
比如你把一堆書從書架上拿到地上再拿回去;
比如說你和朋友約定看誰可以單腳站得久;
比如你捧著自己的大臉對著窗外發呆;
...
在一般人眼中,它們當然比不上:
參加一次勞動,
參加一次實習,
努力工作,
認真刷gpa,
等等。
因為前者並不能有什麽“成果”,
而後者這些“有用的東西”總是更有收益。
如果困難的活動如此美好,必定是指向某種目標:挑戰是目標的達成。
但是問題在於,
如果目標本身是好的,那麽追求過程的重要性就會被忽略;
一旦成功了,這個活動也隻是被賦予工具性價值,或被視為好的手段。
這種生活需求層麵的價值會妨礙我們注意到這件事本身所具備的價值。
我們可能會忘記本該在和朋友遊戲過程中的歡聲笑語;
我們可能會忘記看書過程中寧靜的燈光和紙張的觸感;
我們可能會太執著於追求生活的富足而忘記了自己當下就正在活著;
所以,
當某件事目標沒什麽用的時候,做這件事的選擇就會讓其本身的價值凸顯出來。
那麽,是否存在完全沒有用的東西?
是否存在一種完全沒有“生活需求層麵”目標的事物呢?
好讓我們可以專心著眼於事情本身的價值呢?
有,那就是遊戲。
在遊戲中再清楚不過了,遊戲的目標不具有內在價值。
rogercaillois在《e》開篇就說:
ilevoqueuneactivitesanscontrainte,maisaussisansconsequencepourlaviereelle.ils'opposeauserieuxdecelle-cietsevoitainsiqualifiedefrivole...eneffet,lejeuneproduitrien:nibiensnioeuvres.ilestessentiellementsterile.
遊戲是一個沒有強製性,但是同樣於現實生活沒有任何結果的活動。它與嚴肅相反,被視為“無聊的”...實際上,遊戲什麽都不產出,沒有好處也沒有作品。它就是完全無用的。
哲學家thomashurka也在《蚱蜢》{在這篇文章中提到過}一書的導讀中提到過:
遊戲的前遊戲目標,比如跑過跑道,把高爾夫球放洞裏,這些東西本身都是微不足道的。
對於遊戲,目標理應是不重要的,
這種“不重要”正是遊戲的價值所在。
所以就很清楚了,
就如對於現代電子遊戲,得到某些遊戲內的數值,達到某個段位,拿到某些五星禦魂,刷刷到多少多少級這些目標其實根本就是微不足道。{隻是某些虛幻的數值調整罷了。
但是很多人的困境就在於:
誤把遊戲的目標當做遊戲的價值。
他們用評價其他功利物的思路來評價遊戲,自然而然地得到遊戲無用的結果。
看到自己有的時候為了遊戲的目標{實際上是微不足道的}而廢寢忘食,醒悟過來後發現這些目標對現實沒有任何價值{當然了,這就是遊戲的特點}。
明知道其實微不足道,但是我們卻依舊去追求,這樣的原因很多。
最基礎的原因就是大腦其實分不清楚現實的獎勵與虛擬的獎勵,虛擬和現實的獎勵對於人類7萬歲的大腦來說是一樣的;而遊戲中的獎勵大部分都是被設計好的,簡單而廉價。
不管我們是如何沉迷的,我想說的是:
我們錯了。
這種對待遊戲的方式是本末倒置的,
錯把遊戲的目標當做遊戲的目的隻能不斷地扼殺遊戲的樂趣,
因為這時候的你將遊戲當成了工作。
{需要辨明的是:玩遊戲時對遊戲目標追求是一種嚴肅性的遊戲態度,是對規則的認可;而我指的對目標的追逐是指將目標看得太重而失去了過程中的樂趣,這兩者不矛盾。}
3
再讓我解構一層吧。
為什麽我們會認為“事情一定要有結果”或者“事情的結果才重要呢?”
{“結果不重要”通常隻出現在我們沒有取得好結果的自我安慰中}
演化心理學提供的觀點是:
即使到現在,我們的大腦和心靈依舊是以狩獵和采集的生活方式在思維,這個世界還牢牢地在我們的腦袋中。就像即使現在甜食如此泛濫,我們還是如甜食稀缺的石器時代時的人們一樣,保留著想要大口吃下高熱量食物的某種。
即使在這個並不會輕易餓死的、生物性貧窮已經得到基本解決的環境中,我們依舊保留著一種渴望不斷囤積,不斷工作得到積累的思維,當然這一種思維也有可能是在農業革命後養成的。
用《人類簡史》式的文化人類學視角來看:
所謂形塑我們價值觀的、讓我們覺得有用、無用的衡量標準的不過是文化罷了:
資本主義發展帶來的資本主義倫理{經濟增長就是善的}與消費主義,
帝國崩潰後形成的新型民族主義價值,
...
林林總總。
這並不是謊言,而是一場想象,
而這種想象塑造了我們的價值觀,我們的,
我們在文化之中生活、呼吸、感受著悲喜,
這是不可避免的。
在這樣無對錯或絕對價值的文化中:
我們對生活所賦予的任何意義,其實都隻是錯覺,本質上都完全相同,沒有高下之分。所謂的快樂很可能就是“讓個人對意義的錯覺和現行的集體錯覺達成同步而已。”
所以我們不需要用大眾文化的價值觀去衡量“玩遊戲”這一件事情的價值與否,我們隻需要自己認為有意義就足夠了。更何況如今的消費主義讓我們這群steam剁手黨也生發出一種龐大的群體文化,並且不斷發展,在這樣的文化之中,社群和意義皆有。
在某種意義上,
真正熱愛遊戲的人,往往是最不功利的人,
也往往是最不會為各種功利主義的考量所影響的人,
他們是自由的人。
4
所以可以下結論了。
玩遊戲是不是浪費時間?
這取決於你。
如果你玩遊戲的時候:
認為遊戲內的目標是最重要的,並且始終被其牽著鼻子走,那麽你在浪費時間。
如果你覺得遊戲對你沒有意義,那麽你在浪費時間。
5
所以,
我們應該怎樣對待遊戲並且保持一個良好的遊戲態度呢?
首先,認識到遊戲就是無用的。
遊戲的價值隻在其過程,所以隻需要盡情地享受遊戲的過程就好。
不要因為多巴胺或者是某些廉價的反饋而沉迷,
也不要因為遊戲目標很誘人而被目標所牽引,走向工作式的勞動過程。
其次,認識到自己玩遊戲是自我的選擇。
玩遊戲並不是對於現實的逃避,
並不是對自己反饋係統的妥協,
玩遊戲就是自我自由自願的選擇
隻要你覺得遊戲之於自己,現在比其他東西有意義,那麽現在就去玩就好了。
6
在這個社會中,密密麻麻的人擠著嚷著,尋找著自己的價值和意義,
常有人自大地宣揚自己的價值並且用其衡量他人,
形成各種社會的“主流價值”,
讓那些本來有自己價值的人們都開始質疑自己,
甚至不得不為此偽裝或者強行改變。
但是人都是要死的,
對於不走向佛教的我們,
用自己能找到意義的方式
活過,笑過,哭過就好,
就讓你的悲喜自然地綻放和舒展。
參考書目:
1.尤瓦爾·赫拉利:《人類簡史》北京:中信出版社,2014年。
2.伯爾納德·舒茲:《蚱蜢:遊戲、生命與烏托邦》臺北:心靈工坊文化,2016年。
caillois:lesjeuxetleshomard,folioessais,1967.
4.題圖來自《西西裏的美麗傳說》,自己截的。
5.本來之前的文末有一首詩,想想刪了。但是還是列出名字:《山上》byrupertbrooke{1887-1915}楊憲益譯這個答案末尾可見
參考文章:{然而都是我寫的?{????w????}?}:
勸君莫再談“遊戲”
如何挽救沉迷守望屁股的玩家
寫在卸載《陰陽師》之前
遊戲與人文
個人主頁:@葉默哲
想法創意都有了,就差一個程序員了?有沒有想過:也許你配不上一個程序員。
成為一個獨立遊戲開發者,我認為他自己首先應該成為半名程序員。
這裏是知乎專欄《自學遊戲開發》,在上一篇文章《一個遊戲是如何被設計和開發出來的》中,我們已經概覽了一個大型遊戲的開發過程。但是由於程序方麵的內容不便可視化展示,所以那篇文章主要是展示了設計和美術製作流程。現在我們需要來講一講的程序方麵的事情。首先,我們需要認識到:
1、掌握編程技能的重要性
如果你想成為一個獨立遊戲開發者,不會編程幾乎是不可能的事情。就像一個廚師不會用刀案鍋鏟。“電子遊戲”是一個什麽?我們這裏不談玩法設計,它的物理本質就可以說是一個計算機應用程序{程序是一串cpu指令、指令是一串代表01的電磁信息集合;請勿再溯源}。開發遊戲其實就是開發一個程序{軟件}。而開發程序的過程,我們把它叫作編程。隻有學會了編程、掌握了一款遊戲引擎,我們才會真正明白:遊戲,作為一款軟件來說它的本質是怎樣的,它是如何運作的。你不知道汽車是如何工作的,你就製造不出一輛車。了解程序,就是了解遊戲在電腦上工作的原理。掌握這些知識,不單單是程序員的立身之本,也應該是每一位遊戲設計者的基本素養。再者,如果你從未接觸過遊戲開發,現在開始學習任何其他遊戲開發知識,你是不可能在兩個月之內自己動手製作出一款可玩的遊戲的。但是,你學習編程與遊戲引擎的使用,你便能做到。群友真實經曆,@小小故事匯在我的引導下從職業廚師開始學做遊戲,經曆兩個月的學習之後已經能夠獨立做出“飛機大戰”那樣可玩的小遊戲了。你若學習美術、或是“設計”,這都不可能實現。這是編程的強大之處。
作為一個專職的“遊戲設計師”{遊戲策劃},並不是隻會拍腦袋出主意就行了。我認為一個合格的“遊戲設計師”至少應當能夠編寫邏輯腳本,把自己設想的主意用代碼實現出來,不要把任何細小的事情都塞到專業程序員的待辦事項裏。職業的程序員會為設計師提供底層的服務,讓設計師不用操心計算機底層的事務,隻要把精力放在遊戲邏輯本身上。事實上,現在各大遊戲引擎的設計思路都是如此,比如unrealengine4強大的blueprint係統和cryengine推出的flograph和schematyc係統,都是為設計師們服務的,讓他們不用敲任何代碼就能編寫出基本的遊戲邏輯{基於可視化編程}。為了讓設計師們能夠自己動手豐衣足食,程序員們已經做出了許多努力,想成為設計師的你,有什麽理由不學習一下基礎編程呢?千萬不要想:程序的事情就交給專業的人來做吧。“我”就不需要學了。這種人,就是那種常常說“就差一個程序員了”的人;這種人,也常常是那種隻會空想,給團隊製造試錯成本的那種人。因為他們不懂程序,但要讓別人來為他的想法買單。他們不知道他們臨時冒出的一個“好主意”可能要讓一整個團隊忙活好幾個月。所以,我建議,每一個想要成為遊戲設計師的朋友,都接觸學習一下編程。
你隻是想靜靜地畫圖,做一個安靜的美術人員?如果你隻是想平靜地度過這一輩子,順便在遊戲製作領域出一些力,貢獻一些藝術力量,那麽你隻需要專注於升華自己的藝術上限就好了。如果你想對這個領域搞點事情,比如說優化一下美術資源的製作流程,提升遊戲畫麵的行業標準,那麽你就不能隻是會用photoshop畫畫圖、用3dsmax建建模,你需要知道photoshop這款軟件是怎麽被開發出來的,它的每種圖層混合模式采用了什麽算法,這些算法用代碼如何實現,如果我要擴展它的調色盤功能應該從哪裏開始編寫。一個能回答這些問題的藝術家,和一個隻會用ps畫畫的藝術家,對於工具的理解是完全不同的{假設他們的藝術修養一樣高}。而前者,更有可能推動整個數字繪畫領域向前步進。為什麽那些藝術創作軟件都出自於國外的開發者呢?開發一款藝術創作軟件,不僅需要專業的程序員,更需要具備編程素養的藝術家們來領導。而我國的藝術從業者們,有幾個具備紮實的編程能力?而往往一說到這些,那些“大師”們就會開始貶低工具的重要性,轉而強調藝術本身。從“從藝動機”層麵,許多選擇藝考的人其實就是因為文化成績太差;從思想層麵,幾乎少有藝術家會想去改進他們所用的工具。如果你不是這樣的人,如果你想要成為一個推動數字藝術領域進步的人,有機會的話,你就應當認真了解一下計算機的世界。另外,回到遊戲美術本身,一個遊戲最終如何展現你畫的圖、你做的模型,這完全是由渲染管線和shader腳本來控製的,這些都是代碼寫出來的。所以你認為遊戲美術隻是畫畫?那隻是其中的一個小環節。當然了,說這些隻是希望你能對遊戲美術具備更多的認識。至於初學,我還是不會給你徒增痛苦讓你去學編程的。別緊張,從窗戶上下來吧朋友。
包括做音樂也是,現在編曲軟件之強大,無不是具備音樂素養的程序員們的功勞。奧巴馬說每一個現代人都應該學一下編程,不是隨便說說的。寫到這裏,我希望每一位讀者都已經在心裏提升了掌握編程能力的重要性。
在後文中,我們開始來認識一下計算機與編程的世界,再之後是編程與遊戲製作的關係,最後是編程學習路徑。我會力圖讓每一個高中生看到下麵的文字時也能夠理解我在說什麽,你不用具備什麽前置知識,嗑著瓜子順序看下去便好。
2、計算機與編程的世界
是先學c還是c#?還是java?還是python?還是unity?還是opengl?首先你都知道這些是什麽嗎?每一個想學遊戲編程的人都經曆過這樣的問題:入門編程語言該學什麽?我在知乎問答想要自己做一款遊戲,需要學習哪些知識?中明確說明了先學c#再學unity。但是仍然有無數人私信問我到底該先學c還是c#。這不是因為他們沒有認真看我的回答,而是他們不知道為什麽要這樣安排,以及很多其他前輩建議他們要先學這樣或那樣。道聽途說,隻言片語的回答是解決不了大家心中的困惑的,因此在本篇文章中我想為大家介紹一下計算機和編程語言的世界,這可能會花費一些功夫,因為從來沒有人能夠在一篇文章的篇幅內完整地介紹整個計算機的世界。我也隻能盡力嚐試,讓大家了解那些語言各是什麽,之間是什麽關係。在此章節完成之後,我再會解釋我們學習安排是如何設置的。
請注意,我現在要開始裝逼了:這件事情如果要溯源的話最早可以追溯到亞裏士多德開創出“邏輯學”;19世紀的喬治·布爾{georgeboole}在此基礎上發展出“數理邏輯”{如果你已經開始學編程的話一定會知道關鍵字:bool;3dsmax裏也有“布爾”運算。就是以此人之名。};20世紀克勞德·艾爾伍德·香農{claudeeloodshannon}在“數理邏輯”基礎上發展出“邏輯電路”。“邏輯電路”就包括了我們高中所學的:繼電器、與門、或門、非門、異或門等等。利用這些工具,我們就能夠製造出會計算加法、減法的邏輯電路。{還有非常重要的“觸發器”、“振蕩器”等等。後來的一係列發明,比如說:電子管、晶體管、集成電路可以統統看成是對前麵技術的升級和替換。}我們得到了會計算的邏輯電路,又經曆了一係列的升級和優化,那麽現在我們的計算機是如何運作的呢?首先可以分為兩個層,一層是cpu&存儲器的電路實現,一層是0與1的世界。如果我在這裏講電路設計的問題,我想很多隻是單純想做遊戲的人可能會瘋掉{其實是我講不來}。有一本很好玩的書,叫《穿越計算機的迷霧》,作者以閑談扯淡的方式,從電與磁的發現一直講到了cpu的實現,作為計算機硬件入門是一本不錯的興趣書。關於硬件,我們業餘選手可以不用知道那麽多,隻要知道:cpu會執行我們的一些命令,我們的命令是存在“存儲器”裏的0101010110101001010…這樣的數字來代表。
作為常識我們知道,計算機隻認識0和1{至少你現在知道了},那麽我們就來看一下它是如何運用0和1來工作的。
匯編:
請注意為了方便講解我就自己創造例子了,可能和實際情況有出入,但是更容易幫助理解。先看一下這一行代碼:
000000010000110000001010
看不懂?普通人類當然看不懂,但是機器看得懂,而且機器就隻能看懂這種形式的信息。這個叫做機器語言,也是二進製碼。二進製碼是構成如今計算機世界的基礎,我們電腦裏的任何文件、應用程序歸根結底的都是以二進製碼的形式存在的。比如:我們常常能夠在電腦的文件夾裏看到這樣一個文件夾:
這其中“bin”就是單詞“binary”的縮寫,意思是二進製文件。打開bin文件夾,xe和.dll文件。對於我們來說,.exe就是一個應用程序嘛,比如說:xe、xe。
大家難道沒有好奇過:為什麽應用程序的的後綴是“exe”呢?原因:“exe”是英文詞組“executablefile”的縮寫,意思就是可執行文件。“可執行文件”的意思是:可以被cpu執行的文件。我們前麵說過,cpu隻能執行0101001這樣的指令。所以“可執行文件”其實就是這種指令的集合,也就是是一堆二進製碼“0000111101010011001001100000111101010011……”。所以它才會常常被放在bin{binary}文件夾裏。{有沒有發現,那些曾經我們看不懂的文件夾結構、文件名後綴,其實設計得都是有道理的}
我們玩的每一個遊戲,它們的本質都是這樣的二進製文件。所以編寫一個遊戲,其實最終最本質就是編寫出這樣的文件:0101010101110010101010101001010101……可是……
我知道這也太特麽為難人了!鬼看得懂這些01是什麽意思啊!{鬼:我也看不懂啊~}但沒有辦法,現代的計算機隻能識別這種簡單的機器語言。{即便是量子計算機也是玩01這樣的量子比特}為了讓這些機器語言更容易被我們人類所理解,先驅們發明了匯編語言。{對,就是那個大家都說最難寫的編程語言“匯編-assemblylanguage”}但其實匯編語言很簡單,有了匯編,我就能跟你解釋前麵的0011是怎麽回事了。再來看之前的那行代碼:
000000010000110000001010
請注意這不是一串隨便瞎寫的0和1,它是有規律的!你們看,以八個0或1為一組,每組中間有個空格。這其中,每一組我們叫做一個“字節”{byte},每一個0或者1,我們叫做一個“比特”{bit}。第一個字節:00000001,假設我們規定,它代表一個命令:加法{add}。我們再規定,如果cpu遇到“加法”命令,它就把後麵兩個字節相加,把結果存到前一個字節所在的地方。於是我們的cpu就能夠計算加法了。規則是給它這三個數:
第一個是表示加法命令的“00000001”,第二個a和第三個b是兩個加數,每次都不同,所以我用x表示那些比特位。同樣的道理我們能夠製定出減法命令、乘法命令、複製命令等等。比如複製命令:我們規定“00001111”代表複製命令,如果cpu遇到“00001111”,它就把後麵第二個字節的數據,複製到後麵第一個字節的數據所表示的位置上{注意這些字節裏的二進製數不僅可以當數字用,也可以當命令用,也可以用來表示儲存位置}。於是我們就有了複製數據的功能了。
這些功能,都是cpu中的邏輯電路為我們提供的,我們隻需要發送規定好的指令便能使用這些功能。注意,指令的本質是一串0和1代表的信息,但是我們很難去記憶和區分00010011和01001101這樣的數字,所以我們就用“add”代表00000001{加法指令},用“copy”代表00001111{複製指令}。add和copy在英文裏本來就是加和複製的意思,這就很好記。而“add”、“copy”等這些指令集合起來就形成了匯編語言。它實際上就是把機器語言{一串0和1}直譯成了英文單詞。一般cpu認識的指令不多,就那麽十幾個{加上變種一般也就幾十個}。所以匯編語言中的指令一一對應也不多,大致分為三種:
數據傳輸類:複製、加載、存儲……算數/邏輯類:布爾運算、加法運算、自加運算……控製類:轉移、停止……
就這麽幾個指令能幹啥?你別說,我還真有辦法能讓你親自見證一下,就這麽幾個指令,可以讓cpu幹些什麽事。首先,下載《huachine》這個小遊戲。然後開始玩吧。我已經讓群友們驗證過了,不管有沒有學過編程都可以玩幾下。而遊戲的主體內容,其實就是以一種有趣的方式在寫匯編代碼。在過關這個遊戲之後,你會發現你自己用這幾個最簡單的指令,讓計算機實現了一些簡單的功能,諸如:比較兩個數字的大小、判斷一個數字的正負、讓計算機數數、用加法實現了乘法運算、從一組數中找到最小的數……如果你在遊戲裏過五關斬六將實現了這些功能,那麽你就相當於解決了上個世紀計算機科學早期那些先驅們所麵對的問題。給自己一個獎勵吧,點擊文章末尾的“賞”就會看到編程學習大禮包!額,你說你沒有通關?沒關係,最後幾關是比較難,而且這個遊戲隻是為了讓你體驗一下匯編編程的感覺。
現在你會發現,匯編語言其實沒有多複雜,而且比起那些0011的代碼,真是太好識別了。但是那還不夠,比如我要計算一個:
x=y*z+{q/10.5}+p-2
這個自然的表達式人人都能看懂吧?但是用匯編語言寫出來就不那麽好看了:
movx,y
muly,z
divq,10.5
addy,q
subp,2
addy,p
一眼看上去不知道是在幹嘛。而且匯編語言也不夠“自然”,比如我要做一個賦值操作:
x=y;
上麵這種寫法很自然,我們在學數學的時候就是這麽寫的,但是在匯編語言中它是這麽寫的:
movx,y
直譯就是:把y移動到x的存儲位置{這是計算機硬件能夠實現的操作}。再比如:
ifx
這幾行命令,我們用自然語言就能讀懂它在幹嘛:比較兩個數的大小,然後把大的數賦值給小的數。用匯編語言寫就是這樣:
cmpx,y
jlelesscase
jmpskipcase
lesscase:
movx,y
skipcase:
movy,x
用自然語言寫很簡單的三行命令,用匯編寫就需要這麽多行才能實現。
還記得當初我們為什麽需要匯編嗎?因為機器隻能識別0和1構成的指令,但是那種數字指令對我們人類來說很難識別和記憶,所以我們用英文單詞來一一對應那些數字指令,那些英文單詞構成的指令集合就成為了匯編語言。新的知識點:當我們寫出匯編代碼後,在真正交給cpu運行之前,我們得把匯編代碼翻譯成機器碼,因為cpu隻認識0和1構成的機器語言。{因為機器指令和匯編指令是一一對應的,所以翻譯過程很簡單,就像把簡體字翻譯成繁體字}。
先驅們嚐試把匯編語言簡化的過程中,想到:既然要翻譯,那麽我們能不能創造一種更簡潔的語言,然後把它翻譯成相對複雜的匯編呢?就像把文言文翻譯成語素成分更複雜的現代文。
“私見張良,具告以事“———翻譯為———>“私下會見張良,把事情詳細地告訴了他“
從這個想法出發,c語言誕生了。{實際上c語言是在b語言的基礎發展出來,b語言是在bcpl的基礎上發展出來的,bcpl是在cpl的基礎上發展出來的。在cpl之前還有個十幾種其他編程語言。不要管辣麽多,靜靜聽我吹就好。}
{在這兒停頓,看到這裏,新手朋友們可能已經費盡了許多腦細胞了,如果你已經閱讀/思考疲勞的話,可以在這兒停頓,起來走一走看看窗外。也許你並不能全部理解上文的內容,那沒有關係,那不會影響你學習編程,但如果能理解的話,對今後學習將會有助益。我能保證後麵的內容將會越來越簡單。你大可以帶著疑問先閱讀完全文,再回過來讀一次。}
c語言
你們看,匯編語言多複雜,因為它和機器硬件實現的指令一一對應,所以光改造它而不改造機器指令的話毫無意義。所以我們不如創造一種新的語言,然後把它翻譯成匯編吧!語言有許多強大的優點。但是在此,{頂著老師和同行們的壓力}我想讓新手知道的是:函數。
函數是什麽?當我們在寫代碼的時候,可以想象為我們寫的每一行都是一個指令。我們寫十幾行指令來實現一個乘法運算,用二十幾行寫一個排序操作。程序猿是世界上最懶的物種,他們不想每次要做乘法時都寫十幾行代碼。能不能用一行指令代表十幾行指令?就像:
指令集a和指令集b所描述的就是完全同樣的事情。但是a用了7個指令,b用了5個指令。如果你要在這件事件上偷懶,你是願意以a的形式還是b的形式來寫這個指令集呢。我不知道你的選擇是什麽,但是作為世界上最懶的物種來說,程序猿在編程的時候,能少寫一行就不會多寫,能少敲一個字母就絕對不會敲兩個。所以在碰到上麵這個問題時,采用b的寫法無疑。那麽如何實現呢?假設指令集a中的每條指令都是計算機能夠識別的指令,指令集b中的第3條“把大象裝進冰箱”是計算機不能識別的,是我們自己虛構的。但是我們要使用這條指令,因為它對於我們來說很省事。現在很簡單,隻要規定:我們每次寫“把大象裝進冰箱”這條虛構指令,就自動把它翻譯成“打開冰箱、把大象塞進去、關上冰箱”這三條原生指令。翻譯過程不用擔心,前人們已經寫好了各種翻譯器能夠現實這種效果。
那麽,上麵我們虛構出來的那條指令:把大象裝進冰箱。其實就是我們所謂的函數!下麵展示的是在c語言中創建一個函數的形式。
把大象裝進冰箱{大象x}
{
打開冰箱;
把大象x塞進去;
關上冰箱;
}
下次想幹這件事件的時候,就隻要寫一句:把大象裝進冰箱{大象巴拉}。括號裏寫哪頭大象,就裝哪頭。那麽把大象裝進冰箱就是一個函數。
有了函數這個東西,世界上任何複雜的任務都可以被拆分成最簡單的單個任務。當我們學c語言的時候,一定要把函數的用法學好。我認為這也是新手學習c語言的主要任務。
更高級的編程語言
按照學院派的編程學習路線,計算機專業基本都是先學c語言,然後學c++,{然後學數據結構},然後學c#/java/python/js....,然後回去再學匯編呀、電路呀什麽的。想必大家都熟悉這套方案。
其實學習一個東西,從根源開始了解接觸,從底層學到頂層是一個自然的遵循邏輯的學習方式。在計算機世界中,如果說從真正的根源開始學的話,估計真得從邏輯電路開始了,然後學到匯編語言,再學到c語言,再學c++。但是為什麽學院們都選擇從c語言開始呢?一是因為相比起匯編語言,c語言更能夠學以致用,使用起來更方便;二是因為,現在許多流行的編程語言,比如c++、java、c#、python都是類c語言的,首先是語法上都是仿照c語言的風格來設計的,其次它們的一些技術原理是建立在c語言的基礎之上的。它們之間的關係就好比“漢語”與“北京話”、“四川話”、“重慶話”、“廣東話”之間的關係,其中c語言就是漢語。所以c語言作為廣大語言的根基,把它當做入門編程語言來學習是沒有問題的。再以它為中心,向高層語言和底層原理來擴展學習,往往計算機專業的同學到大三就能把整個計算機體係打通。
編程語言發展史
剛剛我們才講到了c語言。並且說了遊戲領域中比較重要的幾種語言與c語言的關係。從這張圖中我們應該能夠更清晰看到這幾種語言的發展脈絡。每一種新的語言誕生,都摒棄了一些前者的弊病,加入了自己優秀的特性。但無論怎樣,每一次編程語言的發展和進步都是在前人的基礎之上進行改良和創造,很少有幾個語言是淩空出世的。正因為這樣,所以編程語言之間的差別,並不是天差地別。並不是我選擇了學習java,就意味著放棄了c#;也並不是我如果不先學c語言,我就學不懂c++。編程語言之間都是觸類旁通的,隻要先掌握了其中一種,那麽其他的語言就能很快掌握。
再看一眼上麵的圖,接下來我來講講c、c++和c#、java、js、python的關係。
c++
首先經過我們上麵一頓瞎bb,已經知道了c語言是怎麽來的,而且知道了c語言的語法比較接近我們的自然語言,語言寫的代碼,在被cpu運行之前,需要翻譯成匯編代碼,再翻譯成機器碼。我們對這個設計很滿意,使用了好多年。後來在使用中,特別是開發一些大型項目,比如用c語言開發一個計算機操作係統時,發現有問題處理起來很麻煩,先輩就對c語言進行了改進。有一次改進後新增了一個叫“類{class}”的功能,這個功能很牛逼,導致那個版本的c語言直接脫胎換骨。這種與眾不同的牛逼需要在名字上體現出來,所以他們學習iphone的起名策略,在名字後麵加了個“plus”。“cplus”=“c+”。一個不夠,那就兩個“cplusplus”=“c++”。{順便劇透一下c#的起名策略:“c#”=“cplusplusplusplus”=“c++++”。}所以!c++是c的升級版,多了一個核心功能:類。語法沒有變,本質的東西沒有變,還需要被翻譯成匯編,然後翻譯成機器碼,再交給cpu執行。所以學校裏安排先學c語言,再學c++,其實這種說法是有點狗屎的,就好像是說:我們先學習“浮水”,再學習“遊泳”。本來我們學習遊泳的過程中就會學習浮水,但是就要把學習“浮水”先說一遍,讓人誤解為這是兩個差別很大的東西。所以懂了嗎?我再說明白一點:學習c++就是學習一個高級版本的c語言,學c++的過程中,就會先把c語言的那些東西學到。所以不存在:如果不學c語言打基礎,就學不好c++。如果再有人問這個問題,就把這一章節貼到他臉上去。
另外補充:c++從c發展出來後,c語言也沒有閑著,自己還是在不斷發展,比如後來發展出了objective-c。嚴格意義上來說,“學習c語言”和“學習c++”確實是不一樣的,因為要去研究它們不同的語言特性。但是!對於沒有學過任何編程的初學者來說,最開始就是學習個語法認識幾個關鍵字而已,根本到不了研究語言特性的程度,所以兩者說法對他們來說幾乎沒啥差別。
c#{和其他高級語言}
我們知道現在cpu廠商inter和aacos和android三足鼎立{我們不知道linux}。可是你們知道上世紀時年代,計算機市場是繁花綻放,各種各樣的硬件、操作係統充斥在矽穀整條小吃街。那個年代的碼農,隨手寫一個程序,並不是寫完就能到處用的啊。就算現在也不是啊。原因很多,可能cpu不一樣,操作係統不一樣....那怎麽辦?先輩們想到了一個膽大包天的方法:我寫一個軟件,這個軟件去模擬cpu硬件,然後再寫其他的程序,把這些程序編譯成這個虛擬cpu能夠執行的機器碼,然後讓虛擬cpu去執行程序。{請再讀三遍}
這樣,隻要所有的電腦都提前裝好我這個虛擬cpu軟件,那麽其他那些雜七雜八的軟件統統都在我上麵可以運行了!完美解決跨平台問題。
有了這個想法之後,先輩們就開始動手去寫這個牛逼哄哄的虛擬cpu軟件了。他們用c語言或c++來寫這種後來被稱作“虛擬機”的軟件。這種事情都能幹得出來,他們就順便又為自己的“虛擬機”發明了專門的編寫程序的語言{真實因果關係是先發明語言,從而開發對應虛擬機}。java語言對應jvachine},c#語言對應.framork{你們玩遊戲的時候肯定裝過這個},python對應pythonvirtualmachine......
看到這裏,聰明的你已經看破了真相,原來c#、java、python編寫的程序都不是直接交給真正的cpu運行的,而是交給了一個模擬cpu的軟件運行的!把我們的程序交給了另一個程序來運行!把我們的程序交給了另一個程序運行!明白嗎,為什麽那些程序猿都說c#沒有c++快。因為c#寫的程序交給了c++寫的一個程序來運行!java寫的程序也交給了c++寫的程序來運行!python寫的程序也交給了c++寫的程序來運行!再重複一遍就瘋了……
到現在為止,我們解開了一個新手十大困惑之一:為什麽c++比其他語言更快。現在我們還在章節“計算機與編程的世界”中,接下來,我們要聊一聊那幾種高級語言的不同點,以幫助我們搞清楚新手十大困惑之首:我應該選哪個語言開始學編程!
不同高級語言使用感受
這麽說吧,當年我才大二的時候,隻學過c++。從沒有專門學過一天其他語言。在那個背景下,我能夠用c#在unity寫小遊戲,我還用java在androidstudio裏寫過一個貪吃蛇。我可是一天的c#和java都沒學過。為什麽我能做到呢?因為主流編程語言的語法基本都一毛一樣,根本就不用怎麽學啊。那種差別就像東北話和天津話的差別一樣,大家都是從漢語出來的,誰聽不懂啊。為了證明幾種語言語法上真的很像,我寫了一段偽代碼,並翻譯成不同語言版本,請找不同:
看,這三份代碼是在幹同樣一件事情,是用三種語言所寫的。除了第6行比較特殊,其他部分你們能看出什麽區別嗎?是不是真的很像?如果掌握了其中一中語法,另外兩種有什麽難的呢?無非就是注意一些細節不同點。總有些人問第一個編程語言學什麽,我通常回答“都行都行”,看看上麵這張圖,我不是瞎說的啊,對於學習些基本語法,了解基本概念,先學哪個真的都行{反正都一樣}。如果把我們學做遊戲比喻成學做飯,語言呐、環境呐這些東西,就可以看做是廚具廚房。學做飯的時候,重要的是學習菜肴怎麽做,烹飪方法心得,廚具工具的用法是基本的也是次要的。我們隨便選個廚房開始學做飯,一旦學會了,那麽在另一個陌生的廚房裏難道就做不出飯菜了嗎?不會的。就算是另一個廚房,就算那個廚房裏的鍋、碗、灶、鏟奇形怪狀從未見過,習慣習慣也不影響我們做飯呀,因為工具畢竟還是那些,變其形式而不變其本質。
那麽在這種情況下,我們應該選那個語言開始學習呢?總要有一個選擇。這個選擇就是c#。為什麽是c#呢?說一個很簡單的理由,因為unity是用c#寫代碼{不考慮js}。而unity是我最推薦新手學習的遊戲引擎。所以學了c#就直接去用unity咯。如果有人問:“我想用unreal4或cryengine,我能不能從c++開始學呢?”當然可以呀。你掌握了c++之後,如果又轉變想法想用unity來開發,也能很快上手。但是我不推薦這樣,因為c++細節非常多,更繁瑣一點。學起來沒有c#輕鬆。而unreal4和cryengine呢,用起來也更麻煩一點,也不建議新手拿這兩個引擎來考驗自己的自信心。
下次繼續……
作者並非職業程序猿,也不是計算機科班出生,若文中有任何錯誤,望先輩們在留言中指出,以幫助我修正文章、傳播正確有用的知識。
擴展閱讀:
1.《穿越計算機的迷霧》
那麽,下一節再見。
這裏是知乎專欄《自學遊戲開發》第三篇文章:《自學遊戲開發·程序篇一——了解計算機的世界》。我是竇月汐。如果你是第一次看到本專欄,建議你跳轉到自學遊戲開發--關於本專欄進行了解。如果這篇文章和本專欄對你所幫助,希望你在看到其他遊戲人需要幫助時也能把本專欄推薦給他,向每一個遊戲人致敬。
我公開了我的一個興趣交流群,群號為:474891082。{為避免無聊人士,設置了5元群費}
明確兩點:
1.遊戲開發隻是借助了電腦和圖形學,沒有這兩個,一樣可以開發遊戲。
2.圖形學是為了在電腦裏模擬物體而形成的一門研究領域。
目前,遊戲公司偏重於成熟穩定的框架,這樣更有利於快速開發遊戲,畢竟根本是為了賺錢。隻有很少一部分大公司需要自己去搞遊戲引擎,隻有當開發或者定製遊戲引擎的時候,才會用到一點圖形學的知識,不過總的來說,遊戲隻用到了很少一部分圖形學知識。更多的圖形學知識,會用於建模/電影之類的。如果你感興趣於遊戲,那麽圖形學會讓你走的更遠,不過短期來看並沒有什麽卵用,不如踏踏實實把一款遊戲引擎用好,這樣遊戲公司大部分的工作才適合你。
上麵全是廢話,下麵才是我想說的:
首先,無論外部環境如何艱難,作為一個有誌於遊戲開發的程序員,你都不該自暴自棄,學習更高深的東西,有百利而無一害。同時,作為社會人,你需要提供高質量的服務,這是你應該承擔的責任。下麵主要是針對對遊戲開發和圖形學有興趣,卻不知如何下手的同學的一些小小的建議。
--------------------------------------遊戲工程---------------------------------------------
在中國,遊戲在很大程度上是服務業,不是製造業。一款遊戲更多的是內容驅動{美工,策劃},程序員反而成了輔助,為遊戲的實現而提供技術方案。
其次,1.遊戲顧名思義是為了娛樂而製定的一套規則,它的可玩性高於一切。可玩性是遊戲施加給玩家的挑戰組合,一個遊戲如果能讓玩家覺得有無限的可能性,那麽就說明這個遊戲可玩性比較高。一個規則可能很簡單,但是當多個規則組合起來,就會產生不可預測的結果,這就是遊戲的魅力。moreisdifferent。可以試試用編程來玩玩生命遊戲。還有一個梗,如果計算機在一個遊戲中無法戰勝玩家,那麽就說明這個遊戲有很高的可玩性。2.遊戲是一場賭博,比如遊戲中的生物,如果它們的屬性都千篇一律,是不是很無聊,而如果僅僅是加入了一點隨機,會讓玩家感覺這個遊戲更真實,更有想玩的衝動。計算機的出現,讓遊戲開發變得更加學科化,因為計算機可以代替人腦來執行規則。這意味著,作為程序員,你就是秩序的象征,你就是上帝。建議:
0.如果隻想寫遊戲邏輯,隻用熟悉框架,熟悉語言。客戶端框架推薦unity3d,unreal4,cocos2d,這些框架都有完整的工具鏈{腳本,資源管理,編輯器},可以讓你快速上手,同時社區也比較火熱,不用擔心遇到問題沒地方問。服務端不太了解,每個公司都有自己的服務端引擎吧,我比較看好一款叫kbengine的開源引擎和雲風大哥的sky{不過是c寫的,裏麵有很多trick,我沒敢去看,-。-},希望朋友們可以推薦一下還有哪些開源的遊戲網絡引擎對初學者比較友好。
1.如果覺得引擎不符合你的要求,你想自己定製,做一個引擎geek。那麽ogre是個很好的選擇{雖然有人說它過分設計,但是你如果很厲害,還是可以改的嘛}。另外,龔大大{叛逆者}的klayge很優秀,我喜歡龔大大這樣的人0.0。
2.如果想本科畢業後從事更為核心的設計。學好線代/信號係統/數學分析/概率統計{重要程度由高到低}很重要,然後去找一些圖形學初期的論文看看,主要是理解別人的意思。線代不用說了,遊戲中的各種變換都依賴於線代提供的數學工具。信號係統提供的思路,如何從不同的基來表達信號,很大程度會改變你的世界觀,對,世界觀,然後遊戲中的pre/postprocess很多用到信號係統{本科的同學oppenheimer懂得吧}。數學分析,會培養你的數學演繹能力,這點在數學建模,特別是遊戲這樣一個理想國裏,是非常有用的。概率統計,ai不能多說。
3.大學期間,如果想開發遊戲證明自己,絕對不要要求太高。如果你能找到一個美工同學,那麽跟他/她一起成長再好不過。千萬別因為想自己做一款遊戲而走偏了方向。我就因為想做遊戲而自學了建模,在youtube上下載了將近200g的blender教程,到最後,可以做一些基本的物體,調一些動作,做一些紋理,而且全是用一個鼠標完成,至今不會用數字板。這些工作你可以投入一些時間,但是這些時間你可以用來做更有意義的事情,比如成為一個編程高手。
4.可以考慮實現一個軟渲染器,很多人推薦,雖然我沒去做過,不過應該收益蠻大。它可以讓你對渲染的本質有所理解,同時增加你的代碼掌控力。推薦《3d遊戲編程大師》,理解核心即可。
5.電子遊戲開發,需要各方麵學科的能力,c++/directx{問我為什麽不寫opengl},軟件架構,編譯原理,網絡,數據庫。都要嚐試動手去做{比如學操作係統,你就可以試著給一些簡單的cpu寫個係統,不要是x86架構,因為你還隻是個學生;數據庫的話,你可以先嚐試寫keyvalue型的數據庫;網絡的話,可以自己試試寫個網絡庫{推薦@陳碩大哥的muduo,因為有書可以配合理解,另外陳碩大哥的c++很厲害};編譯原理,一個簡單的腳本語言;這些你都可以去嚐試,比你考高分有用的多}。這句話我想說三遍。
6.gamedev/stackover,希望你常去看看。
7.記得把你作品保留下來,然後不斷對它迭代,如何把它保留下來是門學問,我就因為太關注於本身能力的修煉而忽略了這個。大四之前寫過的代碼和硬盤因為一杯咖啡全送進了回收站forever。如果你是一個有心的人,那麽找一份遊戲相關的工作完全不是問題。
8.緊接著上麵的一點。學會使用github,自己寫個博客。很重要,不要嫌麻煩。血淚教訓。
9.說到圖形學與遊戲的關係。不得不談到一個人,也是我最崇拜的一個人。3d遊戲引擎之父-johncarmack。關於他的逸聞趣事有許多。最出名的是那個開根號的ber,0x5f3759df,讓遊戲中最常用的函數快了4倍!也是那本《doom啟示錄》讓我對圖形學和遊戲開發更加神往。
10.上麵說了點工程方麵的,更多是圍繞遊戲領域。然而在圖形學這個領域中,有許多細小的分支更值得關注。具體的一些見碩鼠醬的答案。我的答案會更偏向於保守經典的領域。
-------------------------------圖形學--------------------------------------
圖形學還是交給大牛們介紹比較好,不過作為入門,我挑了幾個經典有趣核心的方麵說說。
0.physic中的deformablebody。這是我比較喜歡的一個子領域。它主要是研究物體的物理性質,如何模擬物體的受壓形變及其恢複過程。比如一個植物,你將它折彎,鬆開,它會擺動,如何在計算機中表示這些擺動呢?有兩個可選方案,1..是將物體受壓運動看成由很多小彈簧共同震動產生的。我記得我剛讀大學的時候就拜讀了miloyip大神在麻辣馬《愛麗絲夢遊魔鏡》中關於頭發的建模{如果我記得沒錯,就是y大神同時感謝他翻譯的《遊戲引擎架構》,質量非常高},那篇文章算是dbody的一個入門吧。2.有限元方法。
剛加入知乎,如果稍微有點幫助,希望讀者給個讚。
接下來不斷的迭代這個答案,希望把一個問題回答得完美一點。
不斷的迭代是個很有意思的事情,我都不想去幹正事了,特別是有許多朋友給的讚,讓我很開心~
本文作者:@loki——不吐槽會死星人,喜歡一個人玩遊戲,半個avg死忠。
我認為,人的思維缺乏將已知事物聯係起來的能力,這是世上最仁慈的事了。
人類居住在幽暗的海洋中一個名為無知的小島上。
這海洋浩淼無垠、蘊藏無窮秘密。但我們並不應該航行過遠,探究太深。
——洛夫克拉夫特
這是《迷失島》製作組redfishgame官網上關於這款遊戲的介紹。
也許光憑這段引自克蘇魯神話之父的言論,以及redfishgame這個新興的小團隊,很難看出《迷失島》有何出彩的地方。
但是要是加上製作團隊cottongame以及《南瓜先生大冒險》,熟悉國內獨立遊戲圈的人應該就會明白。
這款風格神似《南瓜先生大冒險》的新作,是cottongame正在打造的第二款作品。
從極度類似的風格來看,也許我們可以把它當作《南瓜先生大冒險》的續作,雖然兩款遊戲並沒有內容上的交集。
目前《迷失島》正在做最後的收尾測試,計劃在6月份正式發布,上周他們還將它帶到了摩點網、kickstarter、indiegogo等眾籌平台。
有趣君參與了眾籌,秘密打入了眾籌粉絲群,並跟這款遊戲的製作人聊了聊。
在摩點網上,《迷失島》的眾籌發起者是小棉花,在國內獨立遊戲圈還算知名,他是cottongame的創始者,也是《南瓜先生大冒險》的製作人。
《南瓜先生大冒險》獲得的諸多榮譽讓人們記住了他,然而棉花自己創作獨立遊戲的故事其實更像是一場大冒險。
棉花出生於1975年,國內獨立遊戲人提起他都說是一位友善有愛的大叔。
但他本人比較反感別人叫他大叔,我稱呼他棉花大叔的時候,他反應比較大,說不要叫大叔。
我說我在聽他indieace的分享演講,他問是不是又老又醜。我又說我聽的是音頻版本,他連呼還好還好。
我還找到了十年前他參加插畫設計大賽拿獎時候的照片,簡直年輕帥小夥一枚,不過當時他卻稱自己“算是個老人家了”。
在qq資料上他填的是19歲,從心態和表現上看確實比我年輕好幾歲。
1997年棉花畢業於吉林東北電力大學,專業是電力相關,畢業後獲得了能源國企的“金飯碗”。
但醉心於繪畫的他最終還是選擇了藝術這條不歸路,工作之餘他依舊堅持繪畫創作,自己畫畫賣畫甚至辦過畫展。
搞藝術的都知道,說這是條不歸路並不是調侃,一段時間之後四處碰壁的棉花開始尋找新出路。
新世紀開始,電腦及互聯網開始在國內興起,棉花憑借著繪畫功底開始自學flash動畫和三維動畫製作。
他跟朋友一起成立了“二極管工作室”,主打製作flash遊戲,這可以說是國內最早製作遊戲的一批人了。
這裏有個很好玩的插曲,在我加入《迷失島》眾籌粉絲群的時候,群裏有玩家分享了棉花十多年前製作的flash遊戲。
沒想到這些封裝成可執行文件的flash小遊戲這麽多年後還可以玩,我試玩了《抓魚》和《找不同》兩款遊戲。
《抓魚》更準確的說其實是“炸魚”,一個小孩在岸邊丟炸彈炸魚,丟出去的距離根據你點擊鼠標左鍵的長短控製,需要很好的手感才能在一分鍾內炸死所有魚。
《找不同》則是類似前幾年很流行的“大家來找茬”,左右兩幅畫在限定時間內點出所有不同之處。
這些flash遊戲雖然已經初步具備遊戲元素,而且十多年後來看也不算差。
但flash遊戲總歸是小打小鬧,隻懂美術的他明顯將遊戲做成了插畫集,他們也很難弄出其它更深入的類型。
隨後他們給一家娛樂網站開發了數十款flash遊戲,誰知道幾個月後該網站彈盡糧絕後關閉了,他和哥哥決定自己掏錢開發休閑網遊。
遊戲做了三年,但沒有經驗的他們難以最終成型,賣掉這款半成品之後他們轉而承接美術外包為繼。
直至2009年,這家小公司終於淹沒在高漲的商業浪潮中,棉花又過起了之前賣畫的生活。
賣插畫、賣油畫、賣國畫,出版繪本、工具書籍,還做了許多明信片、公仔,甚至去麗江畫旅遊地圖。
按他的說法就是“騙騙文藝青年,掙點零花錢”。
很多人可能無法想象這樣的生活,但棉花還是堅持了好幾年,而且對於遊戲他並沒有死心。
2011年他接觸到了遊戲製作工具gaaker,兩個月後鼓搗出了《卡卡大冒險》,一款類似《超級馬裏奧》的遊戲。
在indieace的分享演講中,他多次調侃說製作遊戲隻是因為很想賺錢,想賺很多錢。
但真正有人想把《卡卡大冒險》買下來賣到國外去的時候,他又猶豫了,他不想賣。
他說這算不上好遊戲,也得到了很多朋友善意的批評,他沒想到這款遊戲能夠掙到錢。
然後他又開始製作一款名叫《殺死卡紮菲》的遊戲,因為當時的國際時政就是卡紮菲被反對派打死,算是蹭個熱點。
他拉上了網上認識的一位程序員,借鑒了一些其它遊戲的玩法,製作了這款遊戲。
本來這隻是一款惡搞鬼畜作品,但後來棉花發現國內有不少廠商盜版了他的遊戲,本來沒發布的遊戲卻原封不動被別人發布了,甚至遊戲一些關卡還打著他的英文名cotton。
後來他才搞清楚,原來這遊戲被那個一起合作的程序員賣掉了,賣了一萬塊而且沒有告知他。
這件事鬧大之後,棉花並沒有追究這位程序夥伴的罪過,他說不想毀了這位年輕小夥的前程。
甚至之後,他還開啟了《殺死卡紮菲2》的製作,不過最終這款遊戲也不了了之,隻在某些小遊戲平台簡單試了試。
經過這些磨練之後,棉花覺得總是這樣不了了之不行,還是要認認真真打造一款作品。
然後他開始了一款叫《逃離地下城》的籌備,畫了很多場景概念圖,並將它推上了國內最早的眾籌平台。
這時候的眾籌在國外都是新興模式,kickstarter遊戲眾籌最早的神話《破碎時光》也才開始,棉花不說國內第一人吧,但確實夠早。
不過最後由於國內眾籌的局限性,以及受眾宣傳等諸多因素,這次目標一萬人民幣的眾籌隻收到了54名玩家的4400元,並沒有成功。
再後來他又將目標盯上了獨立遊戲大賽,igf獨立遊戲節{independentgamesfestival}。
2012年igfchina他製作了一款名為《山神廟》的中國古典風的作品,隻做了一個關卡,但他覺得遊戲不夠好,最後沒好意思投給igf評選組。
這一年評選組比較青睞中國風,另一款水墨風的作品《fish》獲得了學生組最佳作品,隻可惜棉花沒有參賽。
不過這款中國古典風的遊戲素材他並沒有閑著,而是將其改造成了一款手機主題。
最後就是他的第四款作品《南瓜先生大冒險》了。
我問他前後共做了幾年獨立遊戲,他回答說從2012年開始,很明顯他覺得《南瓜先生大冒險》才算是他的真正起點。
他說《南瓜先生大冒險》起源於一個很逗比的事情,來自於一個新聞,福布斯漫畫家排行榜。
畫漫畫原來也能這麽賺錢,那他就畫了一個南瓜先生,做起了走上人生巔峰的夢。
後來他又在獨立遊戲群裏認識了蛋蛋,臉圓圓的也就是番茄先生。
蛋蛋最初來到團隊的身份是編劇,給南瓜先生漫畫編劇情,棉花當時畫大餅說成功了一年分給蛋蛋500萬,後來這成了他和小夥伴之間互相調侃的一個梗。
兩個人一直折騰了小半年,然後又覺得不行,還是回頭做遊戲。
於是蛋蛋的身份就從編劇變成了程序,從頭開始學unity。
過了兩個月,他再次將《南瓜先生與命運大冒險》也推到了眾籌平台,這次將目標定為5000元。
然而結果卻比第一次還慘,隻收到了15名玩家的1360元。
但他們並沒有灰心,還是繼續著遊戲的製作。
棉花甚至發出了一則招聘啟事:“招收美術、程序、策劃。條件:必須一流。待遇:暫時無錢,隻有鼓勵。”
隨後他們收到了一家天使投資機構20萬的投資,棉花注冊了“胖布丁”公司,名字取自英文“pumpkin”。
2013年igfchina,他們帶著《南瓜先生大冒險》榮耀歸來,一舉奪得最佳美術獎。
其實這也並不是什麽很好的起點,他們又埋頭一年多,直到受到索尼的親睞,《南瓜先生大冒險》成為了國行首發遊戲之一。
但國行主機的境況大家也都看在眼裏,此時距離棉花賺錢的調侃還很遠。
半年後,他們將《南瓜先生大冒險》推到了移動端,由樂逗遊戲代理,他們才算是鬆了一口氣。
又過了半年,也就是現在,他們馬不停蹄又將推出新作《迷失島》。
《迷失島》的開發其實早就在進行之中了,事實上cottongame手頭一共有四款遊戲在製作當中。
經過兩年多的發展,原本隻有棉花和蛋蛋的團隊,現在成長到了6個人,但6個人同時搞4款遊戲依舊讓人震驚。
readfishgame這個新團隊則負責《迷失島》的發行,他們也隻有少少的5個人,加上cottongame一共11人。
早在去年7月份就已經有不少玩家體驗到了《迷失島》的測試版本,這近一年幾乎都是在給遊戲添加細節,以及付費模式的探索。
很可惜由於時間以及設備的原因,有趣君這次並沒有試玩到這款遊戲,但是在跟棉花的聊天過程中還是了解到了不少信息。
不管是美術風格還是點觸式解謎的玩法上,《迷失島》都完美繼承了《南瓜先生大冒險》的亮點,我覺得這就是棉花一直堅持的自己的特色。
從視覺看,各方麵極似《機械迷城》,畫風簡單晦澀但又很順眼,指點解謎玩法也是avg的一個複古形式。
在棉花的交流裏,他表示這種畫風叫“表現主義”,就像是愛德華·蒙克那幅名畫《呐喊》,跟死亡有關有點灰暗的基調。
之前那些flash遊戲中的角色形象,以及那本名為《空心人的城市》的3d製作教程的封麵,都是這樣一種特立獨行的形象。
乍一看目光呆滯,就跟梵高那幅斷耳自畫像一樣,滿滿都是奇異荒謬的氣氛。
延續到《南瓜先生大冒險》這款遊戲,我更喜歡將其稱之為“荒誕卡通風格”,而這種美術風格也得到了獨立遊戲大賽以及玩家的肯定。
也許cottongame也有了自己的一套方法論,於是《迷失島》也嚴格將這種風格延續了下來。
而在故事上,《迷失島》的劇情則顯得更加荒誕和神秘。
高聳的燈塔、奇怪的荒島、雜糅的建築風格、神秘的七眼章魚、埃及風的守護狗神,以及從天而降的外星人。
就跟美劇《迷失》{lost}那個永遠不能離開、充滿超自然因素的小島一樣,而玩家則要解開這座小島的所有謎題。
聽起來又鬼畜又很有挑戰不是嗎?
可惜的是,開頭那段洛夫克拉夫特的話僅僅隻是引用,棉花表示遊戲中並沒有太多克蘇魯相關的元素。
在謎題的設計上,《迷失島》比《南瓜先生大冒險》進化了一個層次,找東西解鎖的傳統套路少了點,更多的是小遊戲謎題,比如有些類似《見證者》的迷宮解謎。
《南瓜先生大冒險》中非線性的解謎進程,也在《迷失島》中得到了加強,多條解謎元素之間的交織,更加考驗大腦。
最後在音樂的選擇上,棉花也有很多自己的看法。
在indieace的演講上,他多次提到《星際穿越》這部電影,他說他看這電影前5分鍾就哭了。
朋友問,這還沒到情感"gao chao"呢怎麽就哭了?他說被音樂感動哭,配上畫麵就更淚崩了。
《迷失島》的眾籌演示隻給出了一首曲子,是《南瓜先生大冒險》同一位配樂者hurryp製作的。
棉花說這是他的老夥伴了,幾乎已經是專職為cottongame服務了。
之前他的想法是會慢慢地自己也將音樂這一塊抓起來,畢竟某些時候要找到自己想要的感覺,不同的人表達和理解可能會有差異。
但是hurryp的表現很好,《南瓜先生大冒險》的音樂很棒,甚至還推出了原聲集。
而這次《迷失島》也將會有更優美的音樂體驗。
總的來說,《迷失島》是一款非常值得期待的遊戲,製作人棉花這十幾年的“獨立遊戲大冒險”也堪稱奇跡。
他的才氣、堅持和勇氣,在烏煙瘴氣的國產遊戲圈簡直是鶴立雞群。
他筆下的那些眼神詭異的神秘小人,或者主角南瓜先生,又或者每一款作品都出現過的戴著宇航頭盔的奇男子,都是他存在的痕跡。
他不僅活在跟別人不一樣的世界裏,還活在自己的作品中。
最後引用一位粉絲對他的評價:
這個遊戲的開發者,是個外星人,變態~~可怕~~
和我們不是一個世界的。
他的世界充滿幻想,想畫啥就畫啥,好羨慕~~
你應該能想象這些波浪線代表的是怎麽樣激動和崇拜的心情吧,後來我才知道他也是cottongame的成員,也許之前那則不給錢的招聘啟事真的有奇效。(WWW.101novel.com)