protonscr

Strategic Command WWII: World at War

protonopen appid 957720Game compatibility - Unofficial
ValveSoftware/Proton#8084 · opened 2024-09-09 by romatthe · updated 2024-09-09 · 0 comments · github · game page · search this game
1 matching comments, n / p to jump
Rromatthe 2024-09-09 github

Compatibility Report

  • Name of the game with compatibility issues: Strategic Command WWII: World at War
  • Steam AppID of the game: 957720

System Information

I confirm:

  • [X] that I haven't found an existing compatibility report for this game.
  • [X] that I have checked whether there are updates for my system available.

Proton log:

steam-957720.log

Symptoms

  1. The game needs the proprietary Windows Segoe UI fonts in order not to crash when viewing unit details. There's nothing Proton can really do about this, though the SIL licensed Selawik font does exist.
  2. Whenever the game opens a new "screen", the new screen is shifted a little downwards, leaving a gap at the top of the screen. (See attached video for a good visual example)
  3. When new messages are shown on battlefield map and then dismissed, the screen flickers black, once again seemingly from the game's redraw phase. (See previous video above for an example)
  4. Using gamescope can alleviate the issues with the game screen shifting downwards, but this introduces issues with the game's right-click context menu. (See attached video for an attempt to show this in a video)
  5. Even if the above issues could be resolved, the game renders very slowly and thus moves sluggishly. Moving around the map, zooming in and out all feel very sluggish and slow.

Reproduction

  1. For the second and third issues, just run the game and start a new campaign to quickly see the issue.
  2. For fourth issue, launch the game in fullscreen through gamescope, and right click on a unit on the battlefield screen.
  3. For the performance issue, scroll around the main battlefield map. To get a feel for the true scope of the performance issues, toggle the supply view (this screenshot shows which button you can press to toggle it), and you will see that the game slows to a crawl.

Additional information

This game is part of the Strategic Command series. There are several other games in this series that share the exact same engine. None of them have open issues, but they likely the exact same problems as this one:

  • Strategic Command WWII: War in Europe (593030)
  • Strategic Command WWII: War in the Pacific (2740080)
  • Strategic Command: World War I (1096930)
  • Strategic Command: American Civil War (1966130)

After debugging the issue for a while, I believe that this game probably ends up using GDI. gdiplus.dll is shipped as part of the game. Based on my personal experience, pure GDI rendering in Wine is extremely slow.

Under the hood, it seems the game uses SDL. Unfortunately, this seems to be the deprecated SDL 1.2 version, and not SDL2 or SDL3.

SDL1 supports two engines for drawing under Windows. windib and directx. The windib option uses GDI, and the directx option uses, I believe, DirectDraw. I tried to set SDL_VIDEODRIVER=directx in the Wine prefix, but that did not seem to have any effect. I believe that this is because the game might be overriding the setting itself. I believe there is a code path that sets SDL_VIDEODRIVER explicitly to windib, and SDL1 reads that environmental variable before initializing the video subsystem. My only real evidence for that is the presence of the following string:

$ strings ~/.local/share/Steam/steamapps/common/Strategic\ Command\ WWII\ World\ at\ War/SC3-WWII\ World\ at\ War.exe | grep SDL_VIDEODRIVER
SDL_VIDEODRIVER=windib

Forcing the game to use DirectDraw together with a solution like cnc-ddraw sounded interesting to me, but I haven't succeeded so far.

Initially I tried to compile SDL1 from source with a couple of lines changed to it defaults to directx anyway, but I found no instructions on how to compile for Windows so I gave up. I also tried to launch the game with the sdl12-comat project, but that makes the game crash instantly.

Launch options

DLLs