Linux Deployment Guide
This guide covers installation and configuration of DINOForge on Linux (Ubuntu 20.04+, Fedora 36+, Arch, etc.).
System Requirements
- OS: Ubuntu 20.04+, Fedora 36+, Arch, Debian 11+, or compatible
- .NET Runtime: .NET 11 (preview) — .NET Downloads
- Game Runtime: Wine 7.0+ or Proton GE (for Steam Proton)
- Build Essentials: gcc, g++, make (for native compilation)
- Game: Diplomacy is Not an Option (Steam + Proton)
- Disk Space: 2 GB (runtime + plugins + packs)
- RAM: 8 GB minimum (12 GB recommended)
Checking .NET Installation
Open a terminal and verify:
dotnet --infoShould show .NET 11.0.100-preview or newer. If not installed, proceed to Step 1.
Installation Steps
Step 1: Install .NET 11 Runtime
Ubuntu/Debian:
# Add Microsoft package repository
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
# Update package index
sudo apt-get update
# Install .NET 11 preview SDK
sudo apt-get install -y dotnet-sdk-11.0
# Verify installation
dotnet --versionFedora:
# Install .NET 11 preview SDK
sudo dnf install dotnet-sdk-11.0
# Verify installation
dotnet --versionArch:
# Use AUR or manual build
yay -S dotnet-sdk-11-bin
# Verify installation
dotnet --versionStep 2: Install Wine/Proton (for Game Execution)
The game runs via Wine or Proton. Choose one approach:
Option A: Use Steam Proton (Recommended)
If you have Steam with Proton installed:
# Steam automatically provides Wine/Proton
# Your game will run via Proton automatically when launched via Steam
# No additional setup needed!Option B: Install Standalone Wine
# Ubuntu/Debian
sudo apt-get install -y wine wine32 wine64
# Fedora
sudo dnf install wine
# Arch
sudo pacman -S wine
# Verify installation
wine --versionRequires Wine 7.0 or newer. For newer versions, use WineHQ staging builds.
Step 3: Verify Game Installation
Locate your DINO installation directory:
# If using Steam with Proton (Linux native):
ls -la ~/.steam/steamapps/common/Diplomacy\ is\ Not\ an\ Option/
# Or find it:
find ~/.steam -name "Diplomacy is Not an Option" -type d
find ~/.local/share/Steam -name "Diplomacy is Not an Option" -type d
# If using Windows Steam via Wine:
~/.wine/drive_c/Program\ Files\ \(x86\)/Steam/steamapps/common/Diplomacy\ is\ Not\ an\ Option/Verify these files exist:
Diplomacy is Not an Option.exeBepInEx/directoryBepInEx/plugins/directory
Step 4: Install DINOForge Runtime
Clone the repository (or download release):
# Clone the DINOForge repository
git clone https://github.com/KooshaPari/Dino.git ~/Dino
cd ~/Dino
# Or download the latest release
wget https://github.com/KooshaPari/Dino/releases/download/v0.14.0/DINOForge-v0.14.0.tar.gz
tar -xzf DINOForge-v0.14.0.tar.gz
cd DinoRun the Linux installer script:
# Make script executable
chmod +x scripts/install/installer.sh
# Run installer
bash scripts/install/installer.sh
# Follow the prompts:
# 1. Specify game installation path
# 2. Confirm BepInEx installation
# 3. Deploy example packs (optional)Step 5: Configure Game Path
Edit the DINOForge config:
# Create config directory
mkdir -p ~/.config/DINOForge
# Create config file
cat > ~/.config/DINOForge/config.json << 'EOF'
{
"game_install_path": "/home/username/.steam/steamapps/common/Diplomacy is Not an Option",
"mods_directory": "BepInEx/dinoforge_packs",
"enable_debug_mode": false,
"enable_telemetry": true,
"mcp_server_port": 8765,
"mcp_server_host": "127.0.0.1",
"hot_reload_enabled": true,
"log_level": "Info"
}
EOF
# Update the path with your actual game directoryStep 6: Deploy Example Packs
cd ~/Dino
# Build example packs
dotnet run --project src/Tools/PackCompiler -- build packs/example-balance
dotnet run --project src/Tools/PackCompiler -- build packs/warfare-modern
# Get your actual game path
GAME_PATH=$(grep "game_install_path" ~/.config/DINOForge/config.json | cut -d'"' -f4)
# Copy packs to game directory
mkdir -p "$GAME_PATH/BepInEx/dinoforge_packs"
cp -r packs/example-balance/dist/* "$GAME_PATH/BepInEx/dinoforge_packs/"
cp -r packs/warfare-modern/dist/* "$GAME_PATH/BepInEx/dinoforge_packs/"Launching the Game
Via Steam (Recommended)
If using Steam with Proton:
# Launch from Steam normally
# Proton automatically handles Windows compatibilityVia Command Line (Wine/Proton)
# Using Proton (recommended for Linux)
GAME_PATH="/path/to/Diplomacy is Not an Option"
proton run "$GAME_PATH/Diplomacy is Not an Option.exe"
# Or using standalone Wine
wine "$GAME_PATH/Diplomacy is Not an Option.exe"Via Wine Configuration
Some games benefit from specific Wine prefix settings:
# Create a dedicated Wine prefix for the game
export WINEPREFIX=~/.wine-dino
wine wineboot --init
# Set Windows version
WINEARCH=win64 wine winecfg
# In the window that appears:
# Go to "Windows Version" tab
# Select "Windows 10"
# Click "Apply" then "OK"Verification Checklist
1. Check .NET Installation
dotnet --version
# Expected: 11.0.100-preview.2.26159.112 or newer2. Verify Game Launches
# Navigate to game directory
cd "/path/to/Diplomacy is Not an Option"
# Launch the game
wine ./Diplomacy\ is\ Not\ an\ Option.exe &
# Wait 5 seconds, then check if process is running
sleep 5
pgrep -f "Diplomacy is Not an Option"3. Check BepInEx Logs
After game startup, check the BepInEx log:
tail -50 "/path/to/game/BepInEx/LogOutput.log" | grep -i dinoforgeShould show:
[Info : BepInEx] Loading [DINOForge.Runtime v0.14.0]
[Info : BepInEx] Loaded plugin DINOForge.Runtime4. Verify MCP Server Port
After launching game:
# Check if port 8765 is open
lsof -i :8765
# Test connectivity
curl -X POST http://127.0.0.1:8765/rpc \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"game_status","params":{}}'Proton Configuration
If using Steam with Proton GE or official Proton:
# Get Proton version
proton --version
# Set custom Proton version for a game
# In Steam: right-click game → Properties → Compatibility → Force Compatibility Tool → Select Proton version
# Or via command line with custom Wine settings
PROTON_NO_ESYNC=1 PROTON_USE_WINED3D=1 proton run game.exeCommon Proton/Wine Flags
If you encounter performance or compatibility issues:
# Disable esync (for some games)
export PROTON_NO_ESYNC=1
# Use wined3d instead of DXVK (older GPU support)
export PROTON_USE_WINED3D=1
# Enable debug logging
export WINEDEBUG=+all
# Run with these flags
wine "./Diplomacy is Not an Option.exe"Troubleshooting
".NET 11 Runtime Not Found"
Solution:
- Verify installation:
dotnet --version - If not found, reinstall following Step 1 for your distro
- Ensure
/usr/bin/dotnetis in your PATH:which dotnet
"Wine: Command Not Found"
Solution:
# Reinstall Wine for your distro
sudo apt-get install -y wine wine32 wine64
# Or use Proton instead (via Steam)Game Fails to Launch via Wine
Solution:
- Verify Wine version:
wine --version(should be 7.0+) - Check Wine prefix is initialized:
wine winecfg - Try updating Wine:
sudo apt upgrade wine - If stuck, use Steam + Proton instead
MCP Server Port Blocked or Unavailable
Solution:
# Check what's using port 8765
sudo lsof -i :8765
# If blocked, try alternate port in config
# Or kill the process using it (if safe)
sudo kill -9 <PID>Pack Fails to Load
Solution:
- Verify pack path has correct permissions:bash
chmod -R 755 "$GAME_PATH/BepInEx/dinoforge_packs" - Check for symlink issues:
ls -la "$GAME_PATH/BepInEx" - Validate pack syntax:bash
cd ~/Dino dotnet run --project src/Tools/PackCompiler -- validate packs/your-pack
Linux-Specific Notes
- File Permissions: Ensure the game directory is readable/writable:
chmod -r u+rwX "$GAME_PATH" - Symlinks: Wine sometimes has issues with symlinks. Use direct paths or copies instead.
- Case Sensitivity: Linux is case-sensitive. Ensure file references match exactly (including capitalization).
- Path Separators: Use forward slashes
/in configs, not backslashes\ - Snap/Flatpak: If running Steam via Snap/Flatpak, adjust paths accordingly (e.g.,
~/snap/steam/common/steamapps/)