NeosVRの楽しみ方いろいろ:ソーシャル編

はじめに

ソーシャルVRのひとつ、NeosVRをご存知ですか? もしご存知でなければ次の動画を見てください。

NeosVRはとても自由度の高いメタバース(仮想世界)で、SteamまたはNeosVR公式サイトからダウンロードできます*1。日本語対応していて、デスクトップモードにも対応しています。
いろんなことがVR内のみでできることが特徴だと思います。
neos.com store.steampowered.com

しかし、NeosVRはまだユーザーが少なく*2、普段はどんなことをして遊んでいるのか分かりづらいと思います。現在のコアユーザーはクリエイター寄りの人が多くて、外部から見える情報も開発や技術の話に偏っているように感じます。
そこで、NeosVRの楽しみ方を思いつく限り書き連ねてみようと思います。なお、最近は配信なども増えているので、動画や配信を探せば雰囲気がわかるかもしれません。

想定読者

  • NeosVRはなんでもできるとよく聞くけど、実際にどんなことしてるのかわからんという人
  • NeosVRを始めたばかりで、どんな遊び方ができるかあまり知らない人

以下に書く内容にはぼくがやったことないことや想像の話も含まれているので、こういう遊び方もできるよという類のものだと思ってください。できるだけ実例は上げようと思いますが、実例が無い箇所もあります。
気になる遊び方があれば、その遊び方をしている人を探して話を聞いてみるのがいいと思います。

お前は誰

よっしーと申します。趣味はTRPGです。NeosVRでのユーザー名はyoshi1123_です。
https://vprof.me/@/yoshi1123_
NeosVRにハマってしまって、この間1000時間チュートリアルを達成しました。
今年の5/18から始めて10/12に達成したので、毎日6~7時間遊んでた計算ですね。だいたい合ってます。
この記事は5ヶ月程度遊んでみただけの1ユーザーの視点での記事なので、昔の話とかについては書けないです。ご了承ください。
VR環境はPCVR + Oculus Quest 2で遊んでます。HaritoraXを買いましたがセットアップしてません。

f:id:trpg_yoshi:20211025183233j:plain
NeosVRのすがた。見かけたら遊んでください。

NeosVR の楽しみ方:ソーシャル編

文量が思ったより多くなってしまったので、ソーシャル編・アクティビティ編・クリエイティブ編とそれぞれ題して分割して書きます。アクティビティ編とクリエイティブ編は後日書きます。 dinosaur-fossil.hatenablog.com dinosaur-fossil.hatenablog.com

コミュニケーションを取る

NeosVRは一人で黙々と作業しても楽しいですが、観測できるほとんどの人が他人と何かしらの交流をしています(一人でいる人は観測できないだけですが)。

おしゃべりする

何はともあれお喋りです。我々は人間なので、お喋りは楽しいです。
NeosVRは通信方法がP2Pなので、物理的に近くに住んでいるのであれば通話の遅延がかなり少ないです。Discordのボイスチャット並みの会話ができます。
声を出せない人でも、ペンのアイテムを取り出せばどこでも会話できます。NeosVRでは好きな場所でアイテムを取り出すことが可能です。デスクトップ勢で無言勢の場合は、Mute Helperというテキストチャット用のアイテムも存在するので、そちらの方が使いやすいかもしれません。

また、NeosVRでは音声を拾うことが可能なので、リアルタイム翻訳機のアイテムが流通しています。海外勢と言語の壁を超えて会話することもできます。


NeosVRはアイトラッキング・フェイシャルトラッキングにも対応しています。会話してるときや現実で飲食をしているときなどにも実際の表情とアバターの表情をリンクさせることができ、より豊かなコミュニケーションを取れるでしょう。

メッセージを送る

同じワールドにいない人と連絡を取ることも可能です。フレンド同士なら、基本のフレンド機能でテキストメッセージやボイスメッセージを送り合うことができます。メッセージはオフライン状態の人にも送ることができるため、メールのような使い方もできるでしょう。
NeosVRにはVRSNSも存在します。Neow端末を取り出せばどこでも表示され、投稿した呟きは他のワールドとも同期されます。3次元空間に出てくる呟きはVRならではです。

触れ合う

NeosVRでは他人とのふれあいが簡単にできます。NeosVRで揺れモノを実現しているDynamicBone*3では、他人の髪やスカートに干渉することができます。掴んだりすることも可能ですし、引っ張ると伸びるようにもできます。
DynamicBoneの状態や他人との距離なども取得できるので、撫でられているときや髪を掴まれてるときに合わせて表情が変わるようにしている人もいます。
Boopジェスチャー*4をされたときにエフェクトが出るようにしている方もいます。

