Heroes of the Storm

I’m having some trouble running Heroes of the Storm through Bottles.

I can successfully run Battle.net + Heroes of the Storm through Steam (via Proton GE), but unfortunately I cannot replicate this within Bottles. I’d love to use Bottles because it’s so much easier to configure things, and the UI is way nicer. :slight_smile:

When I run through Bottles, Heroes of the Storm crashes with a e_gfxErrorAPIError. Here are the console logs:

0c1c:err:module:open_builtin_so_file failed to load .so lib "/var/home/<user>/.var/app/com.usebottles.bottles/data/bottles/runners/GE-Proton7-10/files/lib64/wine/x86_64-unix/wineopenxr.dll.so"
sh: line 1: glxinfo: command not found
sh: line 1: glxinfo: command not found
sh: line 1: glxinfo: command not found
01c4:err:kerberos:kerberos_LsaApInitializePackage no Kerberos support, expect problems

I also used Proton-GE within Bottles in hopes that the configuration would be the same as within Steam, but no luck. I assume there’s a missing dependency somewhere but I’m not sure how to debug it. For what it’s worth, I used the Battle.net installer through the Installers feature to initially configure this bottle.

Here’s my bottle.yml:

Arch: win64
Creation_Date: '2022-03-13 20:18:21.574290'
Custom_Path: false
DLL_Overrides: {}
DXVK: dxvk-1.10
Environment: Gaming
Environment_Variables: {}
External_Programs:
    Battle.net.exe:
        arguments: ''
        executable: Battle.net.exe
        name: Battle.net
        path: /var/home/<user>/.var/app/com.usebottles.bottles/data/bottles/bottles/battlenet/drive_c/Program
            Files (x86)/Battle.net/Battle.net.exe
Installed_Dependencies:
- msls31
- riched20
- arial32
- vcredist2015
LatencyFleX: ''
Latest_Executables: []
NVAPI: dxvk-nvapi-v0.5.3
Name: battlenet
Parameters:
    aco_compiler: false
    custom_dpi: 96
    discrete_gpu: true
    dxvk: true
    dxvk_hud: false
    dxvk_nvapi: false
    fixme_logs: false
    fsr: false
    fsr_level: 5
    fullscreen_capture: false
    gamemode: true
    gamescope: false
    gamescope_borderless: false
    gamescope_fps: 0
    gamescope_fps_no_focus: 0
    gamescope_fullscreen: true
    gamescope_game_height: 0
    gamescope_game_width: 0
    gamescope_scaling: false
    gamescope_window_height: 0
    gamescope_window_width: 0
    latencyflex: false
    mangohud: true
    pulseaudio_latency: true
    sync: esync
    take_focus: false
    use_runtime: false
    virtual_desktop: false
    virtual_desktop_res: 1280x720
    vkd3d: false
Path: battlenet
Runner: GE-Proton7-10
State: 0
Uninstallers:
    arial32: false
    msls31: false
    riched20: false
    vcredist2015: true
Update_Date: '2022-03-27 15:58:11.823894'
VKD3D: vkd3d-proton-2.5
Versioning: false
Windows: win10
WorkingDir: ''

I’m running on Silverblue 35 with an NVIDIA 3080.

Does it works using Caffe runner?

@mirkobrombin Thanks for the reply! I tried it before and it didn’t work, but I hadn’t checked the logs last time. They’re below, but it seems the revealing aspect of it is that it’s missing msvproc.dll and msmpeg2vdec.dll.

