當前位置:
首頁 > 知識 > 這款沒有女異性戀角色的遊戲,源代碼是怎麼寫的?

這款沒有女異性戀角色的遊戲,源代碼是怎麼寫的?

作者:Claudia Lo


編譯:Lyroat


編輯:Ent

對於里德來說,這真是糟糕的一天:她的飛船墜毀了,她是三位倖存者當中的一個,而另兩位則一直試圖勾搭她。對她來說不幸的是,她長得很漂亮,所以那兩位一下就被她迷住了;然而對他們兩位不幸的是,里德是位同性戀,這意味著她永遠不會對他們產生同樣的感覺。她就在毫無新意的反覆搭訕和在殖民地的工作中,過著一成不變的地獄生活。


《邊緣世界》(RimWorld)是一款科幻殖民地模擬經營類的遊戲。當針對玩家在艱苦外星球上的生存嘗試時,遊戲似乎能毫不費力地編織出有張力的精彩故事;但是當涉及到性、浪漫以及性別問題時,遊戲所講述的故事又往往是另一碼事。於是我們深挖到遊戲背後的代碼,來一探究竟。


回到里德身上,我們發現那些搭訕並沒有令她感到沮喪,她的心情值並沒有因為連續不斷的挑逗而降低。但是對於兩位男性羅伯和布茨來說,可就大不相同了。因為里德,他們的心情值和關係值遭受了幾乎是永久性的降低——他們不斷地試圖約里德出去,然後又不停地被裡德拒絕。但這並不是他們的錯——羅伯和布茨不停地挑逗里德,因為他們是男人,還有就是里德實在是太漂亮了。當然,更為確切的說法是,他們就是這麼被編碼的


布茨和羅伯因為里德的拒絕,心情值和關係值都會有所降低。

這款沒有女異性戀角色的遊戲,源代碼是怎麼寫的?



詭異的是,把有關飛船墜毀的部分去掉,這一情景完美反映了關於性、浪漫以及男女關係的一種常見敘述。無論在媒體還是在現實生活中,我們能頻繁地聽說這些故事,關於男人們是如何「不能自已」地圍繞在美女身邊,關於被迷人的女性拒絕對男人來說是多麼毀滅性的打擊。先不管這些故事的真實性,以及它們對男性和女性的同時貶低,為什麼這是《邊緣世界》中針對男女關係講述的故事?為了能夠深入了解到問題核心,我對《邊緣世界》的最新公開版本進行了解包,從程序中來看看浪漫互動是如何被決定的。為了便於非程序員讀者閱讀,所以較長的部分是以偽代碼呈現的,來告訴你它們的作用是什麼,所以你不需要掌握流利的C#語言。


先說清楚,我上面描述的軼事在《邊緣世界》中並不是一個獨特的場景。本文寫作時在《邊緣世界》reddit上討論熱度最高的一個帖子,就是一位玩家在求「如何對付好看的女同性戀的策略」。另外,之前一次對《邊緣世界》的反編譯總結了該遊戲對浪漫行為的模擬,也明確指出了造成里德窘境的答案就藏在遊戲源代碼中。


那麼,為什麼里德的兩個倖存者同伴持續不斷地調情呢?部分答案在於,遊戲對於男女角色如何開展浪漫嘗試的計算是不同的。所有角色一開始都擁有一個基礎概率,能按照這個概率把任意社交互動轉化為開展浪漫嘗試;而為了讓求愛發生,對方外貌還要超過一定的下限,對方在角色心中的地位也要是正的數值。換句話說,你必須得真的喜歡上一個人並覺得對方有吸引力,才能去嘗試開展與他們的浪漫關係。當發起浪漫關係嘗試的隨機概率參與進來時,事情就變得有趣了。

// 基於發起者性別的概率變化


if(me.gender == male) { //如果發起者是男性


// 不變


initiation-chance = initiation-chance * 100%;


}

if(me.gender == female) { //如果發起者是女性


// 初始概率僅為原本的八分之一


Initiation-chance = initiation-chance * 12.5%


}

換句話說,女性角色去嘗試並開始浪漫關係的概率只有男性角色的八分之一。當然,這不是唯一因素——還有是否存在現任伴侶以及與對該伴侶的感覺等問題。然而,這種對性別的單一檢查有一個深遠影響,就是它使女性發起的浪漫嘗試非常罕見。請注意,無論是之前的回拒史還是對方是否有「同性戀」屬性,都對此沒有影響;這可以解釋為什麼二人不會停止追求。但這種行為是純單向的。里德不會去挑逗羅伯和布茨,並不因為她是女性,而是因為她覺得這兩個人沒有吸引力。

這款沒有女異性戀角色的遊戲,源代碼是怎麼寫的?



那麼吸引力又是如何計算的呢?對於男性和女性角色來講,吸引力都取決於幾個變數:發起者和接受者的性別、發起者的性取向、接受者的美貌程度、年齡和身體能力。


在研究性別差異之前,我們先看幾個通用變數:


// 在餘下的函數中,將吸引力乘上以下各項因子


// 談話、移動和操縱物體的效率(殘疾角色會遭受懲罰


