Project Zomboid

Project Zomboid

[B42.12]【BETA2合集更新】*务必查看说明及合集讨论组 呆猫个人自用合集 轻量二次元
Omar Gili Manbo  [开发者] 9 月 25 日 下午 6:59
[卡顿修复]Multi-Cpu Enhance *FIXED* 使用说明+我根据自己电脑改的配置文件
使用该操作前记得备份对应文件


需要替换配置的有
ProjectZomboid64.json
ProjectZomboid64.bat
路径位置 X:\SteamLibrary\steamapps\common\ProjectZomboid


这里提供最大支持 32G内存 和 16核心32线程CPU 的配置修改


ProjectZomboid64.json
---下一行开始复制---
{
"mainClass": "zombie/gameStates/MainScreenState",
"classpath": [
".",
"commons-compress-1.27.1.jar",
"commons-io-2.18.0.jar",
"istack-commons-runtime.jar",
"jassimp.jar",
"guava-23.0.jar",
"javacord-3.8.0-shaded.jar",
"javax.activation-api.jar",
"jaxb-api.jar",
"jaxb-runtime.jar",
"lwjgl.jar",
"lwjgl-natives-windows.jar",
"lwjgl-glfw.jar",
"lwjgl-glfw-natives-windows.jar",
"lwjgl-jemalloc.jar",
"lwjgl-jemalloc-natives-windows.jar",
"lwjgl-opengl.jar",
"lwjgl-opengl-natives-windows.jar",
"lwjgl_util.jar",
"sqlite-jdbc-3.48.0.0.jar",
"trove-3.0.3.jar",
"uncommons-maths-1.2.3.jar",
"imgui-binding-1.86.11-8-g3e33dde.jar",
"commons-codec-1.10.jar",
"javase-3.2.1.jar",
"totp-1.0.jar",
"core-3.2.1.jar"
],
"vmArgs": [
"-Djava.awt.headless=true",
"-Xmx20480m",
"-Xms9192m",
"-XX:+UseParallelGC",
"-XX:ParallelGCThreads=32",
"-XX:ConcGCThreads=12",
"-XX:+UseNUMA",
"-XX:+AlwaysPreTouch",
"-XX:+DisableExplicitGC",
"-Dzomboid.steam=1",
"-Dzomboid.znetlog=1",
"-Djava.library.path=win64/;.",
"-XX:-CreateCoredumpOnCrash",
"-XX:-OmitStackTraceInFastThrow",
"-Djogl.disable.openglcore=false",
"-XX:+OptimizeStringConcat"
],
"windows": {
"6.1": {
"vmArgs": [
"-XX:+UseParallelGC",
"-XX:G1NewSizePercent=20",
"-XX:G1ReservePercent=20",
"-XX:MaxGCPauseMillis=50",
"-XX:G1HeapRegionSize=32m"
]
},
"10.0.17134": {
"vmArgs": [
"-XX:+UseParallelGC",
"-XX:ZCollectionInterval=120",
"-XX:+UnlockExperimentalVMOptions",
"-XX:LargePageSizeInBytes=2m"
]
}
}
}
---复制到上一行---


ProjectZomboid64.bat
---下一行开始复制---
@setlocal enableextensions
@cd /d "%~dp0"
SET _JAVA_OPTIONS=

:: Set up classpath for Project Zomboid
SET PZ_CLASSPATH=.\guava-23.0.jar;commons-compress-1.27.1.jar;commons-io-2.18.0.jar;istack-commons-runtime.jar;jassimp.jar;javacord-3.8.0-shaded.jar;javax.activation-api.jar;jaxb-api.jar;jaxb-runtime.jar;lwjgl.jar;lwjgl-natives-windows.jar;lwjgl-glfw.jar;lwjgl-glfw-natives-windows.jar;lwjgl-jemalloc.jar;lwjgl-jemalloc-natives-windows.jar;lwjgl-opengl.jar;lwjgl-opengl-natives-windows.jar;lwjgl_util.jar;sqlite-jdbc-3.48.0.0.jar;trove-3.0.3.jar;uncommons-maths-1.2.3.jar;imgui-binding-1.86.11-8-g3e33dde.jar;commons-codec-1.10.jar;javase-3.2.1.jar;totp-1.0.jar;core-3.2.1.jar;./

:: Detect system hardware specifications
for /f "tokens=2 delims==" %%a in ('wmic OS get TotalVisibleMemorySize /value') do set /a total_mem=%%a/1024
for /f "tokens=2 delims==" %%a in ('wmic cpu get NumberOfCores /value') do set /a num_cores=%%a
for /f "tokens=2 delims==" %%a in ('wmic cpu get NumberOfLogicalProcessors /value') do set /a num_threads=%%a

