この記事は、 NeosVR #1 Advent Calendar 2021 の23日目の記事です。
adventar.org昨日は、ばるさんの【NeosVR】アホ毛を抜いて遊べるようにしたお話
でした。
ばるさんのアホ毛を抜いたことはありませんが、今度お会いした時ちょっと引っ張ってみようか、と強く思わせる記事。よろしくお願いします。
はじめに
こんにちは、nisusです。ないさすでもにすすでも何でもお好きに読んでください、名前の由来は某エディタソフトです。大した由来ではありません…
いつもはNeosモデリングクラブで何か作っていたり、ライテルさんとこに居たり。ライテルさんとこではいつも驚かされてばかりです。自分もたまに何か置いています。
headless?
皆様の誤家庭にはたいていサーバが転がっているとは思います。ファイルサーバやただの録画サーバなど目的も機種も様々でしょうし、最近は手元に置かずともグーグル先生のとこやamazonさんのとこに転がしている方も多いことでしょう。で、NeosVRで遊んでいる時にheadlessというものがあると聞きました。面白そうだな、手元に余ったサーバやパーツあるし、ちょっと作ってみようと環境用意、テスト運用。その記録が今回の記事です。
材料
昔、Minecraftのサーバ立てるのに使ったこのHPEのサーバ、ProLiant ML110 G6が今回のメインディッシュ。退役し家の片隅で眠っていました。購入時の性能は
入れていたOSはScientific Linux、わぁ懐かしい。メモリは2GBと4GB一枚ずつ追加し8GB。記録見ると、購入は11年3月、お値段17,000円。
各所限界なので、現役復帰に向け強化を計画。流石にこの世代のパーツは流通量も少なく、予算かけるのも勿体ないしで近所のパーツショップ、通販ほか適当にあたって下記の構成へ…
CPUはamazonで購入、中古3,000円位。amazonの写真だとリテールパッケージでしたのに、今回はCPUだけがアルミホイルに包まれゆうパケットで到着。この程度の違いはよくあることです、多分なにかの引き抜き品でしょう。当初、aliexpressでXeonの購入を検討していましたが、記事作成に間に合わない恐れがあり今回は納期重視で。海外通販は好きなのですが、事故率が多くてね……。
適当にグリス塗って既存のCPUと交換。
メモリは近所のパーツショップで。4GB PC3-8500が千円。速度違うけど気にしない!
SSDは、これまた某所セール、初めて使うメーカの128GBが2,000円。今回はこれの評価も含めることにしましょう。
それぞれ適当に取り付け計6,000円で強化。
キーボード・マウス・モニタは手元ジャンク箱から用意。
OS
Scientific Linuxは既に更新停止、近年元気なディストリビューションということで、Ubuntuを選択。バージョンは20
USBメモリにイメージを焼きインストール。入れ終えたら普通にUbuntuが起動します。ハードウェアはいわゆる「枯れた」構成なので、すんなり入ります。
忘れずにUbuntuOneほか設定し、パッチが自動的に当たるようしておきます。
headless用プログラム
ここからはとりあえず教科書通りに。下記のnoteの記事が一番わかりやすいですし、現在(12月)ほぼこの方法で行えました。なお、記載順が微妙に違うのは、自分がやった手順をもとに記載しているためです。
まずはPatreonの支援プランを$12以上に変更し、DiscordのNeosVRチャンネルに参加し連携しておく必要があります。これらは既に行っていました。このチャンネル中、ピン止めされたメッセージに一通りの手順があります。まずはFrooxius氏の19/9/9のメッセージを確認、手順通りにコマンド打ち環境構築。この環境構築の手順もDiscordのピン留めメッセージにありますが、なぜか作った人がDeleted User……
サーバにsteamCMDのインストール。
developer.valvesoftware.com まずはsteam用のアカウント作成し、steamCMD入れるために、上記の、Linux→Ubuntu/Debian の記載通りのコマンドを入力、インストールしアカウントを設定。
次はmono(exeファイルを実行するためのランタイム的なもの)のインストール、そしてNeosのインストール。
ここでなぜか手順通りにすんなり行かず。次の手順、起動シェルを編集しようとしても、RunHeadlessMono.shが無く、Neos.exeも見つからず。ナンデー?となりましたが、
app_update 740250 -beta headless-client -betapassword <ベータアクセスコード>
をもう一度入力したら欠けたシェルなどが入り正常に起動するように。
設定
ここもとりあえず教科書通りに行いました
headless専用のアカウントを作ることが推奨されているようなので、Neosでアカウントを作成(nisusHDL)。この情報を設定、起動ワールドを設定するために、loadWorldURLの箇所にURLを設定。今回ひとまずMEROOMにして実行してあります。なお、下記コンフィグは権限ミスってるなど複数個所の間違いがあります、直さなきゃ。
{
"$schema": "https://raw.githubusercontent.com/Neos-Metaverse/JSONSchemas/main/schemas/NeosHeadlessConfig.schema.json",
"comment": "nisus-headless config",
"universeId": null,
"tickRate": 60.0,
"maxConcurrentAssetTransfers": 6,
"usernameOverride": null,
"loginCredential": "nisusHDL",
"loginPassword": "",
"startWorlds": [
{
"isEnabled": true,
"sessionName": "nisusHDL",
"customSessionId": null,
"description": null,
"maxUsers": 20,
"accessLevel": "FriendsOfFriends",
"hideFromPublicListing": false,
"tags": [],
"mobileFriendly": false,
"loadWorldURL": "neosrec:///U-epicEaston197/R-b0792dba-0dc9-4ca0-8d43-c90a8a0d57da",
"loadWorldPresetName": "SpaceWorld",
"overrideCorrespondingWorldId": null,
"forcePort": null,
"keepOriginalRoles": false,
"defaultUserRoles": {
"nisus": "Admin",
"nisusHDL": "Admin"
},
"roleCloudVariable": null,
"allowUserCloudVariable": null,
"denyUserCloudVariable": null,
"requiredUserJoinCloudVariable": null,
"requiredUserJoinCloudVariableDenyMessage": null,
"awayKickMinutes": -1.0,
"parentSessionIds": null,
"autoInviteUsernames": [
],
"autoInviteMessage": null,
"saveAsOwner": null,
"autoRecover": true,
"idleRestartInterval": 3600.0,
"forcedRestartInterval": -1.0,
"saveOnExit": true,
"autosaveInterval": -1.0,
"autoSleep": true
}
],
"dataFolder": null,
"cacheFolder": null,
"logsFolder": null,
"allowedUrlHosts": null,
"autoSpawnItems": null
}
とりあえず起動し、ユーザー二人、また色々呼び出したり作ったりして負荷等を見てみましたが、この性能でそう大きな負荷とはなりません。今後、色々設定を煮詰めてみようかと思います。手伝ってくれた皆様ありがとうございました。
以上、動作報告でした。またお読みいただきありがとうございました。
明日はAetorizさんの記事
です。