|
|
||
このページは、高森太郎がノート的に何でも書くページです。
主に勉強したこと、自分が知った知識や方法などを中心に、適当に、メモ的に、書き留めてます。
お約束ですが、場合によってはシステムに深刻な影響を与える可能性がありますので試す際は自己責任でお願いします。
今でもx86(いわゆる32bit環境)からx64に移行するのをためらっている方が結構見受けられる。
Windowsもx64がほぼ当たり前になり、メーカ製のPCでも両方選べたりするようになりつつある中、結構古参のユーザの方がためらっているケースがかなりあるようだ。理由はいろいろと聞くに、
こんな状態で、どうしても最後の踏ん切りでx64に移行するかどうか迷う人も多いと思う。しかし実際、ゲームの類いであれば*3よほどのことが無い限り動く。あるいはトラブルになってもいくつかの方法を試すことでさらに動作の確率を高めることができる。
自分は、いろいろあってWindows XP x64*4と言うレア*5な環境も普段使っているし、x64環境での経験値を貯めると言う関係から、Vista,7は、*6x64を使ってきた。
それ以前はWindows 98SE → Windows XPと乗り継いできているのでそれなりに資産もある。
こんな中で、Windows x64に移行する上での経験談的なものをメモにしてみる。
結論から言うと、ゲーム程度なら実際の所、同じバージョンのx86版で動くものは*7、ほとんど動く。これはWindows on Winodws 64 (WOW64)と言う、x64の中でx86(32bit)アプリケーションを動作させるモードがあり、これがかなり優秀なためだ。たとえば吉里吉里、NScripterなど汎用のものはほとんど動くと言ってよいだろう。
では、ゲームやソフトウエアが動かないパターンはどんなものがあるのか?と言うと以下がその典型例である。
それぞれ実は対処法があるのでいくつか紹介する。ただし、実際ほとんどまんま動くのでこれらのテクニックの出番はおそらくほとんど無いかもしれない。
またそれらでも駄目な場合の最後の手段一歩手前ぐらいの仮想化(XP Modeも含む)についても最後でちょっとだけ触れる予定。
これはインストールしようとすると「お使いのWindowsではインストールできません」とか「OSのバージョンが新しすぎます」などとメッセージが出て蹴られるケース。
こういうのは実際はインストールすると使えるものもある。近頃はこう言うソフトは少なくなったが希に存在するようだ。
もちろんウイルス対策ソフトやドライバなど、無理矢理インストールしてはまずいものもある。しかし、ゲーム程度なら実際ほとんど問題なく動作するので、インストール(というかコピー)さえできれば動作したりする。
この場合、インストーラを右クリックしてプロパティで、互換モードで動作するように設定して実行すると簡単なバージョンチェックであれば通れたりする。(ついでに「管理者として実効」しておく方のもいいかも)CD-ROMなどで直接プロパティを変更できない場合は、一度インストーラのショートカットをデスクトップに作成して、そのショートカットに対して互換モードを設定して試すとよい。
これでも駄目な場合は、インストーラを使わないという方法もある。
インストーラにもいくつか種類があり、
の2種類がある。
前者の場合であれば、インストーラは単に「フォルダの内容をコピー、インストール情報、アンインストール情報をレジストリに書き込み、さらにショートカットを作る」程度の動作をするプログラムと言える。なので、実際のプログラムの動作にはインストーラでインストールする必要がない場合もあり、よくあるインストール不要のソフトのように、丸ごと適当なディレクトリにコピーして、ゲームの本体を起動すると普通に遊べたりする。
インストーラが一つのファイルにアーカイブ化されている場合でも、
等で、インストーラをでインストールせずに中身を取り出せるケースは多い。
インストーラは、高度な事をしているケースも多々ある。環境を把握して、その環境に合ったソフトウエアを選択し、システムにライブラリを入れて、レジストリ情報を登録したり…といったことである。が、しかし、そう言うケースばかりでは無い。
特にゲームでは、こう言った全て一つのファイルにアーカイブ化されているインストーラの場合でも、実際は中身を見ると、ファイルを展開して、コピーして、レジストリにはインストール・アンインストール情報だけ登録して、ショートカットを作る、と言った程度のものもある。そしてそれらは、実行ファイルをクリックするだけで動作するケースも多い。
ただしそう言う類いであるか否かの判断はちょっと経験がないと難しいかもしれないが…判別の方法としては、一番単純には、インストーラが自己展開書庫のアイコンだったり、インストーラーのプロパティを除くと「かんたんインストーラ」とか「簡易インストーラ」と言った名称になっている場合はコピーするだけで動く事が多い。ではそれ以外の高度な事ができるインストーラだとコピーだけではだめで、簡単インストーラの類いだとコピーだけで動くかと言えばそうではないのだが。
またさらに裏技的な手段だが(ここまでくるともっと差し迫った理由でどうしてもソフトを動作させなければならないと言う類いだが)x32環境でとりあえずインストールしてみて、インストールの様子を監視して、必要なファイルをその環境からコピーしてきて手動インストールという方法もある。
これはゲームではほとんどないのでおまけ。
マルチアーキテクチャに対応しているソフトウエアで、尚且つ業務で使うようなソフトウエアだと管理を簡単にするために、起動時にバッチファイルを用いて分岐処理しているものがある。たとえば以下の様な例。
set MC=err if "%PROCESSOR_ARCHITECTURE%" == "IA64" set MC=ia64 if "%PROCESSOR_ARCHITECTURE%" == "x86" set MC=i486 if "%PROCESSOR_ARCHITECTURE%" == "MIPS" set MC=r4000 if "%PROCESSOR_ARCHITECTURE%" == "ALPHA" set MC=alpha if not "%MC%" == "err" goto ARC_ERR start "%insdir%\%mc%\start.exe"
これは、x64で普通に実行すると「%PROCESSOR_ARCHITECTURE%」は「AMD64」を返す事によりエラーになる。
つまりこのバッチファイルが書かれた時点では、「AMD64」などというものが存在していないため、動作しないのだ。
こういうときは2通りの対処の仕方がある。
以下の一行を、3行目あたりに追加してやる。
if "%PROCESSOR_ARCHITECTURE%" == "AMD64" set MC=i486
AMD64の時は、x86の時と同じ値を返すようにしてしまう。
これが一番単純である
バッチファイルを直接編集するのはちょっと…と言う方もいるだろう。というわけで以下の様な対処の仕方もある。
このバッチファイルをWOW64で起動するバッチファイルを作ってしまうのである。
rem このバッチファイルがx86で動作しているか確認する rem もしx86でなければ、sysWOW64で動作する32bit版cmd.exeで起動し直す if "%PROCESSOR_ARCHITECTURE%" NEQ "x86" ( %WINDIR%\SysWOW64\cmd.exe /C %0 exit ) call c:\hogehoge\start.bat
こうすると、x86環境をエミュレートするWOW64のcmd.exeで起動し直すことができる。
この環境であれば%PROCESSOR_ARCHITECTURE%は「x86」を返す。
起動しようとすると「有効なWin32アプリケーションではありません」という警告が出たり、あるいは起動したはずなのにうんともすんとも言わないと言うパターンが大抵これである。x64版のWinodwsでは、16bitアプリケーションは動作しないため発生する。
16bitなど関係無いだろと思われるかも知れないが、意外とこれがまだ生き残っているのである。実はx86版Windowsには16bitアプリケーションを動かすためのWOW32と言う環境が含まれていて、無意識のうちに問題なく動作している。このためx86を使っている間は、それほど意識しなくても16bitアプリケーションも使えていたのだ。しかしx64にはこれがないので動かなくなって問題が出てくるという話である。
これは基本的に仮想化しか逃げる道はないわけだが*8、ここまで古いものは少ないだろう。特に16bitアプリケーションでは基本的に使える色空間が限られているため、レトロ趣味の超古いゲームなどを持ち出してこない限り、アプリ自体が16bitで動かないことはほとんど無いと言っていい。
しかし問題になるケースはある。どういうケースかというと、インストーラが16bitである場合である。自分が確認したものでは、1990年代後半から2000年代初頭のゲームでもインストーラが16bitだったものがあった*9。
この場合の回避方法だが、前項「インストーラのOSのバージョンチェックで引っかかる場合の対処法」にある「インストーラを使わずにインストールする」と言う方法で回避できる場合がある。
また、DL版を購入すると、DL版ではインストーラが作り直されていてインストールできたという場合もある。これは特にx64対応というわけでは無くDL版にするに当たってインストール方式を買えたとか言う事の副作用で問題が無くなっていると見られる。この場合、余計な出費にはなるが、どうしても遊びたいソフトがある場合、試す手はある。
起動すると「○○○.dllがみつかりませんでした」等といって強制終了したり、ムービーが再生されない、音が出ないと言ったものがこのパターンである。通常は、dllの名前でググるなぞし、ここでそれが含まれているライブラリをインストールすればよいのだが(これはx86,64に限らずよくあること)インストールしても動かないと言うケースがままある。
これの発生原因であるが、大まかに
の二種類になる。
どちらの場合でも、基本的にそのライブラリを調達してくればよい。
まずはベクターや窓の杜などを探してライブラリセットを落としてくるだとか言う事になるが、ググるだとか、自前のx86環境からコピーしてくると言う事もまぁある。*10
入手したライブラリは、インストールできる様ならそのままインストールし、dllファイル、exeファイル単体という話であれば、ゲーム本体プログラムと同じディレクトリに入れてやればよい。*11
これはほとんどユーザレベルでは対処は難しい。WOWはアプリケーションは動くようになるが、ドライバは動かせないというか、必ず64bit対応である必要がある。また、64bitのプログラムから、32bitのプログラムをリンクする事ができないと言う制限もあるため、Windows標準の機能を呼び出そうとしてコケると言う事もある。
アプリケーションだったら関係無い気もするのだが、ソフトによっては仮想デバイスなどをドライバとしてインストールする(時にバットなと表現される)ソフトウエアがごく希に存在するためでる。こういうのはx64対応版がなければ通常の方法では難しい。仮想化すれば動くこともあるが、このケースだと仮想化でも動かないこともあったりして非常に厄介である。
ただ、ゲームというカテゴライズだとこういうものはほとんどないので、あまり心配する必要は無い。
これに当たってしまったときはあまりできる事は無いのだが、以下の様な事は考えておくとよい。
アレなソフトウエア、ゲームなどではたまにあるのだが、インストールフォルダを「C:\Program_files」にある事を前提にしているものがある。これをこのまま承認するとインストールができませんと蹴られる事になる。
これはx86アプリケーションをx64にインストールするときは、普通「C:\Program_files(x86)」またはそれ以外にインストールする必要があり、「C:\Program_files」の方にはインストールはできないようになっている(入れても動作しない)ためにおきる。単純にはインストーラが環境変数の確認をサボっているために起きる。*12
デフォルトでこれが表示されるだけのものであれば、手動で別のディレクトリを別のフォルダにしてやればよい。このとき特に「C:\Program_files(x86)」でなければいけないと言うものではない。
ただ…一回だけ「C:\Program_files」以下に決めうちされている上に、変更もできないと言うソフトウエアにあたった。これ結構致命的で、こうなると仮想化しか方法がないかもしれない。
これが結構厄介である。これはx64移行以外に、OS移行、環境変更などでもわりとトラブルになるケースであるが、x86では動作するのに、x64では動かないと言うケースも希に存在する。そう言う場合の対処法…なのだが、実際はほとんど対処法らしい対処方がない。
トラブルになるケースは以下の通り。
これらの対処方としてはいわゆる普通のDRM回避手法(No CDパッチを探すとか、特殊なリッピングソフトを使うとか)そう言う方法しかないわけだが、それらはここでは述べない。
ものによってはダウンロード販売版があるので、それを買っちゃうと言う解決法もあるだろう。
なお、主要エロゲのダウンロードサイトにあるユーザ認証型や、ランタイムなどを入れるDRMは今ではほとんどx64に対応しているのでDRMが原因で動かないと言う心配はあまりない。(動作保証はしてないところが大半だが)*14
上記以外というケースになると本当に対処のしようがない場合も。
しかし、最後のあがき的にできる事もあるので、いくつか上げておく。
吉里吉里、Noscripterを始めとした汎用ゲームエンジン、あるいは、そのゲーム会社の汎用ゲームエンジンなどを使われている場合、ゲームエンジンをWebから落としてきたより新しいバージョンに置き換えてみると言う方法である。
このほか、ビデオコーディック、オーディオコーディックのライブラリのバージョンをあげると言う方法がある。
上手くいったら万歳であるが、汎用エンジンってそのまんまでも動くケースが多いんで…。
特に3D系のゲームでどうも動作が不安定になると言うケースはこれで治ることがある。*15
最近のコンピュータはマルチコアが当たり前である。一番最安のパソコンを買ってもマルチコアになっているし、複数コアが当然なのだが、古いプログラムの中ではこれらに対応していないものがある。リソースの競合が起きて動作が不安定になるのだ。これは特にリソースを使い切るような、発売された当時は高負荷なゲームに多いような気がする。こう言った場合は、動作させるコアを特定のコアだけに限定させることで解決できる。
やり方は、以下のページを参照のこと。
これは起動する度にやらなければならないなど面倒だが「affinty」でググると自動化するツールなども出ているほか、ショートカットを使う方法もある。
プログラムのショートカットをコピーして、プロパティを開く。
そのリンク先は通常は
"c:\Program_Files\hogehoge\fuga.exe"
等となっていると思うが、これを
C:\Windows\System32\cmd.exe "/C start /AFFINITY 1 c:\Program_Files\hogehoge\fuga.exe"
などとしておけば、シングルコアで使用するCPUを限定した状態で当該のソフトウエアが起動できるようになる。
上記の手段を試しても、どうしても正常に動作しないものが出てくる。
こうなった場合は、最後の手段の一歩手前*16として仮想化という方法がある。
確かに始めはそれなりに知識が必要なのでハードルは高いと感じるかもしれない。また調べるとサーバやらITを商売になさっている専門家の方々が様々難しい情報やら議論やらをしていて、気が引けるのは分かる。ただ、昔自分がVista x64に挑戦したことにくらべると、XP Modeと言う大きな流れをつかまえてかなりよくなっているのは間違いはなく、ゲームを動かすために使いたいと言う程度であればそれほど恐れる必要は無い。
簡単に言うと、ただしこれはやってみれば意外と簡単であり、環境が安定すりゃこっちのもん的な感じである。
Win7に搭載されたXP Modeで一気に一般化したイメージがある仮想化であるが、簡単に言うとパソコンの中にもう一つパソコンを作るという形になる。
ただ適用にはいくつか基本事項として注意すべき点がある。
この内上の2点については、無音ATOM機とかVIAとかよっぽどなもで無い限りは、Win Vistaより最近のパソコンであればまま大丈夫である。ただしメモリはこの際なので4GB以上あったほうがいいだろう。
最後の一つ。ホスト(仮想化ソフトが走っている方)とは別にゲスト(仮想化ソフトの上で走っている方)用ライセンス以外に、ライセンスがもう一つ必要だと言う件は初めてやろうとすると見落としやすい。ただこれはDSPでもいける*18とかやりようはある。このほかSAをつけて仮想化用のライセンスを入手するという方法もある。
また、Win7でXP Modeが使えるProfessional以上で、XP Modeのライセンスを使う場合は不要である。*19ではXP Modeで万事OKかというと、今となってはXP ModeはVirtul PCをベースにしており、特にグラフィックが弱いので、ゲームをやると言う目的ではあまりおすすめしない。
英語版Wikipediaに詳細な比較記事があるのでここを参照して頂きたいが、3D accelerationの項を確認すると、Windows Virtual PCは3Dはそもそもないと言う表示になっている。3Dとあるとおり、当然3D系のゲームは動かないが、実は2Dが主のゲームでもちょっとだけエフェクトで3Dを使ってたりすることがあり、非対応だとコケたりするのでできるだけ3Dが使えるものを選んでおいた方が無難だろう。また、Win7 Pro付属のXP modeのライセンスは、Windows Virtual PCにだけではなく、他の仮想化ライセンスとしても使える。
と言う事を視野にいれると以下の3つがよい。
なおXP Modeをインポートする方法などは「XP mode VMware」とか「XP mode Virtual box」とかググると参考になる記事がたくさんでてくるのでそれらを参照のこと。
https://www.microsoft.com/japan/windows/virtual-pc/
マイクロソフトが出している仮想環境。シンプルであり、XP Modeの元になっている。お手軽である。
一方、3Dグラフィックが非対応だったり、パフォーマンスの問題もある他、実質的に開発が終了している。(今はHyper-Vの方に力が入れられている)
http://www.vmware.com/jp/products/desktop_virtualization/player/overview
仮想化ソフトウエアの老舗、VMwareの無料版である。
3D対応や、連携ソフトの使いやすさ、パフォーマンスなどはこちらの方が一歩抜きに出ている。他、何より3Dに対応している。(ただしnVidia/AMD(ATI)のGPU推奨)
ただし、ダウンロードに登録が必要なほか、商用利用はできないと言った話はある。
Oracleのオープンソースで開発が進んでいる仮想化ソフトウエアである。
ライセンスはGPLなので、商用利用もできるほか、3Dにも対応している。また個人利用ならば無償でUSB対応機能も使えたりする。
このなかでどれがおすすめと言う事は無いのだが、実はVirtualBoxでは動く3Dなソフトが、VMwareでは動かないとか、またその逆もあるので純粋にどれがいいとは実はなかなか言い切れないところがある。ただ動いてしまえばこちらのもんではあるし、また普通のPCにインストールする作業と違って、ある程度何回もインストールして試すことはできる。単純には仮想マシンはファイルという形でホストの上に保存されているだけなので、消してしまえばよいのである。
このほか、特にWindowsで何回もインストール・アンインストールを繰り返すと面倒なのがプロダクト・アクティベーションである。
これは、当然違う仮想化ソフトにインストールするとそのたびに求められることになるが、このプロダクト・アクティベーションは猶予期間が30日間あるので、とりあえず動作を確認するまではアクティベーションせずにしておき、いくつか試して安定した環境ができたらアクティベーションで有効化すると言う方法が使えるだろう。
いろいろ書いて来たけれど、実際これらのテクニックの出番はあまりないくらいWindowsの互換性は高いので本当はあまり心配いらないかもしれない。
どちらかというと古い周辺機器についてx64版のドライバが用意されてないとか、そちらの方がより深刻かも知れないくらいである。こちらも実際は徐々に(ドライバが出た、と言う他に、古い周辺機器が別の原因で使えなくなるとかそう言う時間が解決する系も含めて)解決されつつあったりする。
個人的にはもう32bitに戻る気は無いかなーと言う感触でいる。
*1:有り体に言ってエロゲ
*2:特にエロゲのダウンロード販売の発達っぷりは異常。電撃王時代に話題になったようなもんが新規にダウンロード販売開始される事も珍しく無い
*3:それもエロゲなら
*4:中身はWindows server 2003 x64なのだが。なので下手すると通常のWinXPより安定してたりする場面も
*5:アレではない
*6:とくにVista購入時点ではXP to Vistaの互換問題も出ていたり、メモリが今ほどは安くなっていなかったこと、あとVistaの評判が悲惨だった事もあって、本当にx64なんぞ、まだ買う人は少なかった…今でもWIn 7は64bitサポートするが、Vistaは非サポートとか、はてはWinXP x64までもサポートするのにVista x64は非サポートとかそう言うソフトも存在する…お前ら!そんなにVistaが嫌いかッ! 実際Win7とWin VistaでSPをあてた状態はほとんど変わらないので7 64bit向けのドライバがそのまま使えたりするのだけれど…
*7:ただし、ここで「32bit版で動くものは」という言い方をしたのは理由があって、XP(x86)では動くが7(x86)では動かないと言うケースでは、x64でも当然動かない訳だからである。この場合も最後におまけとして触れておくけれど、まずは「同じバージョンのx86版では動くのに、x64では動かない場合の対処方」という事を主眼に置いて話を進める。
*8:逆に16bitなら仮想化とかまで行かなくてもいわゆるゲーム専用エミュで動いたりもするので、以外とお手軽に解決手段があることも
*9:なぜインストーラを16bitで作ってあるかというと、16bit環境で起動したときにエラー画面を出せるようにするため、とか、互換性確保のため、とかいろいろと理由があった。どちらにせよ16bit環境がほぼ全滅してくるに従って今はほとんど消え去っている。
*10:ただし、自前のx86環境やらXPやらからコピーしたり、ググってどこからともなく入手する奴は法的リスクがあることは頭に入れておくこと
*11:共通で用いられるライブラリ(統合アーカイバープロジェクト様のDLLとか)は¥Windows¥SysWOW64 に入れる方法もあるが、ゲームの場合競合したり面倒なこともあるので、同じフォルダに入れてしまうのが無難だろう
*12:これで問題になるソフトウエアは、x64環境でもOSのインストールドライブがCでなかったりすると問題になる
*13:ただし今時光学ドライブ非搭載のPC結構多いので、こういうの正直もうやめてほしい…。
*14:ただ一時は酷かった。32bit版のWin7にすらまともに対応してないとか、酷いのがたくさんあった。
*15:これは特にx86だから、x64だからと言う話でもないのだが、一度だけx86ではマルチコア環境でも安定するのに、x64ではCPUを限定しないとまともに動かないケースがあったので紹介する
*16:最後の手段は専用PCを用意するとか、デュアルブートにするとか
*17:無くても動かすだけなら動くがあまり快適ではない
*18:ホストに対象の部品がついてさえいればよいのだそうである。今ならUSB3.0拡張カードにDSP版つけるのがおすすめかも。メモリという手もあるが次のPCに持って行くときに移植が面倒かもしれない