スティックPCで自作ゲーム(TorqueL/トルクル)専用PCを作ってみる

> 本記事の内容を[はてなブログ](https://nanmo.hateblo.jp/entry/2015/03/22/000000)に転記しました。
> すぐにQiitaの記事を削除する予定はありませんが、どちらか一方だけ残すとなったらはてなブログの方を残すと思います。
> ご承知おき下さい。

[マウスコンピュータのm-stick MS-NH1](http://www.mouse-jp.co.jp/abest/m-stick_nh1/)を使って、電源をつけたら[TorqueL(トルクル)](http://TorqueL.net)が起動してすぐ遊べるWindows 8.1 PCを作ってみたのでその作業メモです。

![IMG_0018.JPG](https://qiita-image-store.s3.amazonaws.com/0/37548/f786371c-4030-7611-59f4-8cc54ee848b6.jpeg)

だいたいこんな感じで動くようになります。


<iframe width="312" height="176" src="http://ext.nicovideo.jp/thumb/sm25850501" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"><a href="http://www.nicovideo.jp/watch/sm25850501">【ニコニコ動画】スティックPCで自作ゲーム専用PCを作ってみた #TorqueL</a></iframe>

ちなみに、仕込んだスティックPCは[宣伝用なので貸出もできます](http://FullPowerSideAttack.com/torquelplaypc)。

PCや実行するゲームが違っても色々活かせるところはあると思うので、行った作業などを書いておきます。

※書いている順番が行うべき作業の順番とは限りません

# 使用した機材

 * [マウスコンピュータのm-stick MS-NH1](http://www.mouse-jp.co.jp/abest/m-stick_nh1/)
 * Xbox 360 ゲームパッド (有線)
 * HDMI延長アダプタ(メス-メス,必要に応じて)
 * HDMI入力のある液晶モニタ

# 初回のセットアップ後に行った作業

### 電源設定でスリープなしに設定

![disabled_display_sleep.png](https://qiita-image-store.s3.amazonaws.com/0/37548/770c443c-9acd-8a9c-dcf9-98fabf61ce7c.png)

### WindowsUpdate自動実行停止

![disabled_windows_update.png](https://qiita-image-store.s3.amazonaws.com/0/37548/a99dc461-7aa2-0cff-1dbc-0b9ab79a4ea9.png)

### Windowsファイアウォールの無効化

![disabled_firewall.png](https://qiita-image-store.s3.amazonaws.com/0/37548/acc18de3-5346-06a0-4311-4c56c12ee485.png)

### アクションセンターの監視無効化

![disabled_actioncenter_security.png](https://qiita-image-store.s3.amazonaws.com/0/37548/d000f00a-0c98-b026-d071-1a9714d0e155.png)

![disabled_actioncenter_maintenance.png](https://qiita-image-store.s3.amazonaws.com/0/37548/95ea810e-fbf1-5a63-ed05-89593cad10ee.png)

### Microsottアカウントとの連携しないローカルアカウントでユーザー名を変更/アカウントのアイコンを変更

![local_account.png](https://qiita-image-store.s3.amazonaws.com/0/37548/3531718e-d60f-b8df-d96c-f395f22ef3dc.png)

### netplwizからパスワードが必要のチェックを外す

![netplwiz_unchecked_need_passwd.png](https://qiita-image-store.s3.amazonaws.com/0/37548/b23b6860-8c08-f5d6-f5a9-5b105dfed3ce.png)

### ネットワークデバイス(無線LANとBluetooth)を無効化

![disabled_network_devices.png](https://qiita-image-store.s3.amazonaws.com/0/37548/e642eadc-f3e3-3c3a-13e6-e1c6c9c88e6f.png)

### タスクバーを自動的に隠すように設定 & 小さいタスクバーボタンに設定

![taskbar_autohide_minibutton.png](https://qiita-image-store.s3.amazonaws.com/0/37548/b0e37068-6666-4125-b71e-f7a8b895c3ab.png)

### タスクバー設定で起動時にデスクトップを表示するように設定 & スタート画面にデスクトップの背景を表示する

![starting_desktop.png](https://qiita-image-store.s3.amazonaws.com/0/37548/c574ce8b-4252-c278-2563-ac482b32e3ce.png)

### デスクトップアイコンの表示のチェックを外す

![disabled_display_desktop_icons.png](https://qiita-image-store.s3.amazonaws.com/0/37548/6be76ad9-69ad-35ad-aca5-fef07a187106.png)

### 電源ボタンの動作をシャットダウンに設定

![power_button_shutdown.png](https://qiita-image-store.s3.amazonaws.com/0/37548/3e3e533f-59e1-22bb-0a9f-7d02a99aa880.png)

### タスクバーのアイコン表示を全て通知のみ表示に設定

![taskbar_only_indicates.png](https://qiita-image-store.s3.amazonaws.com/0/37548/6b679262-36b1-4b95-3f11-a2f21b78f1eb.png)

他、細かいところでは

 * Adobe Reader をアンインストール
 * タスクバーのピン止めを全て解除
 * スタート画面のピン止めを全て解除(またはアンインストール)
 * ネットワーク周りの無効化前に適用可能なWindows Updateは全て適用しておく

と言った作業を行いました。

これでとりあえず、Windowsが起動して自動ログイン後、デスクトップが表示され、しばらく放っておいても何も起きないところまで設定できます。

# ゲームの実行に必要のない以下のサービスを自動実行から手動実行に変更

※通常Windowsを使うのに必要なサービスも手動実行に変更しています

Base Filtering Engine 
BTDevManager
Cryptographic Services
COM+ Event System
Computer Manager
DeviceAssociationService
DHCP Client
Diagonostic Policy Service
Disributed Link Tracking Client
DNS Client
IKE and AuthIP IPsec Keying Modules
IP Helper
IPSec Policy Agent
Network Location Awareness
Network Store Interface Service
Print Spooler
Server
Shell Hardware Detection
TCP/IP NetBIOS Helper
Themes
Windows Defender Service
Windows Firewall
Windows Image Acquistion (WIA)
Windows Search
WLAN AutoConfig
WorkStation

# [2015/07/29追記] Windows 10 へのアップグレードを抑止

[[企業ユーザー向け] Windows Update からの Windows 10 への無償アップグレードを管理する方法 - Ask CORE - Site Home - TechNet Blogs](http://blogs.technet.com/b/askcorejp/archive/2015/07/23/windows-update-windows-10-1.aspx)

の手順に従ってバッチファイルを作成、実行。

# [2015/10/06追記] Windows10 自動ダウンロード(?)の防止

「Windows 10」、予約しなくても約6GBのファイルを自動ダウンロード（回避方法あり） - ITmedia ニュース http://www.itmedia.co.jp/news/articles/1509/12/news017.html

KB3035583, KB2976978のアンインストールと非表示設定を実行。

※KB3035583をアンインストールする際、GWX.exeとGWXUX.exeプロセスを殺してからアンインストールする。これが残っているとタスクバーのWindows10を入手しよう！のアイコンが残る。

# ゲームの自動実行を仕込む
ゲームを起動して、ゲームが終了したら自動でシャットダウンするバッチファイルを作成して、PC上に保存

```bat:TorqueL.cmd
TorqueL.exe -screen-fullscreen 1 -screen-quality NoAA -kiosk -screen-height 10000 -screen-width 10000 -reset-time 300
shutdown -r -t 0
```

-kiosk,-reset-timeはTorqueLに独自に実装されたオプションです。
-kioskはゲーム内メニューからスクリーン設定とゲーム終了メニューを非表示に、-reset-timeは指定された秒数操作していない状態が続いた時にタイトル画面に戻るオプションです(-screen-fullscreenはUnityのドキュメントに記載のあるオプションですが、機能していなかったので自力で実装してあります)。

Windows 8.1 にはスタートメニューはありませんが、スタートアップ起動フォルダは残っているので、

* C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup　にバッチファイルのショートカットを設置

これで、自動的にゲームが起動でき、ゲームが何らかの問題で終了した時には自動的に再起動する(shutdown -r -t 0)ことが出来ます。(終了したい場合はPCの電源ボタンを押す)

# USBポートをゲームパッドで埋める

ここまでの作業で電源を付けるとWindowsが立ち上がり、自動的にログイン、TorqueLが起動するところまで出来ました。

仕上げに1つだけあるフルサイズのUSBポートにXbox 360ゲームパッドを繋げます。
ゲームパッドからはOSの操作は一切出来ませんので、あたかもゲーム専用の機械のように扱えます。

ちなみに、Xbox 360ゲームパッドは途中で独自端子が付いていてそこだけ外せるようになっています。
そのため、USBポート部分はもうケーブルタイなどで固定してしまっていいかもしれません。

![IMG_0011.JPG](https://qiita-image-store.s3.amazonaws.com/0/37548/63730290-f99d-d647-99ab-707c13def5e0.jpeg)


# セットアップ完了後の取り扱い方

イベントなどで常設展示を行うことを考えると

 * PC本体には触れないようにする、あるいは隠しておく
 * USBポート/Micro SDカードスロットは危険なので塞いでおく
   * ただ、m-stickの場合はフルサイズUSBが1つしか無いのでUSB接続のコントローラーで埋まる(より安全を求めるなら差し込んだUSBをケーブルタイなどで固定しておく)

と言った対応は必要そうです。

あと基本的には壊れたらそれまでのつもりです。

# セットアップ完了後の再設定方法

ここまでのセットアップ完了後は以下の様な手順で設定作業を行うことが出来ます。

 1. USBポートにコントローラーではなく、キーボード・マウスを接続して起動する(自分はThinkVantageのトラックポイント付きキーボードを使っていました)
 2. 起動後、キーボードのWindowsキーを押す(ゲーム画面がフォーカスを失ってデスクトップが表示される)
 3. そのまま作業を行う(気になる場合はバッチファイルを実行しているコマンドラインのウィンドウを閉じると、バッチファイルの実行が中断されるのでゲームを終了してもOSが再起動しなくなります)

キーボードやタッチパネルを使うゲームの場合は何か別の対応を考える必要がありそうです。