2008年11月27日 星期四

莫戈莫戈大王

我在北風凍原的簡易機場上。

有個地精告訴我,「這是最怪的事,德魯伊,有個魚人在請求我們的幫助!」


「他被稱為莫戈莫戈大王,冬鰭魚人的頭目。看來似乎他和他的人民被趕出來了,他們想要有人來保住他們的村落。」

我心想,「魚人頭目? 魚人什麼時候變成NPC了啊? 你確定是那種成天哇嗚哇嗚亂叫的魚人嗎?」

地精沒作聲了,我招喚出我的座騎霜紋豹,偷看了一下攻略上的座標,跑過去冬鰭魚人的避居地。

OMG!!

91088 91089

「這....這就是魚人大王??」

我忍住笑,開始跟莫戈莫戈大王閒聊。

原來大王不是魚人,是愛好自然的塞納里奧遠征隊的一員,原本穿上這身打扮是為了要就近研究魚人生態的,卻沒想到碰上了冬鰭魚人遭逢大難,一時心軟伸出援手,就這樣被奉為大王了。

我轉到大王身後,「大王!您的愛心內褲露出來了啦!」

EPC2

大王說,冬鰭魚人的洞窟被一隻龍蝦人克拉希穆司占領了,有一部分的冬鰭魚人也因為龍蝦人的邪惡魔法而發狂。大王教了我魚人的語言(不就是哇嗚哇嗚的亂叫嗎?),派我衝進洞窟解救被俘虜的小魚人。

有經驗值跟裝備可拿,那還有什麼猶豫的?

花了幾分鐘,小魚人救出來了,大王又跟我說了件秘密。

「我有件羞於承認的事:我被勒索了!」

「最好是啦!」我嘀咕著。

「姆姆戈莫同意替我清理一些物品,並找到了我的備用魚人服裝。他威脅要將我的真面目揭穿給其它魚人知道。」

我傻眼了。

「我不需要跟你解釋這會是一場多嚴重的混亂吧!」大王咕噥了一聲,「除此之外,我有個計畫得要把那套服裝拿回來。」

「然後?」

「拜託,請你前往避居地另一頭的北邊找姆姆戈莫,並答應他的要求,不管是什麼樣的要求。」

我想問,「為什麼要我去?」不過為了經驗值,還是走了一趟。反正沒幾步路。

往北走了幾步,看到這個一臉卑鄙樣的姆姆戈莫。

92276

「噢,你一定就是人稱莫戈莫戈大王僕人的那個人吧。我猜是那個夜精靈派你來安撫我的?」

「我才不是什麼僕人,有什麼事就快說吧!」

我被姆姆戈莫使喚去殺了一隻大虎鯨,交換回了莫戈莫戈大王的備用服裝。

姆姆戈莫還不忘記威脅兩句,「很好,只要你們的國王繼續協助我們對抗敵人,他的秘密就不會有洩漏的危險。」

我啐了他一聲,把備用服裝拿回給莫戈莫戈大王。

「該是結束這種違反自然情況的時候了。」 大王說道,「為了讓冬鰭魚人能夠有個未來,克拉希穆司必須死!」

「我要你帶著我的備用魚人服裝,以投降當藉口混入冬鰭洞窟。拿著白旗,魚人就不會攻擊你。」

「要我詐降? 一路殺進洞裡不就得了? 士可殺不可辱啊!」

「你要不要經驗值啊? 照我說的做。」 大王說道,「你可以在洞窟的西南邊最角落處找到他。一旦你靠得夠近,就解決掉克拉希穆司。」

我照做了。

穿上魚人裝,走向魚人洞窟。還好沒在吃泡麵,不然鐵定會笑著把麵打翻。

這魚人裝走路的樣子太搞笑了吧? 跳起來還會跌倒咧!

(後來才想到,我應該把這件魚人裝留起來的)

我穿著魚人裝,舉著白旗,一路走近龍蝦人。解任務的人很多,地上已經躺了兩隻龍蝦。

沒多久,殺了龍蝦人,我回到莫戈莫戈大王那兒。大王給了我經驗值,也任我選了一件裝備。

「謝謝你所提供的一切幫助。隨著克拉希穆司被擊敗,也許我們可以重新結合剩餘的魚人,封鎖那些洞穴。」

到現在還是為著冬鰭魚人著想,大王真是太偉大了,好感人。

不過沒時間傷感了,我招喚霜紋豹,繼續找經驗值去。

