优化文章“设置项详解” (#299)
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
neveler 2025-10-19 14:17:55 +08:00 committed by GitHub
parent 031282f7ea
commit 137f679406
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -10,8 +10,9 @@ author: MemoryShadow
### 约束与注意
本篇文章是在HMCL v3.5.3.230版本中编写的, 如果您使用的是旧版本, 请注意有些选项可能不存在.
本篇文章是在 `HMCL-3.5.3.230` 版本中编写的, 如果您使用的是旧版本, 请注意有些选项可能不存在.
<!--{% comment %}-->
## 目录
- [引言](#引言)
@ -40,50 +41,51 @@ author: MemoryShadow
- [代理设置](#代理设置)
- [特别鸣谢](#特别鸣谢)
- [参考文章](#参考文章)
<!--{% endcomment %}-->
## 全局游戏设置
这是HMCL中的第一个设置项, 也是最重要的设置项之一, 它决定了HMCL在启动游戏时的行为.
这是 HMCL 中的第一个设置项, 也是最重要的设置项之一, 它决定了 HMCL 在启动游戏时的行为.
### Java路径
众所周知, Minecraft是由Java编写的, 因此, 在启动游戏时, HMCL需要知道Java([JRE][1])的安装路径, 才能启动游戏.
众所周知, Minecraft 是由 Java 编写的, 因此在启动游戏时 HMCL 需要知道 Java(JRE[^1]) 的安装路径才能启动游戏.
由于HMCL本身就是一个Java程序, 一般能正常启动HMCL就能至少在计算机上找到一个JRE. 但也会由于一些未知因素导致无法找到JRE, 这时, 就需要手动指定JRE的安装路径.
由于 HMCL 本身就是一个 Java 程序, 一般能正常启动 HMCL 就能至少在计算机上找到一个 JRE. 但也会由于一些未知因素导致无法找到 JRE, 这时, 就需要手动指定 JRE 的安装路径.
我们先来讨论能够自动识别的情况:
在HMCL启动时, 会根据注册表项, 环境变量, 以及[HMCL自身的启动路径][2]来寻找JRE. 如果找到了, 就会在"Java路径"这一栏显示出来, 并且在启动游戏时使用这个路径.
HMCL 启动时, 会根据注册表项, 环境变量, 以及 HMCL 自身的启动路径[^2]来寻找 JRE. 如果找到了, 就会在 "Java路径" 这一栏显示出来, 并且在启动游戏时使用这个路径.
上述的情况几乎涵盖了所有, 如果你希望HMCL能够自动找到Java, 就应该使用这些技巧配置好你的计算机环境.
上述的情况几乎涵盖了所有, 如果你希望 HMCL 能够自动找到 Java, 就应该使用这些技巧配置好你的计算机环境.
接下来我们讨论不能自动识别的情况:
通常我们安装解压版本的JRE都不会被HMCL自动找到, 这时, 就需要手动指定JRE的安装路径. 你可以展开"Java路径"条目(通常是点击条目右侧的三角), 在展开的下拉列表中选中"自定义"条目后点击右侧的文件夹图标, 在弹出的对话框中选择你Java可执行文件的路径.
通常我们安装解压版本的 JRE 都不会被 HMCL 自动找到, 这时, 就需要手动指定 JRE 的安装路径. 你可以展开 "Java路径" 条目(通常是点击条目右侧的三角), 在展开的下拉列表中选中"自定义"条目后点击右侧的文件夹图标, 在弹出的对话框中选择你 Java 可执行文件的路径.
#### 自动选择合适的Java
#### 自动选择合适的 Java
在1.16.5版本后, Minecraft的最低支持Java版本从8提升到了16. HMCL可以在已添加的版本中找到最合适的Java版本, 并在启动游戏时使用这个版本. 整个过程不需要人力介入.
在1.16.5版本后, Minecraft 的最低支持 Java 版本从 8 提升到了 16. HMCL 可以在已添加的版本中找到最合适的 Java 版本, 并在启动游戏时使用这个版本. 整个过程不需要人力介入.
### 版本隔离
这是当前主流启动器都支持的功能, 这个功能能够在尽可能共享依赖库的前提下, 将不同的游戏版本隔离开来, 避免你安装的模组加载器被应用在错误的版本上或是加载到不兼容的版本, 同时最大程度的减少磁盘占用.
此功能的底层原理不在此处过多赘述, 对于用户来说最大的区别就是游戏的实际目录发生了改变, 例如: [提取游戏日志的方式][3]被改变了
此功能的底层原理不在此处过多赘述, 对于用户来说最大的区别就是游戏的实际目录发生了改变, 例如: 提取游戏日志的方式[^3]被改变了
原本游戏目录默认应该在`.minecraft`文件夹, 但在开启版本隔离后, 你实际的游戏目录被切换到了`.minecraft/versions/游戏版本名称`, 这会给一些新手或是习惯于使用正版启动器的玩家带来额外的困惑.
原本游戏目录默认应该在 `.minecraft` 文件夹, 但在开启版本隔离后, 你实际的游戏目录被切换到了 `.minecraft/versions/游戏版本名称`, 这会给一些新手或是习惯于使用正版启动器的玩家带来额外的困惑.
通常来说, 只要你玩的不是未修改过的版本, 都应该打开版本隔离避免引发错误, 这也能在你删除某个游戏版本时将日志等数据一并清除.
### 游戏内存
这与你计算机上的RAM存储器容量有关, 一般来说选择"自动分配内存"选项会得到一个相对合适的值. 但也许会有一些CPU性能较差希望用内存来交换的玩家愿意分配更多的内存.
这与你计算机上的 RAM 存储器容量有关, 一般来说选择 "自动分配内存" 选项会得到一个相对合适的值. 但也许会有一些 CPU 性能较差希望用内存来交换的玩家愿意分配更多的内存.
但我告诉您, 这里只是在调整[JVM][4]能够使用的最大内存容量, 只有在模组/Minecraft官方开发者没有手动控制[GC][5]行为的时候, 才能如你预期的通过内存交换CPU时间
但我告诉您, 这里只是在调整 JVM[^4] 能够使用的最大内存容量, 只有在模组 / Minecraft 官方开发者没有手动控制 GC[^5] 行为的时候, 才能如你预期的通过内存交换 CPU 时间
### 启动器可见性
这个条目有4个选项, 分别是:
这个条目有 4 个选项, 分别是:
- 游戏启动后结束启动器
- 游戏启动后隐藏启动器
@ -112,7 +114,7 @@ author: MemoryShadow
### JVM参数
调整JVM参数能够更细腻的控制JVM的行为, 例如是否压缩指针(用CPU换内存), 是否频繁GC(还是用CPU换内存)等等, 这些一般都可以通过类似于[这篇文章][6]这样进行调整. 不过要注意的一点是, JVM参数是由实际实现决定的, 是否使用以及是否支持还要看具体的JVM实现.
调整JVM参数能够更细腻的控制 JVM 的行为, 例如是否压缩指针(用 CPU 换内存), 是否频繁 GC(还是用 CPU 换内存)等等, 这些一般都可以通过类似于这篇文章[^6]这样进行调整. 不过要注意的一点是, JVM 参数是由实际实现决定的, 是否使用以及是否支持还要看具体的 JVM 实现.
### 本地库路径
@ -120,37 +122,37 @@ author: MemoryShadow
### GLFW
GLFW是一个轻量级的C语言库用于创建和管理OpenGL在多个操作系统中的上下文处理用户输入以及获取时间和帧缓冲。它支持多个窗口、全屏模式、窗口模式、多个输入设备和剪贴板。GLFW是一个独立于操作系统的库可以在Windows、Mac OS X和Linux等多个平台上使用。
GLFW是一个轻量级的C语言库用于创建和管理 OpenGL 在多个操作系统中的上下文处理用户输入以及获取时间和帧缓冲。它支持多个窗口、全屏模式、窗口模式、多个输入设备和剪贴板。GLFW是一个独立于操作系统的库可以在 Windows, MacOS, Linux 等多个平台上使用。
在Linux下系统自带的窗口管理器例如xorg通常已经包含了可以与OpenGL集成的窗口管理器。因此使用系统自带的窗口管理器可以避免与其他项目的库冲突并确保对于系统提供的功能和特性有最好的支持。此外使用系统自带的窗口管理器也能够最大限度地减少安装和配置上的复杂性。
在Linux下系统自带的窗口管理器例如 xorg通常已经包含了可以与 OpenGL 集成的窗口管理器。因此,使用系统自带的窗口管理器可以避免与其他项目的库冲突,并确保对于系统提供的功能和特性有最好的支持。此外,使用系统自带的窗口管理器也能够最大限度地减少安装和配置上的复杂性。
故此, Linux玩家推荐使用系统自带的
故此, Linux 玩家推荐使用系统自带的
### OpenAL
OpenAL是一个跨平台的3D音频API可以用于在多个操作系统上播放音效和音乐。它支持的特性包括定位、重放、3D效果、回声、滤波等。可以使用OpenAL提供的函数对声源和听者的位置、方向、速度等进行控制以实现3D音频效果。
OpenAL 是一个跨平台的 3D 音频 API可以用于在多个操作系统上播放音效和音乐。它支持的特性包括定位、重放、3D 效果、回声、滤波等。可以使用 OpenAL 提供的函数对声源和听者的位置、方向、速度等进行控制,以实现 3D 音频效果。
Linux下OpenAL通常可以与ALSA高级Linux音频体系结构PulseAudio一种现代的音频子系统进行集成。使用系统自带的音频支持库可以确保应用程序与底层音频硬件和设备之间的兼容性并提供最佳的音频性能和功能。此外使用OpenAL也可以让应用程序具有跨平台的特性可以在多个操作系统上使用相同的代码和资源来实现音频效果。
Linux 下 OpenAL 通常可以与 ALSA高级 Linux 音频体系结构)或 PulseAudio一种现代的音频子系统进行集成。使用系统自带的音频支持库可以确保应用程序与底层音频硬件和设备之间的兼容性并提供最佳的音频性能和功能。此外使用 OpenAL 也可以让应用程序具有跨平台的特性,可以在多个操作系统上使用相同的代码和资源来实现音频效果。
故此, Linux玩家推荐使用系统自带的
故此 Linux 用户推荐使用系统自带的
## 通用
这里提供了一些HMCL的通用参数, 例如启动器是否自动检查更新, 文件下载的缓存目录存放位置, 程序界面的显示语言等. 这些基本都属于"见名知意"的范畴, 不需要过多讨论.
这里提供了一些 HMCL 的通用参数, 例如启动器是否自动检查更新, 文件下载的缓存目录存放位置, 程序界面的显示语言等. 这些基本都属于 "见名知意" 的范畴, 不需要过多讨论.
## 外观
这里提供了一些HMCL的外观参数, 例如启动器的主题颜色, 动画显示, 背景图片, 字体等. 这些基本都属于"见名知意"的范畴, 不需要过多讨论.
这里提供了一些 HMCL 的外观参数, 例如启动器的主题颜色, 动画显示, 背景图片, 字体等. 这些基本都属于 "见名知意" 的范畴, 不需要过多讨论.
## 下载
### 下载源
由于网络环境问题, 在之前下载Minecraft可能是一件麻烦事, 但在现在, 我们有了[BMCLAPI][7]项目, 该项目无偿为大陆地区用户提供Minecraft相关文件的镜像. 但有可能存在延迟, 可以按照自己的需求进行选择.
由于网络环境问题, 在之前下载 Minecraft 可能是一件麻烦事, 但在现在, 我们有了 BMCLAPI[^7] 项目, 该项目无偿为大陆地区用户提供 Minecraft 相关文件的镜像. 但有可能存在延迟, 可以按照自己的需求进行选择.
### 下载并发数
提高下载并发数能够最大限度的利用您的网络, 但这不是越高越好的. 提高并发数量会对您的计算机和下载源都带来更高的负载, 由于木桶效应的存在, 本地下行带宽, 下载源上行带宽, 您的磁盘读写速度等这过程中的任何一环都会成为下载途中的瓶颈, 所以不要盲目提高并发数, 推荐的家庭带宽并发数在8~16之间.
提高下载并发数能够最大限度的利用您的网络, 但这不是越高越好的. 提高并发数量会对您的计算机和下载源都带来更高的负载, 由于木桶效应的存在, 本地下行带宽, 下载源上行带宽, 您的磁盘读写速度等这过程中的任何一环都会成为下载途中的瓶颈, 所以不要盲目提高并发数, 推荐的家庭带宽并发数在 8~16 之间.
### 代理设置
@ -163,18 +165,20 @@ OpenAL是一个跨平台的3D音频API可以用于在多个操作系统上播
## 参考文章
- [什么是JRE?](https://www.ibm.com/cn-zh/topics/jre "点击查看")
- [整合包自带 Java](/modpack/modpack-in-java.md "点击查看")
- [如何获取Minecraft的游戏日志?](https://memoryshadow.cn/index.php/2023/06/03/how-do-i-get-minecraft-game-logs/ "点击查看")
- [什么是JVM?](https://www.ibm.com/support/pages/ibm-i-%E4%B8%8Ajava-%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%AE%80%E4%BB%8B "点击查看")
- [什么是GC?](https://blog.csdn.net/weixin_44908159/article/details/123626886 "点击查看")
- [JVM 参数值](https://www.ibm.com/docs/zh/integration-bus/10.0?topic=command-jvm-parameter-values "点击查看")
- [BMCLAPI](https://bmclapidoc.bangbang93.com/ "点击查看")
[^1]: [什么是JRE?](https://www.ibm.com/cn-zh/topics/jre "点击查看")
[1]: https://www.ibm.com/cn-zh/topics/jre "什么是JRE?"
[2]: /modpack/modpack-in-java.md "整合包自带 Java"
[3]: https://memoryshadow.cn/index.php/2023/06/03/how-do-i-get-minecraft-game-logs/ "如何获取Minecraft的游戏日志?"
[4]: https://www.ibm.com/support/pages/ibm-i-%E4%B8%8Ajava-%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%AE%80%E4%BB%8B "什么是JVM?"
[5]: https://blog.csdn.net/weixin_44908159/article/details/123626886 "什么是GC?"
[6]: https://www.ibm.com/docs/zh/integration-bus/10.0?topic=command-jvm-parameter-values "JVM 参数值"
[7]: https://bmclapidoc.bangbang93.com/ "BMCLAPI"
<!--{% comment %}-->
[^2]: [整合包自带 Java](../_modpack/bundled-java.md "点击查看")
<!--{% endcomment %}--{{ '>' }}
[^2]: <a href="{% link _modpack/bundled-java.md %}" title="点击查看">整合包自带 Java</a>
{{ '<' }}!---->
[^3]: [如何获取Minecraft的游戏日志?](https://memoryshadow.cn/index.php/2023/06/03/how-do-i-get-minecraft-game-logs/ "点击查看")
[^4]: [什么是JVM?](https://www.ibm.com/support/pages/ibm-i-%E4%B8%8Ajava-%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%AE%80%E4%BB%8B "点击查看")
[^5]: [什么是GC?](https://blog.csdn.net/weixin_44908159/article/details/123626886 "点击查看")
[^6]: [JVM 参数值](https://www.ibm.com/docs/zh/integration-bus/10.0?topic=command-jvm-parameter-values "点击查看")
[^7]: [BMCLAPI](https://bmclapidoc.bangbang93.com/ "点击查看")