info:  Game: Battle.net.exe
info:  DXVK: v1.10
info:  Built-in extension providers:
info:    Win32 WSI
info:    OpenVR
info:    OpenXR
info:  OpenVR: could not open registry key, status 2
info:  OpenVR: Failed to locate module
info:  Enabled instance extensions:
info:    VK_KHR_get_surface_capabilities2
info:    VK_KHR_surface
info:    VK_KHR_win32_surface
INFO: process Battle.net.exe is blacklisted in MangoHud
INFO: process Battle.net.exe is blacklisted in MangoHud
[2022-03-28 09:09:40.031] [MANGOHUD] [info] [config.cpp:114] skipping config: '/var/home/<user>/.var/app/com.usebottles.bottles/config/MangoHud/wine-Battle.net.conf' [ not found ]
[2022-03-28 09:09:40.031] [MANGOHUD] [info] [config.cpp:114] skipping config: '/var/home/<user>/.var/app/com.usebottles.bottles/data/bottles/runners/caffe-7.2/bin/MangoHud.conf' [ not found ]
[2022-03-28 09:09:40.031] [MANGOHUD] [info] [config.cpp:114] skipping config: '/var/home/<user>/.var/app/com.usebottles.bottles/config/MangoHud/wine-preloader.conf' [ not found ]
[2022-03-28 09:09:40.031] [MANGOHUD] [info] [config.cpp:114] skipping config: '/var/home/<user>/.var/app/com.usebottles.bottles/config/MangoHud/MangoHud.conf' [ not found ]
info:  NVIDIA GeForce RTX 3080:
info:    Driver: 510.47.3
info:    Vulkan: 1.3.194
info:    Memory Heap[0]:
info:      Size: 10240 MiB
info:      Flags: 0x1
info:      Memory Type[7]: Property Flags = 0x1
info:      Memory Type[10]: Property Flags = 0x7
info:    Memory Heap[1]:
info:      Size: 11997 MiB
info:      Flags: 0x0
info:      Memory Type[0]: Property Flags = 0x0
info:      Memory Type[1]: Property Flags = 0x0
info:      Memory Type[2]: Property Flags = 0x0
info:      Memory Type[3]: Property Flags = 0x0
info:      Memory Type[4]: Property Flags = 0x0
info:      Memory Type[5]: Property Flags = 0x0
info:      Memory Type[6]: Property Flags = 0x0
info:      Memory Type[8]: Property Flags = 0x6
info:      Memory Type[9]: Property Flags = 0xe
info:  NVIDIA GeForce RTX 3080:
info:    Driver: 510.47.3
info:    Vulkan: 1.3.194
info:    Memory Heap[0]:
info:      Size: 10240 MiB
info:      Flags: 0x1
info:      Memory Type[7]: Property Flags = 0x1
info:      Memory Type[10]: Property Flags = 0x7
info:    Memory Heap[1]:
info:      Size: 11997 MiB
info:      Flags: 0x0
info:      Memory Type[0]: Property Flags = 0x0
info:      Memory Type[1]: Property Flags = 0x0
info:      Memory Type[2]: Property Flags = 0x0
info:      Memory Type[3]: Property Flags = 0x0
info:      Memory Type[4]: Property Flags = 0x0
info:      Memory Type[5]: Property Flags = 0x0
info:      Memory Type[6]: Property Flags = 0x0
info:      Memory Type[8]: Property Flags = 0x6
info:      Memory Type[9]: Property Flags = 0xe
info:  DXGI: NvAPI workaround enabled, reporting AMD GPU
info:  D3D11CoreCreateDevice: Probing D3D_FEATURE_LEVEL_12_1
info:  D3D11CoreCreateDevice: Probing D3D_FEATURE_LEVEL_12_0
info:  D3D11CoreCreateDevice: Probing D3D_FEATURE_LEVEL_11_1
info:  D3D11CoreCreateDevice: Using feature level D3D_FEATURE_LEVEL_11_1
info:  Device properties:
info:    Device name:     : NVIDIA GeForce RTX 3080
info:    Driver version   : 510.47.3
info:  Enabled device extensions:
info:    VK_EXT_4444_formats
info:    VK_EXT_conservative_rasterization
info:    VK_EXT_custom_border_color
info:    VK_EXT_depth_clip_enable
info:    VK_EXT_extended_dynamic_state
info:    VK_EXT_host_query_reset
info:    VK_EXT_robustness2
info:    VK_EXT_shader_demote_to_helper_invocation
info:    VK_EXT_shader_viewport_index_layer
info:    VK_EXT_transform_feedback
info:    VK_EXT_vertex_attribute_divisor
info:    VK_KHR_create_renderpass2
info:    VK_KHR_depth_stencil_resolve
info:    VK_KHR_draw_indirect_count
info:    VK_KHR_driver_properties
info:    VK_KHR_image_format_list
info:    VK_KHR_sampler_mirror_clamp_to_edge
info:    VK_KHR_shader_float_controls
info:    VK_KHR_swapchain
info:  Device features:
info:    robustBufferAccess                     : 1
info:    fullDrawIndexUint32                    : 1
info:    imageCubeArray                         : 1
info:    independentBlend                       : 1
info:    geometryShader                         : 1
info:    tessellationShader                     : 1
info:    sampleRateShading                      : 1
info:    dualSrcBlend                           : 1
info:    logicOp                                : 1
info:    multiDrawIndirect                      : 1
info:    drawIndirectFirstInstance              : 1
info:    depthClamp                             : 1
info:    depthBiasClamp                         : 1
info:    fillModeNonSolid                       : 1
info:    depthBounds                            : 1
info:    multiViewport                          : 1
info:    samplerAnisotropy                      : 1
info:    textureCompressionBC                   : 1
info:    occlusionQueryPrecise                  : 1
info:    pipelineStatisticsQuery                : 1
info:    vertexPipelineStoresAndAtomics         : 1
info:    fragmentStoresAndAtomics               : 1
info:    shaderImageGatherExtended              : 1
info:    shaderStorageImageExtendedFormats      : 0
info:    shaderStorageImageReadWithoutFormat    : 1
info:    shaderStorageImageWriteWithoutFormat   : 1
info:    shaderClipDistance                     : 1
info:    shaderCullDistance                     : 1
info:    shaderFloat64                          : 1
info:    shaderInt64                            : 1
info:    variableMultisampleRate                : 1
info:  VK_EXT_4444_formats
info:    formatA4R4G4B4                         : 1
info:    formatA4B4G4R4                         : 1
info:  VK_EXT_custom_border_color
info:    customBorderColors                     : 1
info:    customBorderColorWithoutFormat         : 1
info:  VK_EXT_depth_clip_enable
info:    depthClipEnable                        : 1
info:  VK_EXT_extended_dynamic_state
info:    extendedDynamicState                   : 1
info:  VK_EXT_host_query_reset
info:    hostQueryReset                         : 1
info:  VK_EXT_memory_priority
info:    memoryPriority                         : 0
info:  VK_EXT_robustness2
info:    robustBufferAccess2                    : 1
info:    robustImageAccess2                     : 1
info:    nullDescriptor                         : 1
info:  VK_EXT_shader_demote_to_helper_invocation
info:    shaderDemoteToHelperInvocation         : 1
info:  VK_EXT_transform_feedback
info:    transformFeedback                      : 1
info:    geometryStreams                        : 1
info:  VK_EXT_vertex_attribute_divisor
info:    vertexAttributeInstanceRateDivisor     : 1
info:    vertexAttributeInstanceRateZeroDivisor : 1
info:  VK_KHR_buffer_device_address
info:    bufferDeviceAddress                    : 0
info:  Queue families:
info:    Graphics : 0
info:    Transfer : 1
info:  DXVK: Read 0 valid state cache entries
info:  DXVK: Using 7 compiler threads
info:  DXGI: NvAPI workaround enabled, reporting AMD GPU
info:  D3D11CoreCreateDevice: Probing D3D_FEATURE_LEVEL_12_1
info:  D3D11CoreCreateDevice: Probing D3D_FEATURE_LEVEL_12_0
info:  D3D11CoreCreateDevice: Probing D3D_FEATURE_LEVEL_11_1
info:  D3D11CoreCreateDevice: Using feature level D3D_FEATURE_LEVEL_11_1
info:  Device properties:
info:    Device name:     : NVIDIA GeForce RTX 3080
info:    Driver version   : 510.47.3
info:  Enabled device extensions:
info:    VK_EXT_4444_formats
info:    VK_EXT_conservative_rasterization
info:    VK_EXT_custom_border_color
info:    VK_EXT_depth_clip_enable
info:    VK_EXT_extended_dynamic_state
info:    VK_EXT_host_query_reset
info:    VK_EXT_robustness2
info:    VK_EXT_shader_demote_to_helper_invocation
info:    VK_EXT_shader_viewport_index_layer
info:    VK_EXT_transform_feedback
info:    VK_EXT_vertex_attribute_divisor
info:    VK_KHR_create_renderpass2
info:    VK_KHR_depth_stencil_resolve
info:    VK_KHR_draw_indirect_count
info:    VK_KHR_driver_properties
info:    VK_KHR_image_format_list
info:    VK_KHR_sampler_mirror_clamp_to_edge
info:    VK_KHR_shader_float_controls
info:    VK_KHR_swapchain
info:  Device features:
info:    robustBufferAccess                     : 1
info:    fullDrawIndexUint32                    : 1
info:    imageCubeArray                         : 1
info:    independentBlend                       : 1
info:    geometryShader                         : 1
info:    tessellationShader                     : 1
info:    sampleRateShading                      : 1
info:    dualSrcBlend                           : 1
info:    logicOp                                : 1
info:    multiDrawIndirect                      : 1
info:    drawIndirectFirstInstance              : 1
info:    depthClamp                             : 1
info:    depthBiasClamp                         : 1
info:    fillModeNonSolid                       : 1
info:    depthBounds                            : 1
info:    multiViewport                          : 1
info:    samplerAnisotropy                      : 1
info:    textureCompressionBC                   : 1
info:    occlusionQueryPrecise                  : 1
info:    pipelineStatisticsQuery                : 1
info:    vertexPipelineStoresAndAtomics         : 1
info:    fragmentStoresAndAtomics               : 1
info:    shaderImageGatherExtended              : 1
info:    shaderStorageImageExtendedFormats      : 0
info:    shaderStorageImageReadWithoutFormat    : 1
info:    shaderStorageImageWriteWithoutFormat   : 1
info:    shaderClipDistance                     : 1
info:    shaderCullDistance                     : 1
info:    shaderFloat64                          : 1
info:    shaderInt64                            : 1
info:    variableMultisampleRate                : 1
info:  VK_EXT_4444_formats
info:    formatA4R4G4B4                         : 1
info:    formatA4B4G4R4                         : 1
info:  VK_EXT_custom_border_color
info:    customBorderColors                     : 1
info:    customBorderColorWithoutFormat         : 1
info:  VK_EXT_depth_clip_enable
info:    depthClipEnable                        : 1
info:  VK_EXT_extended_dynamic_state
info:    extendedDynamicState                   : 1
info:  VK_EXT_host_query_reset
info:    hostQueryReset                         : 1
info:  VK_EXT_memory_priority
info:    memoryPriority                         : 0
info:  VK_EXT_robustness2
info:    robustBufferAccess2                    : 1
info:    robustImageAccess2                     : 1
info:    nullDescriptor                         : 1
info:  VK_EXT_shader_demote_to_helper_invocation
info:    shaderDemoteToHelperInvocation         : 1
info:  VK_EXT_transform_feedback
info:    transformFeedback                      : 1
info:    geometryStreams                        : 1
info:  VK_EXT_vertex_attribute_divisor
info:    vertexAttributeInstanceRateDivisor     : 1
info:    vertexAttributeInstanceRateZeroDivisor : 1
info:  VK_KHR_buffer_device_address
info:    bufferDeviceAddress                    : 0
info:  Queue families:
info:    Graphics : 0
info:    Transfer : 1
info:  DXVK: Read 0 valid state cache entries
info:  DXVK: Using 7 compiler threads
[0328/090940.864:ERROR:dxva_video_decode_accelerator_win.cc(1397)] DXVAVDA fatal error: could not LoadLibrary: msmpeg2vdec.dll: Module not found. 
(0x7E)
[0328/090940.864:ERROR:dxva_video_decode_accelerator_win.cc(1405)] DXVAVDA fatal error: could not LoadLibrary: msvproc.dll: Module not found. (0x7
E)
INFO: process Battle.net.exe is blacklisted in MangoHud
[2022-03-28 09:09:40.895] [MANGOHUD] [info] [config.cpp:114] skipping config: '/var/home/<user>/.var/app/com.usebottles.bottles/config/MangoHud/wine-Battle.net.conf' [ not found ]
[2022-03-28 09:09:40.895] [MANGOHUD] [info] [config.cpp:114] skipping config: '/var/home/<user>/.var/app/com.usebottles.bottles/data/bottles/runners/caffe-7.2/bin/MangoHud.conf' [ not found ]
[2022-03-28 09:09:40.895] [MANGOHUD] [info] [config.cpp:114] skipping config: '/var/home/<user>/.var/app/com.usebottles.bottles/config/MangoHud/wine-preloader.conf' [ not found ]
[2022-03-28 09:09:40.895] [MANGOHUD] [info] [config.cpp:114] skipping config: '/var/home/<user>/.var/app/com.usebottles.bottles/config/MangoHud/MangoHud.conf' [ not found ]
[2022-03-28 09:09:42.210] [MANGOHUD] [info] [config.cpp:114] skipping config: '/var/home/<user>/.var/app/com.usebottles.bottles/config/MangoHud/wine-HeroesOfTheStorm_x64.conf' [ not found ]
[2022-03-28 09:09:42.210] [MANGOHUD] [info] [config.cpp:114] skipping config: '/var/home/<user>/.var/app/com.usebottles.bottles/data/bottles/runners/caffe-7.2/bin/MangoHud.conf' [ not found ]
[2022-03-28 09:09:42.210] [MANGOHUD] [info] [config.cpp:114] skipping config: '/var/home/<user>/.var/app/com.usebottles.bottles/config/MangoHud/wine64-preloader.conf' [ not found ]
[2022-03-28 09:09:42.210] [MANGOHUD] [info] [config.cpp:114] skipping config: '/var/home/<user>/.var/app/com.usebottles.bottles/config/MangoHud/MangoHud.conf' [ not found ]
sh: line 1: glxinfo: command not found

