Friday 12 July 2024

被青梅竹馬抓來(略) (10):魔法師戴手套是為了保護自己

Character design: @kuonyuu, Illust: @さかしま commissioned by forretrio. Skeb
Editing and re-posting are prohibited // 無断転載、無断使用禁止です

華格斯家族。

表面上是在王都專營奢侈品的貴族家族,經營生意之餘一直幫助弱勢團體,頗受市民歡迎。暗地裡是控制王都地下勢力的霸主之一。這點在高階貴族間已是常識。它之所以被容忍是因為他們表面上沒有任何逾越的行為,其管轄的地下勢力也沒有出過甚麼大亂子。只要他們還想保住其貴族地位就不可能做出太過份的行為。這種共識已經維持了很多年。

華格斯家族經營地下勢力的方法以手段多變著稱,鮮少有膽量與其正面對抗的地下勢力,幾次認真出手都以對方徹底覆亡告終。但它似乎沒有統一江湖的欲望,也許是不希望過於顯眼。

如果要說這家族的弱點,大概是其家主和預定的接班人即家主的長子已經很久沒露面。即使家族在社交場上沒有特別活躍,完全不露面這一點依然十分奇怪。家族本身絲毫沒有內亂的跡象,各級人員依舊活躍在業務當中,對外也沒公布任何有關家主的訊息。傳言兩人已經不在人世,但這個傳言無法被證實。如果傳言屬實的話,手握家族大權的人可能是比起家主與長子更神祕、從不露面的次子。

因為繼承順位和極為低調的關係有關他的資料相當匱乏。傳聞中他是一位天才般的暗屬性魔法師,可能被家族藏起來培養作為未來的王牌。外貌不詳。實際魔法才能不詳。可考事跡不詳。潛在危險性高。實際上可能為家主的可能中等。名字--丹特.華格斯。

唯一一次前家主消失後的大型衝突現場有發現暗魔法的使用痕跡,但無法斷定是否高階魔法師所為,也沒有回收到屍體作檢測之用。

學園裡的丹特申報自己來自富商家庭,其行為舉止與申報相符,禮儀和談吐用字裡都反映了中產以上和帶有異國風情的出身。後者加上帥氣外表使他在短時間內迅速融入其他學生之中,不論平民貴族男女之間都有一定人氣。入學測試中所有科目都拿到合格分數,魔法適性測試裡他也展示出很好的光屬性潛力,兩者加起來在魔法科學生中也排在前列。校方沒有其暗魔法才能方面的情報。

報告裡最讓庫里斯感興趣的是丹特在開學第一天與庫里斯戰鬥的那一段。丹特的光魔法在刮起的風暴之中毫無用處,他後來是被其他被吹起的學生撞倒的。總體來說在戰鬥中毫無貢獻。

這份不是「千面鴉」販賣情報時按客戶需求準備的情報,而是他們內部整理出來的原始情報,可見京士頓真的誠意滿滿。上面的重點都用粗底線標了起來,最後還有一個注腳:情報價值高但直接剌探不值得,建議從周邊搜集訊息。

他躺在大床上苦笑起來。來到學園以前他以為最麻煩的是那些自恃身份成為剌頭的貴族學生,正如他當年遇到的人一樣,但他發現他實在錯得離譜。公主殿下的存在使得同級之間權力鬥爭幾乎不存在,刺頭們也得惦量一下他們的身份夠不夠他們搞事。更何況公主殿下曾公開找過他說話看起來觀感還可以,自己也在開學第一天露過一手,可以說被學生找麻煩的機率幾乎為零。他沒想到的是學生們本身就足以把他綁上了王都的政治紛爭這艘賊船。即使不算上丹特,其他貴族學生有自己的小秘密一點都不意外。華萊里安已經暗示了他一次,京士頓這份情報則是直接陰了一把。

他再次閱讀這份情報。「千面鴉」說沒法證明學園的丹特和華格斯家族的丹特有所關聯,自己當然沒本事另下定論。如果這兩個身份是兩個人的話那一切都只是個美麗的誤會,但如果他真的是華格斯的二少主呢甚至實際上的家主呢?

偽造身份進入學園這件事就很麻煩。作為培養未來權力核心的地方,學園不可能容忍他留下來。如果當初丹特以其正式身分入學而沒人能證明他與家主的失蹤有關的話,學園說不定會勉強讓他入學。但背負偽造背景和潛在殺人犯罪名的人還能進學園的話才是笑話。事情曝光的話連帶家族也要承受這事情帶來的怒火,被排擠之類的肯定會發生,再嚴重一點被降格或者家業被拔掉也不無可能。

如果事情發展到這個地步,可以預見丹特一定會進行報復。「庫里斯知道這個情報」本身就是個情報,是京士頓獨家握有的消息。又有誰能保證他不會把這條情報有目的地給漏出去呢?一個地下勢力出來的人會使用怎樣的報復手段……庫里斯實在不敢想下去。

他用那缺乏政治經驗的腦袋想了又想,最有用的都是華萊里安和京士頓不約而同的提點:好好教書就是他最大的保障。

「不就是以前我上課學的東西嘛……」布拉德上的課他已經忘得九九十十了,剩下都是他少數覺得有用的觀點,接下來他要準備的課就是其中之一。

*

幾天後的魔法科教室。

本來指定預習的古典元素觀再次被帶到課堂上。庫里斯故作輕鬆地問學生們有沒有好好預習,大半都舉了手。於是他開始按布拉德留下來的筆記開始講課。

「……古典元素觀之所以是古典,是因為他們依照最基本的需要理解和使用魔法。最典型的例子就是--」

他攤開手掌,一團火焰憑空出現在他的手心之上。

「有沒有想過這種大家都做的出來的火焰,為甚麼不會燒到自己呢?」

他拿起一張白紙放在火焰上方,白紙還沒碰到火舌已經被燒出一個洞。他又換了一個角度,拿著白紙從側面掃過去。結果還是一樣,紙張穿過火焰的部分也被燒穿。然後他把白紙插在火焰和他手心中間的縫裡,紙張沒有被燒穿,只是燻出了一個焦黃的圓點。

「對你們這些有專家指導,又或者天賦出眾的人來說可能不是一個問題。但是這對其他人來說其實是常犯的錯誤。由他們來施法的話可能會變成這樣--」

火焰突然好像被風吹過一般形狀變得不規則,本來最明亮的中心位置變得忽明忽暗。他重複把白紙放在火焰上方和側面的動作,得出一同樣的結果。他又把白紙插到火焰和他手心中間,這回紙張沒能倖免被燒焦了一塊。他化掌為拳把火焰掐滅掉,隨意地向學生展示著火焰下方完全沒有被燒焦痕跡的皮手套。這當然算不上甚麼特別的把戲,在座學生隨便一個都能做到類似效果而不用燒到自己。加上魔法師的手套多半帶有防護能力,這種小法術能燒到自己才奇怪。

「很明顯不會燒到手不是魔法本身的特性,是我們有意做出來的,目的當然是讓我們更安全地駕馭這團火焰。這正正就是古代對元素魔法的追求--從基本的需要出發,用試錯的方法把不符要求的法術淘汰,將最好用的留下來成為我們現在接觸到最基本的魔法形式。」

按布拉德的原話掌控魔法分成幾個階段。最低層的是理論上的存在,你知道這樣產生某個效果的可能;然後是不完全的發動,就像那團不穩定的火焰,只能達到部分預期中的效果而且有不確定性;再往上是完整地使用魔法,也就是魔法效果完全與預期一致;最高的層次是可以按需要把魔法微調甚至與其他魔法融會貫通。古典觀裡面理論的缺失使得他們只能用試錯的方法建立術式,不但掌握魔法成了空中樓閣,也斷絕了更進一步的可能性。

從這裡布拉德會開始宣揚以火屬性魔法為基礎磨練自己技術的好處:火焰高溫帶來的危險注定學生必須先專注於駕馭火焰。專注力、精準性、穩定性--這些同時是所有魔法的基礎。也就是說,磨練火屬性魔法就相當於磨練施法技巧本身。

這當然是布拉德自己的一面看法,庫里斯可不會認同他的結論。練習其他屬性的魔法就不會有危險嗎?火焰的高溫那是明著來的危險,不代表其他元素魔法就不會有其危險性。難道風屬性魔法就不能切到自己嗎?體內魔法迴路失控或者術式完全失敗引致完全無法預料的效果,這又豈是單練火屬性魔法可以改進的呢?

庫里斯不得不認同的一點是布拉德建立了一套完整的流程和指標,就算是天資一般--以魔法科的標準而言--的學生,也能夠跟著流程學習而達到不錯的效果。在他看來,這種頗具啟發性的入門簡介應該可以提起學生的興趣,再不濟也能讓昏昏欲睡的學生提起精神來。

但結果卻跟他想象完全不同。

台下學生們的反應與一開頭講屬性本質時不同,他們的肢體動作和眼神已經出賣了他們的想法。絕對是乖學生的菲莉公主還在抄寫筆記,但她的護衛伊雅娜已經變得眼神死,克萊伊和艾基爾的反應倒沒伊雅娜大,但明顯對這種東西缺乏興趣。一個有趣的現象是,貴族學生明顯比平民學生更消極一點。庫里斯一邊繼續講解一邊快速思索著背後的原因,很快他就有了一個推測。

布拉德已經霸佔這個教席好一段長時間,如果他沒退休的話今年也必然繼續在魔法科任教。那些貴族學生肯定知道這一點,說不定連他每一年怎樣開頭都多少知道。雖然知道授課內容不代表再聽一次是浪費時間,問題在於他的名字叫庫里斯,不叫布拉德。

這些有關火屬性魔法的入門從一個教了很多年的火屬性大師口中說出來,跟從一個不是專精火屬性的菜鳥教師口中說出來完全是兩個效果。前者一舉一動都帶著無容置疑的權威,讓學生們真的相信磨練火魔法的好處,這點從他多年來穩定產出火屬性高手就能看出來。而他抄著布拉德的說辭又不是真心想學生們全身投入到火屬性裡面,既不倫不類也沒有說服力,對那些事前知道這些內容的學生來說更是失望。

想到教學業績與小命掛鉤的他打了個顫,當下就把壓箱底的絕招拿出來:「……以上都是測驗會考到的內容,不單是火屬性還有其他屬性都在測驗範圍之內。沒有辦法呢~雖然我覺得這些東西聽聽就好,但是放進測驗的話就是你們證明自己的機會了。相信這點東西也難不到你們吧?」

那些本來眼神死的學生聽見是測驗內容頓時便來了精神,也有學生聽出這是話裡有話--這是他沒有興趣花時間的課題,但測驗內容非放這些不可。出來的成績比起對自己實力的證明更像是對庫里斯的信任票--考得好不是必然,反正一個測驗對學業整體不會有影響。看看剛才學生們的反應,庫里斯一定要展示出更好的教學能力才行。

「古典元素觀聽起來的確很蠢,但也不能說一無是處。一個沒有理論基礎的體系孕育出來的魔法師絕大多數都是個渣沒錯,可是間中也有那麼一兩個天才靠著這個破體系成為大魔法師。可以說,這種體系理論上上限可以很高。」

「可是大部分人學習魔法還是基於現實需要,對上魔物打輸了的話可是要死的啊。誰會拿自己小命來開玩笑?這時候水準參差,沒法穩定養出魔法師的古典體系開始分裂成兩個分支:一個是將魔法簡化成對使用者要求低,可以穩定使出基本魔法的平民路線;一個是試圖追隨古典體系裡的成功例子而發展出來,對使用者要求高但上限也更高的貴族路線。」

「隨著時間推移兩條路線漸行漸遠,最終變成兩種獨立的體系。平民路線就是你們看到在民間流傳的三腳貓功夫,而貴族路線當然就是你們會在這個學園裡接觸的魔法。兩條路線的差異之大,就算是天賦上佳的人也沒法隨意在兩種路線之間切換。這也是為甚麼學期剛開始我們就要搬出這些艱涉的理論,因為一開始就糾錯才是最容易的。」

「至於兩種路線出來的效果真的差很多嗎?以我當冒險者的經驗來看基本上是天差地別。如果你發現一個魔法師只會用特定幾個魔法的話,他多半都是走平民路線學習魔法的人。再仔細留意他們的話就能發現他們一般都擁有魔法以外的技能,或者說那幾個魔法只是他的技能之一。真的只會幾個魔法那種人只能在冒險者底層混日子。」

「聽上去可能跟你們對魔法師冒險的想象差很遠對吧?魔法師在隊伍裡就應該專職使用魔法,其他東西就該丟給別人做對吧?問題是如果魔法師的攻擊手段不足以殺敵的話是沒有被保護的價值的,而遺憾地這幫魔法師的確做不到這一點。他們只能退一步當個輔助,在特定場合使用他們的魔法之餘承擔一堆雜務。簡單來說他們只是一個多了項技能的雜役而已。這樣的冒險者又怎可能在更高等級的探險中發揮功用呢?」

他望著艾基爾道:「說到冒險的話,在座各位之中應該數艾基爾的經驗最豐富。那我問問你,你有應徵過在冒險隊伍裡當魔法師吧?多半都被拒絕了?」

艾基爾沒想過會突然被點名,「嗯……的確。有一次我被拉進去試用也沒犯甚麼過錯,但試用過一次後對方甚麼都不說就把我退掉了。現在看來就是因為這個原因?」

「嗯,」庫里斯凝空一指,一團比剛才明亮得多的火球出現在他的指尖上,幾乎所有學生都能感受到其熱力。他輕輕地把火球甩出,火球便以不合理的速度往前飛去,又在撞上課室後方牆壁之前消失:「大概要這種威力吧。」

