How to Run Windows Games on Ubuntu: The Complete Beginner's Guide (GTA V experiments)
Learn how to run Windows PC games on Ubuntu using Wine and DXVK with full NVIDIA GPU power. Step-by-step beginner guide with copy-paste commands.
Key Takeaways (Quick Summary)
- Wine is not an emulator: It translates Windows commands into native Linux language on the fly with practically zero speed loss.
- DXVK converts DirectX to Vulkan: Translates Direct3D 9/10/11 game graphics into Vulkan, unlocking fluid 60+ FPS gameplay.
- Dedicated Wine Prefixes keep things clean: Creating an isolated folder for each game prevents broken dependencies and configuration conflicts.
- Hybrid Laptops need PRIME offloading: A single terminal command ensures your game uses your powerful NVIDIA GeForce GPU instead of low-power integrated graphics.
For years, the biggest question holding PC gamers back from switching to Linux was simple: "Can I still play my favorite Windows games?"
Today, the answer is a resounding yes. Thanks to modern translation tools like Wine and DXVK, running a Windows native game onto an Ubuntu machine is no longer a dark art reserved for terminal wizards. In fact, heavy AAA titles like Grand Theft Auto V can run just as smoothly on Ubuntu as they do on Windows 11.
Here is the thing: you don't need a PhD in computer science to make it happen. Let's break it down step by step so you can get your games running today.
Featured Snippet Bait: To run Windows games on Ubuntu, install Wine (the Windows compatibility layer) and DXVK (the DirectX-to-Vulkan graphics translator). Create an isolated 64-bit Wine prefix, install required Visual C++ and DirectX runtimes, and launch the game with NVIDIA PRIME environment variables to guarantee dedicated graphics card performance.
flowchart LR
A["Windows Game (.exe)"] -->|"Direct3D Graphics"| B["DXVK Layer"]
A -->|"Windows System Calls"| C["Wine Compatibility Layer"]
B -->|"Vulkan Instructions"| D["NVIDIA GPU (RTX / GTX)"]
C -->|"Linux Kernel Calls"| E["Ubuntu OS"]
D --> F["Smooth 60+ FPS Gaming"]
E --> F
1. What Makes Windows Games Work on Linux?
Before touching any buttons, it helps to understand what is happening under the hood.
Windows games are built using Microsoft technologies:
- Windows System Calls (
.dllfiles): How the game asks the system to read files, play sound, and manage memory. - DirectX / Direct3D: Microsoft's graphic language for drawing 3D worlds, textures, and lighting.
Linux doesn't speak DirectX or Windows natively. That is where two superpowers come in:
- Wine (Wine Is Not an Emulator): Wine translates Windows system calls into Linux instructions instantaneously. Because it translates instead of emulating an entire PC, your CPU runs at full speed.
- DXVK: DirectX is translated into Vulkan, the ultra-fast modern 3D graphics standard supported natively by NVIDIA and AMD drivers on Linux.
When you pair Wine with DXVK, your Linux machine effectively acts as a native gaming PC.
2. Setting Up Your Isolated Gaming Environment (Wineprefix)
Think of a Wineprefix as a clean, virtual "C: Drive" inside a single folder.
Why is this important? If you install all your games, mods, and runtimes into the default Wine folder, one game's tweaks might break another game. By giving each game its own prefix, you keep your system tidy and trouble-free.
Open your terminal (Ctrl + Alt + T) and run:
# Create a dedicated 64-bit Windows 10 bottle for GTA V
export WINEPREFIX="$HOME/.wine-gtav"
export WINEARCH="win64"
# Initialize the virtual C: drive
wineboot -u
That is all it takes! Wine creates a mini Windows environment inside ~/.wine-gtav/drive_c.
3. Supercharging Graphics with DXVK
By default, Wine tries to translate DirectX graphics using older OpenGL protocols. For heavy games like GTA V, that causes stuttering and low framerates.
Installing DXVK fixes this completely by routing graphics through Vulkan.
# 1. Download the latest DXVK release
cd /tmp
wget https://github.com/doitsujin/dxvk/releases/download/v2.5.3/dxvk-2.5.3.tar.gz
tar -xvf dxvk-2.5.3.tar.gz
# 2. Copy the 64-bit DirectX DLLs into your game's Windows System32 folder
cp dxvk-2.5.3/x64/*.dll "$HOME/.wine-gtav/drive_c/windows/system32/"
# 3. Copy the 32-bit companion DLLs into SysWOW64
cp dxvk-2.5.3/x32/*.dll "$HOME/.wine-gtav/drive_c/windows/syswow64/"
Next, tell Wine to always prefer these native Vulkan libraries instead of its built-in fallbacks. Open Wine's configuration window:
WINEPREFIX="$HOME/.wine-gtav" winecfg
Head to the Libraries tab, type d3d11 in the "New override for library" box, click Add, and make sure it is set to (native, builtin). Repeat for dxgi and click OK.
4. Installing Essential Game Runtimes (Visual C++ & DirectX)
Just like on a fresh Windows PC, games need helper runtimes to start up without throwing missing DLL errors (VCRUNTIME140.dll, d3dcompiler_46.dll, etc.).
Most game setup folders include a _Redist or Redistributables folder. You can install them silently inside your prefix:
# Install Visual C++ Runtimes (2005 through 2022)
WINEPREFIX="$HOME/.wine-gtav" wine Setup-vcredist.exe /ai
# Install DirectX June 2010 Runtimes
WINEPREFIX="$HOME/.wine-gtav" wine directx_Jun2010_redist.exe /silent
# Install OpenAL for 3D Audio
WINEPREFIX="$HOME/.wine-gtav" wine oalinst.exe /s
Now your virtual Windows environment has all the foundation libraries any modern PC game could ever ask for.
5. Laptop Users: Unlocking Your Dedicated NVIDIA GPU
If you are on a laptop with hybrid graphics (an Intel or AMD processor with an NVIDIA GeForce graphics card), Linux will often launch applications on the battery-saving integrated GPU by default.
To tell Ubuntu to unleash your NVIDIA RTX or GTX card, you pass PRIME Offload environment variables:
| Setting | Value | What it does |
| :--- | :--- | :--- |
| __NV_PRIME_RENDER_OFFLOAD | 1 | Forces rendering onto the dedicated NVIDIA chip |
| __GLX_VENDOR_LIBRARY_NAME | nvidia | Selects the official NVIDIA graphics driver |
| __VK_LAYER_NV_optimus | NVIDIA_only | Tells Vulkan to ignore low-power integrated graphics |
| DXVK_ASYNC | 1 | Compiles game shaders in the background to stop stuttering |
6. Creating a One-Click Game Launcher
You do not want to re-type complex terminal parameters every time you feel like playing. Let's create a clean launch script!
Save the following file as ~/Games/launch-gtav.sh:
#!/usr/bin/env bash
set -e
# Define your prefix and game folder
export WINEPREFIX="$HOME/.wine-gtav"
export WINEARCH="win64"
export GAME_DIR="$HOME/.wine-gtav/drive_c/Games/Grand Theft Auto V"
# Enable Maximum NVIDIA Graphics Power
export __NV_PRIME_RENDER_OFFLOAD=1
export __GLX_VENDOR_LIBRARY_NAME=nvidia
export __VK_LAYER_NV_optimus=NVIDIA_only
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
# Smooth gameplay tweaks
export DXVK_ASYNC=1
export DXVK_STATE_CACHE=1
export PULSE_LATENCY_MSEC=60
cd "$GAME_DIR"
# Launch with Feral GameMode if available, or direct Wine
if command -v gamemoderun >/dev/null 2>&1; then
exec gamemoderun wine PlayGTAV.exe "$@"
else
exec wine PlayGTAV.exe "$@"
fi
Make it executable:
chmod +x ~/Games/launch-gtav.sh
Now, whenever you want to play, just double-click the script or run ./launch-gtav.sh! You can also pin it to your desktop or application drawer as a native .desktop shortcut.
7. Verifying the Result: Is it Really Using the GPU?
Curious if everything is working properly? While the game is running, open a terminal and run:
nvidia-smi
Look at the Processes table at the bottom. You will see:
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
|=============================================================================|
| 0 N/A N/A 205203 C+G GTA5.exe 127MiB |
+-----------------------------------------------------------------------------+
Seeing GTA5.exe listed under NVIDIA-SMI proves that your dedicated GPU is handling the heavy rendering lifting.
Ready to Play?
Gaming on Ubuntu is no longer a compromise. With isolated Wine prefixes, DXVK translation, and NVIDIA PRIME offloading, you get crisp visual fidelity, zero bloatware, and the full performance of your hardware.
Have you tried running your favorite Windows games on Linux? Which game are you planning to test next? Let us know in the comments below!
FAQ (Frequently Asked Questions)
:::details Does Wine slow down game performance compared to Windows? No! Because Wine translates API calls directly into native Linux system instructions rather than simulating an entire CPU/computer, performance overhead is negligible. In fact, many games run at identical or even higher framerates due to Linux's lightweight background resource usage. :::
:::details Why is my game running at 5 FPS on my gaming laptop?
This usually means the game is running on your integrated Intel or AMD processor GPU instead of your discrete NVIDIA card. Ensure you include __NV_PRIME_RENDER_OFFLOAD=1 and __GLX_VENDOR_LIBRARY_NAME=nvidia in your launch commands.
:::
:::details Can I use this exact method for other games like Witcher 3, Cyberpunk 2077, or Skyrim? Yes! The exact same formula works: create a dedicated Wine prefix, install DXVK, install the Visual C++ redistributables, and launch using the NVIDIA PRIME offload script. :::