:: Set memory allocation based on available RAM
if %total_mem% GTR 32000 (
SET MEM_MAX=20480m
SET MEM_MIN=9192m
) else if %total_mem% GTR 16000 (
SET MEM_MAX=10240m
SET MEM_MIN=4096m
) else if %total_mem% GTR 12000 (
SET MEM_MAX=8192m
SET MEM_MIN=2048m
) else if %total_mem% GTR 8000 (
SET MEM_MAX=6144m
SET MEM_MIN=2048m
) else (
SET MEM_MAX=4096m
SET MEM_MIN=1024m
)
:: Set thread pool and garbage collection settings based on CPU
if %num_cores% LEQ 2 (
set GC_THREADS=1
set CONCURRENT_THREADS=1
set FJ_PARALLELISM=2
) else if %num_cores% LEQ 4 (
set GC_THREADS=2
set CONCURRENT_THREADS=2
set FJ_PARALLELISM=4
) else if %num_cores% LEQ 8 (
set GC_THREADS=4
set CONCURRENT_THREADS=2
set FJ_PARALLELISM=6
) else if %num_cores% LEQ 16 (
set GC_THREADS=20
set CONCURRENT_THREADS=12
set FJ_PARALLELISM=32
) else (
set GC_THREADS=6
set CONCURRENT_THREADS=3
set FJ_PARALLELISM=9
)

:: Launch Project Zomboid with multi-core optimizations
echo Starting Project Zomboid with multi-core optimizations...
echo CPU: %num_cores% cores, %num_threads% threads
echo RAM: %total_mem% MB (Allocated: %MEM_MAX%)
echo Concurrent threads: %FJ_PARALLELISM%

".\jre64\bin\java.exe" ^
-verbose:class ^
-Djava.awt.headless=true ^
-Dzomboid.steam=1 ^
-Dzomboid.znetlog=1 ^
-XX:-CreateCoredumpOnCrash ^
-XX:-OmitStackTraceInFastThrow ^
-XX:+UseParallelGC ^
-XX:ZCollectionInterval=120 ^
-XX:ConcGCThreads=%CONCURRENT_THREADS% ^
-XX:+UnlockExperimentalVMOptions ^
-XX:+AlwaysPreTouch ^
-XX:+UseNUMA ^
-XX:+DisableExplicitGC ^
-Xmx%MEM_MAX% ^
-Xms%MEM_MIN% ^
-Djava.library.path=./win64/;./ ^
-Dguava.library.path=. ^
-Djogl.disable.openglcore=false ^
-XX:+OptimizeStringConcat ^
-Dzomboid.multithreading=true ^
-Dzomboid.thread.model=worksteal ^
-Dzomboid.thread.priority=high ^
-Dzomboid.threadpool.size=%num_cores% ^
-Djava.util.concurrent.ForkJoinPool.common.parallelism=%FJ_PARALLELISM% ^
-cp %PZ_CLASSPATH% ^
zombie.gameStates.MainScreenState %1 %2

:: Fallback launch with reduced memory settings if the main launch fails
IF %ERRORLEVEL% NEQ 0 (
echo Main launch failed, attempting with reduced memory settings...
".\jre64\bin\java.exe" ^
-verbose:class ^
-Djava.awt.headless=true ^
-Dzomboid.steam=1 ^
-Dzomboid.znetlog=1 ^
-XX:-CreateCoredumpOnCrash ^
-XX:-OmitStackTraceInFastThrow ^
-XX:+UseParallelGC ^
-Xmx3072m ^
-Xms1024m ^
-Djava.library.path=./win64/;./ ^
-Dguava.library.path=. ^
-Dzomboid.multithreading=true ^
-Dzomboid.threadpool.size=2 ^
-cp %PZ_CLASSPATH% ^
zombie.gameStates.MainScreenState %1 %2
)

PAUSE
---复制到上一行---


结束

切记备份原始文件,有问题直接回退修改
切记备份原始文件,有问题直接回退修改
切记备份原始文件,有问题直接回退修改
最后由 Omar Gili Manbo 编辑于; 9 月 28 日 下午 6:35
< >
正在显示第 1 - 3 条,共 3 条留言
GAMIN 9 月 25 日 下午 9:07 
牛逼牛逼
提款机 10 月 1 日 上午 9:33 
ProjectZomboid64.bat这个文件找不到啊
归投 10 月 3 日 上午 12:59 
口瓜,你做的好口阿:steamthumbsup:
< >
正在显示第 1 - 3 条,共 3 条留言
每页显示数: 1530 50