f:id:trpg_yoshi:20211024221625j:plain
髪を掴まれて表情が変わっている様子

また、アバター自体にユーザーがぶつかるコライダーを仕込むことで、他の人を押して動かしたり、自分の手の上に相手を乗せたり、あるいは他人によじ登ったり*5できます。わざわざコライダーを仕込まなくても、相手と握手できるアイテムやハイタッチできるアイテムなどもあります。

写真・動画・配信を見る

NeosVRでは画像ファイルや動画ファイルを簡単に読み込むことが可能で、中に持ち込んだ後は通常のアイテムと同じように拡大縮小、保存や複製などができます。ファイルじゃなくても、スクリーンショットYouTubeのURLをクリップボードからペーストするだけでもNeosVRに読み込むことが可能です。話題に上がった場所の写真や、Webサイトのスクリーンショットなどをその場で取り出して友達と共有できるのはかなり快適です。持ち込んだ写真も並べるだけで個展や展示会のような空間を気軽に作り出すこともできます。
さらに360度の写真や動画にも対応しているため、現実では中々確認しづらい全天球の写真や映像も体験できます。


また、NeosVRは各種配信サービスの配信も動画と同様に見ることができます。コメントの取得もTwitchであれば公式アイテムが、YouTubeなどであればマルチコメントビューアのプラグインとしてユーザーツールが存在します。みんなで配信や配信コメントを見ながらおしゃべりする状況もすぐに実現できます。空を飛べたり自身のサイズを変更したりが簡単にできるので、他の人の視界を妨げないようにするのも簡単です。

Amazon Prime Video のウォッチパーティを利用して、上映会を行うためのツールもあります。NeosVRでは自分のデスクトップをVR内から見ることができるので、各自のデスクトップビューの位置を合わせてウォッチパーティを見ることで、みんなで集まって同じ映像を見てるような体験ができます。

アイテムで遊ぶ

NeosVRではインベントリシステムがあり、権限で許可されている場所であれば、インベントリの中からアイテムを取り出したり保存したりすることが可能です。
鏡が欲しければ鏡のアイテムを取り出せばいいですし、他のワールドで見つけたおもしろアイテムをいつもの溜まり場で友達と共有するのも盛り上がります。
いろんなアイテムを配置するだけで自分だけのワールドができますし、記念日に友達にプレゼントを送ることもできます。

パブリックフォルダを使う

ワールドに配置されているもの以外にも、パブリックフォルダというものでアイテムが配布されていることもあります。パブリックフォルダをインベントリに保存することで、フォルダの中を見ることができます。
初めからインベントリ内にあるNeos Essentialsというパブリックフォルダの中にはさまざまなアイテムがあり、中でもGadgetsにはいろんなギミックが仕込まれた面白いアイテムがたくさん公開されています。アイテムでどんなギミックが実現できるかの参考にもなると思います。

名刺を交換する

NeosVRの日本コミュニティには名刺文化が存在します。簡単に名刺を作成するツールがあるため、フレンド申請を送り合うきっかけにもなりやすくて面白いです。人によっては個性あふれるカスタマイズをしているため、貰った名刺を保存して眺めるのも面白いです。
名刺に埋め込まれていることが多いですが、NeosVRではURLのリンクを共有することも簡単なため、VRだけではなくTwitterなどの外部のサービスで繋がることも手軽にできます。配信をしている方やVTuberの方などは自分の配信チャンネルのリンクを貼っていたりしますし、サークル活動をしている人はDiscordの招待リンクを貼っていることもあります。

f:id:trpg_yoshi:20211024222325j:plain
個性的な名刺いろいろ。SNSのリンクなども貼れる。

写真を撮る

NeosVRにはカメラ機能があり、好きなところで写真が撮れます。通常の写真だけではなく、3D写真や360度写真、切り抜き写真なんかも簡単に撮ることが可能です。撮った写真はすぐにワールドに現像されるため、友達と一緒に確認するのも簡単です。
さらに、ユーザー製のカスタマイズカメラも色んなものが配布されています。使いこなせばさまざまな写真を撮ることが可能です。


アバターのポージングを調整できるツールもあります。フルトラッキング機器を使っていなくても、足の位置などを自由に調整できるので、自撮りなどにも役に立つでしょう。

写真を共有する

NeosVRでは他人が撮った写真もすぐにパソコンに取り込むことができます。イベントの集合写真なんかは一人がタイマーで写真を撮ってみんなに配ることが多いです。外部のサービスで画像を共有する手間はありません。

教え合う

