MacでAge of Empires 2 DE (AoE2DE)をCrossOverで動かす

May 31, 2021, 11:52 a.m. edited Oct. 6, 2023, 3:32 p.m.

#Mac  #AoE2 

230818 追記

このスレッドにあるように、一時的にどの Wine 系列を利用しても AoE2DE が Mac・Linux で動かなくなっていました(AoE2DE のアプデのせい)。これを重く見た CrossOver 公式が CrossOver 23 で対応し、 8/16 にリリースされました(詳細)。

その中で従来はマルチプレイをするのに必要だった手順等が省かれて楽になったので、ここに軽く書いておきます。もちろん、事前に AoE2DE を Steam で購入しておいてください。

  1. Mac の言語設定を英語にする:
  2. CrossOver 23 をインストール
  3. 左下の「+ Install」から Age of Empires II: Definitive Edition をインストール(言語は English のままにしておく。ここで AoE2DE をインストール?!とギョッとするかもしれないが、もちろん AoE2DE 自体は Steam 経由でインストールするので、つまりあなたの購入した正規のものであるため安心してほしい。つまり、 AoE2DE を動かす専用に DLL などがカスタマイズされた wine 環境が作られるということ)
  4. Steam ログイン画面が出てくるが、おそらく何も入力できないであろう。ここではキーボードを US にしないといけない(なお、以降も常に US にしておかないと AoE2 のキーボードショートカットも効かない):
  5. ログインしたらおそらく Steam であなたの購入した AoE2DE をインストールするポップアップが出てくるのでそれに従う。
  6. インストール後、 Properties... の LAUNCH OPTION に SKIPINTRO と入力(これによりオープニングムービーをスキップできる。スキップしないとクラッシュするので)
  7. Steam をいったん終了する
  8. CrossOver の作成したボトル(おそらく Age of Empires II Definitive Edition という名前のはず)を選択し、その右側にある ADVANCED SETTINGS にて DXVK をオンにする(これにより DirectX 12 系が動くようになる)
  9. Steam を起動し、 AoE2DE を起動

