【心得】遊戲開發與備份(版本控制系統)

  這兩天我想了一下有關遊戲備份的一些事情,認真覺得應該要從一開始就做好備份。我想大部分的人都覺得備份就是把開發中的檔案定期複製打包,然後標示備份日期,看是要放到隨身硬碟或是上傳到雲端上,這樣就可以以備不時之需了。

 

  當然最基本的檔案備份就是這麼一回事了,也沒有什麼多高深的技巧,尤其現在又是網路發達和快速的時代,上傳個幾百MB的檔案也不用花太多時間,勤奮一點的話絕對能確保意外發生的時候有最近的檔案可以使用。

 

  回想到以前製作遊戲的情形,小時候不懂事也沒有什麼備份的觀念,大不了想到的時候直接複製資料夾到另一個資料夾。以前的電腦和軟體當機率很高,結果就在某一次莫名的意外下,整整暑假三天的進度就沒了(對小朋友來說是相當大量的進度)。小時候心靈不夠堅強又不想重作,那款遊戲從此不見天日(笑),以前甚至沒有把對話劇本文檔寫在別的檔案裡面,所以根本就是自殺行為XD。

 

  為了避免悲劇再度發生,備份是真的、真的、真的非常重要!

 

  不過嘛,說歸說,做起來又是另一件事情了。就算是每天都有大量進度產生,可是光想到打包後(通常是壓成壓縮檔)還要再上傳就很麻煩,存到隨身碟之類的地方又很佔空間。有時候備份也只有在壓縮檔上寫上日期,更不知道這個備份的版本到底內容進度是到哪裡……等種種問題產生。所以這也是我寫這篇文章的原因,這麼麻煩的事情總是要找一個比較輕鬆的解決方案,程式就是為了取代人工而誕生的嘛。

 

  軟體開發領域有一個所謂的「版本控制系統」,可以進行軟體的追蹤、備份、維護等,尤其是多人共同開發的時候更需要版本控制,以免誤刪、覆蓋、檔案毀損等意外發生。這東西也是一大學問,不過在這邊我就不贅述了,我的目的只有備份製作中的遊戲而已。雖然是專門做給軟體開發的使用,不過如果懂的話其實也可以拿來做各式文本或其他檔案的版本控制。

 

  然而說到版本控制,最有名的就屬 Git 了。他有許多第三方工具可以使用,也有圖形化工具可以避開各種輸入指令的惡夢。(不過對某些人來說,在命令提示字元(cmd)上面輸入指令似乎是一件樂事,雖然我也不排斥輸入指令,有時候也頗方便的,不過比起打字(還要記住一些指令名稱),直接用滑鼠點擊各式功能按鈕更深得我心呢。)

 

  那這個所謂的版本控制系統到底有什麼特色呢?以下簡單說明:

  • 通常會搭配一個遠端空間來進行備份
  • 隨時監控遠端和本機端檔案的差異(注意:非同步,只是告訴使用者目前兩端的檔案有哪幾個是不一樣的)
  • 進行差異檔案的上傳與下載,並且自動記錄這些動作(多人開發時可清楚知道誰做了更改)
  • 提供「分支」的功能,在不佔空間的情況下,保存各種版本的檔案
  • 也可以進行各種分支的合併,列出有衝突的地方幫助開發者修正
  • 強迫開發者進行備份時寫上每個更新內容

 

  因為我只有一個人處理程式的部分,所以目前只是純粹拿來做備份和記錄而已,以後若有需要多人開發也可以派上用場。

 

  管理工具我選用 BitBucket (可管理和備份程式碼的網站)和 Source Tree(以 Git 為基礎,提供圖形化介面方便使用者上傳程式碼到網站上的工具軟體),和 BitBucket 同性質的網站就屬 GitHub 了,不過 GitHub 若非付費會員就必須把原始碼都公開,而 BitBucket 可以無限建立私人專案,頂多只有開發人員不能超過5人的限制。

  以下是參考資料:

  1.  Bitbucket + SourceTree 基礎教學
  2. 如何在SourceTree使用Git flow管理開發!
  3.  連猴子都能懂得Git入門指南
  4.  30 天精通 Git 版本控制

  基本上看懂基礎就可以拿來做簡易的版本控制和備份了,不需要看完上述全部的內容也可以順利使用,我目前也才剛把整個開發中專案上傳完成,接下來就可以比較安心的進行開發了。當然要正確使用還是需要一些相關知識,加上工具介面也都是英文的,如果不確定功能的話就不要亂按還是比較保險,必要的時候還是要另外備份到其他空間會更好。

  總結一下適合使用版本控制系統的開發者:

  • 多人共同開發專案(或是會在多台電腦上進行開發)
  • 不想全手動進行備份上傳
  • 不希望備份的檔案佔據大部分雲端空間
  • 希望能精確掌控開發記錄與版本

 

  那備份的部分就談到這邊,重要的還是遊戲本體呀!