2018年12月17日 星期一

替 Endless Space (萬艦穿星) 做的繁中漢化

最近一個月都沉浸在 Endless Space 2 的世界裡無法自拔。二代的遊戲內容已全面支援繁體中文,遊玩上的帶入感確實比起一代強烈得多。

一代雖然也有由玩家社群貢獻的中文漢化補丁,但簡體中文的部分比較完整,至於繁體中文的部分目前似乎只有一個 codebay.in 的繁中漢化包,而且只支援主程式,並不支援資料片 Disharmony。

上上週末突發異想,干脆自己跳進去嘗試補完一代繁中漢化的部分。雖然我還沒有任何遊戲漢化的經驗,但我知道 Endless Space 是用 Unity 開發的,這引擎我倒算熟悉。於是乎報紙捲一捲我就上山打虎去了。

原本預想的很單純 -- Endless Space 內的所有字串表都是以 XML 的格式獨立存放在遊戲目錄下,未有任何保護。而 Unity 自 3.x 版本起就已支援動態文字繪製 (Dynamic Font),所以我預期只要把遊戲中使用的 TTF/OTF 字型換成能支援繁中的開源字型 (DroidSans,思源或文泉驛等等) 然後把字串表都改成繁中內容就搞定了。沒想到馬上就體認到理想與現實的差距,原本預估一個週末完工的時程也膨脹到一個多禮拜...。以下開始血淚分享其中步驟。

2018年7月23日 星期一

我覺得 premake 做對的事

premake 是一個用途如同 cmakemeson 之類,幫忙你「產出指定編譯工具的專案檔」的自動工具。

假設你有一個自行開發的跨平台軟體專案,需要能被 Windows MSVC / Linux Make / MacOSX XCode 三個編譯平台所編譯。最直覺的作法就是分別建立三個編譯工台的專案檔,也就是 MSVC 的 solution 檔案、Makefile、以及 XCode 用的 workspace 檔案。這個作法在維護上會有一個大問題 -- 每當你新增了原始碼檔案、或是變更了某個編譯設定,你必須要記得同時去更新另外兩個平台的專案檔,否則下次有人在另一個平台上工作時就會氣急敗壞地嚷嚷著編譯失敗。

而 premake / cmake / meson (以及其它族繁不及備載) 這類工具,就是試圖解決這個問題。通常它們的作法是: 你必須改按照它們的方式來編寫專案設定檔,然後透過這份專案設定檔來一次生成所有目標編譯工具 (MSVC / XCode / Make ...) 的專案檔。

2018年6月15日 星期五

簡易台股過濾器 - 初試 Google Cloud AppEngine、Datastore

起念是想在「不負擔任何費用」的前提之下,建立能有動態內容、提供可互動 WEB API 的網頁伺服環境,即 Server 端必需能支援 CGI。在各大雲端平台上一陣走馬看花之後,最後看上了 Google Cloud AppEngine、以及用作 Database 的 Google Cloud Datastore。兩者皆有常態性地低用量免費方案,只要用量不超過某限額,是不用付錢的,很適合作為個人練兵場、或驗證一些概念性的想法。

於是乎我把自己平時為了方便選擇存股目標而寫的台股過濾器,移植到 AppEngine 中,提供了簡易的網頁前端以方便操作。

台灣上市股票過濾器

原始碼部分
台股歷年股利、最近成交價爬蟲 (爬出數據塞進 Datastore 中)

置於 AppEngine 中的部分 (含網頁前端內容、後端 WEB API 實作)