CorradeでSecondLife/OpenSimulatorのボット入門（その１：ボット作成〜ログイン〜Windowsサービス化）

ボットアドベントカレンダー4日目(のはず)です。今日はどんなチャットボットかなと期待していた方、すみません。仮想空間のボットのお話です。

[SecondLife](http://secondlife.com)や[OpenSimulator](http://opensimulator.org)などの仮想空間では、人間が操作するアバターの他に、仮想世界に入りっぱなしにした状態でスクリプト等で自動制御する、いわゆるボットアバターを作成できます。

2007年〜2008年頃は、[キャンプボットという、他人の土地に常駐して小銭を稼いでいくボットが活躍していました](http://news.mynavi.jp/articles/2008/10/27/sl3/)が、現在では、モデルや、店員としてグループ招待を配ったりIMで案内したりするボットが残っているようです。

今更ながら、SecondLifeでボットを作ってみます。~~SecondLife自体が過去のものになりつつある~~2017年においてもなお更新が継続している[Corrade](http://corrade.grimore.org)で作成してみることにします。

> ここから先は、一応、SecondLifeの経験がある前提で書きます。SecondLife自体の経験がない方、もしくは遠い昔すぎて忘れてしまった方は、[とりあえずアバターを作成し、仮想世界である程度の操作を試してから](https://join.secondlife.com/?lang=ja-JP)続きを読まれることをお薦めします。

> Corradeでボットをまともに動かすには、プログラミングの知識が必要です。Qiitaの住人は大丈夫だと思っていますが、SecondLifeの住人で検索等から飛んできた方はご注意ください。

## Corradeサイト

http://grimore.org/secondlife/scripted_agents/corrade

使い方、API説明など、全てが載っています。前説が少し長いので、[Requirements](http://grimore.org/secondlife/scripted_agents/corrade#requirements)の節から読み始めるのが良さそうです。

[Windows Quickstart Video](http://grimore.org/secondlife/scripted_agents/corrade#windows_quickstart_video)のビデオは視聴必須です。たぶん、見ないとどう使っていいか全くわからないはず。無声のため、英語力不要。この記事の大部分が、ビデオで説明されている内容です。

2017年現在では、`progressive`という版のみ利用するように注意書きされていますので、`conservative`と書かれている段落は無視して構いません。

## 1. ボットアバター(と確認用アバター)を作成

[SecondLifeの登録画面](https://join.secondlife.com/?lang=ja-JP)で、ボット用のアバターを作成します。容姿はあとでなんとでも変更できますので、どれを選んでも良いです。ただ、馬に乗っているアバターをボットにすると、周りの人に迷惑かかる可能性があるので、あまりお薦めしません。

「ユーザー名」として指定した名前は、`First Name`となります。`Last Name`は固定で`Resident`となります。

最初にインワールドに入るとオリエンテーションが始まります。適当なインフォハブ、例えば [Hyles(42,32,22)](http://maps.secondlife.com/secondlife/Hyles/38/35/22) にテレポートすると、オリエンテーションが終わります。インフォハブに飛んだら、上部メニューから`World` -> `Set Home to Here`(または`世界`->`現在地をホームに設定`)を選択し、今いる場所をホームに設定しておきます。

ここまで終わったら、SecondLifeから一旦ログアウトしておきます。

最後に、作成したアバターをボットとしてSecondLifeの中の人に認知してもらうための手続きをします。これをしてもしなくてもアバターの動作に変化はありませんが、手続きをしない状態でボットであるとバレると、何か良くないことが起こるらしいです。

[SecondLifeのマイページ](https://secondlife.com/my/index.php?lang=ja)にログインして、右側のメニューから`アカウント`->`スクリプトエージェントステータス`を選択します。`変更`をクリックし、`はい、このアカウントをスクリプトエージェントまたはボット（Bot）と認定してください`を選択して、`変更を保存`ボタンをクリックします。

これまでSecond Lifeに入ったことのない方、もしくは、通常のアバターで入るとIMの嵐になったりして面倒な方は、同様の手順で、ボットを確認するためのアバターを作成しておきます。

## 2. Corradeをインストール

Corradeの動作には .NET Framework 4.5 以降が必要ですので、無ければインストールします。

[Download Binaries](http://grimore.org/secondlife/scripted_agents/corrade#download_binaries)で、`Corrade 9.169`(バージョン番号は執筆当時)というリンクをクリックしてZIPをダウンロードします。ダウンロードしたら、普通に展開するだけでOKです。

展開したら、ZIPの中の`Corrade`というフォルダ名を、作成したボットのログイン名などに変更します。1個の`Corrade.exe`で起動できるボットアバターは1個のみです。もしボットを2体以上作りたい場合は、このフォルダを丸ごとコピーしたフォルダを別に作成します。

以降は、`C:\Corrade\BotName Resident\`に`Corrade.exe`などがある前提で説明します。なお、執筆時には、Windows 10 Enterprise 1703で試しています。

## 3. Corradeを設定

展開した`Corrade`フォルダの中の`Corrade.ini.default`という名前を、`Corrade.ini`に変名します。ファイルの中身を編集する必要はありません。この手順は、サイトには載っていませんので、注意。

その後、`Configurator.exe`を起動します。起動直後は、以下のような画面が表示されます。

![configurator-started.png](https://qiita-image-store.s3.amazonaws.com/0/10290/7bfb9913-32ac-ac68-e148-a9633ad181b9.png)

`Client`、`Masters`、`Groups`タブだけ変更すれば、ボットは最低限動作します。

### 3.1 Client タブの設定

このタブで、ボットアカウントの情報を設定します。

![configurator-client.png](https://qiita-image-store.s3.amazonaws.com/0/10290/e0281ab1-9d5a-5e23-e506-06d2bce2a29c.png)

* `First Name` ... 登録時に指定したログイン名
* `Lsst Name` ... `Resident`固定
* `Password` ... 登録時に指定したパスワード
* `Terms of Service` ... チェックを入れる
* `Start Locations` ... `home`が先頭になるように並び替え

### 3.2 Masters タブの設定

このタブで、ボットに指示を出すアバターの情報を設定します。

![configurator-master.png](https://qiita-image-store.s3.amazonaws.com/0/10290/fea4ebd6-4231-2935-ac95-0a1bd0e73464.png)

* まず、`Delete Master`ボタンを2回押して、既に入っている名前を消します。
* `First Name` ... 確認用アバターのログイン名
* `Last Name` ... `Resident`固定（古参アバターは苗字）

### 3.3 Groups タブの設定

このタブで、ボットが動作に使用するグループの情報を設定します。とはいっても、ボットのためにグループを作成する必要はありません。グループ管理ボットなど、グループに対して操作を行うボットでなければ、ここで真面目にグループを設定しなくても、動作します。

![スクリーンショット 2017-11-13 20.11.24.png](https://qiita-image-store.s3.amazonaws.com/0/10290/95bf2290-ccb3-0e36-7edb-b60afe840eb6.png)

リストの`My Group`を選択して、`Group Password`に、ボットのパスワードに設定したい文字列を設定します。このパスワードは、SecondLifeのパスワードと同じである必要はありません。むしろ、安全のために、違うものにしておくことをお薦めします。

グループ管理ボットの場合は、`Group Name`や`GroupUUID`に実際の情報を設定し、`Group Permissions`や`Group Notifications`を適宜設定します。それ以外の場合は、パスワード以外の入力欄は一切触らないでください。

全部入力したら、`Save File...`ボタンをクリックして`Corrade.ini`ファイルを上書きし、ソフトウェアを終了します。

## 4. ボットがログインできるか確認

確認用アバターでSecondLifeにログインし、ボットのホームに設定した場所にテレポートします。テレポートしたら少しその場所から離れて、テレポートしたところにアバターを向かせます。

> [Hyles(42,32,22)](http://maps.secondlife.com/secondlife/Hyles/38/35/22) であれば、ちょうどスポットライトが当たったところにテレポートしますので、スポットライトを見るようにして待ち構えていればOKです。

`Corrade.exe`を起動します。途中でファイアウォールやネットワーク周りで許可を求めるダイアログが出てきますので、クリックします。

![login.png](https://qiita-image-store.s3.amazonaws.com/0/10290/7e9b903d-9439-91ed-3859-3b71a1a5b340.png)

`appearance set`という文字が出てくる頃には、ボットが表示されるはずです。現時点では、何もスクリプトを書いていないため、ボットは棒立ち以外何もできません。

## 5. Windows サービス化

棒立ちしかできない状態なのにサービス化するというのもいかがなものかとは思いますが、チュートリアルビデオで紹介されているので、一応。

各OSでのサービス化全般の説明は、[auto_restart](http://grimore.org/secondlife/scripted_agents/corrade/auto_restart) ページにあります。コマンドプロンプトを開いて、以下の例のように実行します。

```
C:\Corrade\BotName Resident> Corrade.exe install --service-name "Corrade: BotName"
```

サービス一覧を開いて、追加されていることを確認します。

![スクリーンショット 2017-11-10 23.26.19.png](https://qiita-image-store.s3.amazonaws.com/0/10290/4ef4be4d-d0e0-3213-7270-0c29f3bb3f86.png)

追加されたサービスを`開始`すると、しばらくしてから、ボットが画面に登場します。

Windows サービスの削除も、コマンドで実行できます。

```
C:\Corrade\BotName Resident> Corrade.exe uninstall --service-name "Corrade: BotName"
```

[次回](https://qiita.com/makopo/items/f991bd1bd49523ecaaa4)はいよいよ、スクリプトを書いてボットを動かします。