--- title: "设置项详解" permalink: /launcher/set-item-details.html date: 2023-6-09 10:26:00 +0800 categories: 启动器 toc: true --- ![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fdocs.hmcl.net%2Flauncher%2Fset-item-details.html&count_bg=%233E4245&title_bg=%233E4245&icon=&icon_color=%23E7E7E7&title=%F0%9F%91%80&edge_flat=false) > 本文由 MemoryShadow 编写。 ## 引言 本篇文章将从"全局游戏设置", "通用", "外观"与"下载"这几个维度, 详细的为您介绍HMCL设置中各个选项的作用, 对于一些能够"见名知意"的条目, 在本篇文章中不过多讨论. ### 约束与注意 本篇文章是在HMCL v3.5.3.230版本中编写的, 如果您使用的是旧版本, 请注意有些选项可能不存在. ## 目录 - [引言](#引言) - [约束与注意](#约束与注意) - [目录](#目录) - [全局游戏设置](#全局游戏设置) - [Java路径](#java路径) - [自动选择合适的Java](#自动选择合适的java) - [版本隔离](#版本隔离) - [游戏内存](#游戏内存) - [启动器可见性](#启动器可见性) - [游戏启动后结束启动器](#游戏启动后结束启动器) - [游戏启动后隐藏启动器](#游戏启动后隐藏启动器) - [保持启动器可见](#保持启动器可见) - [隐藏启动器并在游戏结束后重新打开](#隐藏启动器并在游戏结束后重新打开) - [游戏参数](#游戏参数) - [JVM参数](#jvm参数) - [本地库路径](#本地库路径) - [GLFW](#glfw) - [OpenAL](#openal) - [通用](#通用) - [外观](#外观) - [下载](#下载) - [下载源](#下载源) - [下载并发数](#下载并发数) - [代理设置](#代理设置) - [特别鸣谢](#特别鸣谢) - [参考文章](#参考文章) ## 全局游戏设置 这是HMCL中的第一个设置项, 也是最重要的设置项之一, 它决定了HMCL在启动游戏时的行为. ### Java路径 众所周知, Minecraft是由Java编写的, 因此, 在启动游戏时, HMCL需要知道Java([JRE][1])的安装路径, 才能启动游戏. 由于HMCL本身就是一个Java程序, 一般能正常启动HMCL就能至少在计算机上找到一个JRE. 但也会由于一些未知因素导致无法找到JRE, 这时, 就需要手动指定JRE的安装路径. 我们先来讨论能够自动识别的情况: 在HMCL启动时, 会根据注册表项, 环境变量, 以及[HMCL自身的启动路径][2]来寻找JRE. 如果找到了, 就会在"Java路径"这一栏显示出来, 并且在启动游戏时使用这个路径. 上述的情况几乎涵盖了所有, 如果你希望HMCL能够自动找到Java, 就应该使用这些技巧配置好你的计算机环境. 接下来我们讨论不能自动识别的情况: 通常我们安装解压版本的JRE都不会被HMCL自动找到, 这时, 就需要手动指定JRE的安装路径. 你可以展开"Java路径"条目(通常是点击条目右侧的三角), 在展开的下拉列表中选中"自定义"条目后点击右侧的文件夹图标, 在弹出的对话框中选择你Java可执行文件的路径. #### 自动选择合适的Java 在1.16.5版本后, Minecraft的最低支持Java版本从8提升到了16. HMCL可以在已添加的版本中找到最合适的Java版本, 并在启动游戏时使用这个版本. 整个过程不需要人力介入. ### 版本隔离 这是当前主流启动器都支持的功能, 这个功能能够在尽可能共享依赖库的前提下, 将不同的游戏版本隔离开来, 避免你安装的模组加载器被应用在错误的版本上或是加载到不兼容的版本, 同时最大程度的减少磁盘占用. 此功能的底层原理不在此处过多赘述, 对于用户来说最大的区别就是游戏的实际目录发生了改变, 例如: [提取游戏日志的方式][3]被改变了 原本游戏目录默认应该在`.minecraft`文件夹, 但在开启版本隔离后, 你实际的游戏目录被切换到了`.minecraft/versions/游戏版本名称`, 这会给一些新手或是习惯于使用正版启动器的玩家带来额外的困惑. 通常来说, 只要你玩的不是未修改过的版本, 都应该打开版本隔离避免引发错误, 这也能在你删除某个游戏版本时将日志等数据一并清除. ### 游戏内存 这与你计算机上的RAM存储器容量有关, 一般来说选择"自动分配内存"选项会得到一个相对合适的值. 但也许会有一些CPU性能较差希望用内存来交换的玩家愿意分配更多的内存. 但我告诉您, 这里只是在调整[JVM][4]能够使用的最大内存容量, 只有在模组/Minecraft官方开发者没有手动控制[GC][5]行为的时候, 才能如你预期的通过内存交换CPU时间 ### 启动器可见性 这个条目有4个选项, 分别是: - 游戏启动后结束启动器 - 游戏启动后隐藏启动器 - 保持启动器可见 - 隐藏启动器并在游戏结束后重新打开 #### 游戏启动后结束启动器 这个选项特别推荐低性能机器使用, 这能节约一些计算机消耗. 代价是启动器无法很好的捕捉您的游戏崩溃信息与日志. #### 游戏启动后隐藏启动器 这个选项会在您游戏崩溃时收集您计算机上的相关崩溃信息以供向相关开发人员进行反馈. 代价是需要额外消耗一些计算机资源. #### 保持启动器可见 这个选项会在整个游戏过程中保持启动器可见, 这会在需要同时启动多个游戏的时候起到帮助. 代价是要消耗更多的计算机资源. #### 隐藏启动器并在游戏结束后重新打开 如果您需要频繁的在不同版本中切换游戏, 例如测试您的模组兼容性, 评估各版本之间的信息, 那么这个选项将会起到一定的帮助作用. ### 游戏参数 关于这点, 我没有找到更多的, 能与游戏同时使用的启动参数 ### JVM参数 调整JVM参数能够更细腻的控制JVM的行为, 例如是否压缩指针(用CPU换内存), 是否频繁GC(还是用CPU换内存)等等, 这些一般都可以通过类似于[这篇文章][6]这样进行调整. 不过要注意的一点是, JVM参数是由实际实现决定的, 是否使用以及是否支持还要看具体的JVM实现. ### 本地库路径 在一些例如M1芯片之类的设备上, 通用库类可能都不能正常的工作, 要使用版本特殊提供的库类才能令其正常的工作, 你可以使用这个选项对其进行替换 ### GLFW GLFW是一个轻量级的C语言库,用于创建和管理OpenGL在多个操作系统中的上下文,处理用户输入,以及获取时间和帧缓冲。它支持多个窗口、全屏模式、窗口模式、多个输入设备和剪贴板。GLFW是一个独立于操作系统的库,可以在Windows、Mac OS X和Linux等多个平台上使用。 在Linux下,系统自带的窗口管理器(例如xorg)通常已经包含了可以与OpenGL集成的窗口管理器。因此,使用系统自带的窗口管理器可以避免与其他项目的库冲突,并确保对于系统提供的功能和特性有最好的支持。此外,使用系统自带的窗口管理器也能够最大限度地减少安装和配置上的复杂性。 故此, Linux玩家推荐使用系统自带的 ### OpenAL OpenAL是一个跨平台的3D音频API,可以用于在多个操作系统上播放音效和音乐。它支持的特性包括定位、重放、3D效果、回声、滤波等。可以使用OpenAL提供的函数对声源和听者的位置、方向、速度等进行控制,以实现3D音频效果。 在Linux下,OpenAL通常可以与ALSA(高级Linux音频体系结构)或PulseAudio(一种现代的音频子系统)进行集成。使用系统自带的音频支持库,可以确保应用程序与底层音频硬件和设备之间的兼容性,并提供最佳的音频性能和功能。此外,使用OpenAL也可以让应用程序具有跨平台的特性,可以在多个操作系统上使用相同的代码和资源来实现音频效果。 故此, Linux玩家推荐使用系统自带的 ## 通用 这里提供了一些HMCL的通用参数, 例如启动器是否自动检查更新, 文件下载的缓存目录存放位置, 程序界面的显示语言等. 这些基本都属于"见名知意"的范畴, 不需要过多讨论. ## 外观 这里提供了一些HMCL的外观参数, 例如启动器的主题颜色, 动画显示, 背景图片, 字体等. 这些基本都属于"见名知意"的范畴, 不需要过多讨论. ## 下载 ### 下载源 由于网络环境问题, 在之前下载Minecraft可能是一件麻烦事, 但在现在, 我们有了[BMCLAPI][7]项目, 该项目无偿为大陆地区用户提供Minecraft相关文件的镜像. 但有可能存在延迟, 可以按照自己的需求进行选择. ### 下载并发数 提高下载并发数能够最大限度的利用您的网络, 但这不是越高越好的. 提高并发数量会对您的计算机和下载源都带来更高的负载, 由于木桶效应的存在, 本地下行带宽, 下载源上行带宽, 您的磁盘读写速度等这过程中的任何一环都会成为下载途中的瓶颈, 所以不要盲目提高并发数, 推荐的家庭带宽并发数在8~16之间. ### 代理设置 用于解决部分网络不佳或需要连接特殊网段的工具, 能够连接到内网服务器之类的. ## 特别鸣谢 - huangyuhui - GitHub Copilot ## 参考文章 - [什么是JRE?](https://www.ibm.com/cn-zh/topics/jre "点击查看") - [整合包自带 Java](http://geekdaxue.co/read/HMCL-docs-zh/pages-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?" [2]: http://geekdaxue.co/read/HMCL-docs-zh/pages-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"