I will give it a try as soon as possible

No rush at all, thanks for taking a look! I fully realize this isn’t at all a fault with the Bottles software itself, more just trying to get the right configuration to get the game running. :slight_smile:

I recall when I tried this some years back the recommendation on Lutris was that you copy some DLLs from the Heroes of the Storm installation directory to the windows/system32 directory. I think this did work when I tried it in the past, but it definitely sounds like the sort of workaround that wouldn’t align with my understanding of the Bottles philosophy.

I’m more so curious what Steam’s Proton would have as a dependency that Bottles would be missing. If needed, I’m happy to list out my installed Flatpaks if that would narrow down the difference in environment between the two?

1 Like

latpaks are isolated from each other so this shouldn’t be a problem. I should take a look at the Lutris script versus ours for Battle.net to understand the differences and if any specific fixes are missing. Copying DLLs is a common practice in WINE and not quite a workaround but in Bottles we try to work a full Installer rather than 10 doing about the same thing, so any fixes or workarounds are applied directly to the one for Battle.net.

1 Like

I see. I don’t see anything in the Lutris install script that would be related to missing dependencies. Lutris - Open Gaming Platform

Could be potentially one of the dependencies listed here? docs/Battle.Net.md at master · lutris/docs · GitHub

I’m pretty sure not. Btw I’ve seen this in the lutris script:

