感谢您对 FirstPersonCamera 项目的兴趣!我们欢迎各种形式的贡献。
如果您发现了 bug 或有功能建议,请通过以下方式报告:
-
检查现有问题 - 在提交新问题之前,请先检查 Issues 中是否已有类似问题
-
创建新问题 - 如果问题不存在,请创建新问题并包含:
- 清晰的问题描述
- 重现步骤
- 预期行为 vs 实际行为
- 环境信息(游戏版本、mod 版本等)
- 相关日志或截图
-
Fork 仓库
git clone https://github.com/xiaomao-miao/FPmod.git cd FPmod -
创建分支
git checkout -b feature/your-feature-name # 或 git checkout -b fix/your-bug-fix -
进行开发
- 编写代码
- 添加注释(中文或英文)
- 确保代码符合项目规范
-
测试
- 测试您的更改
- 确保没有破坏现有功能
- 检查编译是否成功
-
提交更改
git add . git commit -m "描述您的更改"
-
推送并创建 Pull Request
git push origin feature/your-feature-name
- 在 GitHub 上创建 Pull Request
- 填写详细的 PR 描述
- 等待代码审查
- 类名: PascalCase(如
FirstPersonCameraController) - 方法名: PascalCase(如
EnableFirstPerson) - 私有字段: camelCase,可加下划线前缀(如
isFirstPersonMode) - 常量: PascalCase(如
ModVersion) - 命名空间: PascalCase(如
FirstPersonCamera)
- 使用 4 个空格缩进(不使用 Tab)
- 使用中文注释(项目主要使用中文)
- 为公共 API 添加 XML 文档注释
- 保持代码简洁和可读性
/// <summary>
/// 方法或类的简要描述
/// </summary>
/// <param name="parameter">参数描述</param>
/// <returns>返回值描述</returns>
public void ExampleMethod(int parameter)
{
// 实现代码
}- 按功能模块组织代码
- 使用 partial class 将大文件分割
- 相关功能放在同一目录下
src/
├── Controller/ # 控制器模块
│ ├── Camera/ # 相机控制
│ ├── Combat/ # 战斗系统
│ ├── Effects/ # 特效系统
│ ├── Movement/ # 移动系统
│ ├── Rendering/ # 渲染系统
│ └── Settings/ # 设置管理
├── Patches/ # Harmony 补丁
├── UI/ # UI 系统
├── Utilities/ # 工具类
└── Compatibility/ # 兼容性支持
提交信息应该清晰描述更改内容:
<类型>: <简短描述>
<详细描述(可选)>
feat: 新功能fix: 修复 bugdocs: 文档更新style: 代码格式调整(不影响功能)refactor: 代码重构perf: 性能优化test: 测试相关chore: 构建过程或辅助工具的变动
feat: 添加新的倍镜灵敏度设置
- 支持为 1.2x 倍镜设置独立灵敏度
- 添加对应的 UI 选项
- 更新默认配置
- 使用清晰的标题描述更改
- 包含类型前缀(如
[Feature],[Fix])
应该包含:
- 更改说明: 描述做了什么更改
- 原因: 为什么要做这个更改
- 测试: 如何测试这个更改
- 截图: 如果有 UI 更改,请提供截图
- 相关 issue: 如果有相关的 issue,请链接
## 更改说明
添加了新的倍镜灵敏度设置功能,允许用户为不同倍镜设置独立的灵敏度。
## 原因
用户反馈不同倍镜使用相同灵敏度体验不佳,需要独立的灵敏度设置。
## 测试
1. 打开设置界面
2. 调整不同倍镜的灵敏度
3. 在游戏中测试倍镜灵敏度是否正确应用
## 相关 issue
Closes #123- Visual Studio 2019+ 或 JetBrains Rider
- .NET SDK(支持 .NET Standard 2.1)
- 《Escape from Duckov》游戏
-
克隆仓库
git clone https://github.com/xiaomao-miao/FPmod.git cd FPmod -
配置游戏路径
- 复制
FirstPersonCamera.csproj.user.example为FirstPersonCamera.csproj.user - 编辑
FirstPersonCamera.csproj.user,设置你的游戏路径
- 复制
-
编译项目
dotnet build
-
运行测试
- 将编译后的 DLL 复制到游戏 Mods 目录
- 启动游戏测试功能
所有代码提交都需要经过审查:
- 代码审查者会检查代码质量、规范符合性和功能正确性
- 可能需要修改后才能合并
- 请耐心等待审查,并及时响应审查意见
创建 issue 时,请使用以下模板:
### 问题描述
清晰简洁地描述问题
### 重现步骤
1.
2.
3.
### 预期行为
描述您期望发生什么
### 实际行为
描述实际发生了什么
### 环境信息
- 游戏版本:
- Mod 版本:
- 操作系统:
- 其他相关 mod:
### 附加信息
添加任何其他相关信息、截图或日志### 功能描述
清晰描述您想要的功能
### 使用场景
描述在什么情况下会使用这个功能
### 建议实现
如果有实现建议,请描述
### 附加信息
添加任何其他相关信息为了营造开放和友好的环境,我们承诺:
- 尊重所有贡献者
- 接受建设性批评
- 专注于对社区最有利的事情
- 对其他社区成员表示同理心
- 使用性化的语言或图像
- 人身攻击、侮辱性/贬损性评论
- 公开或私下骚扰
- 发布他人的私人信息
- 其他不道德或不专业的行为
通过贡献代码,您同意您的贡献将在 GNU General Public License v3.0 (GPL v3) 许可证下授权。
这意味着:
- 您的贡献将成为项目的一部分
- 您的贡献将以 GPL v3 许可证发布
- 所有使用本项目的用户都可以自由使用、修改和分发您的贡献
- 使用本项目的代码(包括您的贡献)必须遵守 GPL v3 许可证的要求
如果您有任何问题,可以通过以下方式联系:
- GitHub Issues
- GitHub Discussions
感谢您的贡献!