维护提醒

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仓库
首先,创建包含您代码的公共仓库。
  1. 创建一个GitHub账户。
  2. 安装SourceTree(Mac/Windows)或GitKraken(Linux)。当软件询问是否连接到GitHub账户时,选择连接。
  3. 在GitHub上创建仓库。 推荐的设置(参见screenshot):
    1. Repository name:若您会将所有模组放在同一个仓库,则推荐使用 StardewMods 。否则使用您的模组名称。
    2. Description:建议使用 Mods for Stardew Valley
    3. Initialize ... with a README:启用该选项。
    4. Add .gitignore:将此选项留空;稍后我们会自定义它。
    5. Add a license:选择一个协议(若您犹豫不决,则 MIT License 是不错的选择)。
    6. 点击 'Create repository'。
  4. 在仓库页面中,点击绿色的 "Clone or download" 按钮并复制URL:
    Modding - copy GitHub repo URL.png
  5. 在 SourceTree 中,点击 File > Clone 并粘贴URL。选择一个便于使用的目标路径(例如C:\source\StardewMods),并点击 'Clone'。
  6. 克隆结束后,进入仓库设置界面(点击右上角的齿轮图标)。
  7. 点击 "Remotes"
  8. 选中Git路径
  9. 点击 "edit"
  10. 点击URL/路径右侧的地球图标。
  11. 选中您的项目名称。
  12. 点击 "edit accounts" 按钮
  13. 双击Github账户,此时会弹出一个验证窗口。
  14. 默认授权方式为OAuth,需要您更改为 "Personal Access Token"。
  15. 输入用户名和令牌(personal access token)
  16. 若此时还未成功,请确保将Protocol设为 "HTTPS" 并保存。
这就做完了最困难的部分!现在,您已经在GitHub上拥有了一个仓库,它会和您计算机上的文件夹同步。
添加模组文件
下一步,需要把文件添加到仓库中。
  1. 打开仓库文件夹(上面第五步中输入的目标路径)。
  2. 在文件夹中解压此ZIP文件。这会在您的仓库文件夹根目录下添加两个文件:.gitattributes(用于对齐Linux/Max/Windows的换行符)和.gitignore(用于隐藏不应该被提交到Git的文件)。您不必更改这两个文件,只需确保它们在仓库根目录下即可。
  3. 将您的模组文件(包括.sln文件)复制到此文件夹。
  4. 在SourceTree中提交您的修改:
    1. 点击顶部的 Commit 。
    2. 点击 Stage All 以准备提交您的文件。
    3. 在文本框中输入对您的更改的描述。具体格式由您决定。但是,鉴于这是初次操作,建议使用 "add initial mod files" 作为描述。
    4. 确保您勾选了 "Push changes immediately" 。
    5. 点击 "Commit".
大功告成:您所有的文件都会出现在GitHub上。现在您的模组开源了!
进行修改
上述步骤仅用于配置环境,因此只需要做一次。如果您需要作出修改,则会简单很多:
  1. 编辑位于仓库文件夹中的代码。
  2. 在 SourceTree 中,提交(commit)并推送(push)您的更改(参见上一节的步骤4)。

另请参阅