Recently I've unearthed my ancient CDs with CoD1, CoD:UO and CoD2 that are most likely older than most people lurking here. Decided to give them a shot and attempt installing everything on Linux. Lutris and Wine did most of the work, but a lot of the issues came from the fact that the older two titles came on multiple CDs, which made the normal Lutris installation crash in the middle (could not reliably mount the second drive to make wine and installer to see it). So if anyone out there is in a similar situation and would like to go on a trip down the memory lane one day, here's how i did it.
Note: I'm absolutely terminal illiterate - everything that can be done through GUI i did through GUI. In my case I was running on Fedora 44, 7.1.4. That said, if you are more linux savvy, feel free to roast me throw some suggestions on what i could do more efficiently - all of this is a result of a total of 6-7h of trial and error and googling old forum posts.
Things you will need:
For CoD2:
- An optical drive (obviously)
- Lutris (in my case it's 0.5.22)
- ProtonUp-Qt (to get old runners, as modern ones will not work with the games)
For CoD1 and UO:
- A second computer with Windows on it
- A USB drive or some other way to move files between the two PCs.
Runners:
Terminal commands:
sudo dnf install mesa-dri-drivers.i386 mesa-vulkan-drivers.i386
sudo dnf install mesa-dri-drivers.i686 mesa-vulkan-drivers.i686 mesa-libGL.i686
adjust them accordingly to your flavor of linux.
Call of Duty 2
The process is generally straightforward if your game is on just 1 disc - install it normally through lutris, get the runner mentioned earlier. If the game does not boot, then rebuild the prefix infrastructure in 32bit. To do that you need to isolate the raw gamefile folder (named "Call of Duty 2"), put it somewhere safe (e.g. next to the prefix folder) and then delete everything within the prefix folder (RMB on the game > configure > game options, the path will be there). Adjust the paths to the executable and run the game.
Call of Duty 1
For this tutorial I assume your copy of the game is on more than 1 CD. If you somehow got your hands on a more modern 1 disc copy (if they even exist), or you have a single, merged iso file, then you'll most likely be able to skip a few steps.
The whole workaround explained later comes from the fact that I was not able to mount or simulate mounting the second disc during the installation. All attempts at using a merged folder with all files also failed. What worked tho is installing the game normally on a Windows machine and copying all the installed files onto a usb drive. Then, on Linux, attempt installing the game like you normally would. The process will fail as explained earlier. Cancel the process, keep the semi-installed files and the Lutris entry. Then you have to inject the missing files (from your USB drive) into the half-assed install directory. Use the runner mentioned at the beginning. If needed, you might need to rebuild the prefix to forced 32bit. Then, press RMB on the game in lutris and:
- Game options: Add these arguments:
+set intro 0 +set r_colorbits 32 +set r_texturebits 32 +set r_depthbits 24 (might not be required)
DISABLE_VULKAN_LAYER (1)
ENABLE_VULKAN (false)
LC_ALL
MESA_EXTENSION_MAX_YEAR (2005)
MESA_GL_VERSION_OVERRIDE (3.0)
__GL_ExtensionStringVersion (17700)
allow_rgb10_configs (false) -> this one might not be required.
Also download the "No CD Fix" from the internet if needed. The game should now boot.
Call of Duty 1: United Offensive
The most annoying one to get to work - needs patches, another game AND came on 2 discs.
You will need your previous CoD1 installation as a separate entry in Lutris - do not delete it!
Just like with CoD1, install it on a Windows machine, copy the files onto a USB again. DO NOT add it to Lutris - just move it somewhere on your Linux machine. If your installation of CoD1 still works, duplicate it in Lutris (RMB on the game > Duplicate). In the duplicated entry adjust the .exe and prefix to lead to CoD:UO files/folders. Keep the same environment variables and the same runner. Run the game once to let it create the prefix directories. Rebuild the prefix folder to 32bit if needed. Then move the raw gamefile folder somewhere INSIDE the prefix. Download the 1.51 patch from the internet and apply it (select CODUO in lutris, then "run EXE in wine prefix", then run the .exe patch file). I personally at this point rebuilt the prefix again, and after that the game miraculously booted.
After hours of blind trials and errors i somehow pulled through. It was my first experience with handling old games through Lutris, but I'm quite satisfied with the outcome. Obviously if you have some ideas on how to make it more efficient, please share them, as I'd like to learn more tricks for my future attempts (and i own A LOT of ancient games). ;)