至於莫戈莫戈大王什麼時候才能回到塞納里奧遠征隊,我就不知道了。

============= 回到現實的分隔線 ===============

遊戲,就是要有趣。「魔獸世界」裡的這個任務串,讓我從頭笑到尾。一個很衰的生態觀察員,一個會勒索主人的清潔工,再加上一件很搞笑的服裝,害我笑了一整晚。

2008年11月24日 星期一

今天真是一整個好運到爆

今天是一定要記錄一下的。

SEGA野球這個遊戲,從看了銀狐的介紹以後,就一直玩到現在,算一算好幾個月了,也打了五年十幾個球季。

這遊戲不需要我花很多時間,每天只要抽一抽球員卡,調整一下球員陣容,然後就可以下線,讓球隊在伺服器裡自己去比賽。(非常適合上班族) 戰績好的球隊呢,會從菜鳥聯盟升上小聯盟,再升上大聯盟,戰績不好呢,就會往下降。

我的球隊這幾個月來,始終龜在小聯盟,距離大聯盟總是差一歩,期間還有一次不知道為什麼戰績超爛被降到菜鳥聯盟去。(結果在菜鳥聯盟好威啊,有史以來頭一次拿到聯盟冠軍)

終於,在昨天開始的第六年第三球季,我的球隊升上大聯盟了。(雖然是吊車尾,但也還是升上去了....)

只不過這一升上去,球員太弱的缺點馬上顯現,第一次碰到空間太充裕、球員不夠放....搞得我一開季就三連敗....

今天咧,照慣例又來抽球員。本來只是當做每天的例行公事,一點也沒打算補強球員(也沒什麼球員可補強就是了),但是就在這個時候,棒球之神顯靈了。

噹的一聲,第一張就是傳說版的球員卡,不是郭泰源,不是陳大豐,也不是野茂英雄。不管他。除非給我郭泰源,否則SEGA別想賺我的錢。

然後....

一張Cost 10的球員卡出來了....拉米瑞斯.... (哇..今天真好運..頭一回抽到Cost 10的球員..)

然後....

一張Cost 8的球員卡出來了....赤星憲廣....(不會吧.. 又一張.. 今天是怎樣..)

然後....

一張Cost 6的球員卡出來了....平野惠一....(蝦咪.. 今天會不會太賽了?? 平常抽到Cost 6就已經很滿足了,今天跟著Cost 10, Cost 8的後面出來,是在搞笑吧?)

十張抽完,大滿足!!

這下子,應該可以在大聯盟多撐兩個球季了吧....

2008年11月21日 星期五

遊戲中的腳本語言

這幾年,越來越覺得遊戲內的腳本語言(Script Language)是一個必要的東西。尤其是遊戲越做越大,越做越複雜,沒有個理想的腳本語言實在是沒辦法應付這樣的需求。

在以前那個一切都還很美好的時代,遊戲也很美好,也很簡單,我們不需要太複雜的腳本語言。簡單的一個文字檔,寫下NPC的ID,起點的位置,終點的位置,然後我們就可以控制NPC,讓他在場景裡從這邊晃到那邊,再從那邊晃回來。

沒有人會嫌這隻NPC很單調。

不過時代不同了。

大概在半年多一年以前,我們的遊戲有個需求,我們需要在人物技能的Tool tip上,顯示各種技能在攻擊與防禦上的影響,而這些影響會跟著人物屬性數值變化。遊戲企劃給了一些公式,大概都是把屬性數值拿來加減乘除算一算。

於是我們的程式設計師很認真的開始分析這些公式,希望可以找出規則,產生出個表格,然後用一個函式搞定所有技能影響的計算。

如果你也是這麼想,那就表示你對遊戲企劃的了解還不夠深。

這規則只有神仙才找得出來。

於是我們開始引入腳本語言。

過去我們曾經研究過lua。lua名氣不小,而且自從「魔獸世界」的UI系統與它結合並且利用它發展出一整套的Addons之後,名氣更大。不過,我們選擇的是Squirrel

Squirrel,松鼠。不知道作者為什麼要取這個名字,它的Script檔案,附檔名是nut,就是給松鼠吃的堅果。很幽默。

Squirrel的作者據說是Far Cry這個遊戲的程式設計師,他們在Far Cry這個遊戲中原本是使用lua,所以骨子裡的程式碼是跟lua很像的。