// 外貌屬性的獎勵和懲罰(醜陋=30%概率,美麗=230%概率)


// 15-18歲之間的人的額外年齡因素


// 規定女同性戀的取向


if(me.orientation == gay and them.gender == male) { //如果發起者是女同性戀,接受者是男性


// 無論如何都沒有吸引力


return 0.0;


}


//並規定女性非同性戀的取向


if(me.orientation == straight and them.gender == female) { //如果發起者是直女,接受者是女性


// 只有原本的15%的吸引力


attractiveness = attractiveness * 15%;


}


在《邊緣世界》里其實沒有「直女」,也就是說,沒有女性只被男性吸引。相反,遊戲中的每位非同性戀單身女性,都有一定幾率被其他的女性吸引,也就是說她們是雙性戀。對於男性來說程序又有些不同:


// 計算對方在我眼中的吸引力(0.0到1.0之間)


float calculate_attractiveness(Pawn me, Pawn them) {


float attractiveness = 0.0;


if(me.gender == male) {


// 規定男性角色的性取向


if(me.orientation == gay and them.gender == female) { //如果發起者是男同性戀,接受者是女性


// 無論如何都沒有吸引力


return 0.0;


}


if(me.orientation == straight and them.gender == male) { //如果發起者是直男,接受者是男性


// 無論如何都沒有吸引力


return 0.0;


}


注意,在遊戲中男性的可能性取向只有異性戀和同性戀兩種。在《邊緣世界》中,不存在雙性戀男性,只有同性戀和異性戀男性;不存在異性戀女性,只有同性戀和雙性戀女性。


最後,我們來討論下最複雜的部分——基於年齡的吸引力。僅僅解讀代碼,很難把這件事形象地表現出來,所以這裡採用了圖表的方式來呈現。


對男性角色來說,基於年齡的吸引力計算。

這款沒有女異性戀角色的遊戲,源代碼是怎麼寫的?



對於女性來說,基於年齡的吸引力計算。

這款沒有女異性戀角色的遊戲,源代碼是怎麼寫的?



在《邊緣世界》中,男性角色總是被從20歲到自己年齡之間的人所吸引。如果男性角色小於20歲,也並無二致——因為程序會先檢測「最低「邊界,然後使得他們一定會被20歲的人所吸引。這就解釋了為什麼32歲的羅伯和17歲的布茨會一直約23歲的里德出去。但是,由於相同的代碼不會檢測相對年齡差,17歲的布茨不會真的覺得他17歲的同齡人有多少吸引力。同樣的也有一個吸引力的最低年齡——16歲,以及最大年齡——角色的年齡加15歲。所以在這種情況下,布茨不會被32歲以上、16歲以下的任何女性吸引。


另一方面,女性壓倒性地偏好比她們年齡大的人。而且與男性不同的是,女性對於「太老」的角色沒有明確的界限:即使是比自己大40歲的角色,也有一定的幾率吸引到自己。這和男性的計算方法形成對比:只要角色比自己年長15歲,就完全不會吸引到自己。


總結


男性去嘗試並開始浪漫關係的概率是女性的8倍;


殘疾角色有較少吸引力;


美貌的角色總被認為有極高吸引力,不好看的人吸引力就大大減少;除了性取向外,長得美是主導吸引力的唯一特徵;


異性戀男性永遠不會被男性吸引,同性戀男性永遠不會被女性吸引,男性角色不存在雙性戀;


女性可能會被男性吸引,同性戀女性永遠不會被男性吸引,只有雙性戀女性和同性戀女性;


對於全體男性來說,從20歲到自己年齡的人最有吸引力;如果男性角色年齡小於20歲,他們會認為20歲或稍長人最有吸引力,而不會對同齡角色有所注意;


對於全體女性來講,年齡相同或者比自己年齡大的人對自己最有吸引力;比自己稍微年輕的人極其沒有吸引力,而比自己年輕10歲的人完全不會有吸引力;


全體男性不會被比自己年長15歲的人所吸引;


對於女性來講,不會有吸引力的年齡上限,無論對方比自己大多少歲,女性都有一定概率被吸引。


當然,《邊緣世界》還沒完結。它是一個仍在不斷開發的遊戲,所以這種關係系統很可能會繼續發展和改變。此外,引入這些管理公式的各種數值可能是因為某一天設計人員工作得太晚,或者是作為佔位符,又或是僅僅想讓系統不出岔子而已。換句話說,在這一切背後可能根本不存在什麼對性別角色的特定評價或解讀。任何試圖表現或模擬複雜現實世界情景的遊戲系統,都必須進行簡化和犧牲,而人際關係可能是你能描述的最複雜的事情之一了。

這款沒有女異性戀角色的遊戲,源代碼是怎麼寫的?



但我們並不是基於《邊緣世界》的未來可能性而分析它的。我們要問的問題是:「《邊緣世界》中已經在講述的故事是什麼?」是的,遊戲製作是一件很費精力的工作,可能這些數值就只是被加了進去而已,而至於它們對遊戲的影響,則沒有過多思考。但這設計的到底是一個怎樣的系統,會為了「僅僅讓它能夠運作」,而造成系統中不存在雙性戀男性?而且在整個遊戲中,女性主動開始浪漫關係的概率比男性低八倍?


而且,《邊緣世界》所沒有模擬的和它已經模擬的一樣重要。還記得不斷被別人挑逗和拒絕別人不會導致心情變差,只會降低對追求者的印象嗎?但在日常生活中,不得不持續拒絕他人可不是什麼好感覺。但是這些負面感受僅僅機械地體現在那些被拒絕的人身上,而且由於對浪漫關係開始的處理,玩家最終不得不去照顧這些被拒絕的悲慘男人,而不是那些總是不得不拒絕這些討厭遭遇的女人。


我們可以將這個行為標記成系統漏洞,但那些只是表面問題。它們是容易被注意到的、遊戲內的結果,源於這一系統對男性和女性的行為模式做出了假設,並字面意義上地將其編碼入系統的基礎結構中。確實,角色表現是一個棘手的問題,而我們可能永遠創建不出一個浪漫行為的完美模型。


但這個模型的問題並不在於它有缺陷。問題在於,它的缺陷完美反映出了人們對浪漫關係的期待中現存的性別歧視,而且如此明確細緻,很難認為這是無意為之。而如果這是無意為之,我們就應該繼續問這個系統試圖展示些什麼。它允許的可能性有哪些?什麼是《邊緣世界》設定可能性的邊界?


反編譯源代碼讓我們非常清晰地看到了這些性別差異是如何被寫入遊戲的。然而,僅僅靠玩遊戲並不能直觀地掌握到這些問題。同時,這個系統對你的遊玩方法有很大影響,因為《邊緣世界》中最關鍵的一個挑戰就是令你的殖民者高興。代碼永遠都不會毫無立場。所有這些代碼結構推動一個特定場景勝於其他場景,這種情況大多數時候是無害良性的。然而,這並不意味著它應該逃避檢驗,因為我們可能最終會不加思索的在有害的假設下進行編碼,這最終意味著我們制約著我們的遊戲所可能的樣子,同時也疏遠了其他玩家。


洛夫切爾德和羅伯稱為情人

這款沒有女異性戀角色的遊戲,源代碼是怎麼寫的?



至於里德,事情慢慢變得好了一點。其他女性加入到了殖民地中,其中一位,19歲的洛夫切爾德,已經和羅伯訂婚。里德與羅伯相處得更加融洽了,畢竟他花更多時間與他的未婚妻在一起,而不再是試圖不停勾搭她。當然,大家仍都喜歡里德,因為她太美了;每個人都在同她交談,並且布茨也仍在向她暗送秋波。但是她永遠不會對此做出回應。


編輯註:我們有聯繫《邊緣世界》的開發人員進行採訪,作為文章的一部分。但他們拒絕參與,除非我們放棄對採訪出版的編輯控制權,轉讓給開發人員或採訪對象。但我們沒有,所以也就沒有對開發人員進行採訪。


別瞎玩


《輻射》和真實世界有多少不同?


《文明6》的羊皮紙地圖上,為啥海怪那麼多?


本文來自果殼網,謝絕轉載


歡迎轉發到朋友圈!

這款沒有女異性戀角色的遊戲,源代碼是怎麼寫的? 點擊播放 GIF/217K



請您繼續閱讀更多來自 果殼網 的精彩文章:

一本正經地胡說八道——「黃油貓永動機」到底存不存在?
給孩子一生受用的表達方式,這一次我們用丙烯
蜜汁你畫我猜:當AI只給你20秒來畫畫——坑爹呢!

TAG:果殼網 |

您可能感興趣

情侶玩了這兩個遊戲,還不分手的,那絕對是真愛
別的遊戲要你的錢,這個遊戲要你的血……
這是什麼遊戲呀?角色造型很萌呀!
沒有最弱角色,只有最弱玩家?抱歉,格鬥遊戲不是這樣
這些美女為了跟富豪相親,不惜打扮妖艷甚至做這種遊戲!
沒有比這更刺激的了 一款偷看妹子洗澡的遊戲
「貢品」魔獸,這在遊戲界是什麼樣的存在呢?
親愛的這不是愛情!這3個星座男,只想玩曖昧遊戲!
這種幼稚的遊戲,我才不玩
摁,還是不摁?這是一個值得單身狗驕傲的遊戲
打了這麼多遊戲,你有沒有想過血條是怎麼來的?
又一個喪心病狂的情侶遊戲,玩不好可是會分手的
抖森、卷福、小貝、權力的遊戲……這件事只有有鼻子的人才能做,卻偏偏被一個沒鼻子的神秘人承包了
有個愛玩遊戲的對象是什麼感覺?
連性別都變了?那些在遊戲中被黑得最慘的角色
「有孩子卻又不放下遊戲的生活」是怎樣的?
汪:鏟屎的,你是不是傻! 跟我玩這麼低智商的遊戲
有個愛打遊戲又不幹活的男朋友是什麼樣的體驗?
刀劍神域——「這雖然是遊戲,但可不是鬧著玩的」