BWIKI 全站将于 9 月 3 日(全天)进行维护,期间无法编辑任何页面或发布新的评论。
模组:开源代码
←目录
开源模组是指源代码公开且使用开源协议的模组。强烈建议模组作者开源其模组和内容包。
为什么开源很重要?
开源对于模组社区的长期健康发展有重要意义,且有助于玩家获得更顺滑的游戏体验。
- 开源如何利益他人?
- 这具体取决于您使用的开源协议。一般来说,其他人能够:
- 阅读您的代码;
- 修改您代码的副本;
- 向您发送提请的(proposed)更新、改进和修复;
- 进行非官方更新;
- 通过查看代码,更好地帮助用户解决问题
- 开源的效益是显著的:在SMAPI 3.0发布后,仅有1%的开源模组发生了崩溃,相比之下,高达51%的闭源模组发生了崩溃(且未计入从未更新的古旧模组)。
- 开源如何利益您自己?
- 除了上述益处之外,开源协议有助于您接受来自他人的贡献。
- 没有开源协议的情况下,他人对您的模组所作出的贡献(例如代码、翻译或内容更改)享有版权。他人对您的模组作出贡献,实际上是默许了您使用他们的内容和改进。但是,您将不再拥有整个模组;未经每个贡献者授权,您无法更改他人发布的内容(例如,将模组分裂为小部件、将代码复制到另一个模组等)。一旦您无法联系上某位贡献者,情况就会变得麻烦,除非您将其贡献的内容彻底移出模组。
- 有开源协议的情况下,任何贡献会自动受此协议约束。这意味着您可以对他人的贡献作出协议允许的任何更改。
常见问题
- 如果我不喜欢他人提请的更改应当怎样做?
- 您仍然拥有您的源代码和模组页面的完全控制权;未经您同意,任何人都不能更改模组内容!您可以自由地拒绝他人对您的模组提请的更改。
- 这适用于内容包吗?
- 是的!尽管内容包并未经过编译,但没有许可协议,其他模组开发者无法合法地作出修改。请注意,Nexus等网站的 "permissions" 选项在法律上是模糊的(例如,哪些人对于衍生品有版权?衍生品是否可以重新授权?)。因此,建议您为内容包也添加许可协议。这也使得其他模组开发者能够拉取请求(pull request)和更新。当此页面提及“代码”一词时,它也指您的内容包下的所有内容,包括JSON文件、图像、地图等。
- 我可以禁止商用吗?
- 非商用开源协议禁止他人利用您的内容牟利或重新售卖您的内容。这当然优于完全没有许可协议,但这并不是真正的开源。这可能会产生意外的副作用,例如禁止网络主播展示您的模组,因为他们的视频是盈利性质的。强烈建议您不要使用非商用协议。
- 我没有添加开源协议,但已经发布了模组。现在还可以添加协议吗?
- 当然。如果您独自开发了整个模组,您可以随时添加或更改协议。但如果其他人对模组作出了贡献(包括代码、翻译或图像),您则需要取得他们所有人的同意,除非您将其贡献的内容彻底移出模组。
- 什么是Git仓库?
- Git是一个帮助您追踪代码改动的软件,仓库是指Git追踪的模组文件夹。如果您希望了解更多,可以查看Git教程,但不必担心:您不必了解Git如何工作,就能够使用它!
开源您的代码
若您的代码已托管于GitHub
您几乎已经成功了!您只需要选择一个协议(若您犹豫不决,则 MIT License 是不错的选择),并向仓库添加LICENSE文件。
若您的代码未托管于GitHub
这看起来需要很多步,但不必担心:这些步骤非常简单直接,而且您只需要做一次就够了。若需要帮助,欢迎在星露谷Discord的#making-mods版块下提问。:)
通过Visual Studio
Visual Studio很好地整合了Git,其文档见此处:https://learn.microsoft.com/en-us/visualstudio/version-control/git-create-repository?view=vs-2022
通过SourceTree
- 创建一个Git仓库
- 首先,创建包含您代码的公共仓库。
- 创建一个GitHub账户。
- 安装SourceTree(Mac/Windows)或GitKraken(Linux)。当软件询问是否连接到GitHub账户时,选择连接。
- 在GitHub上创建仓库。
推荐的设置(参见screenshot):
- Repository name:若您会将所有模组放在同一个仓库,则推荐使用 StardewMods 。否则使用您的模组名称。
- Description:建议使用 Mods for Stardew Valley。
- Initialize ... with a README:启用该选项。
- Add .gitignore:将此选项留空;稍后我们会自定义它。
- Add a license:选择一个协议(若您犹豫不决,则 MIT License 是不错的选择)。
- 点击 'Create repository'。
- 在仓库页面中,点击绿色的 "Clone or download" 按钮并复制URL:
- 在 SourceTree 中,点击 File > Clone 并粘贴URL。选择一个便于使用的目标路径(例如C:\source\StardewMods),并点击 'Clone'。
- 克隆结束后,进入仓库设置界面(点击右上角的齿轮图标)。
- 点击 "Remotes"
- 选中Git路径
- 点击 "edit"
- 点击URL/路径右侧的地球图标。
- 选中您的项目名称。
- 点击 "edit accounts" 按钮
- 双击Github账户,此时会弹出一个验证窗口。
- 默认授权方式为OAuth,需要您更改为 "Personal Access Token"。
- 输入用户名和令牌(personal access token)
- 若此时还未成功,请确保将Protocol设为 "HTTPS" 并保存。
- 添加模组文件
- 下一步,需要把文件添加到仓库中。
- 打开仓库文件夹(上面第五步中输入的目标路径)。
- 在文件夹中解压此ZIP文件。这会在您的仓库文件夹根目录下添加两个文件:.gitattributes(用于对齐Linux/Max/Windows的换行符)和.gitignore(用于隐藏不应该被提交到Git的文件)。您不必更改这两个文件,只需确保它们在仓库根目录下即可。
- 将您的模组文件(包括.sln文件)复制到此文件夹。
- 在SourceTree中提交您的修改:
- 点击顶部的 Commit 。
- 点击 Stage All 以准备提交您的文件。
- 在文本框中输入对您的更改的描述。具体格式由您决定。但是,鉴于这是初次操作,建议使用 "add initial mod files" 作为描述。
- 确保您勾选了 "Push changes immediately" 。
- 点击 "Commit".
- 进行修改
- 上述步骤仅用于配置环境,因此只需要做一次。如果您需要作出修改,则会简单很多:
- 编辑位于仓库文件夹中的代码。
- 在 SourceTree 中,提交(commit)并推送(push)您的更改(参见上一节的步骤4)。
另请参阅
- 模组:模组兼容性具有每个开源SMAPI模组源代码的链接。