問題切入點
負責渲染的程式xyqsvc.exe是如何將渲染好的傳給客戶端程式my.exe使用的?
最開始時,我以為xyqsvc.exe將渲染好的存放在v3d_cache目錄下的檔案內,然後my.exe讀取這個檔案。但仔細一想,多個程式對同乙個檔案同時讀寫,還要同步,這幾乎是不可能的。而且使用filemon監視檔案讀寫,發現my.exe是根本不讀取這些檔案的。之後的分析顯示,v3d_cache下的v3d.hdr和v3d.dat只是xyqsvc.exe的快取檔案,是為了方便下次使用而儲存的。傳送的真正辦法是記憶體共享。(查詢記憶體共享時看到了雲風哥對這個技術的介紹,證明我的分析是基本正確的。出乎我的意料的是,xyqsvc.exe是多個客戶端共享的)
言歸正傳,既然渲染好的快取下來了,那麼必定是可以提取的。(其實不快取也可以在記憶體裡擷取,但涉及的問題就要複雜許多)
下面把我分析的 v3d.hdr 和 v3d.dat 的格式寫出來,全當是做個備忘吧。
v3d.hdr 的格式分析
檔案開頭是乙個
typedef struct v3dh_file_header;
跳轉到v3dh_file_header.offset後是
long v3dd_size; // v3d.dat 的大小(以位元組為單位)
long v3dh_index_size; // v3dh 索引表的大小(以位元組為單位)
接著是一片(就是陣列啦)
typedef struct v3dh_index;
v3dh_index.offset1 所指內容的格式
unsigned char size; // 這部分資料的大小,不包含這一位元組
unsigned long var1; // 未知
unsigned long var2; // 裝備調色盤資訊
unsigned long var3; // **調色盤編號
unsigned long var4; // 未知(實際是乙個鍊錶,目前見到的都是null)
unsigned long var5; // 指向名稱資訊,開頭1位元組總是0,想不明白
unsigned char ext[235]; // 最長為 235 ,具體數值根據 size 判斷
以上變數中 var2 var4 var5 均為實際相對 var1 的偏移量。
如果 var2 為零,那麼對應的調色盤為 ("mypal/weapon//%d.pal", var3)
如果 var2 不為零,那麼它指向如下結構:
typedef struct ;
這個結構的含義不是非常清楚,目前見到的例子中,count總是1,這裡只對這種情況說明。
如果 num2[0] 中的高3位不為零,即 (num2[0] & 0xe000) != 0 時,對應的調色盤為 ("mypal/equip//%d.pal", num2[0])
否則,對應的調色盤為 ("mypal/equip//%d_%d.pal", num2[0], num1)
v3dh_index.offset2 所指內容的格式
與 offset1 相比,這個就簡單的太多了。
long framecount;// 幀數
long dircount; // 方向數
long dat_offset_list[framecount*dircount]; // 每一幀資料在 v3d.dat 裡的位址
mypal.wdf 中 .pal 檔案的格式
unsigned long flag; // '.pal'
unsigned short palcount; // 調色盤顏色數(目前見到的都是256)
unsigned short sectioncount; // 分段數目(從邏輯上來說 sectioncount 要麼等於零,要麼大於等於二)
unsigned char sectionsize[sectioncount]; // 這個陣列之和等於 palcount
_argb palitems[palcount]; // 實際上,這裡的 alpha 都是錯的,遊戲也不使用
v3d.hdr 的分析至此結束。
內容稍後繼續,沒有廣告照樣精彩。。。
unity資源(移動版)提取 一點嘗試
最近在參與一款手遊,需要制定美術製作規範。因為拿不準主意,所以決定參考其他遊戲。工具 現有工具,github上有乙個工具叫disunity,可以用來提取部分資源 模型可以提取成obj格式,但是不會生成材質檔案 貼圖可以提取成tga 未壓縮 ktx 壓縮 ktx格式可以用etcpack轉換成我們常用的...
unity資源(移動版)提取 一點嘗試
最近在參與一款手遊,需要制定美術製作規範。因為拿不準主意,所以決定參考其他遊戲。工具 現有工具,github上有乙個工具叫disunity,可以用來提取部分資源 模型可以提取成obj格式,但是不會生成材質檔案 貼圖可以提取成tga 未壓縮 ktx 壓縮 ktx格式可以用etcpack轉換成我們常用的...
那一場愛的夢幻
不知何時,愛意將我的心點燃,我陶醉其間。如灼灼綻開的鮮花美麗鮮豔,情如海,愛如潮。只想為你的心靈送去一絲溫暖。看到你整天愁眉不展,想讓歡笑和快樂和你相伴。彷彿,那是乙個遙遠的夢,只能遠遠的看著你。只希望在你寂寞的時候有我的身影陪伴。那日,七色彩霞折射在幽靜的小路上,為小路增添了一絲溫暖。我邁著悠閒的...