Skip to content

Дискретна відеокарта ​

Плагін dgpuj з @opys/minecraft.

Запускає гру на швидкій відеокарті.

js
// opys.config.mjs
export default defineConfig({
  plugins: [
    minecraft({ version: '1.21.1' }),
    java({ version: '21' }),
    dgpuj(),
  ],
  manifest: {
    command: '@dgpuj.bin',
    args: [
      '@minecraft.command',
      '@minecraft.jvmArgs',
      '@minecraft.mainClass',
      '@minecraft.gameArgs',
    ],
    workdir: '${game_directory}',
  },
});

На ноутбуці з двома відеокартами Windows і Linux вибирають одну для кожної програми і часто вибирають повільну для Java.

Чому лаунчер не може виправити це ззовні: вибір належить процесу, який відкриває вікно. Тому dgpuj стає цим процесом. Він просить швидку карту, а потім запускає Java всередині себе.

Параметри ​

ПараметрЩо робить
versionБез нього це випуск, для якого написана ця версія opys. Або 'latest', 'prerelease' чи тег ('v0.6.0').
platformsЯкі платформи його отримують.
repo, token, apiBaseЗвідки він завантажується, і токен GitHub.

Що він додає ​

ВидЩо
ФайлиПо одному малому архіву на платформу.
Запускbin.
Змінніdgpuj_dir, dgpuj_bin.
СередовищеНемає.

Кожен пункт нижче: що це таке і як воно потрапляє в маніфест.

Файли · по одному архіву на платформу ​

П'ять архівів. rules вибирають той, що для комп'ютера гравця, а extract дістає з нього єдиний виконуваний файл.

js
// opys.config.mjs
export default defineConfig({
  plugins: [
    minecraft({ version: '1.21.1' }),
    java({ version: '21' }),
    dgpuj(),
  ],
  manifest: {
    command: '@dgpuj.bin',
    args: [
      '@minecraft.command',
      '@minecraft.jvmArgs',
      '@minecraft.mainClass',
      '@minecraft.gameArgs',
    ],
    workdir: '${game_directory}',
  },
});
jsonc
// у маніфесті
{
  "path": "${dgpuj_dir}/dgpuj-x86_64-pc-windows-msvc.zip",
  "source": { "url": "https://github.com/harmoniya-net/dgpuj/releases/download/v0.6.0/dgpuj-x86_64-pc-windows-msvc.zip" },
  "size": 947,
  "rules": ["allow.os.windows", "allow.arch.x86_64"],
  "integrity": { "sha256": "d90a21ccc99625b450b897b10ac34bd4e36b7fbf03cbd7172133160f2d794fa4" },
  "extract": { "file": "dgpuj.exe", "into": "${dgpuj_dir}/dgpuj.exe" }
}

Змінні ​

Де знаходиться виконуваний файл, для кожної ОС.

js
// opys.config.mjs
export default defineConfig({
  plugins: [
    minecraft({ version: '1.21.1' }),
    java({ version: '21' }),
    dgpuj(),
  ],
  manifest: {
    command: '@dgpuj.bin',
    args: [
      '@minecraft.command',
      '@minecraft.jvmArgs',
      '@minecraft.mainClass',
      '@minecraft.gameArgs',
    ],
    workdir: '${game_directory}',
  },
});
jsonc
// у маніфесті
"vars": {
  "dgpuj_dir": "${root}/dgpuj",
  "dgpuj_bin": [
    { "value": "${dgpuj_dir}/dgpuj.exe", "rules": "allow.os.windows" },
    { "value": "${dgpuj_dir}/dgpuj", "rules": "allow.os.linux" },
    { "value": "${dgpuj_dir}/dgpuj", "rules": "allow.os.osx" }
  ]
}

Запуск · @dgpuj.bin ​

Виконуваний файл dgpuj. Він іде в command, бо саме він має бути програмою, яка стартує.

js
// opys.config.mjs
export default defineConfig({
  plugins: [
    minecraft({ version: '1.21.1' }),
    java({ version: '21' }),
    dgpuj(),
  ],
  manifest: {
    command: '@dgpuj.bin',
    args: [
      '@minecraft.command',
      '@minecraft.jvmArgs',
      '@minecraft.mainClass',
      '@minecraft.gameArgs',
    ],
    workdir: '${game_directory}',
  },
});
jsonc
// у маніфесті
"command": "${dgpuj_bin}"

Це єдиний випадок, коли command приходить не від завантажувача.

Чому версія типово не найновіша: те, що ви пишете в args, це власний командний рядок dgpuj, і він змінювався між випусками. Кожна версія opys називає той випуск, який описує її документація, тож збірка отримує саме його, і той самий у кожному збиранні.

Як вказати, яку Java запускати ​

js
args: ['@forge.command', '@forge.jvmArgs', …],

dgpuj стає перед звичайним рядком запуску. Перший аргумент це java, яку він має запустити, а це вже і є command завантажувача. Тож command завантажувача переходить із command на початок args.

Це може бути шлях або просто слово java, тому java({ system: true }) тут теж працює.

Чому dgpuj не дає цього сам: яка Java запускає гру, каже завантажувач. За такої назви конфігурація без завантажувача падає під час збирання замість старту зі зламаним шляхом.

Java 8 у Windows це виняток. Вона знаходить власні файли за місцем свого запускача, тому dgpuj має лежати поруч із java.exe, у теці bin JDK, і отримати просто слово java.

Варто знати ​

  • Він постачається для Windows і macOS на x86_64 і ARM, а для Linux на x86_64. Збірки Linux ARM немає.
  • На macOS примушувати нічого, тому він лише запускає Java.
  • На Linux він діє, лише коли присутній пропрієтарний драйвер NVIDIA.