2013年9月9日 星期一

關於APP資料佈署的解決辦法

  在開發MMO的時候,這個幾乎是完全交給人工去管理…不過以之前的經驗,為了怕Load不到資料而造成問題(當機或顯示不正確…等),能不砍則不砍,結果往往導致沒有用的資料越來越多,進而導致資料過於肥大。

  在現在APP當道,維護資料的精簡變得非常重要(因為APP要小而美,且部份平台-Andorid對於資料量的大小有嚴格的限制),能否把這件事做自動化處理呢?筆者開發了一個佈署工具來完成這件事。

  這個佈署工具其實就是一個執行command line(system(...))的程式,那為何不用批次檔直接來處理呢?主要的原因是因為目前3D引擎是用Ogre,需要Run過Ogre的一些函式庫及Manager才會知道相關的Reference檔案,所以還是得程式化才行。
開發流程大致如下:


  1. 規劃檔案清單:這是佈署資料的起始點,這部份還是得人工來維護,其他的就可以了…
    比方:
    [Scene]
    NewScene
    [Actor]
    Ninja.xml
    Agent.xml
  2. 透過檔案Reference檔案的方式,來得知道要輸出那些檔案:
    比這Ninja.xml裡用到了什麼Mesh檔,再透過Mesh檔得知使用到什麼材質,再從材質檔得知使用到什麼Texture之類的。
  3. 由批次程式來Call這個佈署工具,並帶入清單資料檔的參數,來輸出所需的資料(比方佈署到一個Bin Folder之類的。
  4. 再來就是就Copy這個Bin Folder到Asset Folder(通常是APP包Package的路徑),就完成了。
PS:要特別注的事,把Load處理的部份都要資料化(最忌諱的就是寫死在程式裡…),所以規劃佈署資料的事情要在專案開發的初期就要先做,之後要改會很痛苦…

2 則留言:

  1. 不太懂"要特別注的事,把Load處理的部份都要資料化(最忌諱的就是寫死在程式裡…)"這裡的意思,請問是否用範例解釋一下呢?謝謝

    回覆刪除
  2. 比方在程式裡寫了一個叫做CCharaacter* pMainCharacter = CreateCharacter("Ninjia.xml"),用來處理建立一個主角來操作使用,這樣的寫法就是寫死在程式裡。

    回覆刪除