NeosVRに持ち込んだものはほぼ全てが同期されます。写真やアイテム、コンテキストメニューアバターセットアップUIまで、ほとんどのものが同期されお互いに確認することが可能になるため、困ったことがあればその場で周りの人に見てもらうことが簡単にできます。初見だと面食らってしまうアバターのセットアップなども、慣れてる人にお願いすればトラブルシューティングまで含めて解決することでしょう。
アバターセットアップに限らず、自分の苦手なことは詳しい人に質問し、自分の得意なことは教え合うというのがその場で簡単にできます。URLやスクリーンショットの共有の他にも、TopazChatを使えばデスクトップ画面の共有も簡単にできるため、BlenderやUnityなどの外部ツールの使い方も教わることができるかもしれません。
JPチュートリアルワールドで困っている人がいたら知っていることを教え合ってみましょう。何か困り事があれば、JPチュートリアルワールドに行ってみましょう。困りごとも一人で悩むよりかは複数人で悩んだほうが解決しやすいと思います。集まった人ではわからないことがあれば、より詳しく知ってそうな人が知り合いにいないか聞いてみましょう。

おわりに

今回はソーシャル編ということで、コミュニケーションを中心に取り上げてみました。次回はアクティビティ編です。ワールドの話やイベントの話などができればと思います。
dinosaur-fossil.hatenablog.com

この記事を読んでNeosVRに興味を持った人はぜひ遊びに来てみてください。
一人で始めるにはまだまだ情報が少ないとは思うので、最初のチュートリアル*6で「みんなで助け合いながらプレイ(パブリック)」を選ぶか、JPチュートリアルワールドに来てください。夜20時以降なら*7親切な人がやってきて教えてくれると思います。
また、毎週火曜日の22時から、初心者案内デーというイベントで操作方法からアバターセットアップまで教えてもらえます。そちらに参加してみてもいいと思います。


もし一人でやってみてわからないことがあれば、NeosVR JP Discordの質問チャンネルや、 Twitter#NeosVR知恵袋で質問してくれると誰かが教えてくれるかもしれません。
discord.com

*1:2021/11/03時点では、Steamからはダウンロードできない状況になっています。これは仮想通貨まわりのSteam規約の影響で、将来的にはSteamから配信されるバージョンでは通貨まわりの機能がオミットされたものが配信されるようになるそうです。詳しい情報はこちら https://wiki.neos.com/Neos_Credits/Steam_Changes

*2:日本時間の21時前後で、全世界のオンラインユーザーがだいたい200人前後。その内日本人が体感で20~40人ぐらい。

*3:UnityにあるDynamicBoneと名前は同じだが、NeosVR固有の別物

*4:Boopジェスチャーの参考記事:https://www.serendipity.page/b/2020/04/boop/

*5:移動モードの歩行(クライミング)では、コライダーを掴んでよじ登ることができます。

*6:Metaverse Training Center というワールドでチュートリアルを受けるところからゲームは始まります。

*7:昼間は学業や仕事などでインしている人が少ないので、日本人はほぼ居ないと思います。

Neos VR のユーザー情報を取得したときの API のメモ

概要

NeosVR の API からユーザー情報を取得する必要があって、ちょっとしたスクリプトを書いて取得したときのメモです。
公式の情報は ネットワークに関する情報 に書いてあることだけっぽいですが、
API 自体は公式には公開されてない [※要出典] らしいので、この記事の情報は別に正しくないです。

wiki.neos.com

API

Neos の APIapi.neos.com を使うと良さそうです。
www.neosvr-api.com とか cloudx.azurewebsites.net とかを叩いても同じ結果 [※未確認] が帰ってくるっぽいですが、どう違うのかはよくわかりません。
API ドキュメントは公開されていません。しかし、 PolyLogix Studio という有志のグループ? がまとめている非公式のものがあります。確認したくなったらこれを見るのがよいかと思います。

neos-api.polylogix.studio

ユーザー情報の取得

ユーザーIDは、多くの場合 U-[ユーザー名] になるんですが、ハイフン-やアンダーバー_などのような記号、日本語などが混じっていた場合はその限りではありません。
ユーザー名から情報を検索したい場合は https://api.neos.com/api/users/[ユーザー名]?byUserName=true を叩きます。マルチバイト文字の場合はURIエンコードしてください。
ぼくの情報が知りたい場合は https://api.neos.com/api/users/yoshi1123_?byUserName=true にアクセスするとわかります。

ユーザーIDがわかっている場合は、 https://api.neos.com/api/users/[ユーザーID] を見ます。ぼくの場合はユーザーIDが U-yoshi1123- なので、 https://api.neos.com/api/users/U-yoshi1123- を見れば丸わかりです。