- write_file:
    content: hasseennewcinematic=True
    description: Adding a startup workaround for Hearthstone
    file: $GAMEDIR/drive_c/users/$USER/Local Settings/Application Data/Blizzard/Hearthstone/options.txt

I don’t believe that’ll work for Heroes, since it doesn’t follow the same options storage scheme as Hearthstone. The options are generally stored in Documents/Heroes of the Storm, and I didn’t see any option to skip a cinematic in there.

Looks like copying /Program Files (x86)/Heroes of the Storm/Support64/d3dx11_42.dll to /windows/system32/d3dx11_42.dll is enough to get the game to launch successfully for me. Changing it back to the default wine variant, even after the initial cinematic has been disabled, did not result in a successful launch.

It overall seems like a sketchy workaround. And why wouldn’t it be required when launching through Steam I wonder?

So, we should provide a d3dx11 dependency like we already does with d3dx9

Sounds reasonable! :slight_smile:

@mirkobrombin So I think we’d need a new d3dx11.yml here? dependencies/Essentials at main · bottlesdevs/dependencies · GitHub

I could try to follow the template but I’m not sure I know enough about how it’s packaged to be able to successfully define the dependency. Do you want me to file an issue?

Hi yes please open a new issue

If you guys need extra hands for testing, I’m willing to help out given that I’ve already had trouble trying to run Starcraft II, I might as well start with something that has others working on already.

Hi @ouvoun,

I hope you are well. How did you run HOTS through Steam? o_O

Usually you click on “ADD A GAME”, then “Add a Non-Steam Game…” and then you locate it in your file browser. After adding you go to newly created steam entry and enable proton for it in properties, but I feel like you’d need some more tweaking to actually run Battle,net and HOTS.

1 Like

Thanks for the tip! I’ll experiment!

This is bizarre…

I have tried to start Heroes of the Storm using Bottles as well as Lutris.

For both mediums, I keep getting the same error message even though I know that I have DKVK option loaded:

I know that the option is enabled too…I’m dumbfounded. :confounded:

Hmm, not sure what’s up with that.

Either way, you can now use Bottles to run HotS and I’ve been successfully with it lately. You can use the “Blizzard Battle.net” installer to get the launcher installed, then just make sure that you also install “d3dx11” from the dependencies tab. It should boot. In case it helps, I’m also using wine-ge as the runner, and dxvk-async for the DXVK version (with DXVK_ASYNC=1 environmental variable).

I did exactly as you outlined and still the same error message in my screenshot. :disappointed_relieved: