使用 Wine 在 macOS 上运行经典的 Windows 游戏

写在前面

笔者作为80后,至今仍然对于青春时代曾经伴随着我们的经典游戏念念不忘。暗黑破坏神、魔兽争霸、重返德军总部。。。那毕竟是我们这一代的青春。即使我现在玩不动了,但笔记本电脑中依然保留着这些游戏,偶尔玩一下怀念怀念也好。

我的笔记本现在已经换成 MacBook Pro,运行着 macOS Catalina 操作系统,曾经的经典游戏常规的方法依然无法继续运行了。当然你可能会说,安装一个虚拟机系统,里面跑一个 Windows XP 也可以玩了。这当然可以做到,但是它太重了,而且中间隔着一个虚拟化层,运行效率自然不高。作为搞 IT 的,怎么可以止步于此?

本次介绍一种使用 Wine 运行经典游戏的方法,教程适用于 macOS 操作系统,但思路也适用于 Linux。

Wine 简介

来自维基百科:Wine通过提供一个兼容层来将Windows的系统调用转换成与POSIX标准的系统调用。它还提供了Windows系统运行库的替代品和一些系统组件的替代品。为了避免著作权问题,Wine主要使用黑箱测试逆向工程来编写。

说白了 Wine 和虚拟机的玩法有本质上的区别,Wine 是操作系统层的 API 调用转换,并没有虚拟层,因此运行效率上比虚拟机方式会高很多。

macOS 下安装 Wine

本次我们将使用 Homebrew 来安装 Wine,Homebrew 是 macOS 下最流行的包管理器,如果您还没有安装 Homebrew,请访问 Homebrew 官网详细了解,或者直接在终端使用以下命令进行安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

接下来我们使用 Homebrew 来安装 Wine:

$ sudo spctl --master-disable # 允许未知来源的软件安装
$ brew tap gcenx/wine
$ brew cask install --no-quarantine wine-crossover

配置 Wine

我们的目标是运行 Windows 下的经典游戏,因此此处所有的配置都是针对这个目标进行的。

1. 初始化 Wine

我们准备将 Wine 的主目录存储在 $HOME/.wine/ 下,在终端执行一下命令:

$ WINEARCH=win32 WINEPREFIX=$HOME/.wine winecfg

此时 WIne 会启动一个包含若干标签页的配置窗口,我们需要设置以下内容:

标签页 属性 备注
Applications WIndows Version Windows XP
Libraries New override for library ddraw 然后点击 Add 按钮添加

配置窗口截图如下所示:

winecfg

设置完成之后,点击 OK 按钮保存设置,此时 Wine 的主目录 $HOME/.wine 的目录结构看起来是这样的:

.
├── dosdevices
│   ├── c: -> ../drive_c
│   └── z: -> /
├── drive_c
│   ├── Program Files
│   ├── ProgramData
│   ├── users
│   └── windows
├── system.reg
├── user.reg
└── userdef.reg

至此,Wine 所有的安装和配置工作全部结束,接下来就是如何在 Wine 中运行经典的游戏了。

2. 解决中文乱码

在终端的 shell 配置文件中为 wine 添加别名:

alias wine="env LC_ALL=zh_CN.UTF-8 wine"

3. 环境变量配置

# Fix error `terminals database is inaccessible` for Wine Crossover 20.x
export TERMINFO=/usr/share/terminfo
# 禁止在终端输出所有调试信息
export WINEDEBUG=-all
# Wine 主目录
export WINEPREFIX=~/.wine
# 运行 32 位的 Windows
export WINEARCH=win32

4. 配置暗黑破坏神II

我们以 Diablo II 为例来进行说明,首先进入目录 $HOME/.wine/drive_c ,然后新建目录 games

$ cd $HOME/.wine/drive_c
$ mkdir games

之后,下载免安装版的 Diablo II 游戏到 $HOME/.wine/drive_c/games/Diablo II,相信你可以很容易下载到的 :)

然后打开注册表,增加注册表项 KEY_CURRENT_USER\Software\Blizzard Entertainment\Diablo II\VideoConfig 并设置该项的类型为 REG_DWORD,值为 0

regedit

在终端启动 Diablo II:

$ alias d2="cd $HOME/.wine/drive_c/games/Diablo\ II && wine Game.exe -w -direct -txt"
$ d2

至此,Diablo II 的基本设置就已经全部完成,其他的经典游戏步骤类似,笔者已经测试通过了如下经典游戏:

  • 暗黑破坏神 II
  • 重返德军总部
  • 仙剑奇侠传四
  • 魔兽争霸 III (过场动画会报错)
  • 街机模拟器fbaxp

附录:终端环境配置汇总

$HOME/.zshrc 或者 $HOME/.bashrc

# Fix error `terminals database is inaccessible` for Wine Crossover 20.x
export TERMINFO=/usr/share/terminfo
# 禁止在终端输出所有调试信息
export WINEDEBUG=-all
# Wine 主目录
export WINEPREFIX=~/.wine
# 运行 32 位的 Windows
export WINEARCH=win32
export WINEGAMEHOME="$WINEPREFIX/drive_c/games"
alias wine="env LC_ALL=zh_CN.UTF-8 wine"
alias d2="cd $WINEGAMEHOME/Diablo\ II && wine Game.exe -direct -txt"
alias rtcw="cd $WINEGAMEHOME/RealRTCW/Return\ to\ Castle\ Wolfenstein && wine RealRTCW.x86.exe"
alias fba="cd $WINEGAMEHOME/fba && wine fbaxp.exe"
alias pal4="cd $WINEGAMEHOME/PAL4 && wine PAL4.exe"
alias pal4cfg="cd $WINEGAMEHOME/PAL4 && wine Config.exe"
alias war3="cd $WINEGAMEHOME/Warcraft\ III && wine Frozen\ Throne.exe"

参考链接

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容