上記2つの方法で帰ってくる形式は同じで、下記のようになります。
内容が推測できるものだけコメントを書いてます。

{
   "id":"U-yoshi1123-", /* ユーザーID */
   "username":"yoshi1123_", /* ユーザー名 */
   "normalizedUsername":"yoshi1123_",
   "registrationDate":"2021-05-18T09:23:47.9666713Z", /* Neos のアカウントを作成した日 */
   "isVerified":true,
   "quotaBytes":-1,
   "isLocked":false,
   "supressBanEvasion":false,
   "usedBytes":-1,
   "2fa_login":false,
   "tags":[
      "neos festa 3 participant"
   ],
   "profile":{
      "iconUrl":"neosdb:///b818988b835d17093c81636a3344d0f47ea3316f10ce8fcca5cd5a3afb2243b9.webp" /* プロフィールアイコンの画像 */
   },
   "patreonData":{ /* Patreon の情報(Patreon 連携してない場合は無いっぽい) */
      "isPatreonSupporter":true,
      "lastPatreonPledgeCents":-1,
      "lastTotalCents":-1,
      "minimumTotalUnits":-1,
      "externalCents":-1,
      "lastExternalCents":-1,
      "hasSupported":true,
      "lastIsAnorak":false,
      "priorityIssue":0,
      "lastPlusActivationTime":"2021-09-01T16:55:54.5170223Z",
      "lastActivationTime":"2021-09-01T16:55:54.5170223Z",
      "lastPlusPledgeAmount":-1,
      "lastPaidPledgeAmount":-1,
      "accountName":"Standard Account",
      "currentAccountType":0,
      "currentAccountCents":-1,
      "pledgedAccountType":0
   }
}

ちなみに、ユーザー名の前方一致で検索する API も存在します。
https://api.neos.com/api/users/?name=[ユーザー名]
結果は配列で帰ってきます。順序はよくわからないので、ユーザー名がわかっている場合は上の API を使うのがよいです。(最初の1件が完全一致したユーザーにならない場合があります。orangeさんとか)

NeosVR で初めてのオモチャ作成

購入したものの長らく眠っていた Oculus Quest を使って、先週から Neos VR という VRSNS に入り浸っています。

Neos ではゲーム内でノードプログラミングができる(LogiX という名前らしい)、という話を聞いてたので、試行錯誤しながらオモチャを作っています。この記事はそんな記録です。

ちなみにわかりやすい説明はいろいろと動画で出てるので、[Neos VR LogiX] とかで適当にググってください。この辺を参考に遊んでます。
youtu.be
youtu.be
youtu.be

ただ、残念なことに Neos の情報はネットに少なめです。どうしても詰まったら Neos にいる人に相談してみるといいかもしれません。今回の記事のオモチャも何度かテクを教えてもらってます。

今回作ったもの


時間経過で Rotation と Scale と色相が変わる箱です。(Position も変えたかったんですが、どう動かすのがいいか思いつかなかったのでやれてないです)

LogiX はこんな感じ f:id:trpg_yoshi:20210528193523j:plain

下記で少し細かく説明しますが、「たぶん」「おそらく」「と思います」などのふわっとした語彙がたくさん出てきます。なぜかというと Neos VR 始めて1週間程度のペーペーなので、詳しい理屈をまだ把握できてないからです。ご了承ください(予防線)。

準備

今回は箱を回すので、回す箱を作っておきます。ただ、箱の Rotation や Scale を操作すると Grabbable が反応しなくなるため、箱の親を作ってそれに Grabbable を付けておきます。
DevToolTip でコンテキストメニュー>新規作成>3D モデル>ボックスで箱を作ります。セカンダリーを当てた後にコンテキストメニューからインスペクターを開きます。Box の Grabbable コンポーネントを探して赤いXを押して消します。
Boxのスロットが開いてるところで、黄色い上矢印を押して親スロットを作ります。Box - Parent を選択して Attach Component>Transform>Interaction>Grabbable で Grabbable コンポーネントを追加しておきます。
f:id:trpg_yoshi:20210528193615j:plain

入力

今回は時間変動を扱うので、T ノードを入力に使います。
LogiX で時間経過で値を変動させたい場合は T ノードを使うらしいです。
これはワールドが生まれてからの時刻を吐き出します。Sin ノードや Cos ノードに渡すといい感じに振動する値が作れます。
T ノードは InputSinCos ノードは Math の中に入っています。
f:id:trpg_yoshi:20210528193651j:plain

