追蹤
兔子也會的遊戲設計
關於部落格
一個推廣XNA與OGRE的園地,當然還有其他關於遊戲設計的主題,歡迎有興趣的同好交流指教
  • 104790

    累積人氣

  • 1

    今日人氣

    0

    追蹤人氣

淺談天龍八部Online資源提取

 
本來要了解一款遊戲的資源是使用何種格式不是這麼容易的事,尤其是自訂義的格式,需要靜態或是動態分析才能夠解出整體資料結構,但像天龍八部這種使用開源引擎的資源,就沒什麼秘密啦,不過是把資源整合在一個包裡,依序解出來就可以,算是非常初級的破解。

看了一下天龍八部裡面的Data檔,把各檔案分成sound.axp、model.axp、material.axp‧‧等,因為model有工具可以看,就從這個下手吧。.Mesh是Ogre的模型格式,所以我們隨便找一個mesh用16進位工具看看檔頭是什麼:




很明顯的前面帶了0010[MeshSerializer_v1.40]的標籤,把這個字串複製起來,再來開啟model.axp這個資源檔,把剛才的字串搜尋一下,果然很快就找到相同的標籤,錯不了,接下來的位元組當然就是mesh本身了:


假設他的mesh檔都是連續排放,那第一次發現的標籤到下一次發現的第二個標籤中間就是完整的一個mesh檔,大小也可由此知道,接下來程式應該就知道怎麼寫了吧,大概步驟如下:
readfile(model.axp); //讀取整個檔案
first_pointer=first_found_tag_position; //指向第一個找到的標籤
next_pointer=next_found_tag_position; //指向第二個找到的標籤
size=next_pointer-first_pointer; //兩者相減就可以獲得大小
write(temp.mesh, first_pointer, size); //將找到的區間寫出檔案


把解出來的模型用工具看看正不正確:

初步看來是沒什麼問題,為什麼沒有貼圖?這是當然的,因為還沒把material檔解開,不過聰明的你應該知道方法是大同小異,比較麻煩的是檔名的對應,由於解出來會是亂碼,還要做Big5轉換,這部分就讓讀者去挑戰,如果有時間的話也可以寫個完整的提取程式,這樣他會是你很好的ogre資源來源。


說到這裡又忍不住抱怨一下,沒想到這款遊戲代理到台灣,介面還是這麼的不友善,註冊非常麻煩不說(要手機認證),登入遊戲要輸入認證碼,建立個角色也要輸入認證碼, 這麼麻煩只會嚇跑我這種善良玩家,真的要crack你遊戲的人做這麼多有用嗎?現在天龍八部還不是外掛滿天飛?


最後要跟大家說聲抱歉,未來一個月有一段時間很難使用網路,所以新文章會難產,希望大家多多包涵。


 
相簿設定
標籤設定
相簿狀態