新手開發者如何著手遊戲設計? 從解剖桌遊開始!
前文
如果非要說一個系統學習遊戲製作和設計的方式,我建議新手先做桌遊。所有遊戲的本質都是相通的,用桌游來理解遊戲設計是最好的開始。你可以不需要關注程式設計和美術技術,全身心投入設計,只要有心,沒什麼是做不出來的。
讀這篇文章你要準備的東西
想要了解遊戲的心
解剖你的物件遊戲
如果你看中了一款桌遊並且很想要將它DIY化,那麼在這個階段你可以做的東西會相對少很多。但是比起價格,你更加應該想清楚這款桌遊對你來說意味著些什麼,你究竟想要做出些什麼
- 漢化:如果你看中的桌遊是國外的桌遊,所以你想要把它引進你的朋友圈時會考慮到究竟有沒有人能看懂它。那麼你在思考用些什麼材料的同時,也應該關注在它的語言表達方面,畢竟你得認真的考慮才能用中文準確地表達這款桌遊想表達的東西。
- 便攜:你考慮得配件應該儘量少,能用卡牌代替就儘量用卡牌,如果有底板最好能做成摺疊的,紙質的選擇也要儘量輕薄
- 便宜:只要你有時間,想要多便宜能多便宜
對於解剖你的目標遊戲,理解這裡麵包含的內容,在這裡我要和你介紹《遊戲設計藝術》裡面講到的四元法。
Jesse Schell介紹的四元法
但是,你猜怎樣?你現是站在醫生的位置上了。你需要很熟悉地知道,你的病人(遊戲)究竟由什麼組成,這些是如何組合在一起的,是什麼讓他們執行起來。當遊戲出現問題時,你需要指出真正的原因,然後想出最棒的解決方案,否則你的遊戲就會死去。如果這聽起來還不夠男,你可能會做一些大多數人都不會做的事情:創造一種完全嶄新的遊戲,然後把它實現。《遊戲設計藝術》
- 機制:遊戲的過程和規則。當你選擇了玩法,那麼你需要選擇技術來實現他們。而美術則用來呈現給玩家;最後你需要一個故事來支撐你的遊戲,使得你的遊戲機制更加吸引人。這幾個點互相幫助,構成了遊戲的娛樂體驗。
- 故事:在你的遊戲過程中,有些事件會發生,而你應該決定這些事件發生的順序。它可能時線性的,倒敘的,或者預先設定。也有可能時擁有一些分支或者隨機發生。當你想講一個故事,你應該考慮你的遊戲機制是否足夠推動遊戲的程式,讓故事在遊玩中有一種逐漸浮出水面的感覺。同樣,你需要美術來加強故事的說服力,不然沒人知道主人公找到寶藏時興奮的表情是怎麼樣的。最後你需要技術來配合特定的故事。
- 美學:這些是遊戲的外觀,如果你準備設計電子遊戲,通常這意味著二維影象或3D素材。美學是最直觀的表達,而且非常重要。如果你的遊戲充滿了好看的藝術作品,那麼玩家的見到的每一個新鮮的事物本身就是對他們的回報。
- 技術:對於如何實現你的遊戲,你可以思考一下你會用到的材質和互動。你選擇的技術應該能讓你的遊戲完成一些你想做到的目標,並禁止玩家做其他你不想他們做的事情。
我們可以把技術看作一種媒介,美學看作表達手法,而機制則讓他們發揮作用,最後通過故事來講述,這個迴圈非常美妙,你應該儘早學會它。
透過這個解析法,你可以觀察你的目標遊戲是由什麼構成的,並思考一下這些問題:
- 我的設計有用到這些內容嗎
- 如果某一個/幾個元素被凸顯,那麼我的設計會得到增強嗎
- 這幾個元素之間是否很好的互相合作,並且將遊戲指向一個主題?
那麼下面就來說一下,如何創作一個屬於你自己的主題桌遊的雛形吧。
設定遊戲主題
在這裡,你應該認真的考慮你想要做一個什麼樣主題的遊戲,在考慮遊戲的目標之前,你應該花更多的時間,來思考你需要玩家以最快速度瞭解到的基本知識。
你或許一頭霧水,但我們可以試著做這樣的練習 —— 找到一款你很喜歡玩的遊戲,電子遊戲或者桌遊,花5分鐘遊玩它的第一個關卡,然後想一想你剛才為了遊玩這個關卡而需要重點分析和思考的部分,那些是什麼?有什麼元素?你在遊玩的時候有沒有什麼限制?
接下來想一想這些問題
- 你的遊戲需要玩家達成什麼目標?
- 你想要玩家理解些什麼範疇的內容?
- 在玩家做選擇前,有什麼過場情景或故事發生了麼?
- 玩家通過做什麼來進行選擇?這個選擇會帶來什麼結果?
設定遊戲互動方式
一個遊戲只會存在兩種模式,一是人對人,二是人對系統。我們一般可以稱那些人對系統的遊戲為單人遊戲,而如果這個是屬於人對人的範疇,那麼玩家之間要麼就需要合作完成一些任務,共同勝出遊戲。或者玩家之間是屬於競爭狀態,玩家可以以個人身份與其他玩家對抗,或者組成聯盟對抗其他的隊伍,要促使玩家做到這一點很簡單,你可以在一開始就給予玩家屬於自己的身份牌(公開或不公開)。還有一些遊戲將競爭和合作結合,玩家需要合作完成一些任務,但出於個人原因,他們需要讓自己在最後結算的時候成為最有優勢的人,這迫使玩家在幫助其他人的同時衡量這種行為會讓自己減少多少利益。
- 人對系統
- 人對人
·合作
·競爭
▶單人對抗
▶聯盟對抗
·合作競爭
設定遊戲機制 - 6大類
遊戲機制是遊戲的核心所在,它大致決定這個遊戲的樂趣所在。
要設計遊戲的規則,首先要知道有哪些機制。不同的機制搭配遊戲配件,可以進行各種各樣的遊戲行為
1.空間
這是指遊戲發生的空間,它定義了一款遊戲中可以存在的各個地點,以及他們之間如何互相關聯。
九宮格,你可以在9個方框內填入數字
你可以不管那些邊界和空格,把數字填在你想要的任何一個位置(甚至填在九宮格外面也可以),也就是不管你填的數字有沒有意義。但如果你想要做出有意義的行為,你就應該把數字填在畫叉的地方
有意義的遊戲行為
我們可以把這個九宮格理解為一個離散的二維空間,並且它擁有9個互相連線的格子
你可以用這種方法將所有的遊戲場地轉換成這樣離散的空間,以加以思考。你可以分析在在這個場地裡面,不同位置之間的玩法。
當然,並不是所有遊戲都和九宮格一樣是離散的,比如說,windows XP/7系統自帶的三維彈球。這個遊戲的檯面就是一個連續的空間 —— 它擁有固定的長和寬,而且我們發射出去的球可以自由移動、反彈、以及落入洞裡。但無論這個遊戲的空間是連續的還是離散的,道理都是一樣的 —— 我們需要把這個遊戲的美學和其他會干擾我們思考的東西削離,幫助自己抽象地理解這個遊戲的各種關係。
還有一些空間,並不真實存在。因為我們可以設計一些沒有空間的遊戲,讓他們只存在著某種交換資訊的地方。但是我們仍然可以將這些地方抽象地當作空間來理解。比如“揭尾故“這種遊戲 —— 由一個玩家構思一個故事,並告知所有人這個故事的結局,另一些玩家提出能以”是“或”否“回答的問題,並猜出故事的大概和緣由。那麼,這個遊戲就像發生在這樣的空間:
2. 時間
時間同樣可以是離散和連續的。在回合制遊戲裡面,時間能被計算,每回合就是一個離散的時間單位。但對每一個回合之間,其實並不存在時間這個概念。比如到我出牌的時候,我出殺,而對方出閃,我們只需要記錄這兩個行動本身就好了,不需要記錄每一步花了多長時間,因為現實裡的時間和遊戲的機制是沒有關係的。
操縱時間
如果將遊戲的時間設定為連續的,會很有意思。因為這樣你就需要給各色各樣的事物設定時間限制,同時加上一些好玩的元素,比如停止、回頭、加速、減速等等。這樣做的目的在於,通過絕對的時間計量對玩法做出限制。例如在《文明》系列的電子遊戲裡面,就有玩家領導一個文明從史前時代發展到現代的玩法,這時候我們就要加快時間,讓許多年在數秒間經過。而操縱時間這一動作有時可以交由玩家來做,比如在桌遊《瘋狂速食怪》中,玩家需要在沙漏結束之前,用手上的牌搭配出遊戲制定的食物配料。而玩家的手牌中如果有翻轉沙漏的功能牌,則可以讓沙漏重新計時,以增加團隊的存活時間。還有一些遊戲,比如在steam上面釋出的獨立遊戲《Causality》就把操縱時間變成了遊戲的核心機制。
3. 物件、屬性和狀態
如果你有程式設計基礎,那麼這一部分就很好理解。首先,所有在遊戲裡面,你能看見或者能操控的東西都是物件。物件一般有一個或以上的屬性,其中一個常見的屬性就是這個物件的位置。
屬性是這個物件的資訊,比如一隻小狗,它有身高,有跑步速度,還有攻擊力。額……對,攻擊力。每個屬性分別會有一個當前的狀態。比如跑步速度,它在當前是2米/秒,但可能在上一分鐘是達到了“最大速度”4m/秒。
屬性可以是靜態也可以是動態,靜態的屬性在遊戲中不會被改變,因為一旦設定完成就不需要作改動。所以比較讓人苦惱的是動態屬性,比如在象棋裡面,”將“有一個移動模式的屬性,分別有三個狀態:移動,被將軍,被將死。而在“三國殺”裡面,每個玩家的角色都是一個物件,這個物件有個動態屬性“血量”,這個血量由玩家角色的體力值決定,還有個“翻面”屬性,包含兩個狀態“是/否”。
你可以決定哪些物件擁有哪些屬性和狀態。現在來做一個練習:在撲克牌遊戲裡面,你怎麼定義玩家的手牌?它擁有那些物件、屬性和狀態?
4. 行動
行動,簡單來講,就是”玩家可以做的事情“。而行動分為兩種,一種是基本行動,而另一種是策略行動。
基本行動指的是基本行為,這些行為構成了遊戲的基礎。比如說,我們在下軍旗的時候,有三個基本動作:
- 移動棋子
- 吃掉對方的棋子
- 讓工兵拐彎
如果我們無視勝負規則和策略的話,這個遊戲可以一直玩到世界的盡頭,因為我們可以不斷地重複這些動作。
策略行動指的的是,在大局上有意義的行動,而且他們和基本行動息息相關 —— 玩家應該考慮如何讓自己的基本行動達成遊戲目標。同樣拿軍棋作例子,在遊戲過程中可能存在這些策略行動:
- 只移動最大的棋,不移動其他棋子,發揮最大效益
- 犧牲一些小棋擋住對方的去路
- 迫使對方做出不想做的行動
儘量不要讓玩家持有過多的基本行動,有時候你需要給玩家選擇,但太多的選擇反而容易讓人衝昏頭腦。相反,這些基本行動之間應該能組合出大量的策略行動,遊戲是否有趣很取決於玩家能否做出”有趣的策略“。有很多方法可以做到這一點。比如,你可以讓遊戲擁有更多對動作的描述,這些動作很大程度上取決你正在設計的遊戲主題,如果這是一款關於礦工的遊戲,那麼它應該有”挖“,”敲“,”賺“,”賣“,”建造“一類的詞,基於這些動詞,你可以延申出很多對應的物件(還記得我們剛才說過的物件屬性和狀態嗎?),比如”挖礦“,”敲石頭“,”賺錢“,”賣黃金“。看起來我們慢慢構建起這個遊戲裡的可能性了。有效的物件使得玩家的策略變得有意義。
現在玩家有了明確的目標,他們知道他們可以”挖礦“或者幹些別的遊戲中允許的事情。比如說,玩家可以挖各種東西,但遊戲目標則只是”成為最有錢的礦工!“,那麼他們只能不斷地挖礦直到時間的盡頭也無法成為最有錢的礦工 —— 因為所有人都這麼幹。所以,你得為這個目標提供一些可能的玩法,比如你可以挖礦到一段時間,付上一筆錢來建造一座挖礦機,然後去幹別的更有價值的事情,或者你可以不挖礦,而通過偷取別的玩家的礦來發橫財(這麼做雖然很不道德,但既然是遊戲,有什麼不可以呢?)
在這個基礎上,我們為這個遊戲的玩法提供很多的策略。我們不會一開始就明確地告訴玩家,而只提供少量的引導,讓玩家自己在遊戲的過程探索。現在,我們可以為遊戲提供一些更有趣的東西,那就是行動的”額外效果“。通過每次做出行動的時候,改變自己或對手的限制環境和條件。這是玩家實施策略的收益,是額外的東西。某種意義上,不論玩家本來的想法是怎樣,它每一次的行動,都在改變遊戲空間的性質。
5. 規則
一個遊戲或許會存在很多規則,而你的工作則是讓這些規則好好的做自己的分內事。在遊戲進行到一定程度時,會發生一些改變使得規則轉換,但你應該時刻讓玩家謹記遊戲在做什麼。比如說,我們在設計一款,一路打到魔王家門口,然後戰勝魔王的遊戲。而玩家需要在這個過程中學習各種技能來挑戰魔王的可怕手下。如果你隔很短的時間就得停下來學習新技能,那整個遊戲的方向就轉換了 —— 這變成了一個解鎖技能的收集向遊戲。
在設定了遊戲玩法,並且找到志願者抽出時間來為你測試之後,你會發現有很多人並沒有按照你的意願來進行這個遊戲 —— 他們中很大一部分人不擇手段地想要獲得勝利。我們一般稱這種情況為作弊。這是不可以發生的,想點法子來懲罰那些嘗試作弊的玩家吧,這對那些沒有嘗試作弊的玩家很公平。
所以,你並不用覺得一開始想不出遊戲的規則是很苦惱的,因為根本不會有一開始就很完美的規則。就算是,也只是你覺得很完美,玩家耍小聰明的本領永遠會超乎你的想象。所以正確的做法是,首先設想一個簡單的規則,然後試玩,接著調整你的規則,然後試玩,以此往復,最後確立你的”書面規則“。認真地記錄那些在試玩過程中暴露出來的漏洞,確保你的規則覆蓋到每一種情況。
6. 概率
這是個很有用的機制,在桌遊《Hit Z Road 亡命之途》中,每次戰鬥的時候都會使用篩子來隨機生成戰鬥行為。而在其中一個近戰的戰鬥階段裡面,玩家能夠使用的篩子是由自己手上持有的生存者數量來決定的。這就意味著,玩家能做出的戰鬥行為,不僅是完全隨機不可預測的,而且還有可能因為自己的資源減少而減少(比如戰鬥失敗,則會減少相應生存者資源)。因此玩家不得不謹慎考慮自己的遊戲策略。
那麼假設我們的玩家現在擁有3個倖存者,即玩家在近戰階段能扔出3個篩子,其中每個篩子擁有3面能做出攻擊行為,那麼玩家這時3個篩子都丟擲戰鬥面的概率是多少?
3/6 * 3/6 * 3/6 = 1/8 , 難不倒大家吧。
這是這個事件的理論概率,是理應發生的。不過作為一個設計者,我們應該更加嚴謹的考慮它的實際概率,用來衡量已經發生的事件。比如,這個事件發生的概率是1/8,等於12.5%,那麼我把這三個篩子拋10次,並記錄這幾次事件發生的實際概率。在這種情況下,我的實際概率是15%,和我的理論概率很接近。這個結果比你用紙和筆算出來的結果的或許更加有用,因為你還有一些東西沒有在草稿紙上想到,比如你的篩子可能重心不穩,或者你的桌子摩擦力很大,篩子滾不起來。
期望值
在你的遊戲裡面,所有的行為都會有一個對應的期望值,也就是那個行為所有可能的結果的平均值,例如在你的遊戲裡面,所有的角色在做一個行動的時候,都會丟擲一個篩子,根據這個篩子出現的數字獲得獎勵,那麼我們就將所有結果加起來然後除以這些結果的總數就好了。因為所有結果出現的概率是相等的,都是1/6。首先,所有可能的結果是1+2+3+4+5+6 = 21,然後21處以6,得到3.5,我們可以說“玩家每次執行這個行動,平均會得到3.5的獎勵”。得知這個資訊非常有用,你將瞭解到玩家採取這個行動本身的數值。
那麼現在讓我們來舉一反三,假設我們的角色現在能做兩種行為,一種叫拿牌,拿取兩張牌,一種叫偷襲,偷取敵人一張牌,但成功率是80%,那麼他們的期望值是多少呢?
首先,拿牌永遠都會得到2點的獎勵,因為不可能存在我拿不到的情況,除非其他玩家把公共區域的牌都扔到垃圾桶。而偷襲有80%的機率成功,20%的機率不成功,所以是(1 * 0.8)+(0 * 0.2)=0.8。那麼現在我們能得出一個結論,玩家始終會拿牌,因為它得到的平均利潤始終是偷襲的兩倍有多,而且我說不準還能用拿到的牌來打擊對面玩家。所以你或許可以增加一個行動,叫打落,你能打掉對方3張牌,讓自己抽2張牌,但成功率是30%,這個行動的期望值是(5 * 0.3)+(0 * 0.7)= 1.5,如果你面對一個有很多牌的敵人,或許你會冒險選擇這個行動。
你應該注意你設計的遊戲選擇所帶來的真實價值,你應該謹記玩家不會採取對自己沒什麼好處的行為,你應該計算玩家會得到什麼收益,以及什麼懲罰。
理解人在遊玩時的認知機制
讓我們來看看人是怎麼通過思考來學習的。
1. 人的注意力:基於人的注意力的先天限制,我們是無法對所有的資訊保持注意的。通常一個好的遊戲能提供系統性的提示和引導來讓玩家集中在自己的行為上。如果遊戲沒有辦法做到這一點,那麼玩家將需要花費大量時間理解遊戲的資訊和規則,同時這也會增加玩家在回合內行動的時間,導致其他玩家在等待的過程中失去專注力。因為,我們必須格外留意這一點,在設計的時候避免過於複雜的遊戲機制,並且讓玩家在每時每刻都有專注的核心區域(例如場上的某個區域或自己的手牌),這些核心區域將幫助玩家代入遊戲,更好的理解遊戲目標。
2. 人的記憶:人在接收到一個新的資訊時,會將其短暫地存入短期記憶,然後經由一連串的認知處理,將其存入長期記憶,在中間的認知處理過程中,人也會到長期記憶裡面提取相關的資訊來進行對比,以便加以學習和思考。而這個過程,會產生兩種結果,一是人會生成一種全新的記憶,二是新的資訊會被累加到舊的記憶。而我們提供的引導和提示則在這個過程中起發揮性的作用,例如一些解謎的線索。在卡牌中加入這個角色的介紹文字,其實就是在增加玩家思考的機會,玩家將有機會思考這個職業的特色,甚至可以探索該特定人物的性格特徵。如果我們在設計的時候,同時呈現文字的圖片,那將會很有用,這被成為雙重編碼理論。因此如果你想在卡牌上新增資訊時,可以在文字旁邊加上圖文相符的圖片。
3. 人對於自己如何思考的認知:這在遊戲中的表現極為重要。玩家在遊戲中不斷反思自己的遊戲行為,調整遊戲策略,使得自己的獲利更有效率。這一部分相當考驗設計者的功力,因為玩家可以有不同的策略組合來達到更好的遊戲效果,這意味著雖然遊戲的目標是同一個,但每次玩家都可以用不同的策略來達成這個目標,這極大地提高了遊戲的可玩性。
進一步閱讀和學習:
- 桌遊設計,建議拜讀<The Art of Game Desgin>,這本書有相當多的衍生版本,而且它的內容相當實用,只要你懂一點數學和心理學就能完全讀懂。或者是探討人性和哲學思考多於設計本身的<A Theory of Fun for Game Design>,相當適合新手入門。還有臺灣科大出版的《知識主題桌上游戲設計》,書本身有搭配一個主題桌遊作為範例解釋,不過建議讀者在玩過一定基礎數量的桌遊之後再來拜讀上面三本神作,我覺得你在遊玩的過程中所作的思考對於理解這三本書非常有價值。
- 對於程式設計方面,我沒有什麼好推薦的,每一種程式語言在網上都有相當多的教程和相應社群,試著寫點什麼來開始你的學習。在這個過程中你將系統地瞭解你要學習的語言特性,語法和程式設計思維。當你覺得你對這個語言瞭解得已經足夠多時,試著去找一些實習的工作,具體地理解作為一個開發者應該具備的專案思維。對於完全的門外漢,我建議從解釋型的語言開始學習,也就是不需要用到直譯器來轉換成機器程式碼的語言。這些語言在執行時才翻譯,執行一條翻譯一次,像Python/Perl/Shell/Ruby等都是解釋型語言。
- 對於程式設計,可以拜讀Gang of Four的<Design Pattern>,對於很多人來講,這是很古老的一本書了,但直到今天我仍在看這本書。或者是由Nystrom編寫的<Game Design Pattern>,作者本身是EA的工作人員,他的工作經常要和很多糟糕的程式碼打交道,所以書裡面有很多他吐苦水的內容。
- 電子遊戲引擎。
- 首先是一些極少用到程式設計的遊戲引擎,RPG maker,這個引擎是筆者高中時代的啟蒙引擎,當時來講完全是黑科技,它產出的優秀作品非常多,由水野的四葉草製作的《第七號列車》,蒼兔製作組的《偶弦》,還有自由鳥工作室的《去月球》等等,太多了數不過來。拖拽式操作的Game Maker,以2D為主,我本人不太喜歡用,但的確很傻瓜式,很易用。
- 然後是一些比較常用的需要程式設計控制的引擎,Unity和Unreal。如果你對程式設計更感興趣,那我會推薦用Unity,這個引擎本身非常優秀,但其他一些美術效果,比如材質,會需要用到類似Shader forged的第三方外掛。而且Unity本身有龐大的社群,並且在商店也有很多的資源和解決方案,學習起來很容易。而Unreal的話會注重更多美術、動畫、建模、過場電影等等的實現。它的引擎特效大多能有影視級別的水平。不過如果是一般的射擊類、冒險類的遊戲,其實兩個引擎沒有多大的區別,選擇哪個來學習並不會對專案造成多大區別。除非你要做的是街霸,方舟什麼的……用Unreal吧。
作者:俊銘
專欄地址:https://zhuanlan.zhihu.com/p/47102113
相關文章
- 新手學程式設計,從哪裡開始?程式設計
- OpenSNN推文:從零開始學程式設計 新手小白的全面指南程式設計
- 學習大資料要從哪些知識點開始著手?大資料
- 當代遊戲如何從 RPG 桌遊中不斷汲取養分?遊戲
- 從零開始手搓GPU,照著英偉達CUDA來,只用兩個星期GPU
- [新手開發記錄] 從測試開始開發
- 運維從設計開始-轉載運維
- 遊戲新手如何搭建“關卡設計”知識框架?遊戲框架
- 新手如何識別區塊鏈技術,應該如何著手投資區塊鏈
- 新手筆記-從頭開始的新工作 (轉)筆記
- 怎樣為遊戲設計新手教程?海外開發者分享了6點建議遊戲設計
- 寫給開發者:如何從零開始進行iOS應用推廣iOS
- 如何教新手程式設計程式設計
- 從零開始搭建腳手架
- Luatools新手必看:從下載開始的保姆級教程!
- 翻譯 | 新手開始學習程式設計的正確姿勢程式設計
- 從零開始理解 Laravel 的設計哲學Laravel
- Photon物聯網程式設計從零開始程式設計
- 從 React 架構開始講解 useState、useEffect 程式設計設計React架構程式設計
- 動作遊戲新手期流程設計遊戲
- 新手如何開始學習自動化測試?
- word中如何從指定頁開始設定頁碼
- 挪威美女設計師教你如何開始你的創意手繪筆記筆記
- 遊戲開發新手入門之Windows程式設計(轉)遊戲開發Windows程式設計
- Webpack 5 配置手冊(從0開始)Web
- 程式設計師如何開始新的工作程式設計師
- 從酒桌遊戲看二分查詢演算法遊戲演算法
- SOA實踐應先從企業級IT架構設計上著手架構
- SOA架構實踐首先從企業級IT架構設計著手架構
- 風變程式設計,幫助你從零開始學習程式設計程式設計
- 從0開始的數值設計實戰(一)
- FPGA程式設計從零開始 使用VerilogFPGA程式設計
- 從零開始學設計模式(七)—橋接模式設計模式橋接
- 從零開始實現放置遊戲(一)遊戲
- 程式設計師人生:如何開始,如何入門,如何前進程式設計師
- 如何正確的開始用 Go 程式設計Go程式設計
- 如何開始函式程式設計的學習?函式程式設計
- 從零開始手寫Koa2框架框架