他にも T*10, T/10, T/2 などのノードがありますが、今回はパラメータを後で変動させたかったので使っていません。

Rotation を変える1

CosSin の値を Pack xyz でまとめます。
Pack xyz はたぶん xyz のベクトルにまとめてくれるやつです。たぶん。
それを 180 倍して、From Euler で角度型に変換します。
ちなみに四則演算や比較演算子Pack xyz などは Operators に入っています。Math の中を探してぜんぜん見つからなくて泣きました。
From EulerMath/Rotation です。
f:id:trpg_yoshi:20210528193726j:plain

こうして出来上がった LogiX の出力をオブジェクトに繋ぎます。
DevToolTip を装備して、オブジェクトのインスペクターを開きます。その後、 LogixTip に装備を変えて、オブジェクトの名前をグラブしながらセカンダリーでインターフェースノードが開きます。
文章だとなんのこっちゃだと思うので、上記の動画などで確認してください。

インターフェースノードはオブジェクトのスロット(インスペクターの階層みたいなやつ?)やコンポーネントなどからだせるらしいです。たぶんですけどインターフェースノードを出せるやつはぜんぶ LogiX で弄れます。

インターフェースノードには色んな色や模様がついてますが、これらは同じ色・模様は同じ型らしいので、同じ色のものを繋げることができます。
弄りたい値の型を見て入力から LogiX を捏ねていく方が考えやすいかもしれません。

今回は Rotation を変えたいので、Rotation の場所に繋ぎます。繋いだときに線じゃなくて矢印になるんですけど、どういうやつなのかは知りません。
f:id:trpg_yoshi:20210528193748j:plain

愉快に回る箱の完成です。

Scale を変える

Position のときと同じ理屈で、いい感じの LogiX を繋いで出力を Scale に繋ぎます。Scale の型は3次元ベクトルっぽいので Pack xyz から直接繋ぎます。
Sin のままだと値域が -1 ~ 1 でダサかったので 0.5 ~ 1.5 の値になるようにノードを挟んでいます2+1 ノードは Operators の中にあります。
f:id:trpg_yoshi:20210528193925j:plain

色を変える

色を変えるために、マテリアルを作ります。DevToolTip を装備してコンテキストメニュー>新規作成>マテリアル>PBS Metallic を選びました。別に何でもいいです。
作ったマテリアルをグラブして、Box のインスペクターの中の Mesh Renderer コンポーネントの Materials (list) の中の枠にトリガーします。最初に入ってるマテリアルの上からセットしていいです。
これをせずに初期のマテリアルを弄ってしまうと、ワールドのデフォルトのマテリアルが変化してしまうらしいです。

その後は同様にマテリアルのインターフェースノードを取り出し、今回は EmmissiveColor に向けて値を作ります。
Color から Hue ノードを選びます。これは Float の入力から色相を作るノードっぽいです。Float ならなんでもよさそうなので、T ノードから直接繋いでみます。
f:id:trpg_yoshi:20210528194001j:plain

ゴキゲンに光り輝く箱の爆誕です。

速度を変える

このままだと一定の速度で動くだけのインテリアですこし面白くない(し、動くのが速くて目が痛い)ので、速度を変えれるようにします。

入力の T ノードに戻って、T から伸びてるノードの間に掛け算ノードを挟みます。そして掛け算を T 掛ける何かにしましょう。
LogiX では変数も扱うことが可能です。Variables/Storage から Float を選んで、掛け算ノードに繋ぎます。
Float ノードの初期値は0なので動きは止まってしまいます。)
f:id:trpg_yoshi:20210528194116j:plain

この Float ノードに対して、特定のアクションを行った際に値を書き込むように組んでみます。値を書き込む際に使うノードは Write ノード。Actions から取り出します。
Write ノードは入力の Pulse が来た時に、入力の値を矢印の先に書き込むノードらしいです。なので矢印を Float に繋ぎます。
f:id:trpg_yoshi:20210528194139j:plain

Write で書き込む値は毎回違う値にしたいので、乱数を使います。Math/Random から Random Float ノードを選びます。
このノードには入力が2つありますが、値域を決めるためのもののようです(大小はどちらでもよさそう)。今回は 0 ~ 1 にします。
f:id:trpg_yoshi:20210528194156j:plain

この状態で Write ノードの Pulse を押すと、押したときの乱数の値が Float ノードに書き込まれ、速度が変化できます。

グラブした状態でトリガーしたときに Pulse を送る

ここはぶっちゃけ人に質問して作ってもらった箇所なので、詳しい理屈はわかりません。繋いだものを並べます。