自己既然不是火屬性的大師,抄人家的講稿幹嘛呢?自己在冒險方面算是小有名氣,從這裡切入教學內容不就好了?他開始注意到學生們的眼神開始變得不同。本來的散漫變成了好奇再變成了專注,在台上的他可是看得一清二楚。他開始講起他的冒險經驗,解釋為甚麼不夠強的魔法還不如不用。這些東西對他來說就如常識一般信手拈來,他口袋中還有無數個冒險旅程中收獲的小故事。艾基爾對此毫不意外,其他人卻得以用全新角度理解這位新來的魔法科老師。

下課的鐘聲響起,看學生的反應他知道他又過了一關。但這條教學的路,前路還很長。

=============

很多時候我們對遠古技術都會有超乎現實的想象。西方的瑪雅和古埃及都有現代難以理解的科技,阿特蘭蒂斯傳說中的文明更是遠超現代;東方單看中國就更多了,先不說山海經、海內十州記這些,單是出土過的絲綢兵器的製作技術和現存的寺廟(然而在日本)和橋樑都是現代未能探明的。這些古代技術對於那種正常文明進展的歷史觀來說可以怎樣解釋呢?

其中一種主流答案就是古代有一個超然於當時乃至現代人類的文明,這個文明把這些技術分了給人類,只是後來這個文明又消失或者衰亡了云云。當然最後那句才是這類學說不入主流的原因,但這阻止不了人們對這種學說的幻想。這種文明一般以神明的形式展現,比如西方神話中希臘神話中火種是神明給予人類,中國神話也有封神榜之流的作品。為何「神明」最後消失了,或者說在史書時代沒留下可信的與「神明」交通的記錄還是最大的問題。

另一個答案則恰好迴避了這個問題:古代某種資源遠比現代豐富--此處資源可為各種抽象的事物。玄幻修仙作品中常見的套路就是古代靈氣充盈金丹滿地走,但到了現代靈氣稀薄修練困難才有了主角的逆天傳奇;血統論某程度上也是這種看法的分支,「純血」個體可以做到其後代做不到的事情,常見於西方吸血鬼/魔幻作品,甚至哈利波特(沒錯又是你)的世界也是這麼想的;更現實一點是某種化學成分或礦產,但如果二十一世紀都搞不明白的話這種有形無機之物怎可能解析不出來?這種看法過於荒謬以致只存在於文學之中。

一些作品就算沒有特別提到這種貴古賤今的大環境,只要上古時期強得太過份的話也會有考據黨提出類似的疑問。我們再拿哈利做例子好了。雖然我在第三章提過一下類似問題但再詳細一點可以這樣問:為甚麼四位創始人可強得過份?別忘了葛來分多和史萊哲林正是因為純血問題鬧翻,顯然純血與否不是強度的全部。如果要說太遠古沒法考究(對世界觀裡面的人物來說),那麼魔世代即一九二零到四零年代老鄧大戰葛林戴華德的神仙打架又如何呢?區區六十年前的東西對二十世紀學術能力來說應該很簡單吧?還是說魔法界的學術能力真的太低?這些問題甚至不用挖太深我們就已經知道答案是沒有答案,官方所有資料都沒法回答這些問題。對一些人來說是個遺憾,但至少留了很多空間給同人作家發揮。比如很多平行世界裡的主角和妙麗都會聯手卷翻那邊的學術界,隨便發點論文就能爆殺<<今日變形學>>期刊……但我覺得這真的不太容易就是。

所以我對這個問題也給出了一個答案。

不是貴古賤今,是古代人投放了海量資源進去--尤其是時間。你以為現代人的效率比古代人高很多所以在研發方面古代一定比較差嗎?非也。你現在去找學術經費或者初創投資,人家可能只給你半年到兩三年時間。可是以前呢?人家幾百年來都在做同一種東西,為甚麼不能贏你?現代人想復刻宋瓷精品,把花紋分成幾等,最高級的曜變天目一直復刻不出來。如果我們假設燒出來的中獎機率固定,為甚麼不能是你不夠歐燒不出來?現在也就一兩隊人在燒一個窯,如果在宋代人家幾十年來用幾十隊人去燒,要抽中大獎是不是容易多了?同樣地在魔法世界觀中古代這麼多年裡出過幾個天生神力的大魔法師,是不是比古代魔力充沛論合理多了?

為甚麼現代人沒法復刻,不是不能而是不需要。資本社會以利益掛帥,如果複制出古代技術不能賺錢,不說沒人去做也不會有太多人做,上面的復刻宋瓷就是一個例子。學會古中國那種不用釘子的建築工藝能賺錢嗎?也許可以--至少大阪世博館採用了這種工藝,但絕對不會有人用它來建高樓大廈。恆大可以一天蓋一層,你這工藝怎樣比?舉一個有利益推動的例子--美國丟失了當年做核彈頭的關鍵材料FOGBANK一直復刻不出來。他們的辦法是甚麼?一直砸錢。幾度增加預算後終於把東西做了出來,還發現失敗原因是純度過高!對我來說,諸如瓷器或者古代紡織技術都可以歸到這一類裡去。

你可以說這種想法不能解釋所有技術缺口。比如出土過古劍有用鉻電鍍防腐,這種絕對不可能用碰巧解釋--古代甚至沒有天然的高純度鉻!這也是為甚麼秦始皇是被認為古代中國最開掛的文明沒有之一。如果你叫我這個半吊子作一個推測的話……大概就是春秋戰國的寬鬆思想環境容許了部分科學分支發展。沒有系統化但就是能造出某些東西如天衣或者神劍的技術,而這些都被秦朝收割了。秦的獨尊法家到以後儒術稱霸使得這些技術被當成思想的一部份取締掉,所以技術失傳而後世也再造不出這些東西來。以上只是推測,不要當真。咳咳。

另一點我想說的是手套。

我有時會想:在手上的魔法就不會傷到自己嗎?像火魔法之類的東西物理上光是放在手上就有一定危險性,所以上面提到練習火魔法的基本功就是控制火焰使其燒不到自己。但是實用層面上再加一層防護比單純靠技巧可靠多了,所以我堅信魔法師們多半都會用手套。設定上手套作為最貼近正常施法位置(手)的飾物,用擁有防護能力/抗性的物料是基本。更進一步也有鑲嵌為施法帶來增幅的寶石或者花紋,如果鑲不上去也可以用戒指代替……不過戒指太多不好看就是。

然後是手套本身的形狀。最近很流行短手套(half gloves)--連手腕也不到,可能只覆蓋手心四分三長度的手套。如果要說就像是原神公子或者綾人那種(不知為何原神超愛這種手套),在現實中也見於跳舞用時裝,比如2023紅白就有一團在用。但我想說這種手套一點都不科學啊!除非是客製化可以讓手套緊貼你的手指,不然穿上去根本就鬆垮垮的很容易掉出來。我訂了一對拿去打音遊,打到一道不到就覺得還是不戴比較好。所以這種短手套,出局。

傳統有一定長度的手套呢?沒問題但不夠潮,出局。長/過肘手套太誇張也出局。剩下兩種剛好就是庫里斯人設用的兩種手套。一是露指手套,另一種就是長度及腕但是露手背的手套。按設定來說護住手心是必須的,那改動就只能動在手背上。這種設計大概是可以進一步方便魔力感知吧(?)。要露出手背但手套又不能做太短,這個改動其實不容易,一不小心就會變得很土,比如拳皇的泰利(Terry)那雙拳擊手套。所以山神さやか老師設定的手套是露出大部分手背但是收束在手腕處的樣式,基本上就是不是短手套但貌似短手套的效果。いのた老師則是完美地畫把手套出來(見上一話的插圖),實在滿足了我的心願!順帶一提最近看漫畫看到另一種露背手套的設定也很吸引:露背範圍呈三角形展開(……或者你弄成倒心形也可以),末端用繩子連著緊扣在手腕以下的皮帶。這種設計的話就算是短手套也沒問題,就是色了一點。

感覺雜談已經過長了,有些可以留到下次的話就留到下次再說吧。但是我還想補充一下關於華格斯家族設定的感想:完筆校稿之時我才突然想起<<一代宗師>>裡宮家師兄丁連山對上葉問說的一句話:「一門裡,有人當面子,就得有人當裡子。面子沾不得一點灰塵,流了血,裡子得收著;收不住,漏到了面子上就是毀門滅派的事。面子請人吃一支煙,可能裡子就要除掉一個人。」一代宗師貫穿全片字字珠磯,但這一段文武兼具的戲算是我的最愛了。感覺這段對上半隻腳踏在黑道上的華格斯家族來說也挺合適的。至於事實上是不是這樣,以後才會揭曉。

以下是感謝的時間:頁首的是さかしま老師的委托圖,那個自信滿滿的樣子真的不錯!結尾的是一之瀬さつき老師的委托圖,難得把其他學生也畫進去了!唯一可以吐糟的地方是學生的制服應該長得不一樣才對吧XD

Character design: @kuonyuu, Illust: @一之瀬さつき commissioned by forretrio. Pixiv
Editing and re-posting are prohibited // 無断転載、無断使用禁止です


Tuesday 2 July 2024

Optimal difficulty curve for tests

A sequel to my previous babble about binomial distributions, but not really.

Is it better for test score to be uniformly distributed than normally distributed?

The aptitude distribution of the students is normal, this is not we can control. However we can control the difficulty curve of the test so that the test result can be of arbitrary distribution.

To start with, let the aptitude of students be $X\sim Z(0,1)$. A test $f$ is a  non-decreasing surjection onto [0,100]. If the test is a piecewise linear function that is zero before a threshold and 100 after another threshold, then we expect the result to be normal (with slight truncation). We can also use an inverse normal curve as the test. In that case, $f(X)$ will become a uniform distribution.

