2011年8月18日 星期四

Ogre3D v1.7 與 OpenGL ES 1.1 (2)

最近因為升級了其它的 ThirdParty 套件的版本所以 Ogre 也必須要 Rebuild, 只是 OpenGL ES 忘了當初怎麼 Build 因此又花了一些時間研究, 順便做一下筆記, 免得下次要 Rebuild Ogre 時又忘了.

Ogre 1.7.x 只支援 OpenGL ES 1.1, 所以想使用 OpenGL ES 2.0 的話則必須使用 Ogre 1.8, Ogre 1.8 官方目前還在 Debug 中, 所以只好先使用 Ogre 1.7.x + OpenGL ES 1.1 的組合, 以下將說明方法.

1. 至 PowerVR 的網站下載 OpenGL ES SDK, 要先加入會員.

2. 在 Khronos OpenGL ES 1.1 SDKs 中選擇 PC Emulation Windows 7/Vista/XP - OpenGL ES 1.1, 如果方便的話, 也可以將其它平台及版本的套件全部下載, 還有工具及說明文件也一併下載.

3. 安裝 OpenGL ES SDK, 等待安裝完成後就可以進行下一步.

4. 在其它地方中先建立一個 Dependencies 目錄, 並在此目錄下建立三個子目錄

Dependencies\Bin
Dependencies\include
Dependencies\lib

5. 打開 SDK 安裝目錄, 然後切換目錄至 Imagination Technologies\POWERVR SDK\OGLES_WINDOWS_X86EMULATION_2.08.28.0634\Builds\OGLES

將 Include 目錄下所有的檔案複製到 Dependencies\include
將 WindowsX86\Lib 目錄下所有的 .lib 檔複製到 Dependencies\lib
將 WindowsX86\Lib 目錄下所有的 .dll 檔複製到 Dependencies\bin

複製完後應該會有如下列的檔案

Dependencies\Bin
Dependencies\Bin\Debug
Dependencies\Bin\Debug\libEGL.dll
Dependencies\Bin\Debug\libgles_cm.dll
Dependencies\Bin\Release
Dependencies\Bin\Release\libEGL.dll
Dependencies\Bin\Release\libgles_cm.dll

Dependencies\include
Dependencies\include\EGL
Dependencies\include\EGL\egl.h
Dependencies\include\EGL\eglext.h
Dependencies\include\EGL\eglplatform.h
Dependencies\include\GLES
Dependencies\include\GLES\egl.h
Dependencies\include\GLES\gl.h
Dependencies\include\GLES\glext.h
Dependencies\include\GLES\glplatform.h
Dependencies\include\KHR
Dependencies\include\KHR\khrplatform.h

Dependencies\lib
Dependencies\lib\Debug
Dependencies\lib\Debug\libEGL.lib
Dependencies\lib\Debug\libgles_cm.lib
Dependencies\lib\Release
Dependencies\lib\Release\libEGL.lib
Dependencies\lib\Release\libgles_cm.lib

6. 將 Dependencies 複蓋到 Ogre 的 Dependencies 目錄

7. 編譯的時候會有 Error, 修改 Code 方法如下,
在 GLESTextureBuffer::GLESTextureBuffer 中, 將 pow(2, level) 改成 (int)pow(2.0f, level)

2011年8月11日 星期四

[筆記] 第三方程式庫 Build 方式

可能年紀大了所以有點失智, 特此筆記一下幾個比較複雜的第三方程式庫 Build 方式, 不定時更新.

========================================
BOOST

1. bootstrap.bat

2. 設定

