我的AMXX研究之路:跌跌撞撞的小堅持
tags: amxx, tig, npc我的AMXX研究之路:跌跌撞撞的小堅持
「喪屍模式」:點亮我的小宇宙
說到我跟AMXX的這段緣分,還得從我剛開始玩《Counter-Strike》(CS)的時候說起。
那時我還不太會挑伺服器,就隨手亂逛,結果不小心溜進一個叫「tig」的喪屍模式。一進去,哇,那感覺真的超特別!它其實是仿《Resident Evil》的設計,把2代跟3代那些超帥的BOSS搬進來,還混了點《Left 4 Dead》的味道。我第一次看到喪屍扛著火箭炮轟人類的時候,整個人都呆住了,心裡一直喊:這也太誇張了吧?遊戲節奏又快又刺激,還帶著一點陰森森的感覺,真的讓我玩到完全停不下來。後來才知道,這是服主自己用AMXX寫出來的。我心裡突然就燃起來了:一個人就能做出這麼酷的東西,我也想試試看啦!就這樣,我一頭栽進AMXX的世界。
以下是史前遺留下來 TiG 的一支影片:
第一次搞伺服器:開心了好一陣,然後還是亂了
我開始自己摸索AMXX,從那些亂七八糟的語法一點點學起,慢慢到能寫點小東西,於是就跑去改了個喪屍插件(ZP)。一開始沒想太多,就是想試著把喪屍王跟人王改得像「tig」那樣酷,比如給喪屍王加點特別的攻擊招式,讓人王有更強的武器對抗。弄完能跑起來的那一刻,我真的開心到不行,覺得自己好像有點厲害耶!伺服器上線後,還真的吸引了幾個玩家,後來我又加了個等級系統,讓大家打喪屍可以升級拿獎勵,結果越來越多人跑來玩。最熱鬧的時候,伺服器常常滿人,32個位子一下子就塞滿,有人還跑來跟我說:「這模式真的很讚!」我聽了整個心情飛起來,每天晚上都守在電腦前看大家玩,滿腦子都在想怎麼讓它更好。但我這人啊,完美主義有點誇張,老覺得還能再加點什麼,比如新的武器效果或更複雜的地圖,結果改著改著就收拾不下了,程式碼亂得像一團線,自己都搞不清楚哪段是幹嘛的。加上我拖拖拉拉,總覺得還沒弄好就不想管,玩家慢慢覺得沒新鮮感就跑掉了,伺服器最後還是安靜下來,我也沒力氣再弄啦。
沉寂時的小折騰
那段時間我看起來沒啥動靜,但其實心裡還是靜不下來。有一天,那個後來影響我超多的朋友跟我聊起來,說CS其實是用C++寫的。我聽了覺得有點意思,心想自己老窩在AMXX這小圈圈裡好像不夠,得往深的地方挖挖看啦。於是開始啃C++,還順便摸到了NPC AI的路徑尋找(Pathfinding)。我這人好奇心有點重,就想試試看能不能搞出點什麼,結果亂搞一陣,居然真的跑出個能動的小東西!但那代碼亂得像垃圾場一樣,我自己看了都頭暈。加上我超沒自信,老是覺得這玩意一點也不好,學到一半就丟在一邊了。不過這一折騰,還是讓我對底層技術有點小感覺。
低谷:CS沒落,我的心也跟著沉了
後來我突然又熱血起來,決定拼一把,用一年時間從頭寫個喪屍伺服器。我心裡滿滿都是期待,想著這次一定要做出個超棒的東西,連睡覺都在想新的點子。結果完美主義又來攪亂了,我老覺得這邊還不夠好、那邊還能再改,拖延症也跑出來,天天在那邊想著要不要調整這個、改進那個,花了好久才終於弄完。伺服器上線那天,我坐在電腦前,心跳得好快,還幻想著會不會有人跑進來玩,甚至想過要是有人喜歡,我就再加點新功能給他們驚喜。但現實真的好殘酷,CS那時候已經沒什麼人氣了,我守了好幾個晚上,伺服器還是空空的,一個人都沒來。那一刻,我心裡真的好失落,好像所有的努力都白費了。我開始胡思亂想:是不是我太晚開始了?還是其實沒人會喜歡我做的東西啊?那段日子,我整個人像沉到谷底,連碰電腦的力氣都沒了。
重新撿起:有點小成就,又有點洩氣
CS沒落後,我心裡有點不甘心,覺得不能就這樣什麼都不做。於是又跑回去研究NPC的東西,這次比之前認真好多。我花了好多時間,把路徑尋找弄得比上次順暢,還特地拍了段影片,把成果秀出來。看著自己做的NPC在螢幕上跑來跑去,我真的超開心,還偷偷覺得自己好像有點厲害耶!但沒多久,我就發現NPC根本沒我想的那麼簡單啦。除了Pathfinding,還有一堆東西要搞,像怎麼讓它聰明一點、怎麼處理不同的狀況,真的好複雜。我又開始沒自信了,覺得自己好像永遠也搞不定,只好先放一放。
硬幹的突破:從亂搞到模塊
不過我就是這樣,放不下的東西總會偷偷撿起來。那段低谷時,我老在想AMXX的老毛病——代碼一多就亂得像麻花,像舊版的PHP一樣,完全沒結構。有一天跟那個朋友聊著聊著,我們突然冒出個大膽想法:能不能在AMXX搞個物件導向(OOP)來改善這一點?我腦子一熱,就馬上用AMXX硬幹了一個版本出來。跑是能跑,但運作效能慢得像烏龜一樣。我心裡又開始慌,覺得自己是不是又要搞砸了?但我不想就這樣放手,就跟朋友說,這速度真的不行啦,能不能用模塊救一下?他超夠義氣,馬上幫我弄了一個測試版出來,效能瞬間好太多!我心裡整個踏實下來,覺得自己好像真的有機會搞出點名堂。
維護的苦日子:硬啃
模塊弄出來後,朋友拍拍手說後面靠我自己了。我一開始還覺得沒問題,結果維護起來才發現,這也太難了吧。為了搞懂底層是怎麼回事,我甚至跑去啃Assembly Language。那東西根本像外星文,我這種沒自信的人好幾次都想直接關機走人。但我這完美主義又跳出來,非要弄明白不可。拖拖拉拉搞了好久,雖然還是沒完全搞懂,但至少讓模塊穩定了點。在研究過程中,對模塊跟OOP本身的理解也增進不少,慢慢開始明白怎麼讓代碼更有條理。這過程真的有點苦,可也讓我對技術多了點小敬畏。
現在的我:還在追兒時的小夢想
回頭想想,這一路跌跌撞撞,還好有那個朋友一直在旁邊。他從C++到OOP,每次都推我一把,不然我這拖延症加上沒自信,早就把自己埋了。我現在還在弄這個OOP框架,想用它重現當年的「tig」模式。那個火箭炮喪屍、BOSS亂鬥的畫面,還在我腦海裡閃來閃去的,每次想起來都覺得好懷念。老實說,我還是會懷疑自己能不能做到,但心裡那團小火一直沒滅。到現在,我其實還想繼續完成NPC那項研究,總覺得當初放下的東西還有機會變得更好。我這完美主義,總逼著我把東西弄得更好不滿足,所以這條路再長,我也得走下去。
你是第 ... 個閱讀這篇文章的人