まず箱の Grabbable コンポーネントからインターフェースノードを取り出します。 そこから次を繋いでいきます。

  • Interaction/Grabbable/Grabbable Grabber
  • Slots/Get Slot
  • Slots/Get Active User
  • Input Devices/Controllers/Standard Controller (2つ)
  • Math/Max

f:id:trpg_yoshi:20210528194242j:plain

この順で繋ぐと、箱を持ってる人がどれだけトリガーを押し込んでいるかが拾えるらしいです。
ちなみに Standard Controller を2つ作っているのは、右手用と左手用らしく、どちらの手で握ってるかを把握する LogiX も書けるらしいですが、覚えてないそうでこの方法を教えてもらいました。
Standard Controller からトリガー時に Pulse が出る出力もあるらしいですが、バグりやすいとのことで押し込み時の率からやるのがいいそうです。

これを Pulse にするために、Operators の大なりノードを挟み、FlowFire on True ノードで繋ぎます。
Fire on True ノードは入力が True になったら Pulse を流すノードだそうです。Fire on True ノードから Write ノードへ繋いだら完成です。
f:id:trpg_yoshi:20210528194314j:plain

packing

箱と一緒に LogiX を保存するために、忘れずに packing します。
インベントリの Box - Parent を選択して黄色い星アイコンをクリックして子スロットを作ります。
Box - Parent - Child が作成されますが、わかりやすいように名前を変えます。logix とか。ついでに親も名前を変えておきます。眩しいので gaming box とかにしておきます。
logix をグラブした状態でコンテキストメニュー>パッキングルートに設定を選び、LogiX ノードに向けてビームが飛んでる状態でセカンダリーを長押しします。
LogiX が全部消えるまで繰り返します。

これができたら、gaming box を掴んでインベントリに保存しましょう。

遊ぶ

楽しい。

まとめ

Neos の記事はまだ少なそうなので、こんな感じで雑多な記事を書いて情報量を増やしていこうかなと思いました。初心者の気持ちになれるやつがあると嬉しいです。なお質。
おしまい。

躓いたところとか

Box にそのまま Grabbable 付けてたら掴めなくなった

値を変えてるとき(紫色になってる場合)は掴めないらしい。親を作って回避。


掴んでトリガー押したら2回 Pulse が流れるっぽい?

LogiX を出してると重いらしく、そのせいで処理がダブついてるんじゃなかろうか。パッキングして LogiX を消したらいい感じになった。

このノードどこにあんの???

誰かから NodeMenu+ を貰いましょう。検索機能が付いてるので便利です。
JP skill share World の複合ツールチップにあるマルチツールチップを装備して LogiX モードでノードブラウザを開いても出てきます。
f:id:trpg_yoshi:20210528194425j:plain

追記


  1. Rotation の回転を LogiX で組みましたが、 spinner コンポーネントというものを使えばもっと簡単にできそうです。後で知りました。

  2. Remap ノードを使えばもっと簡単に値の再割当てができました。

スタリィドールの素材

サイコロ・フィクションの新作TRPG『星と宝石と人形のTRPG スタリィドール』が出ましたね。

www.bouken.jp

今度セッションをするので準備をしていたんですが、ラプスロールの結果どこに移動できるかをホロスコープシート上で把握しやすくならないかと、以下のような素材を作ってみました。 f:id:trpg_yoshi:20210509142332p:plain

ホロスコープシートの素材は色んな人が公開してたので、それに上から被せるように配置して、適宜回転して距離を数えると便利かなーと思いました。
まだ実セッションで使ったことはないので、利便性は未知数です。
とりあえずユドナリウム用です。ココフォリアでも使えるかと思ってましたが、45度刻みでしか回転できないんですね……

ついでに顕と蝕のアイコンも作ったので貼っておきます。 f:id:trpg_yoshi:20210509142807p:plainf:id:trpg_yoshi:20210509142817p:plain

Charaeno から Foundry VTT にインポートするマクロ

※2021/05/16追記
このマクロは 新クトゥルフ日本語辞典登録 のサポートマクロに取り込んでもらえました。そちらからご利用ください。 f:id:trpg_yoshi:20210516150021p:plain


海外製のオンラインセッションツールに Foundry VTT というものがあります。
日本語名は「オンセ工房」だそうです。日本語コミュニティの有志によって日本語化が行われています。使い方とかがわからなければDiscordで質問するといろいろと教えてもらえます。

Foundry VTT(以降 FVTT)にはいろいろな特徴があるんですが、ツール上での処理をモッドとして第三者が自由に開発したり、マクロとしてユーザーが単一スクリプトを動かす事ができます。言語は JavaScript です。(基本的に WEB の技術で動いてるはずです)
FVTT の API も全て公開されているため、本体の機能をハックすることも可能です。
foundryvtt.com