好,回到我們的技能Tool tip。

舉個例子,有一個攻擊技能,會根據人物的力量屬性計算傷害加成,公式是這樣:

傷害加成 = (力量數值) x (技能等級+5) / 100

遊戲程式可以很簡單的把這個公式寫進程式中。但是隔沒幾天,任性的遊戲企劃來改公式了,於是程式設計師把這一小段程式改寫。又過了幾天,覺得這個技能太強了,又改公式,程式設計師又動了一次刀....

然後是無窮迴圈。

把這些公式的計算,開放在腳本語言中做計算,讓企劃可以自行修改,我們就能夠擺脫任性企劃的糾纏。

程式中的寫法當然不同了。

上面的傷害加成公式,是寫在Script中,腳本語言提供一個函式給遊戲程式呼叫,傳回傷害加成計算的結果。

function GetDamageModify()
{
  return PlayerStr() * ( SkillLv() + 5 ) / 100;
}

PlayerStr(), SkillLv()是兩個由遊戲程式提供給腳本語言呼叫的函式,分別會傳回力量屬性數值以及技能等級。

這兩個函式是額外寫的,腳本語言沒有強大到可以直接呼叫遊戲程式中的函式。我們必須將提供給腳本語言呼叫的C/C++函式,用腳本語言所能理解的方式再包裝一次,腳本語言才能使用它們。

這個包裝的過程,lua跟Squirrel叫做Bind。包裝的方法很繁瑣,也不容易理解。所以,有人利用Template寫出一整套的Binding工具程式庫。lua有luabind, Squirrel有sqplus。

RegisterGlobal(SquirrelVM::GetVMPtr(),&GetPlayerStr,_T("PlayerStr"));
RegisterGlobal(SquirrelVM::GetVMPtr(),&GetSkillLevel,_T("SkillLv"));

這兩行是寫在C/C++遊戲程式中,利用sqplus工具,將 C/C++ 的 GetPlayerStr(), GetSkillLevel()兩個函式,登記給腳本語言呼叫,在腳本中的函式名稱分別是 PlayerStr() 與 SkillLv() 。

這樣套入之後,我們與遊戲企劃就開始分工了。程式設計師需要做的,就是定義與實做這些提供給腳本呼叫的函式,至於公式的內容,就讓遊戲企劃自己去處理。

============= 時間的分隔線 ===============

話說,幾個月之後,遊戲製作人決定要重新檢視一遍所有幾十個技能的設定,同時調整所有的計算公式....

程式設計師笑了....

2008年11月7日 星期五

我是傳奇的異塵餘生

fallout-wp8-800x600

200px-Poster_of_I_Am_Legend

有沒有?

兩張圖有同樣的味道喔?

一個人跟一隻狗,走在同樣是廢墟的道路上。背著一把步槍。

看到「異塵餘生3」的這張圖,第一個讓我想到的就是「我是傳奇」這部電影。電影是有點單調沉悶,反倒是電影海報讓我印象深刻。異塵餘生這款遊戲呢,說真的,我不是很喜歡這種帶著恐怖的遊戲,更何況遊戲的戰鬥進行方式還是類似FPS的戰鬥方式。我在FPS連線遊戲中只有一種角色,槍靶子。所以在異塵餘生這個遊戲裡,也是很慘。

我需要Cheat Code…

(圖片取自網站)

2008年11月5日 星期三

全世界最有權力的黑人

art.obama.historical.gi

(圖片取自CNN網站)

雖然嚴格說起來,歐巴馬是混血的非裔美國人第二代,但這依然是歷史性的一刻。不僅僅是美國歷史,也應該是世界歷史中的一筆。

最近在閱讀美國史(中文翻譯啦,英文閱讀能力還沒有這麼高..),我想可能很快就要改版了,要把歐巴馬的這一場歷史意義加進去才行。

曾經在電視上看過一次歐巴馬的演講,非常的撼動人心,尤其是一再強調的一句”Yes, we can.” 連在地球對面,跟這個選舉沒什麼關係的我,都可以感受到震撼。

說實話,無論是演講技巧還是聽眾情緒拿捏的功力,我們台灣的這些人物實在是差太遠了。

一兩百年前,黑人是隸屬於主人的「財產」,是在市場上買賣的「貨物」,現而今,雖然還沒就任,但已經產生了一個即將是全世界最有權力、最有影響力的黑人。

今天,見證到了一個歷史。