游戏的窗口大小与预设大小不符——PCL2 v2.8.3
检查项
- [X] 我已在 Issues 页面 和 常见&难检反馈及问题列表 中搜索,确认了这一 Bug 未被提交过。
描述
根据已有的游戏窗口大小问题新看法(来源:issues/3463 1.12.2-、optifine/forge不再受理 issues/1077 大致是对的就行了 Orz)
- 拿原版=<1.12.2来说,使用Java8运行总会出现窗口大小不符合预设的问题。例如有时游戏窗口宽高比例正确但却整体呈现缩放效果(以设定的1920x960为标准);有时又是高边正确,宽边短于1920。。。
- 使用任意方法使游戏启动后窗口大小貌似正确后,会发现,启动器内设置的窗口大小实打实的转换为了游戏窗口大小,连游戏的标题栏都算进去了,然而游戏F3界面里的分辨率小于1920x960一些些。
- 然而,仅针对java8启动=<1.12.2来说,这俩bug在PCL2 v2.3.2 (260.50)中并不存在,至少在我这边好好的。所以,也许让新的代码回退到之前的版本是更好的选择。。。 (电脑详情:牙膏厂i5-11300H、可用内存15.8g(MC=<1.12.2分配3g)、win10 21H2 64bit、显示器分辨率2520x1680、缩放与布局175%)
重现步骤
- 使用较新版本PCL2 (以v2.8.3 332.50为例);
- 在窗口大小中自定义一个您显示器能允许的窗口大小;
- 启动游戏(此处以1.7.10 vanilla 为例, 游戏内设置均为默认, 游戏语言已改为英文且不使用unicode字体),在游戏内F2截图,查看截图的分辨率;
- 发现了问题。。。
日志与附件
原版1.7.10中,预设1920x960情况下: 使用PCL2 v2.8.3,游戏内为1096x518(jre1.8.0_51)、1918x906(jdk17.0.0)(真的是906,不是960) 使用PCL2 v2.3.2,游戏内为1920x960(jre1.8.0_51)、1920x960(jdk17.0.0)
*日志文件(Old表示使用PCL2 v2.3.2,xxxJ8表示使用java8) Log1J17.txt Log2J17.txt Log3J17.txt Log4J17.txt Log5J17.txt LatestLaunchJ17.bat.TXT
Log1J8.txt Log2J8.txt Log3J8.txt Log4J8.txt Log5J8.txt LatestLaunchJ8.bat.TXT
(不知道为什么v2.3.2只输出一个log文件,无论我启动多少次启动器...) {OldLog1J17.txt](https://github.com/user-attachments/files/16822797/OldLog1J17.txt) {OldLatestLaunchJ17.bat.TXT](https://github.com/user-attachments/files/16822796/OldLatestLaunchJ17.bat.TXT)
{OldLog1J8.txt](https://github.com/user-attachments/files/16822806/OldLog1J8.txt) {OldLatestLaunchJ8.bat.TXT](https://github.com/user-attachments/files/16822807/OldLatestLaunchJ8.bat.TXT)
**需要说明的是,本次出演的俩java均来自 www.oracle.com ,一个是jre1.8.0_51,一个是jdk17.0.0 。
#1077,但我无法确定是否属于相同情况,等待第二位社区协作者来看看
你拿官启测测不得了
估计。。。直接把PCL2 v2.3.2的"自定义窗口大小"给抄过来算了。。。
When using other launchers (such as Minecraft Launcher, HMCL), the launcher settings, launch parameters, and the actual game resolution (based on the resolution of the debug screen or screenshot) are consistent, regardless of whether Forge is used within these game versions. 1.13 and above, other Java distributions (I used Java 8 provided by Mojang), whether or not OptiFine is used, and other launchers have not yet been tested.
In my experiments, only PCL had resolution inconsistencies within these version ranges: starting with the launch parameters were inconsistent.
I am not sure how PCL handles resolution settings, but I think it needs to match the actual resolution of the in-game debug screen/screenshot. Some other launchers do this.
By the way, the scale of #3463 is 200%, while my experiments all used 100%. I am not sure if this has anything to do with scale.
使用其他一些启动器时(例如 Minecraft Launcher、HMCL),启动器的设置、启动时的参数,以及游戏的实际分辨率(以调试屏幕或截屏的分辨率为准)是保持一致的,无论在这些游戏版本范围内是否使用 Forge。1.13 以上、其他 Java 发行版(我使用了 Mojang 提供的 Java 8)、是否使用 OptiFine、其他启动器暂时还未测试。
在我的试验中,只有 PCL 在这些版本范围内会出现分辨率不一致的问题:从启动参数开始就是不一致的。
我暂时还不太清楚 PCL 如何处理分辨率的设置,但我觉得需要向游戏内调试屏幕/截屏的实际分辨率看齐。这一点其他一些启动器做到了。
顺带一提,#3463 的缩放为 200%,而我的试验中均使用 100%。不确定这是否与缩放有关。
@LTCatt
EDIT: A term was revised. 一个术语写错了。
@LTCatt @Light-Beacon
Delete the comment above please. 不要下载这个文件!
PCL 在该功能上以窗口包含标题栏的完整大小作为基准,这是为了匹配“与启动器尺寸一致”选项。
使用反馈者提供的 1.7.10 自定义大小,在 150% 缩放 下使用 JRE 8u321 和 JDK 17.0.2 分别测试,含标题栏的窗口像素大小与设置一致,没能复现。 注:1.12.2 Forge 自己存在 bug,导致高度设置无效。
啊?就是说,窗口像素大小设置是故意包含了标题栏的窗口的? 我还以为必须以游戏内F3界面所显示的分辨率对的上呢(如果是1.7.10,F3界面没法显示分辨率,可通过在游戏内F2截图后查看截图的分辨率)。 但仍要强调的是,使用最新版PCL2仍能复现该bug。所以我现在依然在使用PCL2 v2.3.2。 算了,修不好也没事,用户的使用设备不同、状态不同,让代码出现玄学性问题很常见。启动完游戏我手动调一下就行了。
窗口大小 对于一个有标题栏的窗口应当为包含标题栏的大小
游戏内 F3 界面显示的是不包含标题栏的大小……
另外,不建议使用过老的 PCL 版本……
PCL 在该功能上以窗口包含标题栏的完整大小作为基准,这是为了匹配“与启动器尺寸一致”选项。
使用反馈者提供的 1.7.10 自定义大小,在 150% 缩放 下使用 JRE 8u321 和 JDK 17.0.2 分别测试,含标题栏的窗口像素大小与设置一致,没能复现。 注:1.12.2 Forge 自己存在 bug,导致高度设置无效。
有除了反馈者以外的其他人可以复现么?
使用快照版 2.8.10 尝试复现。Minecraft 窗口外观的大小分别为(使用 OBS 窗口采集功能): DPI = 168 (缩放 175%), 1100*564 (JRE-8u51), 1922*952 (JDK-17.0.0), Log1.txt; DPI = 96 (缩放 100%), 1920*956 (JRE-8u51), 1920*956 (JDK-17.0.0), Log2.txt.
这是为了匹配“与启动器尺寸一致”选项。
好像也不怎么匹配的说......(
怪了,难道 JRE 8u321 复现不了?我之后再看看
https://github.com/Hex-Dragon/PCL2/issues/3463#issuecomment-2517763559