However, students does not always perform to their quality. We need a noise term in addition. The resulting performance is now $f(X) + \varepsilon$, where we assume $\varepsilon$ to be a normal noise. The initial question becomes to find $f$, or rather $f(X)$, such that given two samples $x,x'$ from $X$ with $x \geq x'$, $P((f(x)+\varepsilon(x))-(f(x')-\varepsilon(x'))\mid x\geq x')$ is the greatest. i.e., we want to seek for $f(X)$ so that the chance of misordering student aptitude is minimized.

Despite the complexity of normal density, the above probability can easily be written as a double integral, then some variational method potentially gives the answer. But here is a simpler way to find the answer: to minimize the probability is the same as minimizing $p_f(r) = P(|f(x)-f(x')|\leq r)$ for any two samples from $X$. If there is a single $f$ that minimizes $p$ across all $r$ then such $f$ would surely minimizes the stated probability.

Unsurprisingly, uniform distribution is what we desired. The reason is simple: majorization. The more sparse the distribution is, the lower $p_f$ would be, and the best possible one is the uniform distribution $U(0,100)$. 

From an information theory perspective, this is clear because uniform distribution has the highest entropy, thus gives highest resolution. The answer is so smooth with multi-perspective explanations, except that if $f(X)$ is uniform that means we are going to fail half of the class...

So no, don't do that to the students.

Wednesday 26 June 2024

DP and Markov Chain

Decided to give a little push on projecteuler. Almost 10 years since I actively solve problems. Many new problems have been added but the average difficulty drops a bit comparing to P200-300. This is good as the site does not necessarily serve the purpose of asking harder and harder questions to defeat the best math programmer, but a site where most can enjoy.

But the core idea has not changed: it's most likely about reducing complexity using maths plus some searching optimization. The math behind has been the same: everything about number theory plus a bit of geometry and combinatorics. On the searching side nothing changed as well: it's always dynamic programming -- if it isn't then probably the math part alone suffices to solve without the need to search.

Opposite to those purely mathematical problems, there are some purely computational problems too. Well, maybe not that computational like P345 "Matrix sum" where you find maximum trace (sort of) in a large matrix, but there are numerical problems with zero mathematical insight involved.

I wanted to use the example of cycle number aka friends of 142857 but there is still minimal maths behind like its relations to the numbers $10^k-1$ (which is also related to questions concerning repeating periods). But we can go much less mathematical. How about numbers that used all 9 digits? Primes with a particular appearance (not mathematical properties)? Fortunately there is a framework to solve those.

I solved about 20 problems recently and half of them done using the same framework. It's so handy that it's worth a talk, and perhaps it will guide you to solve those questions as well.

*

It is all about dynamic programming. When we first encounter DP we usually learn to solve backwards like all those shortest path problems. But it is also possible to recursively solve from the front. Mathematically there is a fancier name: Markov chain.

The idea is the same: we recursively calculate the state at each iteration till we need reach the end. We first define the initial state $A_0$. For each iteration we calculate $A_{k+1}$ from $A_k$ and extract information from the state if necessary. Terminating at $A_n$ would give the answer immediately. 

Example 1. Consider a simple random walk problem where an ant starts from position zero, where he can only walks by +2, +3 or -1 each turn with equal probability. There are traps on each odd (positive) prime where the ant will get stuck and stop moving. Can you give the expected position of stuck ants in 10000 turns?

A typical absorbing Markov chain. What's not typical is the randomly assigned "odd prime traps". Without those traps it's actually easy to find the chance for an ant to reach position $k$ at turn $n$: we have the equations $2a + 3b - c = k$ and $a+b+c = n$ with a dimension 1 solution space. Combining with the non-negativity condition should give a set of easily summable "ways". Adding across $n$ should give the chance of reaching the position on or before turn $n$...that is, without assuming the traps.

Instead, we set up a dictionary $X$ with a single value: $X[0] = 1$. In each iteration we read $X[i] = p_i$. If $i$ is not an odd prime, assign(add) the probability to a temporary dictionary $X'[i-1], X'[i+2], X'[i+3] += p_i/3$. Of course there are technical things to take care of like tracing the elements in $X$ if we cannot alter that inside a loop, but that should be routine to take care of.

Example 2. The same from example 1, except that the ant has a protective mechanism that allows it to land on a trap once and keep proceeding.

In that case, the state shall store another information other than the position: the number of times of traps that the any has stepped on. From $X[(i,j)] = p_{ij}$ where $i$ is not odd prime or $j \leq 1$ we send to $X'[(i',j')]$ where $j' = j+1$ is $i'$ is an odd prime.

Example 3. Consider a random binary array of length $n$. Compute the probability $p(n,k)$ of the array containing a monotone (i.e. just 0 or just 1) subarray of length $k$ up to a certain precision (call that a streak of length $k$).

Again a problem seemingly possible by direct calculation: fixing a subarray of length $k$ should give a probability of $(n-k+1)2^{-k}$, but you will face a wall of inclusion-exclusion consideration, plus the magnitude of numbers that you work with increases exponentially with $n$ and $k$.

Instead taking light from example 2, we only need two pieces of information: the last bit (also equal to bit in the recent streak) and recent streak length.

There will be $2k-2$ states in the form $(i,j)$ where $i \in \left\{ 0, 1\right\}$ and $0\leq j \leq k-1$. For each $X[(i,j)] = p_{ij}$ assign $p_{ij}/2$ chance to $X'[(1-i, 1)]$ and another half to $X'[(i,j+1)]$. If $j+1 = k$ sent that to the absorbing state instead.

In that way we can get arbitrarily accurate answer if we run every iteration manually, but $n$ can easily be much larger -- that's why we were merely asked for the probability up to a certain precision. We need an approximation.

Notice that a streak of length $k$ itself appears with a chance of $2^{-k}$. Even with the freedom of appearing anywhere in the streak, the range of $k$ so that $p(n,k)$ is non-negligible (i.e. not 0 or 1 rounded by error allowance) should be around $c\log _2(n)$. That is, sensible $k$ is very small comparing to $n$ for any reasonably large $n$. Then the chance of a $k$ streak appearing in an array of $2n$ bits is roughly equal to the streak appearing at either the first $n$ or the last $n$ bits. As a result we approximate $p(n, k)$ with $1-(1-p(\alpha,k))^{n/\alpha}$. 

The $\alpha$ is a threshold where we would like to simulate and should run in acceptable time. Take a large enough threshold and we should be done...right? Not yet. It seems like the approximates aren't precise enough. We can do, for example, 5 millions iterations at best within reasonable time. But that does not stop an error of order $10^{-6}$ from creeping around. We need the fix below:

Since this is an absorbing Markov chain the probability is strictly increasing (or decreasing depending on the way you view it) with $n$, and probability is moving at an exponentially decaying rate (you can verify this). We can exploit that to do an ad-hoc improvement: set a few checkpoints along the iteration to $p(\alpha, k)$ to approximate the convergence rate, then apply geometric sum to fix the probability in one go. It is likely to cause error of an order lower, but who cares?

And of course, we can apply the same idea to the dual of probability: success trials vs total trials. The same iteration method can be applied except we add them instead of splitting the chances.

Example 4. How many $20$-digit numbers (no leading zeros) such that no digit occurs no more than 3 times in it?

Well, partitions and multinomials should help better especially if we go way beyond such parameter. But what can we do without assuming those?

The states this time should be tuples $(a_0,...,a_9)$ where $a_i \leq 3$. For each iteration $X[(a_0,...,a_9)]$ is added to the states with one of $a_i$ higher by 1 (and still not exceeding 3). There are 9 initial states at the beginning representing the 9 single digit numbers. 

*

And that's it! I said at the beginning that the technique is widely applicable to many questions on projecteuler or other sites and that's not a bluff. Check the range P151-200 if you want a few easy scores ;).

Markov chains and DP aside, I just came across to the concept of semiconvergents when approximating $\sqrt{n}$ by fractions. Either I forgot everything about it on lessons or that it's new to me. I knew the convergents are the best approximations, but those marginally non-semiconvergents are so nasty! 

Suppose that $p_{k}/q_{k}$ are convergents for $\sqrt{n}$. Let $a_k$ be the corresponding continued fraction coefficients. It turns out that for any $[(a_k+1)/2] < r < a_k$, $(p_{k-1}+rp_k)/(q_{k-1}+rq_k)$ are better convergents than $p_k/q_k$ (but at a bigger denominator) called semiconvergents.

More interestingly, when $r = [(a_k+1)/2]$ the resulting fraction may or may not be a semiconvergent! I was so annoyed that such marginally non-semiconvergents are so close to the previous convergent that usual decimal calculation failed to distinguish them. I finally took the approach as follows:

Consider two fractions $p/q$ and $p'/q'$, assume that $p/q$ is larger. To avoid sign shenanigans I compare $\sqrt{n}$ to their average $(pq'+p'q)/(2qq')$. If $\sqrt{n}$ is larger then it's closer to the larger fraction and vice versa. I don't want any square root as well, so I compare the square of them. That is, to compute $(pq' + p'q)^2 - 4q^2q'^2n$. It turns out that if we are comparing the convergent and the next potentially semiconvergent $(p_{k-1}+rp_k)/(q_{k-1}+rq_k)$ where $r = [(a_k+1)/2]$, that difference is always $\pm 1$!!! If you still remember that $p_kq_{k+1}-q_kp_{k+1}$ is also $\pm 1$ you know these two fractions are really as close as they can get.

After few hours of number theory revision plus few hours of coding I finally got the right answer, only to find that Sage has the full packet to automate all these...

Friday 21 June 2024

Geometric sum as functional inverse (2): the backstory

My latest contribution about using geometric sum as inverses is surprisingly well-received, so I decided to give it a sequel.

The immediate question is: are we reinventing Maclaurin series? Is this even possible without differentiation? Well, not really. If we decompose $f$ into power series then we will see precisely what happened. If $f = \sum a_k x^k$ then $a_i = D^i[\sum a_k x^k](0)/i!$ where $D$ is the differential operator since I am too lazy to write fractions right? We can recover this by calculating $M^i[D^i[\sum a_k x^k](0)]$:
$M^i[D^i[\sum a_k x^k](0)] = M_i[i!a_i] = a_ix^i$.
In other words, we are just representing the $x^i$-term in forms of $a_i'x^i$ instead of constant $a_i$. 

Let us recall the definition of the (properly defined) operator $M$: $Mf(x) = \int ^x_0 f(u)du$.

The miracle of the exponential series actually happens because $M^i[1]$ is precisely the $x^i$-term of the exponential series. Clearly this is not guaranteed because $M^i[g] = a_ix^i$ for all $i$ iff $g$ is a constant. Sadly $g$ is pre-determined by the function $f$ we use.

Consider $f = \log (1+x)$. It looks bad further away from zero but it should be fine in an neighborhood around zero. Suppose we wave our hand say from $(I-M)f = g$ we obtain $f = (\sum M^k)g$, we want to check what's $M^kg$ exactly.

First we compute $g = (I-M)f = x(1-\log(1+x))$. Not good-looking but okay. Next we compute $Mg$:
$Mg = \frac{1}{2}(x^2+\frac{1}{2}x(x-2)-(x^2-1)\log(1+x))$
according to Wolframalpha. Soon you realized the fact that $M^kg$ will never be the k-th term of the Maclaurin series because the log term will never go away. 

Everything we argued in $L^{\infty}$ still works, even for this nasty $f$! Each $M^kg$ is a proper function and the sum indeed converges to $f$ uniformly if we restrict the domain to $[-\varepsilon, \varepsilon]$ for some small $\varepsilon \in (0,1)$. However, it simply does not coincides with the Maclaurin series because $g$ is not a constant. When is $g$ a constant, or rather, when is $(I-M)f$ a constant? Differential equation $y-y' = 0$ has solution $ce^x$ and is the only instance that fits all our speculation. 

What a pity.

You then asked: what about the trig example at the end? Why are we recovering the Maclaurin series like that even when the theory already crumbled?

To clarify let us repeat the above again: $g = (I-M)[\sin] = \sin x + \cos x -1$. 
$Mg = \sin x - \cos x + 1 -x$.
$M^2g = -\sin x - \cos x + 1 + x - x^2/2$.

Well...an oscillation? Nope. This is clear if you plot them on a graph.
Red is $g$, blue is $Mg$ and green is $M^2g$. As predicted by the norm of $M$, the $L^{\infty}$-norm do shrink exponentially which gives us the convergence. 

We can also prove convergence in analytically: note that when k is 3 mod 4, all the trigonometric terms in $(I+\ldots + M^k)g$ vanished, leaving the Maclaurin series of $\sin x$ up to degree of $4k-1$. For other k's can be sandwiched using the fact that $\| M^k g\|_{\infty}$ shrinks exponentially within the interval [-1,1] (or something slightly better than (-1,1) -- since $g$ is not a constant but that is no big deal). Again, we wanted more that convergence, and $\sin x$ is not good enough for that because $g$ is not a constant.

The last hope lingers on the fact that $(\sum (M^4)^k)[x - x^3/6] = \sin x$. Anything special about the trig functions that allows such representation? I will truly leave that to the readers this time. Hint: what is the relation between $\sin x$ and $\exp x$?

Sunday 16 June 2024

Use of geometric sum as inverse in function spaces

When I teach first year linear algebra, one of the main show is the use of diagonalization to simplify matrix computation then to link that with various applications. This is the real point where you feel the real use of these concepts other than making up its geometric meaning. Cayley-Hamilton, characteristic polynomial for recurrence sequences, Markov chain and so on.

To start with, consider a matrix $A$. If $\sum A^k = I + A + A^2 + \ldots $ is well-defined (aka converges) then by geometric series we know it is equal to $(I-A)^{-1}$. If we do the other way round we can compute the geometric series of $I-A$, we will recover the inverse $(I-(I-A))^{-1} = A^{-1}$. The problem is...does the geometric sum converges? This is where the eigenvalues kick in.

For diagonal matrix $D$, $\sum D^k$ converges iff all diagonal entries (aka eigenvalues) are of norm less than or equal 1. If $A$ is diagonalizable we can write $A = PDP^{-1}$, then $(I-A) = P(I-D)P^{-1}$, so we want the diagonal entries of $(I-D)$ to be in $(-1,1)$. Or rather, we want all eigenvalues of $A$ to be in $(0,2)$. But this is a very limited result. Can we do better? Yes!

Notice that we can tweek the eigenvalues by multiplying a constant. Let $c \in \mathbb{R}$ be non-zero so that all eigenvalues of $A/c$ to be in $(0,2)$, then the same procedure may proceed. 

Consider the matrix $A = \begin{bmatrix}5&4\\2&3\end{bmatrix}$ with eigenvalues 1 and 7, we take $c = 8$. Write $A = PDP^{-1}$ then $I - D/c$ has diagonal entries 7/8 and 1/8. Geometric sum gives $\sum (I-D/c)^k = \begin{bmatrix}8&0\\0&8/7\end{bmatrix}$. 

Plugging back we have $P(\sum (I-D/c)^k)P^{-1} = \frac{8}{7}\begin{bmatrix}3&-4\\-2&5\end{bmatrix}$, which is precisely $cA^{-1}$. Don't forget that $(A/c)^{-1} =cA^{-1}\neq A^{-1}/c$!

*

Now let us forget about linear algebra and just the a step forward. How about using geometric sum in function spaces? 

We start with a very vague idea. Let $M$ be the integral operator, then we obviously obtain $(I-M)[\exp] = -C$ where $C$ arises from the integral. What if $(I-M)$ has inverse $(I+M+M^2+...)$? Let's say $M[-C] = -Cx + C_1$, then $M^2[-C] = -Cx^2/2 + C_1x + C_2$, and so on. One obtains $(\sum M^k)[-C] = (-C+\sum C_i)(1 + x + x^2/2 + \ldots)$, and checking $x = 0$ gives $-C + \sum C_i = 1$. This is such a lucid dream because we just proved the series $e^x = \sum x^k/k!$ without differentiation at all!!

But wait, there are too many technical problems in the above argument to the point if I read that from my student's assignment I would have torn that paper into pieces. The gaps are not fatal, but we have to be very, very careful.

The biggest problem of all, is that integral operator in that arbitrary form, is likely unbounded. We must sacrifice our dream of working over the reals and work in $[0,N]$ instead. Since $N$ is arbitrary we can extend that basically to the reals, at least pointwisely.

In a bounded interval $L^p$ spaces work similarly but the best is $L^{\infty}$ because we immediately give the norm of the integral operator. Define $M_0:L^{\infty}([0,N]) \to L^{\infty}([0,N])$ by $M_0f(x) = \int ^x_0f(u)du$. This is well defined because $M_0f(x) \leq N\|f\|_{\infty}$, and it also implies that $\|M_0\| = N$ (the equality is obvious by taking $f = 1$). 

We solved unboundedness but we need $\| M_0 \|<1$ for that to work. What should we do now? Well, just copy what we did to matrices. Define $M = M_0/(N+1)$ and try again: $M[e^x] = (e^x-1)/(N+1)$ but $I[e^x] = e^x$...they don't add up. It turns out that tweeking $M$ won't suffice because a tweek to the function is necessary as well. 

Let $f = e^{x/(N+1)}$, then $Mf = (e^{x/(N+1)} - 1)$ and so $(I-M)f = 1$. Since $\|M\| < 1$, $\sum M^k$ is a well-defined operator and is the inverse of $(I-M)$. Therefore $f = (\sum M^k)[1]$. Induction gives $M^k[1](x) = (x/(N+1))^k/k!$, so $e^{x/(N+1)} = \sum (x/(N+1))^k/k!$ uniformly in $[0,N]$. A substitution recovers the desired series for $e^x$.

Many would think the job is done here but this is a false sense of security. Not an easy gap to spot -- including me when I first drafted. We established the equality in $L^{\infty}$ or uniformly, but in the pointwise sense this is only almost everywhere. The good news is we do not have to worry about the trap of generating the series using the series anymore so many more tools are now available like continuity. Since both the exponential function and the series are continuous everywhere, the two expressions are indeed equal everywhere.

*

I believe this is the first time I write about functional analysis here but this is actually my expertise. These are absolutely not what one would encounter in research, but very fun to share across all levels of undergraduate students.

The idea of $\sum A^k = (1-A)^{-1}$ is the cornerstone of spectral theory because when we look at the spectrum we want to see the set where $A-\lambda I$ is invertible, or equivalently where $I - A/\lambda$ is invertible. The fact that geometric series converges says that when $A$ is small enough to $I$ then $(I-A)$ is always invertible which gives us lots of information about the spectrum.

Of course, knowing that $(I-A)$ is invertible for small $A$ says nothing about any other operators in the space. In particular, it says nothing about invertibility of operators that fails the condition for geometric sum.

This is particularly clear when we revisit the matrix example. I claim that the above method applies to all diagonalizable matrices where all eigenvalues are of the same sign (and are non-zero) (proof: left to reader). But that left out almost all diagonalizable matrices where eigenvalues contain both signs. Are they not invertible? Absolutely not! The moment they are diagonalizable with non-zero eigenvalues they are straightaway invertible, just that this particular approach doesn't apply.

One problem to the readers: my proof above relies on the fact that $e^0 = 1$. Can you recreate the proof for when $x < 0$? 

We finish with an extra food for thought: one computes $M^4[\sin](x) = \sin x - x + x^3/6$, so $(I-M^4)[\sin](x) = x - x^3/6$. You already see the pattern: $(\sum (M^4)^k)[x - x^3/6]$ is precisely the series for $\sin x$. (Technical problems like convergence and range is easy like above so we left them to readers as well.) Can we do the same for any differential equation solution like functions? Does it depend on the radius of convergence? Or...does it apply to all $C^{\infty}$ functions? How interesting...

Tuesday 11 June 2024

DDR, the 10th year

Another "10th year" among many others that I have already wrote about on my blog, but DDR is different. This is something that I consistently keep track of, and progress is really made over the time. 

Since when did I started playing DDR? A local Osu! player lured me to try so when we were in arcade where I played Taiko (up to 9* and a few 10*s at the 11th gen cab) and jubeat (level 10 in Copious). That was a X3 vs X2 mix cab with a very beginner friendly mode where everything is limited to 1-5 "foot level" (the old foot level was already scrapped).

Like everyone else, I started with failing these easiest levels. But soon I started passing level 8 (I believe) consistently, then level 10 then 12, a year later 14. This arcade closed around the end of 2015 Q3, but this is a story for another day but you would probably have seen mentions of the exact same arcade somewhere else in the blog.

The exact time where I started couldn't be dated precisely, but surely it's well before the second half of 2014 because I had evidence of me playing up to level 13-14 at the time already. In many occasions I wrote the (N-2014)th year in the title but actually it's the (N-2014+1)th year of me playing DDR. 

I ended up settled in new arcades. The first one had an ITG but soon disgustingly replaced that by PIU, so I ordered soft pad and practice with stepmania at home until another arcade opened where I stayed for a long time.

Here are some snapshots:
2016, the 2nd year: doing well at level 14, attempts on MAX300 the gateway to advanced level
2017, the 3rd year: doing well mostly at level 16 and a few 17, almost passed 嘆きの樹 ESP
2018, the 4th year: doing well at level 17 and a few 18, 500 credits since DDR2014 (not accounting X3 and 2013 ver.)
2019, the 5th year(in Chinese): doing well at level 18 except OTP and ENDYMION, able to do 18 set, looking to clear 19
2022, the 8th year: Fully cleared 18, yet unable to clear at level 19

I was possibly the best in 2019 when my stamina was clearly prepared for 19. After covid I became better in terms of single attempts, but never bested the 2019 self in terms of readiness towards level 19. I had a 750k score at Paranoia Revolution CSP but that was it.

It is a bit sad to say that my performance peak in 2019 aligned with my physical peak in terms of age. You clearly feel that more warmup is necessary in 2024 for similar performance than in 2019. That does not imply I am never going to outperform the 2019 self again, but it requires great and consistent effort. In fact I am quite happy with a few scores obtained in the past year. Such score on a shitty 2nd gen cab means I can easily get an A in a proper cab. 

And I am back ready for the challenge.

Reason behind that? Well firstly I am done with Chunithm. Not because the game was poor, but I already had my potential fully exhausted in reaching 16.00. I can probably go slightly higher if I try really, really hard but it is not very meaningful. Chunithm is known for its vast song collection, but after playing the game intensively for a year the collection lost its attraction. Yes SEGA is still adding new songs in mass frequently, but I do not play the game just for the song and DDR is still my top choice.

Another reason is...I finally have my hands on a gold cab that I can play in long term. Not when I travel to Japan where I had to travel between two golden league seasons just for the golden league scores so that I can unlock those course trials. But a gold cab that I can play any day I desired.


I do not see myself getting close to my 2022 let alone 2019 performance for now. It takes time to get used with gold cabs with the lowered pads. When I did course trials in the past that was in survival mode, or travelling mode at the least where I don't try hard for scores. In general practice though that should be something worth minimal care. Gold cab speed is also significantly different: 450BOOST becomes 400BOOST -- at least I know I can only read 350BOOST on 2nd gen cab not because I lost my reading ability. 

My first goal is to resume my practice of 7 credits a session, then clear most 18s. Many new gimmicky/almost 19/plain bullshit level 18 maps had been added these years, and let us see how my plan goes! We will meet again in this record in a year.

For the record before Konami scraps the site again:

X2-2014 + ITG: ~500 plays without hard evidence
A~A20plus: 1993 plays
A3: 226 plays up to 09/06/2024.

Thursday 30 May 2024

夢.十夜 (終) One Door Closes


我已經很久沒來過這地方了,但萬年不變的周遭環境處處透著熟悉感。

從門口走進去那些海報單張都還在,只是有些舊海報被新的蓋過去。是蓋過去不是撕掉--不過新海報是理髮店的,下方舊海報是補習社的,想也知道這樣蓋過去不會也不需要對方同意。

電梯裡面那種海報從地面貼到天花板的陣勢還是老樣子。也許是這裡有燈光,人們也花時間看那些海報,這裡的海報更新速度明顯更快。沒有被海報蓋住的地方都是紙張被撕去的痕跡,有些被撕了一半的則被電梯的風扇吹得歪歪倒倒。

「叮」一聲,電梯到達四樓的聲音把我的注意力拉回現實。樓上書店還在但是波鞋店沒了,換成了理髮店。理髮店裡面的理髮椅都被坐滿了。看來有很多熟客但為了逃避高昂的租金才選擇開在這裡。那條連接兩座大樓的通道還是一樣破舊,但今天的垃圾和廢氣味道沒很重,大概是天氣的緣故。

也許聽上去有點奇怪:目的地是旁邊大樓上方的機廳,旁邊的大樓自然有方法從旁邊走上去。為何非得要穿過殘舊髒亂又沒比較快的通道走進去呢?

那是一種儀式,或者對自己的暗示。正如每次進去之前要先確認裝備,每次走進去的路線也是固定的,這是讓自己等會可以高度集中打遊戲的暗示。只要按著儀式來,身體自然可以慢慢放鬆進入打遊戲的狀態;任何細節稍有不同的話暗示效果就會弱化很多,打遊戲時的狀態就只能聽天由命。

穿過荒廢的的商場樓層--今天沒人在野戰--來到久違的機廳。今天灣岸玩家都不在,但機台依舊忠實地發出聲響吸引著人們。作為放在最外頭的機台,它們是唯一會在待機時還能發出聲音的,其他的則只會在投幣後才開始發聲。這其實很合理,在最外頭的機台當然要負上發聲吸引路過玩家的責任,而且外頭的聲音也不會吵到裡面的玩家。不過話說回來,誰又會路過這種地方呢?

穿過格鬥遊戲和懷舊遊戲的區域,我還是沒看到我以外的玩家。沒人要打鐵拳也沒人要打俄羅斯方塊,籃球機空盪盪沒人在玩,貼紙相機台的布簾之下也沒有可疑的腳腳。但我知道裡面一定有人在打音遊,因為我聽到屬於音遊的音樂。是有人在打jubeat嗎?這裡的機台沒有連上網,可供挑選的樂曲不到二十首,一聽就能分辨出來。那麼會是pop'n嗎?笑死,這種遊戲誰打得動啊。再走近一點,我終於能分辨出是哪一首樂曲了,是TЁЯRA的RЁVOLUTIФN。這樣機種範圍又收窄了一點,剩下DDR或者DrumMania。雖然再等一等看有沒有男聲系統音插入就能分辨出來,但是可以直接用看的也沒差,我又不是非得先猜中才走過去。

「欲しいものは 残らず--Wowow Wowow--手にするのさ」

一名少年在打跳舞機。

更準確一點一個銀髮少年在打跳舞機,他身穿左白右黑的上衣加上短褲和運動緊身褲,黑白格子紋的運動鞋在跳墊上靈活地穿梭著。可能是因為短褲只有黑色沒有白色,正好跟他的銀髮平衡回來。這本來是某以換裝為賣點的RPG裡面的其中一套衣服,也只有在cosplay這方面擁有豐富經驗的卡羅現實中也能這樣穿起來。

沒錯,卡羅在打跳舞機。

雖然只是Lv.14的激譜面,但是高速連打並不容易。我更關心的是cosplay套裝之一的運動鞋,這樣打跳舞機會不會把鞋底擦壞的啊?不過看來卡羅的腳抬得夠高不會發生這個問題,他乾脆俐落地拿下這一首,成績是AA所以底下多了兩顆星星。如果機台有連網的話存滿九顆星星就能進入Extra Stage,沒有連網就只能在一道之內把星星存滿才可以。

「小紅你來了啊~」他從機台掉頭回到跳墊時終於留意到我。

「你先繼續玩。」剛剛的RЁVOLUTIФN是第二首,還有一首可以打。

「不不不、我怎敢斗膽在高手面前班門弄斧呢?就算這一年你疏於練習,一上來打個Lv.17甚麼的還不是到拿來?」

「哼哼,你身後的分數紀錄已經出賣你了。」可以看出他下一首選曲是Spanish Snowy Dance,不論是Lv.15的激還是Lv.17的鬼譜面都是超級大詐稱的存在。而他在Lv.17譜面上居然有個85萬的紀錄,單這一點就知道他絕對不是萌新:「說起來上次我跟你一起過來玩就是第一次攻城戰後?這樣就半年了。上次你也沒下場打,這次我一定要看你cos成這樣打呢。」

「你都說到這份上我又怎好意思拒絕呢?」其實是機台開始傳來倒數的聲響,沒時間留給他鬼扯了。

音樂開始響起,一開始便是長串的十二分音連打。雖然怎樣看都不像是Lv.15的東西,但這首詐稱實在太過份,有時我根本沒法分辦哪個是激哪個是鬼。在激譜面上的十二分音長連和八分十六分混打感覺就像Lv.17的東西;在鬼譜面上那些更鬼畜的配置我反而想著「啊?這不是在激譜面已經有的東西了嗎」,反而以為這張才是激譜面。

我看了看屏幕右下角。嗯,的確是Lv.17的鬼譜面。明明剛才跟我說話時選擇還是激譜面,居然在最後時刻換成了鬼譜面。但是卡羅身上看不到任何打不動的跡象,從他從頭到尾都能穩定地抬腳就能看出來。樂曲名字是西班牙雪舞,他就像個舞者那樣投入到節奏中輕鬆把大部分玩家望而生畏的譜面給打過去。

他抹了一下銀髮下開始出汗的前額:「看來你也認出這套服裝呢。我還以為這RPG是個小眾遊戲沒多少人打過。」

「不會吧。這RPG這麼好玩,玩家已經敲碗喊續作喊好幾年了。只是我以為這些服裝只會在二次元或者原宿出現,沒想到掛在你身上十分自然。」

「哼哼,不要少看在主題咖啡廳打工的人。」

「你說你在主題咖啡廳打工,我還說Yuki全職打手遊呢。」

「說不定你說的沒錯……」他壓低聲線笑道:「不過我也不清楚啦,畢竟自從那次攻城戰以後我就沒跟Yuki聯絡。這都可是為.了.你.呢。說不定現在你比我還要熟悉她了。」

「她有拉著我聊過幾次,一般都是新活動發表或者攻城戰前夕。可是我們已經不打攻城戰了,打其他活動也沒有拼命衝,沒辦法給她有用的建議呢。」

「你們就真的只聊遊戲啊?不會聊甚麼女性話題的嗎?」

「也不是只有逆戰幻想,我想Yuki和她的好顆伴們都已經開始玩其他遊戲了?畢竟交易市場崩掉以後這遊戲最大賣點就不見了啊。」

交易市場崩掉是最近才發生的事。可能是營運想從交易市場裡分一杯羹,也可能是因為交易市場有洗黑錢嫌疑被施壓,當然也可能是發現了最近新出的手遊根本沒有交易系統也能賺很多,反正現在某些頂級活動卡片都被限制交易了。這些卡片抽出來後有一定時長的禁售期,然後如果卡片已經綁定在玩家身上想要解綁還要課金買道具。

此舉的即時反應就是基於活動的衝動消費全部死光。以前還可以賭一下,抽中大獎的話賣出去或者自己衝活動都能賺一筆。在新機制下大概只有鐵了心衝活動的土豪會消費。從活動贏來的卡片是可以交易沒錯,但綁定系統就像把交易成本提上去一樣。要不卡片買來純自用,還想轉手的話最好完全不要用,連在垃圾關卡擺拍也不可以。以前還有人從事借卡幫開圖鑑的業務,現在也消失不見。這種新政還有個意料之後的後果,那就是收件箱的收納能力出了問題。本來不要的垃圾和暫時不用的庫存都能堆在收件箱裡,現在被綁定的卡片根本不能拉進交易也就不能進入收件箱裡。

發現情勢不對的官方立刻補救。先是縮短了禁售期而且保證一定星數以下的卡片仍然可以自由交易,又開發了容量更大的第二卡匣,後來又把綁定條件降低和把解綁道具打折出售。但傷害已經造成。現在是手遊百花齊放的年代,玩家被搶走的話就不會回來了。

不過玩家數量驟減也有好處就是。活動發放的獎勵不變下競爭減低,躺著玩的玩家能分到的資源也變多,總算留住了一群底層玩家。有了他們買賣基本的資源,市場還能以最低限度運作,土豪們至少還可以用錢收買勞力。

「她好像有提過最近很火的百萬……甚麼甚麼的?不過好像不太對她的口味。要是她找到一款想玩的遊戲的話一聲令下他們整群人就跳過去了吧。」

「喔~?所以你還是很清楚她的動向嘛。那她有沒有提到關於我的事情?」

「她說她討厭你。」到現在我都不太理解卡羅這方面的過去,也還沒到要問的時候。

「啊哈哈,這不是很正常的嘛。」他也沒有繼續關於她的話題:「那妳有打算換一個遊戲嗎?逆戰進入成熟期後也沒怎樣推新型活動,最有策略性的攻城戰則被我們踢進黑名單裡了。要在活動拿到七星依然需要課金,但刷六星獎勵的難度已經降到無課玩家用力一推就能進的程度,對妳來說已經沒有研究的價值了吧。」

「嗯……研究價值很重要嗎?」

「如果是妳的話我是覺得不意外?我還記得一開始妳幫小雨衝排名才一頭栽進這遊戲裡面的,如果新遊戲看上去不像有這種賣點的話你應該一開始就不會進去玩吧。」

「如果我只從策略性去看待遊戲的話是這樣沒錯,可自從你問過我真正玩遊戲的原因是甚麼以後我就有了新的想法。策略性是個很重要的加分項沒錯但不是全部,比如說逆戰幻想的世界觀就是把你我留住的原因之一。再深究下去的話還能數出很多東西來,比如繪師啦、市場活躍度啦、社交程度等等。所以我每次玩遊戲之前就要拿個表來填分數,只玩最高分那個遊戲嗎?--反正遊戲本來就是休閒的一部分,遵從內心的直覺就好了。」

「每次看到你分析遊戲打法都會覺得你是個理性為主的人,但在此以外你又處處依賴著感性和直覺。這種反差還真是可愛。」

「感性不就是把理性的推論省掉直接跳到結果嘛,說到底就是理性的延伸。」

「誰知道把推論省掉出來的答案會不會變得不同呢?當然也不是說感性怎樣,一個只有理性的玩家大概早就放棄逆戰了,靠活動衝消費的逆戰也不可能靠理性玩家活著。嘛,好像扯得有點遠了。我猜妳的意思就是試過不少新的手遊,但是還沒找到可以長久玩下去的。對嗎?」

「嗯,試過不少手遊都是試了幾天覺得口味不對就沒打下去了。最近我倒是看上了一隻答對問題才能攻擊對面的,沒多少策略性但是題庫夠大,可以動動腦筋也不錯。我想群裡面沒多少人會有興趣就是。」

「我想也是。不過比起你來,其他人退坑可能不會換個逃遊戲而是直接回歸生活去了。我們群組算不錯,熊熊隊上的人都還在玩,群組裡已經有幾位本來不怎樣發言的悄悄退群也沒說聲再見呢。不過那些人在你進來時已經沒很活躍,你可能根本不認識就是。」

「我就只認得你個幾個,看你們偶而還會打一下活動還以為你們沒想過要退坑呢。熊熊也是,在這種市場萎縮的狀態下還能一直做生意,實在不得不佩服。我最近打來的六星獎勵也拿給她了。本來以為現在根本沒人要,自己在論壇上叫賣也賣不動,在她手上才兩天就賣了個不錯的價錢。」

他露出神祕的微笑:「你真以為熊熊就只在逆戰裡做做小本非意啊?她在遊戲裡可打通了現實中的生意人脈,還留在逆戰這裡大概只是順意而為罷了。你應該找她聊聊的,我想她或者她的朋友會對你有興趣。」

「等等她也會來吧?」

「會啊,今天很多你見過的跟沒過的都會來。我們一直以來的飯聚都是幾個核心成員加上剛剛誰有空誰過來,但這麼多人都有空的話真的很稀有呢。」

「我進來的時候遊戲也才開張一年不到。怎可能在我進來以前就這麼多人在玩,而我進來以後根本沒看過甚麼新人。」

「嘖嘖,這裡面有幾個搶著進遊戲吃早期紅利的人啊。一個可以交易的遊戲如果火了的話最早期的獎勵都是很值錢的。還記得選舉活動裡面的「獵魂者」埃塞雷德嗎?我們群裡就收下了兩張,也成功轉給收藏家了。可惜他們拼盡全力也沒拿到戴安娜,在這裡大虧了一波呢。他們在遊戲做起來以後就跑了,大概已經在找下一個能賺的遊戲了吧。我看這次來的人多就一併問問看,他們居然也答應了。不過先說好了我要坐你旁邊哦。」

「不要,我要坐熊熊旁邊。」

「這個好辦,我跟她坐你兩側不就好了嘛~」

「這樣我還要怎樣跟其他群友聊天啊?!?」

「哈哈,不要擔心。我覺得到時候你就只顧著玩手遊或者看別人玩手遊了~」

……

旁邊卡羅的手的觸感是如此清晰,完全不像在這個地方第一次遇上像魅影的那他那樣。正常的破落機廳和與其對應的人流,沒有奇怪的玩家也沒有擅自發聲的機台,卡羅十分正常地在預約了的地點時間現身。無論我怎樣反覆檢查,結論都說這不是個夢。

但是、明明、越接近與他相識的那天,我的記憶便越模糊越像夢境。

第一次的相遇我已經完全記不起來了。與幾位群友見面那次我只記得幫小雨打過了活動,但自己是怎樣掉進這個手遊坑裡的已經說不清楚了。到了第一次攻城戰我們的確是打進前十,因為作為獎品的「雪之華」阿莉婭被我賣掉,是我建隊資金的重要部分之一。但是對上神眾隊的那一天,我們真的打贏了他們嗎?後來晚上與卡羅的偶遇又是怎樣一回事?

到了後來,所有東西都被鉅細無遺地被記錄了下來。群組的聊天紀錄,我在Super Rangers聊天室裡的聊天紀錄,再到我和Yuki見面和最後的攻城戰。只要我想,隨時都能調出實明這就是現實的證據。

問題是,以前是不是一場夢很重要嗎?更重要的是當夢變回現實之時我們手裡還剩甚麼。

逆戰幻想曾經待過課金榜前三過一段時間,現在已經掉到排行榜邊緣。不像其他至少火個三兩年的遊戲,它僅僅待了不到一年而且是因為自爆而塌掉的。對於營運來說又何嘗不是黃梁一夢呢?但至少他們抱著一年的超高營收回去,而且這遊戲撐上好一段時間再賺一點也不成問題。

聊天群裡面的玩家數目要組攻城戰隊伍的話湊個三四隊絕對不難。為何最後只組了一隊還有人要負責多開呢?對很多玩家來說這遊戲不過是他們手遊列表裡的過客,在群裡待著的短短時間同樣像夢一樣虛無飄緲。至少有些人吃到早期紅利,不至少兩手空空跳到別的遊戲上。

對我來說,投入這遊戲不過是一場惡夢。超級繁重的素材收集,誇張的活動耗時還有那貪婪的機制設計,每一項都把玩家壓得喘不過氣來。夢裡承諾的回報僅僅是那些精美的卡片和劇情--一直待在夢裡的話尚可,離開夢境則這些都變得毫無意義。

正因為這是個夢,我從沒期望在現實裡得到甚麼東西,但旁邊的少年明顯是從天而降的收獲。在他以外,每一個一起打過攻城戰的隊友都有資格說小紅是他們從逆戰幻想得到之物。

我現在感覺還不錯,希望這裡真的是現實。如果這裡只是套在夢上面的另一場夢,那就希望我離開之時也能帶走點甚麼吧。

比如卡羅甚麼的。

(Fin.)

***

標題對應的是現實中逆戰最後一個活動,感覺這名字不錯。

對上一次真真正正完本是甚麼時候呢?我手癢用Fin.作為關鍵字搜了一下,得出答案是十四年前。這次的長度是當年的十倍。為了把這種東西寫完我真的用盡全力了,也不知道下個十四年會不會有另一本完本作品。你問那個已經連載了九章的教學日記?那東西看上去就不可能有完本的一天,看看那些網文不寫個幾百萬字都不會收手的。當然那邊大框架也是本質上定好了的東西,但我真的不打算特地花時間將它寫完。我想我會休息好一段時間,在此之前所有更新都是存稿(沒錯,就是這裡寫不下去時寫出來的),再往後更新都是隨緣。

以下是雜談時間,但這次我不想講任何正文裡延伸出來的東西。我想直接談作品本身。都完結了講一下也沒所謂了吧?

咳咳。

夢.十夜就是一個回憶錄。

我本來的想法寫一些穿插各種如夢的奇異場景的小說,就像我所致敬那個小說集一樣。不同的是我挑的地點和事件很多都參考自我的回憶,比如那個機廳和通往機廳的道路。在現實中前往這個曾經存在過、長時間沒人出沒的機廳也需要穿過破落的無人商場,而且我當年還是習慣在凌晨一點這個鬼時間去的。現在回想我還有點佩服自己的勇氣。

然而怎樣說呢,這種嘗試失敗了。其中一個原因是2017的我已經五年沒寫過東西,搜作品tag就能輕易看到這斷層。到現在我要圓回去還有點無從下手的感覺。當你寫了有點離奇的第一章後可以怎樣續下去呢?我可是沒想過要寫十篇完全不相關的夢。於是你就能看到從第二章開始這個設定就完全被捨棄掉,只有我要圓回去時才會用真實的無人機廳去對比夢中充滿玩家的怪異機廳。到了2019我又手癢加了幾個外傳上去,整個走向就此定調下來,那就是我跟這個手遊的緣分。從入坑到各種掙扎、各種得與失、到最後的淡出都是整個回憶的一部分。逆戰幻想其實最後撐了七年多。我只玩了前面一年半,這一年半的遊戲體驗卻大概比後來打甚麼黑貓啦火紋啦都要來得多。

像是市場、世界觀、數學分析、朋友和競爭等大部分都被我寫了在裡面這裡就不想重複,但有一點我想補充。那就是我過份習慣遊戲社交而逆戰幻想交到的朋友是我玩過遊戲中最特別的。很多遊戲都能聚集一群現實性質相似的玩家,這並不奇怪。比如說當年Osu的管理圈子隨便選一個多半也是名牌研究生起跳,或者某虛擬炒股遊戲平均學力是台大電機之類的。或者像EVE那樣玩家圈包羅了所有現實階級的遊戲,這也時有發生。但逆戰怎麼說呢?很多玩家都是你完全沒想過對方會玩手遊的人。至少在出現過的隊友裡面,有三位的現實參照都是這樣。他們把「沒怎樣打過遊戲」的社交模式帶到遊戲社交裡,反而能擦出更多火花。感覺我沒有在作品裡充分展現這一點,不過寫得太明顯的話可能有點問題……

在這些之上我還花了很大力氣討論課金手遊的本質,這甚至可以說是貫穿作品的主題。策略和P2W是否一定是對立的呢?每一次活動都引證策略可以讓玩家接近上限,但決定上限的終究還是課金。攻城戰看似戰術空間大,最後還不是慘敗給那些更多活動角的隊伍。遊戲浪漫引人的外表,包著的永遠都是這個殘酷事實。小紅的多次心情過山車還有她和Yuki之間的理念衝突,其實都是源自這一點。

當然這不是要因為這樣就把所有手遊踩在腳下,這不過是好處壞處之間的平衡而已。或許小紅很在意自己的策略能不能逆天改命,但顯然很多人並不在乎這點,尤其在遊戲可交易的情況之下。

合法也好不合法也好,在電腦上可以交易的網遊由來已久,市場其實也成熟得多,但一個可交易的手遊在那個時間幾乎是破天荒的舉動。手遊玩家對交易的態度,遊戲內外非常原始的交易系統使交易成本上升,但也成了包括熊熊在內一部分商人絕佳的舞台。時至今日大概已經很難判斷當年有多少玩家因為這種系統投身逆戰,不過在我認識的圈子中這種人佔了不少。隨時間推移,他們自己也在推綁定就證明了可交易市場只會讓玩家或者工作室把紅利賺走而對營運沒有甚麼好處。在此之後幾乎所有主流手遊都不可交易,說明了這種機制被市場淘汰了。不過這也使逆戰在手遊史上非常獨特的一員。

說到工作室,我必需說很慶幸這遊戲出現在工作室還沒有普及的年代,至少用語言剛好不在盛產工作室的地方。交易只有在一般玩家都能從中獲得好處才會成為賣點,而工作室的出現則會把紅利吃光的同時把所有普通玩家給擠了出去。這種要長時間遊玩但有利可圖(不像偶像大師那種連打幾十小時只為了一個稱號)的任務是他們最愛接的活。連我當年都能寫滑鼠巨集自動刷競技場了,很難想像工作室在2024可以怎樣把逆戰給刷爆。

以上,就是我對這遊戲的想法。

當初我大概沒想過真的會有完稿的一天,前後對比起來真的很有趣。後面寫起來得心應手,但當年的記憶變得模糊,寫出來總是覺得欠缺了甚麼東西。不過我也不打算再作修改了,就讓這種前後反差也成為回憶的一部分吧。

非常感謝每一個因為這個遊戲而相遇的人,沒有你們的話根本就不會有這篇作品。有一些人只在群裡有過幾面之緣就退坑,但幾面之緣也是緣啊!當初把戴安娜賣我的那位群友甚至從未在群裡發過聲,直到要退坑清貨才讓其他大佬出面找下家。如果我錯過這次機會都不知道往哪裡找張同樣稀有的夢幻卡片當封面。更多我熟悉的群友都是一路打活動到攻城戰下來的人,不少我最近才聯絡過。有了你們,這個遊戲才會如此精彩。

所有內容如有雷同,實屬巧合,嗯嗯。

Monday 20 May 2024

夢.十夜 (10.4) Showdown

遊戲裡面的倒計時剛歸零我們立刻按下進入戰場的按鈕,對面的Super Rangers已經嚴陣已待。跟九個玩家同時換成統一角色的隊伍不同,Super Rangers的排場很明顯是眾星拱月。

她們陣列中放了八隻守護者佩爾拉(Perla),是某活動送出來的五星排名獎勵。不能說一文不值,但也只是很快就被大家遺忘變成單純的經驗包。佩爾拉在遊戲裡拿著支法杖呆站的形象一看就不是重要角色。至於佩爾拉們要守護的是誰呢?那當然是站在中間的Yuki。她用的是穿著羽翼裝飾、頭戴小王冠的魂戰士阿拉貢(Aragon),是遊戲剛開服時某個活動的分數獎勵。雖然不是排名獎勵但因為是剛開服所以數量稀少,具體有多少張大家也不清楚。聽說剛開服時有幾張六星的能力強得過份,後來新出來的六星角色能力值回落了一段時間,再往後才漲回去。這張阿拉貢正是古早的強力角色之一,作為全面的全攻能力值完全不輸現在新出的六星角色。熊熊說阿拉貢不知能不能算夢幻卡片,但這張肯定是高端土豪玩家的象徵。

我們按慣例一進去先衝一波。不單因為想要佔得先機,搞清楚對方的到底用了甚麼角色也很重要。Yuki說她把隊伍的難度調低了一點,如果打起來我們像對上其他前十那樣單純被碾過去的話拼這場又有甚麼意思呢?我右手點著進攻,左手滑著阿飛的備用手機留意著不在場隊友們的即時反應。

我的進攻沒有碰上Yuki,但其他人的隊伍也沒有比較好對付。對方隊伍有活動六星鎮著,即使我同樣也帶著活動六星也沒法一輪把對方幹掉。很快隊友們也給出了類似的感想。
阿飛:「這邊兩隊都是活動六星加標準競技場隊,很硬。」
熊熊:「我這邊對手也有活動六星,不過還是被我幹掉了唉嘿~」
聊天室上Sora也給出簡短但差不多的感想:「有活動六星很硬」

對方開場也是使出全力攻過來。熊熊隊除了城門九個入全部都被摸了一遍,我們卻好像只摸到對方七八個人。對面似乎每個人都配備了活動六星,但除了Yuki以外沒有看到特別豪華的陣容。此前對上前十強隊我們可是連連對方後排都摸不太到,現在Super Rangers這種陣容明顯要弱上許多。如果考慮到擊退隊和遠狙隊欠缺進攻能力的話,她們實力真的和熊熊隊非常接近。

卡羅和阿飛這次帶著分別以擊退和遠狙技能為主的特殊隊伍。卡羅很快就回報他每次回復都能撐上兩次戰鬥,而且他每次進攻花費的時間確實比平時要長。至於遠狙的效果如何,光用阿飛的視覺不太容易看出甚麼來。我讓隊友們留意看看會不會遇上一些幾乎完整、唯獨缺了最後方角色的隊伍。雖說如果進攻方看持自己後排被點掉應該會跑去回復,但我們還是可以偶而賽到幾次對方缺掉後排輸出能力大減的戰鬥。這些都說明我們的隊型的確拖緩了對方的進攻速度。

這些使用特殊隊伍的優點反過來說同樣也可以變成缺點。擊退隊可以讓對方進攻變慢,自己上前進攻的時候也比較慢;遠狙隊志在點掉對方後排,但沒法殲滅對方整隊。拿它們作純防守隊的話的確可以拖住對面,但是得不了分數最後還是會輸掉。我們之所以可以這樣玩是因為熊熊隊的得分依靠的是砲擊而不是拼剌刀,在收集砲台零件時以減少得分換來守住城門是筆划算的買賣。

開場這一波是為了試探對手的底,摸不到對方最後一人也沒有辦法,只能假設他的隊伍和其他人沒有大分別。從Super Rangers目前的微弱優勢去推算的話這個假設很難錯到哪裡去。這個時候戰鬥就進入了下一階段--收集零件。

多虧了特殊隊伍的死守我們得以讓其他隊員輪流跑去收集砲台零件。熊熊隊才剛有人掛上外出冒險的牌子,對方攻擊的力度就立刻變大。卡羅的擊退隊可以撐上兩次戰鬥,但站在最前方的他沒法進攻,每次回復後刷新已經能看到已經掛掉的自己。還好回復和刷新只需要幾秒,對方打他兩次卻要超過半分鐘,這算是分數換取時間吧。

「咦?」阿飛突然叫喊了一聲,引來三人的注意:「對方好像在防範遠狙了。」

我雙手都忙著沒空抬頭更沒空跑去看對面阿飛的電腦:「你繼續說。」

「我看到對方有個人剛對上我的遠狙隊後被我的副帳攻擊,可是那人的後排並沒有戰損。」

「熊熊能幫忙留意一下都是誰在進攻阿飛的遠狙隊嗎?」

「OK~」

擊退隊的本意是拖時間,對上任何隊伍這個拖時間的效果都會發生;遠狙隊卻只能針對後排輸出,碰上純近戰隊的話立刻就會作用大減。在這種瘋狂的進攻裡面真的可以針對一個人來打嗎?不過想到對面是Yuki在指揮的話好像也沒有很奇怪。

熊熊看了好一陣子才應道;「唔……看上去都是某兩三個人在進攻遠狙隊。現在遇上隊伍缺了後排的頻率比剛開場的時候低了一截。」

也就是說,對面在攻破擊退隊的時候才把近戰隊推上去打遠狙隊嗎?的確很像她會幹的事,而且我們這邊好像也沒有甚麼應對方法,畢竟進攻方才有決定時機的主動權。我只好讓遠狙隊改為主動出擊碰碰運氣希望能碰上有後排輸出的隊,然後把站在遠狙隊身後的小雨拉去防守。

收集零件的這段時間十分漫長,因為在外面要以八打九守著城門真的十分痛苦。卡羅已經不計成本地在那邊吃藥回復,我們卻還是沒法阻止對方偶而摸到城門。每次有隊友收集完零件回來我們都要先等防線穩定下來才能送下一位隊友去冒險。

現在戰鬥已經過去了三分一。在對方猛烈的火力之下我們收集砲台零件的效率低下,用作純防守的隊伍也抽不了身去冒險。分差正隨時間穩定地拉大,每次被對方直擊城門都像是一錘砸在胸口上。我們也就收集了五發砲彈,分差已經大到我們等不下去了。換作是其他場次落後這麼多我們大概會直接放棄--但是這場我們有砲彈而且對手的牌面沒有很強,我們還有翻盤的機會。

*

卡羅一臉認真的問道:「那麼--小紅,這場戰鬥你有甚麼打算嗎?」

「如果Super Rangers的實力遠高於或者低於我們的話所有策略其實都不重要,所以前提是兩邊實力差不多。這時砲擊就相當於一個讓對方不敢冒進的威懾。就像對上神眾隊一樣,砲擊打中陣列的話可以造成可觀的殺傷。如果砲擊陣列的同時他們還一面倒攻過來呢?這樣他們帶傷撞上來會自滅,我們進攻時就有了直取城門的機會。」

看著他們似懂非懂的表情我又包了個底:「不過很多東西還是真正打起來才知道啦。」

「你覺得對面會有甚麼樣的戰術呢?」

「她的看法一向是堆出夠足強的隊伍就能把對面碾過去,感覺就是正攻法吧。以她的指揮力能拿出應對方法也說不定。只要她們堅持不用砲彈,主動權還是在我們手上。」

*

剛才的預測已經中了大半,但那時候我心裡也沒有底,尤其是我們這次完全沒有遇過實力相當的對手。只是現在想這些也沒有幫助,戰況按著計劃走的話按計劃打下去就是。

我宣佈:「那麼我要開始發射砲彈了。如果這輪打下來分數完全不見起色的話我們就認輸吧。」
卡羅:「都聽你指揮的~」
阿飛:「可以啊」
熊熊:「小紅加油!」

顫抖的手指按下去,屏幕上的砲彈射出卻在到達對方陣前就已經落地……沒中。

「來吧熊熊,用你的神抽之手發射砲彈!」第二發是熊熊。

「喝!」她興奮地喊了一聲,用力按下發射砲彈的按鈕:「中城門!」

第三發砲彈也是中城門,第四發終中命中了對面的陣列。在看到Alex在群組裡出「中陣列」的當下我立刻發出總攻擊的指示。剛剛進攻完回來的我要先回復才能撲上去,在回復的確認視窗彈出來之前我瞥了一眼當下兩隊的狀況--

好像有點不妙?

如果對方全破,我應該能看見城門上很大一個直擊城門的按鈕才對。剛剛沒看到這個按鈕也還算正常,因為我們發起攻擊也需要一點點時間。可是我不但沒有看到直擊城門的按鈕,連對方九個玩家頭頂上面的戰破標誌也沒有沒看到。

硬著頭皮按下進攻鍵,對上的是站了在中排的Yuki。她隊上面的坦克已經掛掉,一些角色略有損傷,但是後排的角色絲毫無損--顯然這支半殘的隊伍不是被砲彈打殘而是在戰鬥中打殘的。缺掉坦克的隊三兩下就被剛剛回到滿血的我幹掉了,但是回到主頁面上Yuki頭頂依然不見戰破的標誌。

這是怎麼一回事?

我繼續進攻著,同時發語音訊息問群組裡面其他人怎樣了:
Sora:「沒打到城門,只能推到後排」
天天下小雨:「對面全力防守?」
亞歷克斯:「對方都是滿血」

我們總攻了好幾輪,結果都撞上滿血的敵人。這種防守強度比之前還要提升了一個等級,完全不讓我們有可乘之機。直覺告訴我他們採取了最極端的防禦手法:九個人全部採取守勢,只要受了傷不管是大傷還是小傷立刻吃藥回復,是完全捨棄了進攻的策略。當然這種打法的壞處也很明顯,就是得分效率極差。我們攻上去還能拿一點分數,完全防守的他們可說是一點分數都沒有。快速拉近的分差證實了我的猜想。

可是這種防守不可能持久,首先當然是分數可能會被我們給翻過去。我們砲彈數量本來就有限,就算發出去也不一定能打中陣列。在那邊一動不動只是為了守住寥寥數次可能破防的機會真的划算嗎?

同時我也想知道到底Super Rangers是從何時開始採取如此極端的防守策略的?要知道一直到我們發砲以前她們一直進攻都沒有停過。有兩個可能性:一是他們發現我們開始發砲就就開始縮回去,二是發現自己中砲後才連忙回防堪堪守住。從剛剛的交鋒來看的話,有意識防守的Super Rangers是我們打不穿的。但如果在她們還在進攻收不回來的時候發砲打中,我們還是有機會摸到城門。當下最重要的就是要摸清楚她們攻守轉換的時機然後對症下藥。

首先是她們會不會一直消極防守這一點。在分數的壓力下她們又守了一兩分鐘,發現我們沒再發砲後又重新攻了過來。其實她們大概也能算到熊熊隊剩一發砲彈,潛在傷害其實比不上長時間消極防守。我們的應對也很簡單,就是讓隊員們重新開始收集零件,砲彈越多就能給對面帶來更大的壓力。

「卡羅熊熊阿飛,你們記得我們從開始砲擊到現在追了多少分嘛?」
卡羅:「……這怎麼可能記得啊。對面的分數倒沒有大變化。」
阿飛:「不記得了。」
熊熊倒是直截了當地給出了一個數字,不愧是對數字敏感的奸商:「我們的分差縮小了一半以上,但具體是幾分我也說不準呢。」

用熊熊給出的數字算一算就能知道對方不可能完全消極防守到底,不然她們大可以從我們砲擊開始就龜縮到戰鬥結束。接下來的比拼就是看對方在我們收集零件時打的分數比較多還是我們砲擊拿的分數比較多了。在我們又開始跑去收集零件之時Super Rangers又換了個戰法,變成在全力進攻和全力防守之間迅速切換。這大概只有戰術紀律超高的她們才做得出來吧。半攻半守既不能壓到我們喘不過氣來也不能保證不會被砲擊搞到,還不如直接來個全攻全守。

Yuki這種應對還是有個漏洞。她們假定了我必須先把冒險的隊員拉回來才能發砲,因為我們要一定人力把殘陣給清掃掉。如果我反其道而行,先發砲再把隊員叫回來呢?我指示阿飛在冒險回來之前進行砲擊看看。

「阿飛你零件收集好了嗎?」
「還差一件。」
「就算沒有收集完也好,你在35分30秒回來進攻可以嗎?」
「可以」
「然後你那個已經準備好砲擊的帳,在35分27秒發砲吧。」
「嗯」
「卡羅熊熊,你們也可以在同一時間轉守為攻。」我同一時間把這句話錄音發到了群組上。
「「可以」」

「--中陣列!」阿飛準時地回報,聲音中帶一點興奮。

我看準時間跟其他人一起攻了上去,對手果然是剛剛吃了一發砲彈的殘兵,三兩下就被我收拾掉了。我連忙帶著尚算健康的隊伍發起第二次攻擊,站在後排也吃了砲彈的對手同樣被我快速拿下。

其他隊員如果也能順利拿下這些殘血隊伍,我們應該摸到城門吧?我發瘋一樣快速按著手機希望以最快速度回到主畫面,果然在一片混亂的戰鬥紀錄中找到了這條文字:「aoisora1 → Attacked Rivel Base! +59247 GP Pts!」

不算放水那場的話,我們就從來沒有摸過任何強隊的城門,包括上次對上神眾隊。說是Yuki放水用了弱一點的隊也好、說她大意被我們抓到機會也好,這的確是我們的第一次。聊天室裡的幾人已經忙到沒空打出完整句子,只能用各種表情圖以表興奮。美中不足的是對方最後還是回防了,我們的後續攻擊也沒打到城門。

卡羅:「是我眼花嗎?剛才我們成功直擊了城門嗎?」
熊熊:「抱歉我沒看到……」
阿飛:「我也沒看到。」
我當然不可能再浪費時間去拉戰鬥紀錄給三人看:「是真的喔。Sora居然摸到城門,一口氣拿到差不多六萬分呢!」
熊熊:「喔喔!難怪我感覺那分數條好像又拉近了一些~」
卡羅:「我們還有時間追嗎?」

雖然打到城門值得興賀,但殺了對方一個措手不及後我們依舊落後一截。熊熊隊依舊執行收集零件然後伺機砲擊的動作,但是面對已經吃過一次虧變得更保守的Super Rangers完全佔不了便宜。同一招顯然不會在Yuki身上成功第二次,沒法再打到城門的話我們翻盤的機會還是不大。

現在的形勢變成了另類的心理戰:熊熊隊要猜中對方進攻的時擊發砲,Super Rangers要猜中對方發砲的時機防守。熊熊隊的砲彈有限,Super Rangers的分差也不容她們過份保守。砲擊陣列再也沒有為熊熊隊創造直擊城門的機會,砲彈打中城門倒帶來了一些分數;Super Rangers其實很難猜中熊熊隊發砲的時機,但她們被砲後的回防越發純熟。兩邊分數變得非常接近,可以說雙方任何一個失誤就會把勝利葬送掉,但局勢就這樣僵持著,誰也沒有佔到便宜。

時間一分一秒地過去。

40分。

45分。

50分。

55分。

58分。

戰場上的廝殺變得白熱化,與場下和聊天室的沉默形成巨大的反差。卡羅、小雨和阿飛已經變成機械式刷分的人形,聊天室裡的三人大概也好不到那裡去。讓我猜的話,Yuki的手下們大概也會是差不多的樣子。本來在Yuki的領導下每一場就只有果斷放棄和輕鬆碾過兩種結果,哪有可能打成泥沼戰呢?也就負責下指令還要控制發砲時機的我還未進入雙眼失神的狀態。隨著戰鬥接近尾聲,我的大腦再次高速運轉起來。

雙方看上去已經拼盡一切都沒法打破拉鋸的局面,可是熊熊隊在一發定生死的最後關頭有一個獨特的優勢:砲彈存量。

如果說Super Rangers有一個抓得最準的進攻時機,那就是我們剩一發砲彈要放人去冒險的時候,因為她們知道我們必然留下一發砲彈作威懾。被抓個兩回後我才改成偶而存上兩發砲彈,這才讓對方不太好猜。這種打一發存兩發的行為持續了好一陣子,現在戰鬥都快完結了我們手上還有整整四發砲彈。

這四發砲彈直接打中城門也好,打中對方陣列也好都能在最後時刻創造優勢。

「阿飛,你手上的砲彈一口氣用掉吧--」

等來的卻不是阿飛「嗯」、「好」的類的回應:「他們攻過來了耶!」

卡羅:「啊啊啊啊我的擊退隊剛復活五秒就被打下去了!」

熊熊:「真的耶,他們不要命地衝過來了!」

這時我才記起單純互毆上她們比較強的事實。現在他們攻擊頻率比剛才還要提升一截,很可能是打完一場不回復直接進入下一場戰鬥,真的被打死打殘才會回復的極限進取打法。這樣打的殺傷力更大,但是被對方偷摸到城門的機會也直線上升。在最後時刻這樣賭一把,不用多想就是她最後的底牌。

主畫面上的計時器來到59分,我再次下達指令同時把錄音發出去:「阿飛先別管他們的進攻了,在10秒左右發砲,其他還有砲彈的人也在同時間發射。」

「好……」阿飛左右開弓飛快的操作著手機和電腦:「兩發都打空氣。」

「沒事」我草草回了一句。聊天室再沒有新的訊息傳來,大概真的沒空回報了。主畫面的戰鬥紀錄以驚人的速度推進但我不可能浪費時間去確認。剛從戰鬥結算畫面回來我又按下了進攻。

--咦?

手機進入了黑屏加繞圈圈的加載[loading]畫面,但那個圈圈繞得比平時更久了一些。過了兩三秒那個那個圈圈眼看消失了。正常來說載完就該進入戰鬥畫面,沒想到載出來的還是黑屏加圈圈。

該不會是斷線或者程式當機了??

如果是我獨自一人在打的話我可能會做出那種瘋狂敲打屏幕或都槌桌子的動作,但是在公眾地方我只能忍住。在如此熱血的大戰的最後一分鐘裡因為一人斷線拖累整隊輸掉那該多氣人啊。

加載畫面又跑一下終於跑出戰鬥畫面,說明剛才不是網絡斷掉。下方還是我的隊伍,不過整隊已經死的死傷的傷,而顯示對方角色的地方空溜溜一片--只有身後的城門空著讓我的角色輪番上前攻擊。

我居然摸到城門了。熊熊隊在風聲鶴淚中居然摸到城門了。

剛剛載入良久是因為從我按下進攻到進攻在伺服器被紀錄下來的短短幾秒時間裡發生了兩件事:一是我被對方攻擊了一回,本來尚算健康的隊被打成接近殘廢;二是我在按下進攻時對方還沒有完全破防還有人在堅守陣地,但我按下進攻後這個人已經被打掉,伺服器配對不了戰鬥對象只能讓我直接攻城。

直擊城門能拿到的分數跟角色對城門造成傷害成正比,所以我手上這支殘廢隊伍就算直擊城門也拿不了太多分數。但是沒關係,在對方防守爛成千瘡百孔的情況下能摸到城門的肯定不只我一個。卡羅和熊熊拿著防守隊伍肯定沒空進攻,但阿飛的話有機會。

「啊!!我打到城門了!!」--果然阿飛這樣喊道。
卡羅:「我和熊熊繼續防守,你快上去再來一次!」
熊熊:「阿飛加油!!」

卡羅的話提醒了我還有時間再作一次攻擊。我把在剛才戰鬥期間又被對方進攻直接打死的角色回復過來,在59分55秒發出最後一次進攻。這回我沒有看到城門,只拿到一點點分數。

戰鬥結束了。

結算會在五分鐘後公佈。一般來說勝負早就分出來了,唯獨這場在看到結算以前誰也說不清。卡羅立刻把手機丟到桌上伸懶腰,熊熊累得趴在桌面上。阿飛居然還沒有露出疲態,他只是冷靜地把手機放一邊然後在電腦上檢查起聊天室的訊息來。

「Alex還有小雨都說自己在最後一刻摸到城門了。」

「阿飛你就不會累的嗎?我的手腕已經在痛了,你超高強度雙開還能像沒事一樣。」熊熊吐糟。

阿飛還是那個靦腆的笑容:「習慣了。」

卡羅一臉不想再看到這遊戲的樣子:「啊~受不了,我去買喝的。熊熊阿飛小紅你們想喝甚麼嗎?」

阿飛:「檸檬愛玉半冰半甜。」
熊熊:「仙草奶綠去冰微甜。」
「我跟你去看看好了。」

飲料店同樣在這個美食廣場裡距離我們並不遠。他點了個芋泥烏龍,我要了珍珠奶茶,我們點好後站到一邊等著。

我打開話題問:「所以……最後是誰贏了?」

「我也沒看清楚。最後時刻兩隊十分接近,我們摸到好幾次城門,但對方狂攻的話應該也摸到我們城門。你也沒看到嗎?」

「最後幾秒我忙著再多進攻一次所以沒看到呢。」

他反問道:「那你覺得是誰贏了呢?」

「只能看運氣(toss up)吧,說不定剛好有一方多摸城門一次就贏了。」

「那……你覺得你和Yuki誰贏了呢?」

這裡當然是指我和她的理論之爭。自己是確立了砲擊作為牽制的打法,但Yuki也證明了頂著不能砲擊的劣勢也能不落下風:「我覺得算她贏吧,不用砲擊也能打成均勢。」

「你們倆真的很像。」卡羅感歎:「如果此刻問她的話,她應該會說算你贏吧。」

「要不你做個裁判算了……不過我很小氣的。」

「我嗎?」卡羅有點被逗笑了:「我覺得你帶得很好,應該算你贏。不信的話問下其他隊員們?」

「這樣算是客觀比較嗎?」

「客觀比較是你和Yuki的事,我只是按我的標準作出評價。」

「嗯~你除了花言巧語以外原來還有標準可言?」

「有啊。比如說你當初想用類似剛才Super Rangers的隊伍和打法的話這場就肯定行不通吧。首先她們人手一張活動六星,這種東西活動一過就掉價,大量收的話不可能回本。我肯定這堆六星都是她們抽活動七星時歪出來的。另外Super Rangers肯定訓練有素,不然不可能回防得這麼快才對,由我們執行這種打法只會錯漏百出。你的打法簡單多了,執行起來沒有時限性,收到你的指示再動也可以。

你應該覺得自己整個活動都打得很憋屈,沒有達到你的效果吧。有時候運氣不好就是會這樣,但你已經盡力了不是嗎?你覺得戰績不好就指揮不力,有問過我們的想法嗎?現在排十一,沒能排更高是因為運氣不好對上所有強隊了,但沒有你的話可能早就前十無望了。跟上次攻城戰比起來,這次與其說『打遊戲真開心』更像是『原來還可以這樣打』。你可以問問其他人,應該也會得到差不多的回應。

從最初的訓練活動開始到第一次攻城戰再到這次攻城戰,每次你都能給我們帶來驚喜。雖然不知道這遊戲還能留住你多久,但是對我來說不管是逆戰幻想還是其他手遊我都蠻喜歡跟你一起……打遊戲的。」

「你、你突然這樣講我不知道怎樣回應……」

「沒關係啦~我想現在戰鬥結果應該結算好,我們把飲料拿回去就趕緊確認吧。」

*

我和卡羅一人拿著兩杯飲料卻發現桌上出現了剛剛還不存在的炸魚薯條和檸檬塔。

卡羅誇張地問:「咦?你們該不會剛才沒吃飽還要吃吧?」

熊熊笑著回應:「慶祝一下,我請客。」

剛才我沒有帶著電話出去買飲料所以還不知道結果:「贏……贏了?」

阿飛:「小紅自己親自確認吧。」

我拿起電話,回到遊戲主頁再進到活動頁面裡,結算顯示熊熊隊以極微弱的分差壓過了Super Rangers拿下了這場勝仗。最神奇的是神眾隊在同一場次也吞了敗仗,熊熊隊在最後一場之前反壓神眾隊排在第十。

我想起了我用殘陣衝上去幸運地摸到城門,當時得分跟最終分差沒差很遠。當時我決定先回復再進攻的話可能就錯過摸城門的機會,如果其他人同時錯過機會的話我們很可能輸掉--不過這些都已經過去了,我們確實贏下了這場戰鬥。

「……贏了啊。」

阿飛:「有賴小紅的指揮我們才能贏呢。」

熊熊:「只要下一場不要對上神眾隊,我們應該穩進二檔呢!」

卡羅:「好好,不要再給小紅壓力了。來,這是你們的飲料~」

熊熊:「哎唷~就這麼急著保護她嗎?」

卡羅:「咳咳…現在不應該是放鬆的時候嗎?我們吃完去打個保齡球,晚上去試這邊新開的手工意粉順便打最後一場如何?我請客。」

「「「「耶!」」」」

*

銀髮少女癱倒在自己房間的尊貴電競版人體工學椅上面。

Super Rangers居然輸了。比起輸掉更難以接受的是「意外」地輸掉這件事,相當於少女天衣無縫的金身被打破。聊天室裡面其他隊員已經在檢討自己的不足之處。在他們眼中少女的戰術一定沒問題,這樣輸掉一定是自己有甚麼做錯了才對。

但少女對隊員們的反應完全沒興趣。她知道小紅這次值得一場勝利。

當然不是說自己的理論錯了所以打不過。比如一開始就全力狂攻把熊熊隊壓到沒法好好收集零件的話前面存下來的分差就足夠讓自己足到最後。又或者最後兩分鐘的狂攻,如果當時她選擇繼續本來打法的話輸的機會還比較高,而不像現在只是僅僅輸掉。那個分差誰贏都不意外,可能己方多摸一次城門或者對方少摸一次城門結果就可能逆轉,而這可能只是某次進攻差了零點零幾秒的分別。

少女根本不需要這一場來證明她對砲擊的看法,攻城戰前面的二十六場已經證明了這一點。當小紅還執著在隊伍對決(head2head)的高下時,少女所關注的從來都是從整個活動的大目標。相信小紅回想一下整個攻城戰發生過甚麼就能更深入地理解砲擊的價值。

單是這場為她帶來的娛樂,小紅就值得一場勝利。

同一時間排第十的神眾隊輸掉落到第十一名,少女毫不意外。她早就知道神眾隊還沒完整配對前面強隊的情報,這場熊熊隊都遇上Super Rangers,神眾隊配到強隊又有甚麼好奇怪的。

還有一個可能帶給熊熊隊驚喜的情報,但她不打算跟他們講。第二十八輪也就是最後一輪系統往下配對特別明顯。傳聞中是因為最後一輪的時間對美洲玩家不利但營運又不希望得罪課長們,所以最後一輪都特別輕鬆。

少女的隊伍硬吞一敗後依舊以壓倒性的分差領先同樣三敗的第四名,要保住第三易如反掌。可以說她這次行動又一次完滿結束。

如果小紅還留在這個遊戲的話,相信很快她們又會有機會見面。不過有點討厭的是卡羅似乎和小紅越走越近了。

哼。

***

キタ━━━(゜∀゜)━━━!

我以為這種東西有推敲過的草稿可以流暢地一口氣寫完,到了下筆才明白其實真很難。在高張力的戰鬥期間,當下的思考和感覺比起用棋盤推演推出來更像是直覺般的自然反應。

而且我覺得有兩個沒能清楚描述的地方感覺很可惜,但我想了好久似乎也找不到更好的解決方法:一是我一直用「上次排名第幾」來形容那堆無名隊,因為排名會一直改變沒法用這次的排名形容它們啊,可是這樣真的很容易搞混和很難聽。我有想過把隊伍名補回去,可是我實在找不到當時那堆隊名,也不想憑空作一些隊名或者把其他隊名抄進去。那些我認識的隊伍已經全數登場了,其他的就讓它們名字留空,算是一種紀念吧。二是九個玩家在場上被稱為隊伍,每個玩家排出來用作攻防的角色們也被叫作隊伍……希望大家沒搞混。

我有想過看看有沒有類似的電子競技,只是好像真的找不太到節奏上接近攻城戰的。單是把時長拉到一小時就沒多少可比較對象了。像星海2或者AOE那種RTS嗎?人家的輸入(input)密度高多了,因為不是課金遊戲戰術的重要性也壓倒卡片(種族?角色?)的選擇。真要比的話其實LOL比較像吧?不過守塔遊戲塔倒了就輸了,在攻城戰裡被摸到城門只是多掉一點分數,兩者的優先度可以差很遠。

說到星海,好像某國人對星海有著特殊的情意結。在同人小說裡面以星海為題材的作品與RTS的熱度比起來可說是不符比例地高。題材也不限於電競,從穿越到奇幻愛情到校園系(就muvluv那樣?),只要能想出來的都有。很多現時在高度內卷的網文行業裡可能都是常見套路,但在當年的話可算百花齊放了。差不多20年前還小的我就在那個亞洲小說網(已經倒了啦)看過不少星海同人,當時我連RTS都壓根沒碰過。到了現在你去起點還能找到不少星海同人,而同期的同人題材早就不知道被沖到哪去了。

說到同人網文,這個區塊的選材上可能才是最殘酷的。你寫修仙,大家寫修仙都寫修仙幾千年了,只要你還有料就大家就會看。你寫同人,要是原作本身過氣了根本沒人會看下去。以原神為例子好了,以璃月蒙德為背景的網文很多,但你看有人寫須彌的長篇同人嗎?楓丹的倒不少,因為芙芙可愛。現實就是大家都跑去玩崩鐵了嘛。

好吧不扯遠了。如果我還有甚麼感言的話應該就會放到終章裡,這裡我想先放下更多攻城節的背景細節。在此之前我先說說阿拉貢。這張應該是我那個時代另一張頗有記憶的卡片,當時我們沒在攻城戰裡湊隊型而是在其他塔防類關卡湊出來,就像下圖一樣:


實際上攻城戰的團隊排名大多以分數為準而非勝場。只有在最初期和一些特別場次才使用了以勝場排名的規則,在我退坑後都以分數排名為主了。我能翻到的紀錄是第16次攻城戰為了紀念九星卡片出道,特地把排名換成勝場排名(也就是10.2頁首那張截圖)。

勝場這種非常有限(limited)而且邊際價值(marginal value)急速上升的數字對隊伍的實力是個很好的指標。分數則完全相反,每場只要把對手刷到投降躺平就幾乎可以無限制地刷,因此分數的邊際價值不但不是向上而是持平或者反而向下。以勝場作排名就會給玩家留下很大的戰術空間,以分數排名的話只要準備足夠的藥水就好。我當然推崇勝場制,否則也不會有小紅發揮的空間,也不會有這一章的精彩大戰。無可否認的是分數制大概更符無腦土豪的心意,而理論和實際上營運的決定也引證了這一點。當然後果就是多打幾次後就沒人想陪土豪們玩了。

另外還有兩個實際活動中存在而被我藏了起來的機制,分別是角色召喚成本(unit cost)限制和攻防隊分離的制度。在文中我一直接假定了玩家可以自組五張角色來打攻城戰,而且這五個角色是攻防共通的。

還記得逆戰幻想理論上其實是一款塔防遊戲嗎?這個成本可以想成在塔防遊戲買砲塔的價格,但是在這個根本沒在塔防的遊戲裡這個數字大部分時間都毫無意義。每個角色都有一個10到30不等的召喚成本,而在攻城戰使用的隊伍角色不能超過十個,成本限制是200。聽上去是個要命的限制,但在營運的操作下更像是汰換舊角的手段。即使星星數量一樣,角色戰力通漲除了反映在攻擊力和技能上面也會反映在慢慢下降的召喚成本上。七星角色剛剛出來的時候成本都是30,弱一點的也要25,半年過去後同樣強度的角色成本可能掉到20-25。在營運海量出卡片的策略下,任何舊角色都有較低成本的替代品,玩家根本不會擔心因為缺了誰(除了活動角)就完全打不動。在這種背景下這個召喚成本的系統起不了使組隊多元化的作用,完全是可有可無。

攻防分離這一點就比較有趣了。上面說攻城最多選十個角色,可是PVP比如競技場都是五個一隊啊?沒錯,遊戲裡的攻城戰應該是組成獨立的攻防各一隊而不是一隊同時負擔進攻和防守的職責。這樣做可以讓玩家自己排角色時就做好分工,反過來說如果攻防一體的話隊伍裡就要另外分工。後者的隊伍是開戰前已經預先決定好(predetermined)的,而隊上的分工可以隨時間而變化。後者明顯會提升戰術的重要性,但前者才是無腦打的選擇。

由玩家自己分工也可以使策略變得更極端,就像上面出現過不計成本吃藥回復的超保守打法或者最後兩分鐘祭出來的極端進取打法一樣。雖說策略可以如此極端,但先不談能不能達成目的,光是成本效率就可能把人嚇跑:沒記錯的話攻城戰裡面體力條滿了是700(先假設「士氣」滿了--如果有人還記得士氣為何物的話),回復會用到150體力。所以如果純回復不作任何進攻冒險的話最後剩下的100體力可能就會被浪費了。只是你問我這是不是刻意設計成這樣,我只會說想太多了吧。進攻和防守用的體力總和透過線性組合千變萬化,總有體力用不完的時候,難道又是營運刁難嗎?

講完機制,我們把焦點拉回到熊熊隊和Yuki的戰鬥來。簡單而言雙方發現大家隊伍(又來了)戰力平分秋色後打的如意算盤是這樣:在沒砲彈的情況下以正常思維建隊的Super Rangers會在正面交鋒上拿到更多分數,而且在熊熊隊第一次跑去收集零件時可以憑人數優勢對對方造成超大的防守壓力,這段時間是Super Rangers累積分差的時間。當熊熊隊終於有砲彈時形勢便會有機會倒向熊熊隊一方,但實際上這取決於兩隊對砲擊時機的掌握。砲擊用得好可以威懾對方,也可以造成破防;守方在戒備砲擊同時保持刷分效率,務求不要花光前面累積的優勢。

在沒砲彈的情況下以正常思維建隊的Super Rangers會在正面交鋒上拿到更多分數,而且在熊熊隊第一次跑去收集零件時可以憑人數優勢對對方造成超大的防守壓力。當熊熊隊終於有砲彈時形勢便會有機會倒向熊熊隊一方--所謂的有機會取決於兩隊對砲擊時機的掌握。砲擊用得好可以威懾對方,也可以造成破防;守方在戒備砲擊同時保持刷分效率,最重要的是不要被一波帶走。

在最理想的情況下,戰鬥會變成一個純粹猜時機的遊戲。守方每次猜中攻方發砲的時機可以得點,攻方猜中守方進攻的時刻(加上運氣好砲彈打中陣列)也會得點。類似的遊戲其實很多,比如海戰(Battleship),或者賭博默示錄的e卡。可是在實際層面上比起能不能猜中,其實隊伍協調和反應的能力才是勝負關鍵。

如果我猜中了對方砲擊的時機,比如我在對方發砲前1秒就開始防守了,這樣當然能防下來。如果我在砲擊後1秒開始防守呢?這就要取決於對方在砲擊後的進攻速度。考慮到每次進攻都花費十幾秒以上的時間加上隊員們不太可能停下來等你砲擊,砲擊後的總攻至少要在砲擊後數秒才能出現。那如果我在對方砲擊後、總攻前就開始防守,是不是不用猜的也能一定程度把砲擊給擋下來呢?所以小紅和Yuki各自在「猜」對方的動作並不是全憑運氣,而是觀察對方行為後下的決定。

最後的問題:在理論領域的爭論上,到底是誰贏了呢?如果有留意10.1和10.2的話不難發現其實整個攻城戰裡面強隊都沒有用上砲擊,或者說在上次短暫的熱潮後大家還是覺得砲擊上不了主流。這樣看上去是Yuki贏了嗎?另一方面如果正常的打法比如熊熊隊或者Super Rangers在其他場次會用的打法才是王道的話,Yuki對上熊熊隊照樣正常打就好了。為了應對砲擊而改變打法,不是證明了砲擊有其價值嗎?我想這點與其說是我反覆提示過的東西,不如說這是整部作品的核心前提,讀者可以自己想想。

如果這場是甚麼「這雖然是遊戲,但可不是鬧著玩」的黑暗遊戲,後面應該要加上一段小紅和Yuki的虛構對話(因為其中一個已經怒領便當),檢討賽果和討論遊戲機制同時惜英雄重英雄,可惜再也沒有機會對上云云,就像哈利那個虛構的9又3/4月台對話一樣。

那麼,非常感謝各位花時間閱讀,我們終章見。

Wednesday 15 May 2024

15/5/2024: 收藏清單/魔導聖戰/任網

本來我又在翻我的播放清單想為巡迴系列找點靈感結果找到點超級懷舊的東西,那就讓我在深夜寫點簡短的隨筆吧。這些東西說不定十年後看到又要感動一遍。

大家知道Youtube的「收藏」清單是不能隨便改變公開性的嗎?其他清單都可以設成非公開或私人,只有最原始的「收藏」清單改不了。我說過我在巡迴系列裡分別點了清單的第100、200、300、400首,但你知道這清單有多長嗎?一千四百多,當然很多被刪除了或改成私人。清單長得只要播放到第四百多首自動播放就會壞掉停下來,光是載入那清單就會直接吃掉1.5GB RAM。

可這是我的私人清單啊!我從來沒想過要讓其他人任意觀看,天知道他們想拿我的清單幹嘛。所以我一直都很想把清單改成私人卻苦無對策,今天居然偶然之下成功辦到。根據某stackoverflow回答,只要把語言改成英文(US)就能改了。我試了下一發搞定也沒後遺症。美國霸權,呵呵。去你媽的G社。

我繼續找可以拿來寫文的BGM,突然想到以前那堆手作RPG會否有些蒼海遺珠呢?但我能記起的RM2K/RMXP作品不多,即時能想到的就是鯉魚大的魔導聖戰。看了一下他的巴哈……嗯,十一年沒動靜了。在這十一年間geocities倒了,他掛在hinet上的載點也倒了。他眼看也要成絕對意義上的大叔了……會有補完的一天嗎?

我又想到那個把我拉進RPG Maker世界的地方--任網。

這裡當然不是專門聊RM的地方,但很多話題都莫名地跟我合得來:故事接龍、解謎、做遊戲,應該還有不少但我已經記不起來了。說起來老任的本家台柱裡面我大概只對寵物小精靈比較熟(只限前三代--還有aucy加上幾十個掛在geocities的寵物小精靈網站,我們有機會以後再說……),瑪莉奧當然聽過但當年根本只玩過最基本的Mario Land GB和Super Mario World,跟現在可以把SMB1四種(?)5分鐘通關方法倒背如流的我比起來實在難稱粉絲。可是我就在那個地方一待待了很多年。

任網在當年是個頗大的平台,但核心成員其實就那二三十人。當中有幾個愛好做遊戲的在帖子裡堆樓,一個興趣小組就此建立。有些人甚至不是用RM2K而是RM95,還好我開始動手那會已經從RM2K過渡到RMXP了。我看著大家做出來的作品想了好久,居然只想到做密室解謎遊戲。成品當然做不出來,但如果肉搜過我這網誌就知道我做過兩個解謎向網站。到了後來任網參與解謎網站AOR又掀起了一波熱潮,沒想到這就是任網最後的餘暉了。

站長長年消失,只在沒繳錢網站快倒的情況下勉強出現,管理員也消失不見。網絡早已不是二十年前的樣子,也不需要這平台匯聚資訊,小站的人氣注定被大平台吃光。任網硬是多繳了十年網費,終於在2022年末看不到2023,倒了。

我在2023就知道任網倒了,但搜了一晚懷舊的東西讓我鬼使神差地再搜一遍ngamer.net……然後我就發現當年的玩家們自發開了個discord群組。裡面不需要任何實質交流,其存在已經足以讓我們憶起很多東西,就像逆戰幻想的群一樣。

如果你剛好也是當年的任網用家又剛好看到我這隨筆,那你還等甚麼?快點加群回來吧!