把遊戲源碼公開前,我想清楚的三件事
《武士圓舞曲》上線隔天,我把整份源碼放上 GitHub 公開了。這篇不講技術,講決策:公開到底換到什麼、怕的事怎麼擋、四種授權怎麼選。如果你也有一個做完的 side project 在猶豫要不要開源,這篇是我的思考過程存檔。
上一篇講《武士圓舞曲》怎麼在兩天內做出來。上線隔天,我把整份源碼放上 GitHub 公開了:github.com/saomin0317/knight-duel。
「要不要開源」這個決定,我原本以為是五分鐘的事,實際想了三層。這篇把思考過程存檔——如果你也有一個做完的 side project 在硬碟裡猶豫,也許用得上。
照例交代作法:這仍是 AI 協作實驗。素材授權逐項查證、GitHub 設定、法律條款比對由 Claude 執行;要不要公開、掛哪個授權,由我拍板。
第一件事:公開到底換到什麼?
先講誠實的結論:公開換到的東西,比想像的少。
GitHub 沒有「上架通知」。repo 從 private 切成 public 的那一秒,世界上沒有任何人會知道。沒有推播、沒有演算法、沒有新品榜。公開只是「可以被看到」,不是「被看到」。
那還換到什麼?對一人公司來說,就一件事:能力證明。
「我會做網頁 3D 遊戲」是一句話;「這是可以玩的遊戲,這是全部源碼,自己看」是另一回事。接案的時候,後者不用解釋。可以玩的成品加上看得到的源碼,是最省力的履歷。
反過來說,如果你的專案沒有「給人看」的需求——純自用工具、還在搶市場先機的產品——公開就只剩風險沒有報酬,不用勉強。
第二件事:怕的事,擋得住嗎?
我猶豫的主因就一個:換皮。遊戲是完整可玩的,公開源碼等於有人可以改個名字、換個圖,上架去賺錢。
盤點下來,防線其實有三道,而且都不靠「告他」:
第一道:素材授權要先自查。 這關不是防別人,是防自己。遊戲裡的 3D 模型、音效如果是買來的或授權來的,放進公開 repo 等於「再散布」,多數素材條款明文禁止——先侵權的會是你自己。我們逐項查了一輪:模型全部是 KayKit 的 CC0(免費商用、不需署名),音效是 Kenney 的 CC0,配樂藍色多瑙河是 1867 年的公版曲,錄音用的是美國海軍陸戰隊軍樂團版本——美國聯邦政府作品依法沒有版權。全數過關,這個專案從第一天就刻意只用 CC0 和公版素材,此刻收到紅利。
第二道:授權條款。 下一段講。
第三道:名字和伺服器不隨源碼走。 這是我覺得最實用的一道鎖。授權聲明裡寫明:「武士圓舞曲」這個名字、線上服務(帳號、雲端存檔、排行榜)不在授權範圍。意思是:就算有人合法 fork 了程式碼,他不能叫這個名字,也連不上我的伺服器——他得到一個沒有名字、沒有存檔、沒有排行榜的空殼,得自己從頭養。抄襲最想拿的是「現成的整體」,這道鎖把整體拆掉了。
第三件事:四種授權,白話版
授權有個關鍵性質要先知道:它是潑出去的水。repo 公開後,別人 fork 走的副本永遠適用當時的條款,之後想改也收不回來。所以第一次掛什麼,值得想清楚。
四個選項,從最緊到最鬆:
什麼都不掛。 法律預設「保留所有權利」——看得到,但複製、改作通通違法。聽起來最安全,實際上嚇阻力有限(會抄的人不在乎,你也不會真的跨海打官司),而且展示效果打折:連「跑起來試試」都不合法的源碼,社群觀感就是「只准看」。
非商用授權(如 PolyForm NC)。 「可以看、可以學、不准拿去賺錢」。意圖表達最清楚,但不算正統開源,部分開發者社群不買帳。
GPL-3.0。 「拿去用可以,商用也可以,但你的改作必須用同樣條款公開源碼」。防換皮的效果來自一個心理機制:抄襲者最怕的就是被迫公開自己的東西——要嘛照規矩開源自己的改作,要嘛侵權,多數人直接放棄。同時保有正統開源的社群身分。
MIT。 「隨便用,留個版權聲明就好」。換皮完全合法。適合想衝採用率的工具函式庫,不適合一個你在意被抄的完整遊戲。
我選了 GPL-3.0。理由是它同時拿到兩樣東西:正統開源的展示價值,和「想抄就得跟著開源」的結構性嚇阻。搭配第三道鎖(名字和伺服器保留),換皮的成本被推到比自己重做還高。
還有一個容易漏的收尾:服務條款要跟著改。網站原本寫「程式未經書面同意不得重製」,跟 GPL 直接矛盾——公開的同時改成「程式碼依 GPL-3.0 公開不在此限,名稱與服務權利保留」。授權不是放一個 LICENSE 檔就完事,所有對外文件要講同一句話。
所以,該不該開源你的 side project?
我的判斷流程濃縮成三個問題:
- 它需要被看到嗎? 不需要就留著,公開沒有報酬。
- 素材乾淨嗎? 有一項授權不明就先別動,這是唯一會讓你自己先違規的環節。
- 你怕什麼? 怕抄→GPL 加名字伺服器保留;不怕→MIT;只想展示→非商用授權也行。
《武士圓舞曲》在這裡:遊戲、源碼。歡迎看,歡迎玩,改作記得開源。
常見問題:公開源碼與授權
開源授權有哪幾種?該怎麼選?
常見的公開授權分四類:不掛授權(保留所有權利,別人只能看不能用)、非商用授權如 PolyForm NC(可看可學,不准商用)、著佐權如 GPL-3.0(可商用,但改作必須以同樣條款開源)、寬鬆授權如 MIT/Apache-2.0(幾乎隨便用,留版權聲明即可)。選法看目的:怕被抄選 GPL,想衝採用率選 MIT,只想展示能力選非商用,純備份就不掛。
GPL 和 MIT 的差別是什麼?
一句話:MIT 給出去不要求回報,GPL 給出去要求「改作也要開源」。用 MIT 的程式碼做成閉源商業產品完全合法;用 GPL 的程式碼做產品,該產品的源碼必須以 GPL 公開。這使 GPL 對「換皮抄襲」有結構性嚇阻——抄襲者要嘛公開自己的改作,要嘛侵權。
不放 LICENSE 檔,公開的程式碼別人可以用嗎?
不可以。著作權法預設「保留所有權利」,沒有授權條款的公開程式碼只能閱讀,複製、修改、再散布都構成侵權。但實務上嚇阻力有限,且社群通常不會使用或貢獻沒有授權的專案。
CC0 素材可以商用嗎?需要署名嗎?
可以商用,不需署名。CC0 等同放棄著作權進入公有領域,免費商用、修改、再散布都合法。KayKit(3D 模型)與 Kenney(音效)是遊戲開發常用的 CC0 素材來源。注意部分作者會附「請勿原樣轉售」的君子協定,法律上不拘束但建議尊重。
開源之後可以反悔改授權嗎?
可以改,但收不回去。新版本可以換授權條款,然而任何人在舊授權時期取得的副本,永遠適用當時的條款——已經 fork 出去的程式碼管不到。所以第一次選授權要想清楚。
遊戲名稱和商標會跟著源碼一起開源嗎?
不會,前提是要寫清楚。程式碼授權(GPL、MIT 等)只涵蓋程式碼本身;名稱、商標、線上服務(帳號系統、伺服器、排行榜)可以在授權聲明中明文保留。這是開源遊戲防止換皮的實用做法:fork 的人拿得走程式,拿不走名字和伺服器。
延伸閱讀: - 3D 沒有想像的難:兩天,把 40 年前的遊戲記憶做上線 - 自動找案的真實距離:四天、638 則貼文,換一則只有 3 個人看到的回覆