そこで手慣らしにキャラクターシートサイトの Charaeno から FVTT の新クトゥルフ神話TRPG へアクターとしてインポートしてみるマクロを書いてみました。

そこそこ上手く動いたので、公開してみます。使ってみたい奇特な人がいれば使ってみてください。

charaeno.sakasin.net

使い方

依存システム・モッド

上記のコードをコピーして、 FVTT でマクロを script として作成して実行するだけです。
成功したら、アクター一覧の Imported characters のフォルダに生まれてます。
中身はだいたい次のような感じで生成されます。
※2021/05/08現在では武器の生成がややこしくて断念してます。

ちなみに処理は actor-importer.js を参考に書いてます。

f:id:trpg_yoshi:20210508153040p:plain
ポップアップにURLを入力して「✔インポートする」をクリックで
Imported characters のフォルダに自動生成

f:id:trpg_yoshi:20210508153348p:plain
技能一覧
f:id:trpg_yoshi:20210508153423p:plain
2021/05/08現在は武器のインポートはなし
f:id:trpg_yoshi:20210508153504p:plain
持ち物欄。呪文や魔導書はCharaeno側で構造化されてないので無理です。
f:id:trpg_yoshi:20210508153602p:plain
バックストリー
システム設定から「1ブロックのバックストーリー」にチェックを入れたときの表示

注意

FVTT の CoC7th のシステムには職業データに選択可能な技能を紐付けて簡単に習得できるようになったりする機能もあるんですが、 今回のマクロではそこまでは実現できていないです。
FVTT はたくさんのデータを「辞典」という形で蓄積していくとどんどん利便性が上がる造りになっているので、もっと利便性を上げたかったらぜひデータを作ってみてください。

また、ぼくの環境では、作成したアクターシートを開くと FVTT が固まったような挙動になってしまいます。たぶん裏で処理が走りまくってるんだと思います。
一度アクターシートを開いた後にアクターシートを閉じると、次回以降は普通の感じで動くと思います。(これもおま環かもしれませんが……)
※2021/05/16追記 Call of Cthulhu 7th edition (Unofficial) のバージョン 0.5.8 で修正されるようです。

困ったことがあれば オンセ工房日本支部(FoundryVTT) で質問してください!

ユドナリウムのコマ作るやつ

「ユドナリウムのキャラコマを作るやつ」というツールを2019年1月から公開しています。自分では「コマ作るやつ」と呼んでます。
https://udontools.netlify.app/#/charazip

今までずっと Twitter で告知したりしていたんですが、いい加減ちゃんとした紹介を書こうかなと思ってこの記事を書いています。

機能

名前そのまんまですが、Udonarium用のキャラクターのコマデータを、キャラクターシートサイトのURLから生成するツールです。
対応しているキャラクターシートのURLを入力してからキャラコマ生成ボタンを押すと、ユドナリウムのコマデータのzipをダウンロードできます。

対応状況 (2021/05/06時点)

キャラクターシート倉庫

character-sheets.appspot.com

Charaeno

charaeno.sakasin.net

ありそうな問い合わせとその回答

問い合わせは Twitter @trpg_yoshi にでも投げてください。

このキャラクターシートサイトにも対応してほしい!

キャラクターシートサイト側のAPIが無いとできないです。
APIがあるかは調べますが、無かったら諦めてください。

このシステムにも対応してほしい!

ぼくがルールブックを持っているシステムじゃないと、どんなコマデータを作ればいいのかわからなくてつらいです。
キャラクターシートのURLと、そのURLからどんなコマデータを生成したらどんなデータになるかを添えてお問い合わせいただければ、対応できるかもしれません。

その他の機能

  • URLのGETパラメータにキャラクターシートのURLを渡すことで、画面が開くと同時にzipデータをダウンロードできます。パラメータ名はurlです。
    例) https://udontools.netlify.app/#/charazip?url=https:%2F%2Fcharaeno.sakasin.net%2F7th%2Fh_wQNXeiHPXDEDtG3r2ac

雑記

基本的には自分がGMやるときに楽するために作ったツールですが、以下のようなことができるように作ってます。

準備の手間削減

コマ作るやつを使えば、PLはユドナリウム上でのキャラクターシートの編集操作を覚えなくても卓がやれます。1から打ち込むの普通にめんどくさいよ。
また、間違ってユドナリウム上でコマを消したり、項目を削除してしまったりしても、キャラクターシートさえあればすぐに復元できます。
さらに、チャットパレットも自動生成するので、GMもほしいチャットパレットをPLに生成してもらわなくても使ってもらえます。