有 STLport
a. boost_1_46_1\tools\build\v2\user-config.jam
修改 using msvc : 9.0 ; (# 號要拿掉)

b. bjam --toolset=msvc --build-type=complete stage

無 STLPort
a. boost_1_46_1\tools\build\v2\user-config.jam
修改 using msvc : 9.0 ; (# 號要拿掉)

b. bjam --toolset=msvc

========================================
JPEG

VS2008
1. nmake /f makefile.vc setup-vc6

2. Debug: nmake /f makefile.vc
    Release : nmake /f makefile.vc nodebug=1

VS2010
1. nmake /f makefile.vc setup-vc10

2. Debug: nmake /f makefile.vc
    Release : nmake /f makefile.vc nodebug=1

========================================
wxWidgets

D:\ThirdPartyBuild\wxWidgets-2.9.1\build\msw
nmake -f makefile.vc
nmake -f makefile.vc BUILD=release
nmake -f makefile.vc UNICODE=0
nmake -f makefile.vc UNICODE=0 BUILD=release

copy .\wxWidgets\Include\msvc\wx\setup.h .\wxWidgets\Include\wx\setup.h

2011年8月2日 星期二

原始碼排版工具 - Artistic Style

※ 今天上去看了一下發現有更新, 下載後順便把幾年寫的教學給 PO 上來, 也順手寫一下介紹.
※ 新版因為格式有變更, 所以更新參數.

Artistic Style 是什麼? Artistic Style 是一套 OpenSource 的原始碼排版工具, 它會依照你所設定的格式參數將你的原始碼做好排版的工作, 讓你的程式碼看起來整齊劃一, 當然, 如果你的程式碼亂的太誇張還是必須自行手動才行.

Artistic Style 的格式說明在官網的說明中寫的很清楚, 若很懶的看的話也可以使用我的格式來使用, 尤於 Artistic Style 是屬於命令列的工具, 所以在 Visual Studio 中想使用它的話必須透過一些方法來達成, 方法及我使用的格式如下:


1. 從官網下載需要的版本, 並解開壓縮檔放置在某個目錄下.

2. 開啟 Visual Studio 裡的 "外部工具"

3. 加入一個新的, 並如下圖所示設定, 參數請注意大小寫 (或將下方剪下然後貼上)
標題:Artistic Style 在 Visual Studio 中的按鈕名稱, 可以取 AStyle 就好.
命令:指向 Artistic Style 的執行檔.
引數:即格式, 我使用的格式如下, $(ItemFileName)$(ItemExt) 表示目前作用的完整檔名
(新版本) --style=ansi -T4 -b -S -K -w -Y -M -m -p -H -y -c -E -n $(ItemFileName)$(ItemExt)
初始目錄:這個設定成目前作用的檔案目錄 $(ItemDir)

4. 先在一般的工具列上按下滑鼠右鍵, 然後選則自訂

5. 當自訂的視窗出現後, 在開啟工具選單, 將外部命令N (N 的順序如步驟 2 所示, 請自行由上往下數一數) 拖曳至其它工具列即可然後離開自訂視窗後, 外部命令N 的按鈕就會變成 AStyle 按鈕.


6. 開啟任意檔案 (.cpp .h), 按下工具列上 AStyle的按鈕, 程式碼即會依照我們指定的參數排版.


2011年7月18日 星期一

MMORPG.中的普通攻擊.失敗的例子

不久前玩了一套 MMORPG, 剛開始玩的時候照著提示過任務, 因為怪物數量少還不覺得有點怪異, 然後玩了一會兒後發覺, 咦? 用技能打了那麼多怪 MP 怎麼沒有減少? 原來一直都是使用消費 0MP 的技能打怪, 然後想把普通攻擊 (以下簡稱普攻) 給拉到快捷列上來, 可是在 UI 裡找了很久都找不到, 就覺得很奇怪怎麼沒有普攻, 是不是快捷鍵忘了放上去, 經過詢問後得知原來不是, 得到的回答是 “有一招消費 0MP 的技能就是普攻”, 瞬時之間……無語了.

好的, 這套遊戲沒有普攻沒關係, 算是它的一個特色, 可是再玩了一會兒後感覺並不是這麼一回事, 這遊戲的打怪的步調異常奇怪, 如果今天我玩的是法系職業或許會感覺不出來, 不過我玩的卻是肉博系的職業, 這感覺就非常的明顯, 後來也有玩了一隻牧師職業, 還是覺得打怪的感覺就是不太對, 所以在戰鬥上就花了時間去分析它, 造成打怪的步調異常奇怪有很多項, 不過本篇的重點就先著重在普攻.

一般的遊戲的普攻都是以手持的武器做揮動攻擊, 如果沒有裝備武器的話則是以空拳的方式攻擊, 不過這遊戲的普攻是使用消費 0MP 的技能, 是不是使用武器直接敲打砍殺怪物不是這遊戲的普攻怪異的重點, 重點是普攻的時間問題.

這遊戲的普攻冷卻時間是 2秒鐘, 從出招, 播放特效, 擊中敵人後讓敵人受傷需要花費約 1.50秒, 接著收招約 0.50 秒, 然後你才可以再出下一招, 也就是說你想讓敵人受傷除了有瞬發技能之外, 最短的普攻時間也要 1.50 秒, 其實真正的普攻不是只有 “消費 0MP” 這樣的意義而已, 而是能夠在技能冷卻時間裡做出額外的攻擊, 甚至在某些時刻還有補刀的效果, 但是在這遊戲中完全不是這麼一回事.

一般的普攻都是設計少於 1 秒之內就必須完成, 從出招, 擊中, 收招動作都必須在這個時間內完成, 然後就可以再出下一招普攻或是其它技能, 有些遊戲普攻的冷卻時間會稍微再拉長一點點點, 不過擊中敵人的時間仍然保持普攻應該有的流暢感, 也就是說擊中敵人的時間點絕對不會超過 1秒, 甚至在 0.x 秒內就必須擊中敵人, 除此之外, 貼心一點的遊戲在某些設計上是當你發動技能攻擊後, 普攻即會自動發動, 這普攻會在技能的空擋時間自動使用 (如果玩家沒有按其它攻擊技能的話), 玩家不需要一直猛按著普攻, 只要專注在技能的配招上即可.

這個時間點的問題很大, 當怪物明明只剩一點點血的時候, 玩家卻必須再使用 1.50 秒的普攻來打擊敵人才能讓敵人死亡, 不僅如此, 這 2秒冷卻時間的普攻和其它因素造成了遊戲的戰鬥節奏就是慢慢慢, 一點都沒有戰鬥應該有的爽快感, 更不用提其它戰鬥上的設計缺失, 從點怪, 鍵盤按鍵, 技能時間, 技能種類…等等全部都是問題, 整個遊戲玩起來的感覺就是拖泥帶水的不順暢,

這套 MMORPG如果我有參與產品檢討會的話, 我個人大概就可以列出一大張的產品改進魚骨圖來, 因為不僅在普攻上有問題, 整個戰鬥都是有問題, 哦~不只, 是整個遊戲的設計都有問題, 這遊戲一點都不像是有製作 MMORPG 經驗的公司所做出來的產品, 這實著是讓我相當的意外, MMORPG 製作經驗豐富的公司怎麼會做出這樣的一套產品來.

2011年3月6日 星期日

絕地-眾神之詛咒-2.研發瓶頸及突破

這兩篇絕地-眾神之詛咒的文章 2008/11 在 ChinaAVG 所發表的回憶錄, 當初花了很多時間寫的, 現在把文章貼回自己的 Blog 灌水, 主要是想用 Google 的 Blog 來備份文章.
--------------------------------------------------------------------------------------


本篇會講到在 絕地-眾神之詛咒 研發途中所遇到的難題以及技術上所發生的問題, 並且想辦法去解決它, 另外還會說明當時使用的一些工具及程式技巧, 可能會很偏向程式方面.

這些技術上的問題和現在來比似乎有點跟不上時代, 不過就在那個時期裡卻也是解決問題的方法, 若要以現在的技術再來處理相同的問題則會顯得相當容易, 無奈當時網路不發達, 製作遊戲的一些 Know How 也很缺乏, 因此很多東西都是慢慢摸索而來, 現在看了也許會為之一笑, 不過在當時可說是費盡所有的心思才有的成果.

先說說絕地所使用的程式語言吧, 最早開始全部都是使用組合語言, 因為我是學組合語言出身的, 第一套(也是前一套)遊戲也是全部使用組合語言撰寫; 絕地在後來才改用 Borland C 混合組合語言 (那時候才開始學習 C 語言), 不過因為 EMS 記憶體存取太過麻煩, 最後才又改用那時的當紅炸子雞 Watcom C (DOS4GW真是好物!!), 使用 Watcom C 後因為他的最化佳已經非常好了, 所以只有少部份的地方才要繼續使用組合語言, 比如繪圖相關, 與硬體溝通, 解壓縮...等等.

每個遊戲在製作時都會為遊戲量身訂做許多的工具, 絕地當然也不例外, 初期每個工具都是各自獨立, 一直到快接近中期才將所有的工具整合在一起. 現在看起來是不怎麼樣, 不過在 DOS 時代裡一款工具所有的東西都要自己 DIY 才行, 很麻煩的, 和現在 Windows 的環境真的不能比.



(圖: 整合後的工具主選單)


抓圖工具 :


絕地中所有的圖形都是經過抓圖工具抓下後轉檔過, 因為美術給的圖都是一大張, 所以就要把他們分別抓成一小張, 以上圖為例就是一個小女孩的部份動作圖.





這個抓圖有一個方便的功能, 以上圖為例, 要抓小女孩 20號的圖形時, 只要用滑鼠拖拉一個大概的矩形之後, 工具就會過濾透明色, 然後把矩形一直縮小, 一直縮到有抓到非透明色為止, 然後該框框就是圖形真正存檔的大小, 如此一來就不必把眼睛貼在螢幕前一個點一個點慢慢的去對準. 上圖小女孩頭頂上的號碼就是圖形要存檔時的流水號. 透明色可依不同的圖設定, 有吸管可以直接在底圖上吸取顏色, 不用在色盤裡找.


動作編輯器 :
當角色的圖抓完後, 就把該角色的所有的圖形串成一個檔, 然後就會依這個檔去編輯該角色的動作, 而流水號就是識別該圖形之用, 本來是有打算做個串檔的圖形用流灠的方式選擇, 因為時間因素就沒加入.

動作檔會存入一些播放角色應該要有的資訊, 如圖形代號(流水號), 座標...等等,
每個角色都只有一個串好的圖檔, 動作檔則有很多個, 不同的動作檔則有各自的檔案, 如走路, 說話...等等.

如下圖, 就是編輯一個小女孩的動作連續圖, 其中畫面中央的十字線是定位點, 這定位點也就是在遊戲中角色的中心點, 所有角色的圖形都是以這個中心點去做秀圖的偏移; 在工具中, 這定位點可以隨意調整位置以方便編輯.







絕地做完後接著要做下一個案子, 下圖就是新案子的動作編輯器, 檔案格式延續絕地的使用, 不過畫面由 320x200 提升為 640x480, 所以就順便把工具全部改寫.






場景編輯器 :
當絕地做完後我才想到, 似乎忘了寫場景編輯器, 所以絕地是沒有場景編輯器的.....每次想到這件事都會很...囧...., 所以場景上的前景座標都是先在抓圖工具上記下座標, 然後寫死在程式裡的, 就連事件觸發座標也是, 我真的覺得我當時很呆, 怎麼會漏了這工具, 然後居然也沒想到要做...

---- 我 --- 是 --- 分 --- 隔 --- 線 ---

還有一些其它的工作, 如批次轉檔, 串檔...等等, 不過因為沒圖形化所以就不多做介紹, 下面開始就來說明一下在絕地中所使用到的各種技術, 以及當時碰到的一些難題. 而所有的問題都有一個共同點, 就是程式的效能問題, 要讓遊戲能夠跑的順暢, 畫面的禎數 (Frames Per Second) 要有一定的水準才行, 因為 286 CPU真的不快, 所以每個 CPU指令的時間都要能省則省.


前景與背景 :
第一個面臨到的就是前景與前景之間、前景與角色之間的秀圖順序關係, 因為當時沒有場景編輯器 (腦殘...), 再加上美術給的前景圖很狀觀, 所以有花了一點時間解決這問題, 最後是用圖形的最底部 Y 座標做排序來決定秀圖的優先順序 (即圖層).





















0號色壓縮 :
後來因為場景越來越複雜, 前景也越來越多, 因此畫面的禎數有些降低, 覺得這樣不行要想辦法解決才行; 巧的是當時因為興趣關係所以就有在研究 3D 繪圖 (純軟體 3D, 那時候還沒有 3D 加速卡), 就在看到三角形的填充與紋理貼圖的時候, 我的頭頂上忽然亮起了一顆電燈泡!!

兩條任意夾角的直線所形成三角區塊, 可以使用水平填充法來達到快速填滿兩條線所產生的區塊, 2D 的前景也差不多如此, 就像三角形的某個角一樣透空, 如果用這水平填充法來填充有顏色的前景應該就會很快, 就這樣, 絕地的 0號色壓縮法就此誕生, 而且效果出奇的好, 也想盡辦法來讓資料達到最小化, 並且速度最大化;

這 0號色壓縮在絕地發售一年後也有在國外做遊戲的書籍上看到類似的技巧, 也許絕地不算是首創, 但也至少算是跟得上時代吧. 呵~

這技巧為效能帶來了突飛猛進的提升, 所以那時候就和美術說前景不用切的太細, 效能的問題我已解決, 前景可以不用切割的那麼辛苦...等等, 結果...美術的前景就越畫越多, 而且越來越大塊, 其中有個場景最誇張, 實在是太難忘了..., 如下圖.










說真的, 當時看到這樣的圖我都傻掉了, 不過這不能怪美術,  因為沒有企劃規劃, 所以絕地的場景完全是由美術 Free Style 創作, 背景 (其實可以再切小張一點) + 2 大前景 + 一小前景 + 天空 + 流動的雲....., 0號色壓縮就算再強, 這樣的玩法也受不了, 所以這場景在有 0號色壓縮的情況下還是會有點遲頓, 最後的結果是, 0號色壓縮秀圖的程式碼全部改用組合語言撰寫才解決了這問題.

為了讓0號色壓縮的效能更好, 0號色壓縮的秀圖還分了有裁剪與沒裁剪兩種.


文字的編碼 :
前一篇提到絕地要打國際市場, 所以在文字上必須要能夠符合各國不同語言的需求. 那時候 Unicode 的技術還並不成熟, 所以不同的國家語言就必須要使用專屬的編碼方式, 再加上每種語言的字型大小, 斷行方式等等都不一樣, 而且文字與場景相疊時, 為了能看得清楚因此還必須描邊, 光是描邊一個文字就要再多畫四次, 然後還有文字對位, 對齊畫面邊緣...等等, 如此一來光是畫文字就會耗費不少的效能, 而且可能還要依不同的語言做調整, 經過深思熟慮之後, 最後決定所有的文字都使用圖形的方式呈現.

為此還寫了一個工具, 就是將文字檔的文字, 依不同的編碼將文字轉換成圖形, 並且可以依需求做不同的控制, 如大小, 描邊等等, 然後再使用抓圖工具抓取成 0號色壓縮的圖形.





起初中英文版是使用抓圖工具方式將一句句文字使用手工的方式抓圖, 後來因為文字量很大, 就特地寫了一個專門自動抓圖的工具, 在轉換文字檔成圖形時, 一段文字就轉成一張圖形, 然後再使用自動抓圖的工具自動抓取並轉檔, 這些工作後來使用批次檔的方式將程序自動化.


資料壓縮與檔案串連 :
在資料的壓縮上也費了一些工夫, 因為絕地的場景, 過場動畫, 文字等等都是圖形, 而且因為當時軟碟版還是主要的市場之一, 另一方面也是為了要縮減讀取硬碟資料的時間, 所以挑選了一個解壓速度快且壓縮率也還不錯的壓縮演算法 (LZSS 演算法), 並且將解壓縮的核心使用組合語言全部改寫, 讓這即時解壓縮的效率更加的好.

另外, 為了有效管理檔案, 也避免開啟檔案過多及過度頻繁因而造成效能上的降低, 還特別寫了一個串檔程式, 將所有的檔案依照需要的分類串連成幾個檔, 不過因為圖形本身就已經有壓縮過, 因此在串連檔案時就不需要另外再壓縮.


路徑搜尋與景深 :
冒險遊戲另一個重要的技術就是路徑搜尋, 當時並沒有所謂的 A* 演算法, 而且市面上有關人工智慧的書籍都過於理論化, 所以路徑搜尋只好靠自己, 當時為了這個也是花了一點時間才解決不會被卡住的路徑搜尋, 使用的方式是障礙法 + 遞迴的方式, 應該是有點類似迷宮鼠的那種方式吧, 不過因為效能問題有費了一些苦心, 如逆向搜尋...等等.

光有路徑搜尋還不夠, 因為絕地的場景是有景深的, 因此人物走到深處時必須要縮小, 為此還寫了一個 0號色壓縮的無段放大縮小功能.





如上圖, 因為絕地沒有場景編輯器, 所以絕地的場景可行走路線是使用圖形的方式來表示. 一張是場景圖, 另一張則是路徑圖; 這路徑圖包含了很多資訊, 除了表示可行走的區域之外, 還包括了滑鼠游標移到畫面邊緣或某個地方時, 滑鼠游標就會變成方向指標或是禁止通行的指標; 另外可行走區域的顏色也表示不同的意義, 比如人物在遠景的縮小比例, 在這個場景路徑圖中還有一種特別的資訊, 當人物走當陽光下時 (路徑圖藍色系區域), 人物還會變亮, 也就是光源及陰影的資訊, 不過有這種光影資訊的場景並不多.






光有這樣還是不夠, 以上圖為例, 這樣的路徑搜尋並不完美, 因為景深所以人物會縮小, 所以當人物變小時, 如果人物走路的步伐 (座標偏移量)沒有隨著比例縮小的話, 人物在畫面上就會呈現劇大的偏移或跳動現象, 因此在路徑搜尋的演算法裡還必須依照現在的座標去找尋路徑的縮放比例, 然後依著比例去縮減移動單位,並且計算下一個路徑的位置;

上面這花園是在絕地中唯一有可能會出現路徑搜尋缺陷的場景, 因為在水池轉角處 (四個角落)的空間不夠, 步伐很不容易踏過去, 因此有可能會造成人物在原地不動, 演算法一修再修也沒辦法, 這也是我唯一沒辦法解決的場景; 這場景當然不是最糟的路徑場景, 某些場景的路徑可以用『細』來形容, 解決方法就是在可以接受的範圍下把路徑加粗.

這個路徑與景深的演算法現在已有更好的方式來解決, 只是當時做遊戲的資訊太稀少, 因此能想到的也只有這個方法而已.

順便一提, 所有的路徑圖都是我自己畫的, 因為只有我知道哪些顏色代表著什麼意義, 我當然是有想過請美術畫, 不過美術的工作量已經很大了, 再加上絕地的美術實在是太 Free Style, 我會怕....


數學與特效 :
絕地裡某些特效用到了數學, 比如說某些場景的畫面扭曲特效是使用三角函數, 還有旋轉...等等, 那些都是即時演算的.

其中最特別的特效應該算是溶合效果 (Dissolve), 所謂的溶合效果就是兩張圖形重疊, 一張圖慢慢的出現, 另一張圖慢慢的消失, 兩張圖還會互相的重疊, 並且還可以同時看見兩張圖以半透明的效果相疊在一起, 這效果以現在的 3D技術可以輕易的實現, 就算是 2D也好, 在 high color(多彩) 或 true color(全彩) 模式下也可以輕易的實現, 因為頂多是把兩個點的 RGB 值套個公式算出一個新的  RGB 值丟進記憶體而已.

可是這樣的效果在 256色的色盤裡就不是那麼容易了 (把其它顏色扣除實際上還不到 256色), 因為 256色色盤是固定的, 所以顏色不是說變就變的, 否則畫面其它的圖形的顏色就會亂掉. RGB 值的範圍是 0~ 255, 所以一共是 256 x 256 x 256 = 1677216 色的變化, 就算以傳統的抖色技術方式來做也不好看, 而且效能又差, 不要忘了, 那時候的 CPU 還很慢.

這個效果本來是另一位程式同事在寫他的案子時所實作出來的, 效果是不錯, 但是效能實在是太差了, 宛如放幻燈片一樣; 不過這效果很炫 (以當時來說), 所以那時我也想把這效果給做進來, 有請教他技術原理, 不過實在是太複雜了, 也太理論化.

那時因為美術同事的關係, 所以我很喜歡和同事看看市面上美術作品的畫冊, 或是美術的相關書籍, 在一個偶然下翻到一頁有關於色彩學理論, 那一頁還有一個色空間的圖形, 燈燈!! 我頭頂的電燈泡又亮了起來!!

沒錯, RGB 若使用三維來表示色空間的話, 就正好形成一個正立方體, 而 256 色就正好散落於這正立方體的各個地方, 因此當你要取得任何一個顏色時只要去尋找最接近 256 色的其中一個顏色即可.

最佳的演算法當然不是即時的去算出哪個 RGB 最接近 256色中的哪一個, 而是使用程式預先算好並建立一個大的表格 (Table), 當 RGB 為多少時, 該表格的欄位值就是 256 色中的某個索引值, 但是這立方體太大,  256 x 256 x 256 = 1677216, 當時 DOS 640k 的記憶體 (當時 1M 的記憶體已普及, 現在是 1G 很普及...) 根本不夠放這個表格, 後來想到把色空間壓縮就好了, 經過多次的試驗之後, 終於找到一個理想值, 就是64 x 64 x 64 = 262144, 顏色的表現不錯, 記憶體也很省, 不過因為壓了 1 / 4, 所以在做溶合時, 兩張圖所算出來的 RGB 最後值就要除以 4, 這樣才能正確的對應到正確的表格中.

這效果被用在很多地方, 如人物的半透明, 人物的光影, 場景煙塵的半透明, 飛翔動畫的溶合效果 (用DosBox 模擬玩時效果會有點不好, 這幕會有點延遲)....等等, 最早的版本在皇宮的地板上及某些場景的水裡都還有用半透明做人物倒影效果, 不過後來因為與前景遮罩關係有點突兀或是不搭調所以就拿掉這效果.


滑鼠游標 :
最早以前的滑鼠游標是使用軟體游標, 所以滑鼠有點不順暢, 那時玩了很多國產遊戲甚至外國遊戲都有這現象, 不過在凱蘭迪亞傳奇裡滑鼠游標卻出奇的順暢, 後來才知道他們使用了硬體滑鼠游標的技術, 找了很多資料後也終於解決這個問題, 不過還是有個小問題無法解決, 所以在遊戲一開始才會有這個畫面提示 (後來想想, 這問題應該很容易解決, 只是當時沒想到)



(圖: 上圖的紅色字 『系統偵測中...請不要移動滑鼠』.....現在看了都會想笑....呵~)


音樂音效 :
音樂音效播放與驅動程式最初也找了很多方案, 不過都不是很好, 後來看到很多外國遊戲都使用一套叫 Miles Sound System, 因此公司才買了這套系統, 並且也用在其它專案中. 這套很好用, 一直到現在都還有人使用, 並且還跨不同的平台. 當時這套系統還支援了我的 GRAVIS ULTRASound  Max (開心).


最後, 再補上一些當初的漏網之圖, 因為一些關係並沒有做進遊戲中.



(圖 : 上面兩張圖是初期版本的開場圖形之一, 後來使用靜態 3D 圖形取代)


P.S. 如果你有玩過絕地, 你有沒有發現 絕地-眾神之詛咒 是使用倒敘法在說故事呢?




(圖 : 上面兩張圖是初期主角進入絕地的最初場景, 由傳送門進入水裡以倒影的方式在水中出現, 水上沒有實體, 後來取消了)


(圖 : 這是當初要做溶合倒影效果的場景之一, 不過因為美術沒有切割桌子當前景, 所以倒影會在桌上, 因此作罷, 這只是取消特效的其中一個原因)
.

2011年3月5日 星期六

絕地-眾神之詛咒-1.研發過程回憶錄

這兩篇絕地-眾神之詛咒的文章 2008/11 在 ChinaAVG 所發表的回憶錄, 當初花了很多時間寫的, 現在把文章貼回自己的 Blog 灌水, 主要是想用 Google 的 Blog 來備份文章.
------------------------------------------------------------------------------------------------------

由於事情已過了十多年之久, 所以只能憑一些記憶寫下整個研發過程, 能寫多少就算多少吧, 內文也許會有很多 "當時" "那時候" 之類的用語, 用意是來比較當時與現在因時空與環境的不同, 所以在研發過程上也會有些許的差異.

本回憶錄將會分為兩篇文章, 第一篇主要著重在製作過程的描述, 讓大家知道 絕地-眾神之詛咒 從無到有的製作過程; 第二篇會較偏向技術面, 在研發過程中所遇到的一些難題及技術上的問題, 並且如何去克服它, 以及使用到的一些獨特技巧與技術.
--------------------------------------------------------------------






(遊戲標題選單畫面)

絕地-眾神之詛咒從 1993年開始研發, 費時一年十個月, 在整個製作期間裡臺灣也不乏有國產自製的美式冒險遊戲上市, 不過因為研發團隊對遊戲品質的要求相當高及嚴格, 每個部份及細節都希望做到最好; 而且整個研發的過程也不能說是完全的很順利, 因此發售日期一拖再拖, 但也終究是完成了, 最後終於在 1995年正式發售.

這是一家新公司, 整個團隊的人來自四面八方, 只有少數是剛出社會的社會人士, 其餘大都是半工半讀的大專或大學夜校學生, 包含我自己也是個半工半讀的學生; 那時候做遊戲的人真的是在為自己的興趣圓一個夢想, 每一個遊戲人都想要的夢想, 只是這個浪漫想法就現今的角度來看, 那時候還真是太不切實際了, 忽略了一家公司要生存下去最重要的就是要公司賺錢; 就這樣, 一群經驗不足或無經驗的人湊合著只為了圓一個夢想, 而公司老闆比我們更外行, 所以他也認為這月亮真的是圓的, 而且很圓很圓.


公司剛成立之初我們並沒有決定要做什麼樣類型的遊戲, 直到有一天忽然有人提了個案 "我們來做個美式冒險遊戲吧!", 那時候正逢美式冒險遊戲的黃金時期, 在台灣市面上已有很多不同的風格與玩法的作品, 而且也都很優秀, 比如說猴島小英雄 (Monkey Island), 迷霧之島 (Myst), 國王密使 (King's Quest), 幻想空間 (Leisure Suit Larry), 黑暗之蠱 (Dark Seed)...等等很多很多, 在絕地的研發期間也有一些突破性的冒險遊戲上市, 如第七訪客 (The 7th Guest), 第十一小時 (The 11th Hour0)...等等.


因為如此, 理所當然的我們也認為美式冒險遊戲市場是一片的光明璀燦, 甚至當時 Westwood 所研發的凱蘭迪亞傳奇一代 (The Legend of Kyrandia) 在台灣異軍突起而且相當的紅, 遊戲也非常的好玩也有中文化, 因此我們更深信美式冒險遊戲在台灣也可以賣的很好, 不過我們並不以此為滿足, 我們的野心更大, 我們要打入國際市場!


萬事起頭難, 更何況是從零開始, 整個遊戲從無到有的過程更是艱辛, 決定做美式冒險遊戲後的第一個問題就是 "我們要做個什麼樣的美式冒險遊戲?", 要創造一個屬於自己的遊戲風格並不容易, 最後我們決定以當時在台灣甚至全球紅的發紫的凱蘭迪亞傳奇(一代)做為我們的學習範本, 也就是說 "我們來做個像凱蘭迪亞傳奇一樣的美式冒險遊戲吧! 而且我們還要超越它!!"; 不過我們還算有點志氣一點, 我們並不打算抄的一模一樣, 也就是說我們不抄襲, 我們只模仿, 吸收它的優點, 改良它的缺點, 並且還溶入凱蘭迪亞傳奇所沒有的遊戲元素, 也加入屬於我們自己的創意;


其實絕地上市後被質疑為凱蘭迪亞傳奇Like 時我們並不引以為意, 因為事實上也是如此, 我們覺得遊戲好玩就好, 而且國外大公司也都模仿來模仿去的, 也不是只有我們而已, 又有何不可? 只要不是完全抄襲就好. (說到模仿, 沒有人可以比 Blizzard 更厲害的了, Blizzard 有哪一款遊戲不是從模仿別人開始的?)


當時我們並沒有企劃, 企劃人才出奇的缺, 也就是說, 絕地從一開始到結束都沒有專人專職的企劃, 很多事情都是大家互相討論及分擔, 不久後找來了一個就讀新聞系的學生來負責劇本的外包工作, 為了要入打國際市場, 因此也很明確的告知編劇我們要的是一個連外國人也能接受的題材, 當時我們也很明確的就指定凱蘭迪亞傳奇是一個標準的參考範本.


劇本並非一次定案, 期間還有經過多次的修改, 除了編劇本身自己不滿意之外, 我們也認為某些部份無法使用遊戲的方式來表現, 經過多次反覆的編修之後終於拍板定案. 要特別說明的是遊戲的劇本本身並沒有任何的宗教思想, 其用意只是用來強調世界的形成, 另一個原因就是為了要打入際國際市場, 所以才採用了一個大家比較都能接受的方式.


研發初期因為外包關係無法時常見面, 因此造成與編劇溝通不良, 編劇就此離開團隊, 劇本是有了, 不過只有基本的世界觀及一些重要性的人物及對白, 還有很多東西都還沒有, 如配角, 謎題...等等, 因此大家就開始集思廣益, 七嘴八舌的討論起遊戲所欠缺的內容, 這也造就了這款遊中最弱的一環的產生, 也就是某些的謎題是為了謎題而產生, 而不是因為劇情本身的需要而產生, 如果要說我對絕地唯一挑惕的地方應該就是指這一部份了. 不過, 當你看完這篇文章後再去重頭玩個一次, 然後稍為留意一下, 你就會發覺到某些謎題與謎題之間有一些巧妙性的串連及安排.


整個遊戲的企劃內容也是在邊做邊改下完成, 直到中後期才有一個完整的定案, 我們也參考了其它遊戲一個謎題有多重解法的製作方式, 目地就是希望可以增加謎題的靈活度, 可以為玩家帶來不同的樂趣. 另外, 在其它方面我們也花費了很多的心思與苦心, 我們希望讓玩家在遊戲中每個地方可以玩得很有趣, 很順手, 而不是在折磨玩家, 這些用心良苦的設計都會在後面一一提到, 大家也可以感受到研發一款美式冒險遊戲是有多麼的不容易.


在編劇動工之時, 其它人員也要開始準備前置工作, 就先從美術開始說起吧.


美術首先面臨到的就是畫面風格問題, 我們一致認為凱蘭迪亞傳奇的風格相當的好, 是個不錯的學習榜樣, 所以絕地本身內部的畫風會如此一致原因, 有一部分要歸功於因為我們有一個參考範本, 這也才不會造成你有你的風格, 我有我的 Style, 這是一個遊戲的大忌.


風格解決後再來就是調色盤的問題, 才試畫幾張圖美術就大喊調色盤顏色不夠用, 因為當時使用的解析度是 320x200 256, 只有 256 個顏色可以用, 和現在的 high color (高彩), true color(全彩) 根本不能比, 畫面要成像的東西這麼多, 尤其是場景那麼多, 256色要能夠讓所有的場景都能夠表現其不同的特色這的確是一個天大的難題, 因此為了那 256色可是傷透我的腦筋, 再加上 0 號色及色彩循環色盤所需要用的顏色, 算一算一下就又少了 17 個顏色.


於是我就把歪腦筋動到凱蘭迪亞傳奇上, 沒辦法, 經驗不足只好看看別人怎麼做, 抓了幾張圖之後發現 Westwood 真是不簡單, 真是太天才了, 除了 0 號色及色彩循環色盤外, 他還保留了 16色讓美術人員可以依不同的場景而更換不同的顏色, 如此一來我們的問題就解決了, 不過美術人員說 16色不夠, 因此我們可隨場景更動的調色盤比凱蘭迪亞傳奇還多, 如沒記錯應該有 32, 不過這也表示, Westwood 的美術比我們還強.


顏色不夠的問題解決了, 再來就是那些不會隨著場景變化的固定顏色色盤問題, 這些色盤該用些顏色? 該怎麼分配? 這可就傷透美術人員的腦袋了, 然後, 我們又把歪腦筋動到凱蘭迪亞傳奇上, 抓了很多圖, 一張接著一張抓, 越看越覺得不可思議, 越看也越覺得恐怖, Westwood 的美術真的是強到沒話說, 強到太可怕, 連我們的美術人員都很懷疑, 那些顏色的色調是真的用人工調出來的嗎? 因為有點寫實又有點卡通, 且色盤的分佈實在是太完美了, 該有的顏色都有, 不只美術人員, 連我也是越看越神奇, Westwood 的美術真的是可怕到一個境界.


美術有試著調出我們需要的色盤, 不過怎麼調都不滿意, 所以...我們商量了一下, 決定借用一下人家的色盤, 然後把某些不必要的給刪除, 並且空出隨場景變化所需要的色盤及色彩循環色盤, 所以大家會覺得絕地是凱蘭迪亞傳奇Like 這也是原因之一, 因為大部份的色調是一樣的.

(: 凱蘭迪亞傳奇)

(絕地-眾神之詛咒)


在後期, 因為測試而抓圖, 後來覺得色盤的順序和凱蘭迪亞傳奇實在是太接近了, 為了避免不必要的麻煩, 所以在圖形及色盤的轉檔過程中故意打亂色盤的順序, 至少不要讓別人一眼就能看出來這兩套遊戲的色盤是如此的相近.


(: 左為打亂前, 右為打亂後)

主角是一個冒險遊戲的靈魂, 也是命脈, 他代表著一個冒險遊戲的中心, 整個遊戲世界都是經由他牽動著; 主角也是玩家與遊戲世界中直接的互動與溝通途徑, 所以造型配色等等格外的重要.


主角的造型與配色也是經由多次的討論及修改, 並且經由大家的投票表決而成, 很多人認為主角和凱蘭迪亞傳奇有幾分神似, 尤其是主角身上的背心, 不過美術人員的解釋是, 因為主角是個旅行畫家, 所以身上穿的是一件旅行背心, 而那件旅行背心裡面有很多小口袋, 口袋裡面則放了很多與繪畫有關的工具 (後面會提到).

配角的部份就沒有經過大家的討論, 而是由各自負責的人員依照劇本自行設計造型等等, 這部份就不多提了, 因為我也不清楚.

(: 主角)


場景是讓玩家感受冒險遊戲最直接的一個視覺成像, 也是一個電腦螢幕上佔畫面最大面積的圖形, 由於當時大家經驗都不足, 也覺得繪製手稿太過於費時, 因此就沒有所謂手繪彩稿這種東西, 所有的場景都是美術看著劇本而自行發揮的.

美術直接在紙上隨意打個草搞, 把應該要有的重點畫出來, 然後直接就在電腦上繪製; 另外, 因為美術只自己做自己的部份, 沒有互相溝通, 因而導至部份的場景有些突兀, 甚至銜接不上因而重新修改, 不過這不能怪美術, 因為我們沒有企劃為我們整理劇本應該要有的場景, 分鏡..等等.

其中有一個場景在繪製過後還有經過影像處理軟體處理過, 如神殿外面的光暈就是由影像處理軟體加上去的.























整個遊戲除了遊戲部份片頭及片尾外, 所有全部的圖形都是由美術手持數位筆在繪圖版上, 使用 DP II 一個點一個點手繪而成, 冒險遊戲所耗的圖量是最大的, 他不像 RPG 地圖可以使用拼接而成, 因為冒險遊戲每個場景都有其不同的特色;而且每個人物的動作也不相同, 尤其是在絕地中所有的角色都是唯一的, 所以更沒有辦法像 RPG 一樣可以共用角色的圖形, 這個美術工程之浩大可真是累壞美術人員了, 更不用提還有之後的修改, 去背...等等的繁雜的工作 (後面還會談到技術性的問題).

物品、界面及選單, 也是玩家最直接也最常用的項目之一, 凱蘭迪亞傳奇的直覺性操作是傳統美式冒險遊戲的一大突破, 這點我們學了起來, 不過我們很不喜歡凱蘭迪亞傳奇(一代及二代)的物品欄設計方式, 一代物品欄不夠放, 所以只好丟在地上, 萬一要用到時還要千里遙遙的跑回去撿, 二代的物品欄也不好用, 不夠直覺, 因此我們決定改良這個缺點.


我們採用物品欄使用額外開啟的方式, 我記得最早的版本是在主界面下方有個專門開啟物品欄的圖示, 不過後來這個方法被我推翻了, 因為滑鼠右鍵沒有使用到, 所以建議使用滑鼠右鍵就可以開啟物品欄, 並且為了避免滑鼠在物品欄與場景之間繁的移來移去, 還為玩家設計了貼心的點哪裡就開在哪裡, 而不是使用開在固定位置的方式; 另外, 因為物品無法丟棄及丟在場景上, 所以物品欄容量上限的設計是無限的, 也避免了物品欄可能會不夠用的窘境.





(: 物品界面)


還有, 因為絕地的主界面不需要物品欄, 所以場景畫面的高度是比凱蘭迪亞傳奇還高的.

上面說到主角設定時有提到, 美術人員為主角的旅行背心裡面設計了許多小口袋, 這些口袋是用來放置旅行畫家所需要的一些與繪畫有關的工具, 而這些工具也就是整個遊戲的所有界面及選單, 這看似用心良苦的設計玩家應該沒發現到吧, 玩家只知道界面是與繪圖有關的工具, 並不知道這些東西是由主角身上的背心所拿出來的. 當初也有想到為主角多設計一個從背心拿東西出來的動作, 不過討論一下後覺得太繁瑣就被大家一致否決.


(: 系統界面)


(: 遊戲選項界面)


(: 讀取進度界面 )

片頭及片尾動畫是到後期才開始繪製, 絕地研發期間第七訪客 (The 7th Guest) 的出現讓我們所有人的眼睛為之一亮, 它的畫面是使用 3DS Prerender 的方式, 因此美術也決定所有的動畫也要使用 3DS 來繪製, 不過因為動畫量太大, 且當時 3DS 要求的硬體配備規格相當的高, 某些效果也不易使用 3D來呈現, 所以片頭動畫就變成有 3D 也有 2D 的情況, 不過大致上還可以接受, 畫面沒有衝突的很厲害, 而片尾動畫就是全程 3D Prerender 動畫, 那時候的 3DS 還沒有像現在的 3DS Max那麼強, 不過當時第七訪客所呈現的 3D 技術也不是我們能比得上的, 美術人員只是想突破做一些不太一樣的東西.


(: 手繪片頭動畫, 正式版本裡中央的小島被移除, 移除原因忘了, 而那個小島就是 '絕地')



(片尾 3D Prerender 動畫字是程式即時畫上去的當時 DOS 下還無法播放 AVI .)


為了讓絕地玩起來和凱蘭迪亞傳奇有些區別, 也順便突顯絕地和傳統美式冒險遊戲有所不同, 因此我們決定加入另一種類型冒險遊戲才有的謎題, 那就是 Puzzle Game (益智遊戲), 如迷霧之島 (Myst), 第七訪客 (The 7th Guest)...等等, 不過數量不多, 因為這不是這遊戲的重點, 只是為了要增添與傳統美式冒險遊戲些許不同的解謎樂趣, 我們當然也玩了很多這類型的遊戲, 並且參考他們怎麼做, 然後如何的表現在遊戲之中; 因為小遊戲有過場動畫, 且不是很復雜的動畫, 所以美術也決定所有的小遊戲的內容及動畫全部使用 3DS Prerender 來繪製.

小遊戲我記得有 5 個吧, 全部都是集思廣益而成, 大家出不同的點子, 但是必須要能符合遊戲劇情的需要, 提出來後再經由大家的互相討論及表決, 只是大家都只出點子及制定遊戲規則, 最後苦的人可是我了, 除了某些是由亂數佈局之外, 為了要讓玩家玩的有變化一點, 因此所有的小遊戲都有兩種以上的解法, , 大家可知道我那時可是煞費了多少的苦心...().

每個小遊戲都有個 Reset 按鈕, 這也是一個貼心的設計, 可以讓玩家在小遊戲中立刻重新再試一次, 而不用退回至主遊戲後再進入小遊戲, 這個一進一出的過程非常的厄長, 會有這樣的設計也是因為我們受夠了第七訪客 (The 7th Guest), 每次要再來一次都必須先退出小遊戲至主遊戲, 然候再觀看那厄長的動畫再次進入小遊戲中, 所以我們就決定不要犯了與別人相同的錯誤, 所以才會有了 Reset 這個按鈕.

其中有幾個小遊戲有固定兩個開場佈局, 而那個 Reset 按鈕的另一項功能, 就是可以讓玩家從兩種佈局中選擇自己想要的來挑戰, 最初的設計並不是這樣, 而是採用亂數的方式去挑選其中之一, 不過每次當我想重新挑戰, 然後都必須不停的按那個 Reset 按鈕切換成我想要的佈局時, 我就決定把這擾人的亂數設計給拿掉, 因為連設計者都會感到厭煩, 那就更不用提玩家也會有相同的感覺了.



(: 玩法很特別的一個小遊戲)

絕地也加入了傳統美式冒險遊戲少有的世界地圖概念, 讓玩家方便的穿梭之前去過的場景, 因為我們在玩凱蘭迪亞傳奇的時候, 大家也受夠了它在新舊場景間來來去去遙遠的路程, 這很耗費時間, 而且走多了就會覺得很厭煩也毫無新鮮感; 絕地在遊戲初期不太需要東奔西跑, 所以這項福利要到中期後才能享受得到, 並且這樣的設計也很符合遊戲劇情需要及物品的功能設計, 是一舉數得的好點子.

(: 世界地圖可以方便的往返以前去過的重要據點)

美式冒險遊戲少不了過場動畫, 舉凡謎題, 過場劇情等等都是, 由於早期的繪圖軟體沒有圖層 (Layer) 的概念, 因此為了讓人物或特效等等動畫能夠在畫面上正確的位置上演示出來, 美術人員都是直接在畫好的場景上繪製過場動畫, 然候再很辛苦的一張一張的去背, 光是這去背的過程就讓美術人員耗掉很多的時間, 去背好的動畫還要在周圍填上0號色, 這樣動畫才會有透空, 也才能與背景結合.








以上圖為例, 這泡泡是會飄動的, 從左邊飄到右邊, 所以泡泡的圖是一連串的, 總共 15 張圖. 要特別說明的是, 這泡泡只是最簡單的例子, 在絕地中還有很多構圖更複雜的場景, 去背的工夫更不是只有像泡泡這麼簡單而已,


這又是一連串的泡泡過場動畫, 必須把主角畫到泡泡裡去, 為了讓畫面生動一點, 所以主角還會有些動作, 泡泡也會有相對應的變化, 所以不是將主角剪下然後貼上到泡泡這麼單純; 因此光這泡泡與主角動畫就花了美術人員不少時間, 這還只是冰山一角的一個例子. 除此之外, 有很多場景的過場動畫還不只一個而已.

不過就以現在的工具再來製作同樣的東西應該可以省下很多時間, 畢竟以前的繪圖軟體並沒有圖層 (Layer) 的功能, 所以去背往往都很辛苦與費時, 有了圖層之後就等於省了這道功夫, 不但效果會比去背好, 工作效率也會提高不少, 當然, 美術人員的心情也會愉快不少, 因為去背對美術來說是項很枯燥乏味又單調無趣的工作.















因為去背工作實在是太繁瑣, 所以美術後來就想到了一個偷懶的方法, 只要是過場動畫的場景中沒有其它的動態物件 (例如兔子) 或背景動畫 (例如雲), 那麼過場動畫就不需要去背, 直接將動畫的區塊截取下來就好, 而且因為圖形都會經過程式壓縮過, 所以對軟碟版的容量也不會有太大的影響.

主角的死亡問題也是有經過討論, 最初大家討論的版本是讓主角不會死亡的, 因為在凱蘭迪亞傳奇中主角毫無預警的死亡讓我們有點反感, 若你沒有時常存檔的習慣, 一但主角死亡後你就必須再回到之前的進度再重新來一次; 不過為了增加一些難度, 所以絕地後來也加入了讓主角也會有死亡的設計, 並且也認為主角有各式各樣的死亡方式也蠻有趣的.

不過會讓主角死亡的地方並不多, 因為我們不想折磨玩家, 另一方面, 在絕地中還加入了一個貼心的設計, 絕地不像凱蘭迪亞傳奇是毫無預警的方式讓主角死亡, 我們會警告玩家, 沒記錯的話應該所有會發生死亡的事件都會有二次警告, 這警告可以從主角的對話中得知, 第一次警告, 第二次再警告, 第三次...可別說我們沒有提醒玩家喔.

絕地的音樂是外包給個人工作室製作, 由於凱蘭迪亞傳奇的音樂非常好聽及耐聽, 音樂的風格與畫面也搭配的很好, 所以當初我們就和外包指定我們要想的音樂風格是要像凱蘭迪亞傳奇一樣的; 我們邊玩邊給他聽幾首凱蘭迪亞傳奇場景的音樂後 (他不玩 Game的), 他就回去製作絕地的配樂, 過沒多久, 他送來了第一首 Sample 曲要我們聽聽看, 這 Sample 曲將決定絕地的配樂主旋律及風格, 之後所做的配樂都會依照這個型版去編寫, 所以這 Sample 曲特別重要, Sample 曲試聽的結果是大家都很滿意, 音樂的風格和我們的畫面也很搭.

這首 Sample 成了絕地的主題曲, 也是在所有的配樂中我最喜歡的一首. 絕地的音樂除了少部份幾首之外, 其餘的音樂都是被製作可循環播放型的. 這首主題曲被安排在水源封印解開後, 走出去的那的那片森林就可以聽得到.

音效部份起初我們是找市面上 3C賣場所販售的音效庫光碟, 聽了很多張光碟之後並沒有找到合適的, 後來我們從美國買了一整套的專業級音效庫光碟, 這套音效庫被廣泛的使用在好萊塢的電影之中, 可想而之價錢也是不誹的; 絕地大部份的音效都是來至這套專業級的音效庫中, 不過某些音效還是找不到適合的, 尤其是像魔法這類的音效, 因此我們就請製作音樂的外包使用 MIDI 幫我們彈出我們需要的一些音效.

中文語音我們是租了一間錄音室, 然後請錄音室幫我們找專業的聲優來錄製中文語音, 一共找來了一男一女, 其中男的一人扮演四個角色; 錄製過程中我也見識到了專業聲優的本事, 聲音可以說變就變, 真的很厲害, 某些地方重覆錄了好幾次, 除了抓感覺之外, 也順便調整每個角色與聲音的協調性, 我沒記錯的話一共錄了一個多小時, 那錄音室的租金與聲優的費用也真的很不便宜.

程式部份偏向技術面較多, 所以就留在第二篇再來說明.

前面提了, 絕地是要打國際市場的, 因此當遊戲完成之時中文及英文版是同時完成的, 1.44吋軟碟版及 CD-ROM , 只有 CD-ROM 中文版才有片頭及片尾語音, 而且為了不浪費 CD的容量, 我還特地挑選了幾首好聽的音樂錄製成 Cd音軌, CD 塞的滿滿的; 英文版我記得有賣出去一些, 不過套數好像不多, 因為那時候絕地的畫面已跟不上美國市場, 且美式冒險遊戲正在退燒之中; 此外, 絕地還有芬蘭語版, 簽約的套數還蠻多的, 芬蘭的代理公司也很大手筆, 他們找人為絕地錄製全程語音, 因此芬蘭版的絕地是全程語音版, 為此程式還特地修改了些原始碼才得已實現全程語音的需求.

(: 遊戲標題畫面)

(: 中英文選單)

(: 中文遊戲標題)

(: 英文遊戲標題)


絕地的銷售量問題大家應該也很有興趣, 實際套數不清楚, 不過整體沒有賠, 不過只有小賺而已, 其實絕地在台灣賣的並不好, 因為美式冒險遊戲那時候退燒了, 所以大部份的收入都是來自英文及芬蘭語版; 我們所有的研發人員也有拿到小小的分紅獎金, 拿到獎金固然高興, 不過最高興的是好不容易做完了這一款遊戲, 因為所有的人都累壞了, 大家從來都不知道做一款美式冒險遊戲工程是如此的浩大.

絕地的整個研發過程以現在的眼光看來是非常粗糙的, 原因有很多, 所有人員對遊戲的製作經驗不足, 並且是第一次製作美式冒險遊戲, 遊戲製作的參考資料也是極為稀少, 也更不用說會有如何製作傳統美式冒險遊戲的資料可以參考, 當時網路也不發達, 要取得任何有關遊戲製作的資訊非常不易, 只能用土法煉鋼的方式慢慢摸索...等等, 很多很多.

以現在的經驗, 技術, 工具要來再製作像這樣的一款傳統美式冒險遊戲會比以前容易許多, 不過只是解決了技術上的問題, 龐大的圖形需求還是無法避免.

如果你要問我絕地有沒有如我們期望的超越凱蘭迪亞傳奇(一代), 我會告訴你-沒有, 因為 Westwood 實在是太強了, 不論是企劃, 程式, 美術, 音樂, 音效等等, 都不是我們可以輕易超越的, 畢竟 Westwood 是擁有堅強實力且經驗豐富的遊戲製作團隊, 而我們只是一群半工半讀毫無經驗的學生而已, 年輕嘛, 有夢最美, 畢竟我們也都盡了全力, 也很滿意作品最後的成果.

絕地-眾神之詛咒 也是我進入遊戲界以來到現在最滿意的作品.


(: 中文版外包裝紙盒封面及背面)

(: 左為芬蘭語版 CD 外盒, 右文中文版 CD外盒)

(: 上為中文版 CD, 下為芬蘭語版 CD)

(: 左為芬蘭語版 CD 外盒背面, 右文中文版 CD外盒背面)

(: 說明書的某一頁, 整本全彩印刷, 那時候全彩印刷並不便宜)

(: 我花很多時間寫的問題與排除Q&A, 一共寫了滿滿的四頁, 竭盡所能的將玩家有可能會遇到的問題都寫出來並給予排除障礙的方法,)

未完, 待續,



第二篇會較偏向技術面, 在研發過程中所遇到的一些難題及技術上的問題, 並且如何去克服它, 以及使用到的一些獨特技巧與技術.