こうしてめでたくマルチプレイ含めて動くはず(キャンペーンやりたいなら movies フォルダを適当にリネームしてやればムービーでクラッシュしなくなりそう。やってないからわからないけど)だが、最近の MacBook を利用している場合は上にノッチがあるはずです(1080p FaceTime HD カメラがあるところ)。ここにちょうどゲーム内時刻が表示されるので見えなくなってしまう。そこで、この位置を移動してやる必要があります。

  1. ~/Library/Application Support/CrossOver/Bottles/Steam/drive_c/Program Files (x86)/Steam/steamapps/common/AoE2DE/widgetui を開きます
  2. 適当なエディタ(Vim とか VSCode とか、とにかく JSON ファイルを開けるやつ)で worldtimerpanel.json を開きます
  3. 冒頭の
{
  "Collection": {
    "Name": "WorldTimerPanel",
    "ViewPort": {
      "xorigin": 0,
      "yorigin": 0,
      "width": 3840,
      "height": 2160,
      "alignment": "TopLeft"
    },

{
  "Collection": {
    "Name": "WorldTimerPanel",
    "ViewPort": {
      "xorigin": 500,
      "yorigin": 0,
      "width": 3840,
      "height": 2160,
      "alignment": "TopLeft"
    },

とします("xorigin"0500 にしているだけ)
4. AoE2DE を再起動し、適当なゲームを開始して時刻が移動していることを確認する:

このあたりの仕組みは日本人向けのたくさんの MOD を作っていらっしゃる方が解説しています

以下、 230818 よりも前の方法

Redditにある投稿に沿えばできます。引っかかった内容(15.のこと)もあるので、一応、ここにも書きます。もっとも、にっちもさっちも行かなくなったら、素直にWindows環境を整えるのが楽そう。

  1. 最初にCrossOverを買います。Windows買うよりは安いですし、体験版で試してからでも良いです。(それでも買いたくないならOSSではあるので自分でビルドという選択肢もありか)
  2. CrossOverにはインストールできるソフト一覧みたいなものがあり、そこからSteamを選んでインストールします。その際に新しくBottle(個々の隔離されたWindows環境みたいなもの)も作られるはずです。
  3. Steam内で購入済みのAoE2DEをインストールします。まだ買っていないなら買いましょう(こちらは体験版とかないので事前に動作確認はできないですが・・)。
  4. 先程Steamをインストールするのに使ったソフト一覧でDXVKをインストールします(実は要らない気がする)。
  5. 同様にDirectX for modern gamesをインストールします。が、おそらくダウンロードできなかったとか出て失敗するので、実態はただの directx_Jun2010_redist.exe であることから代わりに https://trsasasusu.com/blog/119/directx_Jun2010_redist-9c/ を参考にダウンロードしてインストールしましょう。
  6. CrossOverの最初の画面でSteam bottleを右クリックするとSettingsがあるので、そこからDXVK backendを有効にします
  7. HomebrewをMacにインストールします。(まあMac使ってるエンジニアなら既に入ってるでしょう)
  8. brew install cabextract
  9. https://aka.ms/vs/16/release/vc_redist.x64.exeからvc_redist.x64.exeを適当な空フォルダ内にダウンロードします(インストールはしない)
  10. cabextract vc_redist.x64.exe
  11. cabextract a10
  12. ucrtbase.dll がフォルダ内にあるはずなので、これをSteam bottleのC:/Windows/System32に置きます(元からある方は適当にリネームしておく)。
  13. CrossOverの最初の画面でSteam bottleを選択するとWine configurationみたいなものが出てくるはずなので、そこのLibrariesにて concrt140ucrtbasenative に設定します
  14. Steamの設定からAoE2DEの起動オプションに SKIPINTRO を設定します。
  15. キーボードをMacの設定からU.S.にします(これをしないとキーボードショートカットが使えず対戦で負けます)
  16. AoE2DEを起動します。

↑このとおり。とはいっても、これだとMacで動いてる感がないので、 ↑Steam窓を前面に出すとこんな感じ

ちょっとした解説

まずなぜCrossOverなのか

同じWine系ではPlayOnMacなども存在しますが、大きな違いとしてはDXVKが使えるか否かです。CrossOver製作元のCodeWeaversは黒魔術によりもともとLinuxかつVulkan環境にしか対応していなかったDXVK (DirectXを他の環境でも動かすやつ) をあろうことかMacで動かせるようにしたため最強になったのです。さらに、Catalina以降やM1 Macでも動くらしいので、すごい。(ゆえにAoE2HDもCrossOver使えばそれらの環境でも動くと思う。私は未だにMojaveで止まってるので試してないが・・)

さらに、実は最近のMacでの多くのWine環境ではSteamの表示すらまともに動きません。大体真っ黒になってしまって、かろうじてタスクバーからちょこっと操作できるくらいです。その点もCrossOverではちゃんと動きます。

ucrtbase.dll関連で何してるの?

実はこの辺はやらなくても一応動きはするのですが、オンライン対戦ができなくなります。正確にはできはするのですが、開始数秒後に落ちます。レートも速攻で相手に明け渡すことになります。その辺をucrtbase.dllを置き換えることで正常に動作させられるようになるそうです。原理はわからん。見つけた人天才すぎる。

SKIPINTRO

オープニングムービーは読めずに落ちるので、読まないように飛ばさせます。

キーボードをU.S.にする

これは私が見つけた

大事なことなので、もう一度。

これは私が見つけた

あの掲示板はみんな基本的に英語キーボードを使っているので、誰も引っかからなかったようですが、たとえMac標準搭載のローマ字やGoogle英語入力であっても、キーボードショートカットは動きません(正確には Ctrl+何か なら動くのですが、開幕Hを押せない時点でお察し)。これを海外の皆さんと同じU.S.にすることで動くようになります。

現在起きている難点

なんか大きなマップだと右下の方が黒く点滅する。多分、私のMacbook Air (2017) 8 GB、メモリが足りてない・・・・?? 試してないけど 512x512 terrains MOD とか入れれば改善するかな・・?