コマのデータ形式の統一

コマの形式がPLに依らず揃うので、GMは必要な情報をインベントリに載せたりルームの準備がしやすくなります。
さらに、別のセッションでもコマの形式は同じになるはずなので、GMは一度作ったルームデータを使いまわしできるようになります。
シナリオ固有の準備は流石に無理ですが、システム間で共通の準備は不要になるはず。

終わり

コマ作るやつは、いろんなツールを参考に作らせてもらってます。ありがとうございます。 ユドナリウムは個人的にイチオシのオンセツールなので、色んな人に使ってほしくてこういうツールを公開してます。たくさん使ってね。

Herokuでdiscord-bcdicebotを動かす

キャラシ倉庫とか運営してるMASASHIGEさんが作ったDiscord連携日程調整botデイコードがしばらくHerokuで動いてたらしく、Freeプランでもそこそこやれるらしいという話を聞いた。1 https://discord.com/channels/597133335243784192/597133335243784194/786955488545341501 https://discord.com/channels/597133335243784192/597133335243784194/786956047427698689

そこで、しゅんしゅんひよこさんの作った、BCDiceをDisocrdで動かすdiscord-bcdicebotもHerokuで余裕で動くのでは? と思って導入してみて、数日動かしてみたがあまり問題が無さそう2だったので、備忘録的なメモを残す。

2021/02/20 追記

discord-bcdicebot のプロジェクト下記の設定を取り込んでもらって、手順をヘルプに書いてもらいました。今後はそちらを参照してください。 shunshun94.github.io

環境

以下、Windows環境での操作を想定しているが、Linux/Mac環境の人は適宜読み替えてください。

1. ツールの準備

Herokuのアカウントが必要なので適当に登録。

また、Heroku CLIとGitが必要なのでインストール

その後、コマンドラインで以下を入力してHeroku CLIでログイン。

heroku login

2. Discord Botの用意

discord-bcdicebotの使い方の「ダイスボットを登録する」の通りにDiscord Botを用意する。Botトークンを控えておく。
https://shunshun94.github.io/discord-bcdicebot/#:~:text=%E3%83%80%E3%82%A4%E3%82%B9%E3%83%9C%E3%83%83%E3%83%88%E3%82%92%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B

3. ソースコードの準備

任意のディレクトリで以下のコマンドを入力し、discord-bcdicebotのソースを落とす。
ついでにディレクトリ移動もしておく。

git clone git@github.com:Shunshun94/discord-bcdicebot.git
cd discord-bcdicebot/

このままではHerokuを動かすのに必要なファイルが無いため、Procfileを作成する。内容は下記。3

Procfile

worker: java -jar target/discord-bcdicebot-jar-with-dependencies.jar "$DISCORD_BOT_TOKEN" "$BCDICE_API_URL" "$IGNORE_ERROR"

変更をコミット。

git add Procfile
git commit -m '任意のコメント'

4. Herokuにデプロイ

Herokuのアプリを作成してデプロイする。

heroku create
git push heroku master

このままだと設定が足りないので、以下のコマンドで環境変数を設定する。

heroku config:set DISCORD_BOT_TOKEN=TOKEN************TOKEN # 2.で作成したBotのトークン
heroku config:set BCDICE_API_URL=http://?????????????? # 利用するBCDice-APIのURL

自前でBCDice-APIを用意しないのであれば次のURLから公開サーバを探すのがいいだろう。
https://api-status.bcdice.org/

最後に、Heroku Dashboardを開いて新規作成したアプリのworkerをONにすれば終了。
https://dashboard.heroku.com/ f:id:trpg_yoshi:20201223001536p:plain

確認できてる問題

サンプルのオリジナルダイスボット表が文字化けしまくってる

f:id:trpg_yoshi:20201223001552p:plain どうせ文字コードの問題。たぶん「サンプルダイスボット-ラーメン表」「サンプルダイスボット-夜食表」と書いてある。 ぼくは使わない機能なので調べる予定なし。

2021/1/19 追記

Heroku の無料プランだと、Dyno は月に550時間までしか使用できないらしい。 (1ヶ月常駐させるには24時間×31日=約750時間は必要。) クレジットカードを Heroku に教えると無料枠を1000時間まで増やすことができる。

jp.heroku.com


  1. BCDice Official Chat の雑談で話が出た。

  2. 問題が無いわけではない。確認できてる問題は最後に述べる。

  3. start.shから少しだけ変更してる。