開發日誌

HTML5 版本開發進度#2

在 HTML5 版本的開發過程中,我們遭遇到了非常多的困難。因此我們選擇的是將基礎打穩,而不是將完成度一次性的提高而忽視未來能夠長期且穩定維護的機會。

首先,在遊戲開發中因為非常多元及自由,不像是團隊中熟悉的網站開發有非常多經過數十年累積的經驗和技巧可以套用,每一次的製作都需要重新思考當下的設計是否適合以及恰當。這讓我們在過去半年中花了非常多時間在嘗試應該如何分工以及協作才能順利的將開發進行下去。

不同於一般的公司有完整的工作時間,團隊的成員都是利用各自的空檔在進行開發,因此我們需要將整個開發過程中的耦合(互相依賴的情況)極大的減少,我們將整個 HTML5 專案又切分成下面幾種不同的專案:

  • 伺服器
    • Inlux
    • Ineundo
    • Mandatum
  • 客戶端
    • Reflector
    • Unlight.js
    • Phantom
    • Cocos

原本使用 Ruby 開發的遊戲伺服器在過去一年多的營運後,我們已經逐步掌握維運的基本方式,但是若要支援 HTML5 的 WebSocket 就需要大量的改寫,與之相對的處理是我們透過 Proxy(代理伺服器)的方式,另外建置了一套伺服器代替玩家連接原本的伺服器,並且擔任類似翻譯的角色把兩種不同的傳輸格式整合。

為了對應這個新的 WebSocket 代理伺服器,我們也需要重新實現一個能夠「理解」原本伺服器回傳資訊的客戶端,在原本 Unlight 的設計上是很難從 JavaScript 上面實現的,因此我們透過 Golang 和 Prototbuf 來輔助實現這些機制。

同時為了能夠讓「串連伺服器」跟「遊戲畫面實現」能夠同時處理,我們又針對處理指令、處理狀態、處理呈現等不同的職責拆分出不同的專案,讓每個負責的部分都能夠專心的在各自應該要處理的部分上。這也是至今為止我們花費最多時間的地方,我們在不斷地嘗試中去找到「不會互相干擾」的工作模式,並且持續優化與改善到現在。

雖然現在的時程比我們預期的有不少延誤,但是在我們的經驗中前期投入的成本都是用於加強專案的基礎,而這部分的效益會在未來以更流暢的開發體現出來,進而減少不斷的填補和修正問題的情況,讓我們在更新的頻率能夠逐步的加快。

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料