前言
這是我一年多來開發 Chrolog 過程的記錄, Chrolog 從概念到上線的技術歷程與設計決策。
歷程
在 2023 年當兵時認識一個會畫畫的朋友。我們常聊著想做遊戲的點子,6 月退伍後就約起來做,後來又拉了三個朋友加入,剛開始每週開會。專案討論概念了幾個月後,因為有些人工作和個人的因素等等,團隊從六個人慢慢剩下我和義路兩人;到了隔年 7 月(2024 年),我們評估後決定先把原本的專案暫停。主要原因是遊戲很著重畫風,很多功能又是六個人討論出來的規模,兩個人做不完。即便如此,我和義路還是會繼續討論,但是把會議改成每兩週一次,慢慢把想法精簡、重構,但最終還是結束了專案。
到了 2024 年 9 月,因為我的目標是往軟體架構師方向發展,但工作上很難練到架構設計,同事對設計架構也沒什麼概念,所以決定用 Side Project 練習,用工作熟悉的 Flutter 做一個 App,順便想著如何把我維護的 App 架構設計得更好。做 Chrolog 的想法本來就不是為了賺錢,而是想解決我自己記筆記的痛點。因為我每天有寫工作日誌的習慣,發現使用日誌的習慣其實很像 Git,像是每天對不同功能的進度、狀態進行記錄。於是想把 Git 的操作當作筆記介面,然後把一些遊戲化元素加進去。
專案一開始我先設計了比較理想化的架構,Service 導向、ViewModel 綁定、父子頁面層層迭代,再搭配通道式的架構,這樣耦合低但新增功能會比較繁瑣費時。接著我深入研究 Git 的內部概念,開始把 commit、blob、tree 等一個個實作出來。專案最早叫 fluffy palm tree,後來改名為 Chrolog(把 chrono 跟 log 合起來)。做完基本功能(像是 push、commit、branch)後,我花了大約六個月把初版 UI 和功能做出來。
到了 2025 年 3 月在我開始要做 App 後端的時候我換了工作,因為覺得這間已經公司沒有我可以成長的空間,剛好以前面試的主管在招人,於是我就從純軟跑去豬屎屋,之後那段時間每天在看 IC 文件、硬體通訊等等…,對我來說是全新的挑戰,所以專案的推進就停擺了兩個月左右。
新人期穩定後就繼續寫沒完成的後端,後端用 Rust 寫,因為當時寫遊戲的時候用 Bevy 遊戲引擎,所以對語法熟悉度比較高,雖然剛開始還是很痛苦,花了一個月把 Sever 的東西吃下去,然後才開始製作 APP 的 Server ,像是 JWT、認證、第三方登入等功能補齊,因為沒什麼套件所以只好自己慢慢刻出來。曾經考慮過改用 Go(因為 Firebase 支援較好,只需要叫叫 API),但最後還是咬牙把 Rust 版本做完。部署上為了省錢先用一台規格很低的 AWS 機器,但一個月還是要 33 美金左右,結果一直超時、建置被取消;後來改把 Server 打包成 Docker Image 上傳到 ECR,再由 Elastic Beanstalk 拉下來部署,流程才穩定,ECR 也是讓我卡了一陣子的東西,網路上教學真的很少。上線後還遇到 RDS 與 EB 連線的問題,反覆檢查安全通道設定,還找平郁一起除錯,連安全通道全開也連線不了,真的是遇到鬼了,最後重建專案後問題就沒再發生——有時候砍掉重做比無止盡地 Debug 更快。
時間來到 2025 年 5 月,這時候筆記功能的部分由義路接手,他也找了學弟佑軒來協助,但一開始我是比較排斥的,因為團的成員來來去去的讓我對新成員沒什麼信心,但最後想說反正專案快完成了如果可幫到義路就加入吧(後來佑軒因服兵役離開團隊),很快的筆記功能也越來越強大,很多我沒想到的細節義路都幫我補上甚至做得更好。我則把重心放在遊戲化的設計上,最初想過蓋房子、火箭、種植物等玩法,最後選定以調酒為主題。雖然我對調酒並不熟悉,但覺得把工作日誌和酒的元素結合有趣,因此把筆記系統與調酒玩法串接(例如 commit 有機會抽到一杯調酒)。後來發現這個主題與筆記的連結並不好,但因為素材已經完成,重新繪製又會耗時,因此我和義路多次討論如何強化兩者的關聯,仍找不到更好的方向,甚至一度覺得這套玩法都可以獨立成一個 App。最後還是按照原計劃,新增抽酒和圖鑑功能。實作上素材與互動花了不少時間——原本設計了一個很酷但實作難度高的抽獎頁面,後來改為滑動彈出酒的互動。完成互動後,我把遊戲需要的 API 與資料庫補齊,這個時候 App 基本上功能都完成了。
我們的目標是在 2025 年底前上線,在 11 月送審時第一次被打回,理由大概是說我們的 APP 是垃圾;所以我們改了介面與功能,強化遊戲化和筆記的連結,再送一次還是被拒絕。這次的審核意見比較具體,所以我們依建議做了調整,也補上刪除帳號功能。因為 Rust 沒有 Firebase 套件,刪除流程要處理 token 換取等細節,我只好自己實作了刪除機制和快取,後來發現把快取放在 App State 裡面比較方便,修完測試沒問題再送一次結果就過了,11 月底成功上架,也算是完成今年的目標了。
回顧
Chrolog 花了一年多的時間開發終於完成了,雖然不是一個很實用的 App 但背後得技術含量滿高的,如果你看到這裡還沒離開的話不訪可以去玩一下。
2024 沒有產出專案,讓我一年一專案的目標失敗了,不過還是讓我學到很多事情,像是專案的討論、規劃、設計等等…,也用 Godot 和 Bevy 做了些小東西,也算是不錯的體驗吧。最後感謝在這開發中幫忙的義路、佑軒和平郁,沒有大家的幫忙可能沒辦法這麼順利的上架。
Chrolog App: https://chrolog.farstar-studio.com/