优化文章“设置项详解” (#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,6 +41,7 @@ author: MemoryShadow
- [代理设置](#代理设置) - [代理设置](#代理设置)
- [特别鸣谢](#特别鸣谢) - [特别鸣谢](#特别鸣谢)
- [参考文章](#参考文章) - [参考文章](#参考文章)
<!--{% endcomment %}-->
## 全局游戏设置 ## 全局游戏设置
@ -47,13 +49,13 @@ author: MemoryShadow
### Java路径 ### 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, 就应该使用这些技巧配置好你的计算机环境.
@ -69,7 +71,7 @@ author: MemoryShadow
这是当前主流启动器都支持的功能, 这个功能能够在尽可能共享依赖库的前提下, 将不同的游戏版本隔离开来, 避免你安装的模组加载器被应用在错误的版本上或是加载到不兼容的版本, 同时最大程度的减少磁盘占用. 这是当前主流启动器都支持的功能, 这个功能能够在尽可能共享依赖库的前提下, 将不同的游戏版本隔离开来, 避免你安装的模组加载器被应用在错误的版本上或是加载到不兼容的版本, 同时最大程度的减少磁盘占用.
此功能的底层原理不在此处过多赘述, 对于用户来说最大的区别就是游戏的实际目录发生了改变, 例如: [提取游戏日志的方式][3]被改变了 此功能的底层原理不在此处过多赘述, 对于用户来说最大的区别就是游戏的实际目录发生了改变, 例如: 提取游戏日志的方式[^3]被改变了
原本游戏目录默认应该在 `.minecraft` 文件夹, 但在开启版本隔离后, 你实际的游戏目录被切换到了 `.minecraft/versions/游戏版本名称`, 这会给一些新手或是习惯于使用正版启动器的玩家带来额外的困惑. 原本游戏目录默认应该在 `.minecraft` 文件夹, 但在开启版本隔离后, 你实际的游戏目录被切换到了 `.minecraft/versions/游戏版本名称`, 这会给一些新手或是习惯于使用正版启动器的玩家带来额外的困惑.
@ -79,7 +81,7 @@ author: MemoryShadow
这与你计算机上的 RAM 存储器容量有关, 一般来说选择 "自动分配内存" 选项会得到一个相对合适的值. 但也许会有一些 CPU 性能较差希望用内存来交换的玩家愿意分配更多的内存. 这与你计算机上的 RAM 存储器容量有关, 一般来说选择 "自动分配内存" 选项会得到一个相对合适的值. 但也许会有一些 CPU 性能较差希望用内存来交换的玩家愿意分配更多的内存.
但我告诉您, 这里只是在调整[JVM][4]能够使用的最大内存容量, 只有在模组/Minecraft官方开发者没有手动控制[GC][5]行为的时候, 才能如你预期的通过内存交换CPU时间 但我告诉您, 这里只是在调整 JVM[^4] 能够使用的最大内存容量, 只有在模组 / Minecraft 官方开发者没有手动控制 GC[^5] 行为的时候, 才能如你预期的通过内存交换 CPU 时间
### 启动器可见性 ### 启动器可见性
@ -112,7 +114,7 @@ author: MemoryShadow
### JVM参数 ### JVM参数
调整JVM参数能够更细腻的控制JVM的行为, 例如是否压缩指针(用CPU换内存), 是否频繁GC(还是用CPU换内存)等等, 这些一般都可以通过类似于[这篇文章][6]这样进行调整. 不过要注意的一点是, JVM参数是由实际实现决定的, 是否使用以及是否支持还要看具体的JVM实现. 调整JVM参数能够更细腻的控制 JVM 的行为, 例如是否压缩指针(用 CPU 换内存), 是否频繁 GC(还是用 CPU 换内存)等等, 这些一般都可以通过类似于这篇文章[^6]这样进行调整. 不过要注意的一点是, JVM 参数是由实际实现决定的, 是否使用以及是否支持还要看具体的 JVM 实现.
### 本地库路径 ### 本地库路径
@ -120,7 +122,7 @@ author: MemoryShadow
### GLFW ### GLFW
GLFW是一个轻量级的C语言库用于创建和管理OpenGL在多个操作系统中的上下文处理用户输入以及获取时间和帧缓冲。它支持多个窗口、全屏模式、窗口模式、多个输入设备和剪贴板。GLFW是一个独立于操作系统的库可以在Windows、Mac OS X和Linux等多个平台上使用。 GLFW是一个轻量级的C语言库用于创建和管理 OpenGL 在多个操作系统中的上下文处理用户输入以及获取时间和帧缓冲。它支持多个窗口、全屏模式、窗口模式、多个输入设备和剪贴板。GLFW是一个独立于操作系统的库可以在 Windows, MacOS, Linux 等多个平台上使用。
在Linux下系统自带的窗口管理器例如 xorg通常已经包含了可以与 OpenGL 集成的窗口管理器。因此,使用系统自带的窗口管理器可以避免与其他项目的库冲突,并确保对于系统提供的功能和特性有最好的支持。此外,使用系统自带的窗口管理器也能够最大限度地减少安装和配置上的复杂性。 在Linux下系统自带的窗口管理器例如 xorg通常已经包含了可以与 OpenGL 集成的窗口管理器。因此,使用系统自带的窗口管理器可以避免与其他项目的库冲突,并确保对于系统提供的功能和特性有最好的支持。此外,使用系统自带的窗口管理器也能够最大限度地减少安装和配置上的复杂性。
@ -130,9 +132,9 @@ GLFW是一个轻量级的C语言库用于创建和管理OpenGL在多个操作
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 用户推荐使用系统自带的
## 通用 ## 通用
@ -146,7 +148,7 @@ OpenAL是一个跨平台的3D音频API可以用于在多个操作系统上播
### 下载源 ### 下载源
由于网络环境问题, 在之前下载Minecraft可能是一件麻烦事, 但在现在, 我们有了[BMCLAPI][7]项目, 该项目无偿为大陆地区用户提供Minecraft相关文件的镜像. 但有可能存在延迟, 可以按照自己的需求进行选择. 由于网络环境问题, 在之前下载 Minecraft 可能是一件麻烦事, 但在现在, 我们有了 BMCLAPI[^7] 项目, 该项目无偿为大陆地区用户提供 Minecraft 相关文件的镜像. 但有可能存在延迟, 可以按照自己的需求进行选择.
### 下载并发数 ### 下载并发数
@ -163,18 +165,20 @@ OpenAL是一个跨平台的3D音频API可以用于在多个操作系统上播
## 参考文章 ## 参考文章
- [什么是JRE?](https://www.ibm.com/cn-zh/topics/jre "点击查看") [^1]: [什么是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]: https://www.ibm.com/cn-zh/topics/jre "什么是JRE?" <!--{% comment %}-->
[2]: /modpack/modpack-in-java.md "整合包自带 Java" [^2]: [整合包自带 Java](../_modpack/bundled-java.md "点击查看")
[3]: https://memoryshadow.cn/index.php/2023/06/03/how-do-i-get-minecraft-game-logs/ "如何获取Minecraft的游戏日志?" <!--{% endcomment %}--{{ '>' }}
[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?" [^2]: <a href="{% link _modpack/bundled-java.md %}" title="点击查看">整合包自带 Java</a>
[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" [^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/ "点击查看")