記事更新日: 2021年5月16日

概要


ディメンション・ゼロ(D0)をユドナリウム上でプレイできるようにしました。
ユドナリウムはブラウザ上で動くオンライン対戦ツールで、主にTRPGのセッションのために用いられています。(ユドナリウムはスマホやタブレットではなくPCでの利用を推奨します。推奨ブラウザはデスクトップ版Google Chromeです。)
そのユドナリウムを利用して、D0のオンライン対戦ができるようにしました。


TK11235さんが作成したudonariumを本サーバに置かせてもらっています。
GitHub - TK11235/udonarium: WebRTCを使ってブラウザ間通信を行うオンセツール

ディメンション・ゼロは株式会社ブロッコリーから販売されているTCGです。
ディメンション・ゼロ オフィシャルホームページ

クイックリンク


D0用ユドナリウムへのリンク

ルームデータのダウンロード

D0-RSS(デッキ作成、デッキデータのダウンロード)

D0 Discord 対戦相手の募集や対戦中の音声チャット
D0 Discord 招待リンク

プレイまでの手順は下記から

***

プレイまでの手順

1. クイックリンクのD0用ユドナリウムのリンクにアクセスします。

2. クイックリンクのルームデータ(d0udona_roomdata_0_0_1.zip)をダウンロードします。

3. ユドナリウムの左メニューにある「ZIP読込」から、先ほどダウンロードしたルームデータ(d0udona_roomdata_0_0_1.zip)を読み込みます。

4.対戦する相手へ、D0用ユドナリウムのリンクと、ユドナリウムの左メニューにある「接続」に表示されている「あなたのID:XXXXX」を伝えます。

5. 対戦相手は、D0用ユドナリウムにアクセスしたあと、ユドナリウムの左メニューにある「接続」から、「接続したい相手のID」にあなたのIDを入れて「プライベート接続」を押せば、あなたのルームに接続されます。

ルームデータに最初から含まれている構築済みデッキのデータで遊ぶことができます。

他のデッキで遊ぶ場合

6. クイックリンクのD0-RSSのサイトから、使いたいデッキのページにアクセスし、デッキのXMLデータをダウンロードします。

7. ダウンロードしたXMLデータを、ユドナリウムのページにドラッグ&ドロップすることでデッキデータを読み込みます。

これで対戦の準備が整いました。
ユドナリウムの基本的な使い方については、ネット上に情報があるので検索してみてください。

対戦中の音声チャット・対戦相手の募集

対戦中の音声チャットや対戦相手の募集は、D0のdiscordが便利です。
下記がdiscordの招待リンクです。





(テーブル設定から、初心者用のプレイマットのテーブルも選べます)




ローカルルールなど


ユドナリウムの現状の機能ではD0をプレイする上で手間がかかる部分を、ローカルルールとして代替の方法で行うことを推奨します。
また、D0の処理の中でユドナリウムではどのように行うかわかりづらいもののやり方を載せておきます。
エネのリリース・フリーズの簡略化

ユドナリウムでエネルギーのリリース・フリーズ(カードを90°回す)の処理を行うのは時間がかかるため下記の方法で代替します。

1. エネルギーのリリース/フリーズは、Releaseのバーに乗っているカードがリリース状態とします。

2. Releaseのバーにカードを置く際は、▲をカード左端、グラデーションのラインをカード右端に合わせると、カードが完全に重なるのを防げます。

3. エネルギーを全フリーズさせたあとは、リリースバーのほうを動かして全リリースという扱いにします。

カードを山札の一番下に置く

1. 山札の一番下に置きたいカードを裏向きにしておきます。
2. 山札をドラッグして、上記で置いたカードの上に重ねます。




















以下、今回の制作に関わる情報

似たようなことをやろうとしている人向けに覚書を残しておきます。

問題だったところ


タップ・アンタップの手間がかかる

一般的にタップ・アンタップ。D0ではリリース・フリーズ。ユドナリウムだと手間がかかる問題。

キーボードショートカットでタップ・アンタップを実装している方がいる。コードも公開されているので参考になる。
ユドナリウムの初期表示を変更してみたメモ - Qiita
プレイヤー1からみてのタップ・アンタップの動きのみで、対面のプレイヤー2からするとカードが逆さ向きになる。
(上記の理由で今回は採用しなかったけれども、改めて考えると、エネだけに使うならこの実装で問題ないかも。プレイヤー2はデュエマみたいにエネは逆さ置きになるだけ。)

読み込んだ画像のファイル名がハッシュ値化する

ユドナリウムに画像を読み込ませると、画像ファイル名が変更されハッシュ値になる問題。
当初はユドナリウムをサーバ設置する予定はなく、デッキデータのxmlファイルと画像ファイルを、本家のユドナリウムに読み込んでもらう予定だった。
しかし、ユドナリウムに読み込んだ際に画像ファイルの名前が変更されていしまい、xmlデータ内で参照していたファイル名ではなくなってしまうのでちゃんと表示されなくなった。
変更されるハッシュ値のルールを見つけるのは大変そうだった。
ユドナリウムのデフォルトのトランプ画像などは、ユドナリウム内の"./assets/images/"の中に入っている画像で、xmlデータ内でも(ハッシュ値になっていない)このパス名を指定していた。
ということで、ユドナリウムの"./assets/images/"下にカード画像を追加したものを自身のサーバに設置して動かす方法をとることにした。

やったこと


今回の状態にするまでにやったことは、主に3つ。

D0-RSSからユドナリウム用のデッキデータをダウンロードできるようにする

ユドナリウムからダウンロードできるxmlデータの形式をもとに、D0のデッキデータを用意してダウンロードできるようにした。
カードの効果などの詳細情報は、このxmlデータに入っている。

カード画像の作成

使用コストやカード名など重要な情報のみを抜き出したカード画像を作成。
カードは全2700種ほどあったのでプログラムで作成。
ファイル形式はsvg。xmlデータの画像ファイルなので、テキストとしてプログラムで編集しやすい。
おおもととなるsvgファイルをつくり、カードリストのデータをプログラムで流し込んだ。

ユドナリウムをサーバに設置

GitHub - TK11235/udonarium
やり方は公式のgithubに記載されている方法で問題なくできた。
追加した点は、"./assets/images/d0/"というフォルダの中に画像を入れたのみ。

追加したデータ

追加した画像データと、画像データ作成に使ったプログラム、D0-RSSのカードリストのcsvファイルを置いておく。
これがあれば同じ状態のユドナリウムは設置可能。
d0udona_image_配布用.zip
zip内のd0のフォルダをユドナリウムの"./assets/images/"の下に置けばOK。

ソースコードいじれるならやりたいことメモ


1. リリース・フリーズのショートカットキー
2. (エネ用)特定エリアのカードの全リリース機能
3. (手札用)特定エリアに入ったカードを常に「自分だけ見る」状態にする機能














以下、今回の制作に関する余談

D0プレイマットのフォント


d0用ユドナリウムに入れたプレイマット画像は、D0の構築済みデッキに入っている紙のプレイマット。
そのプレイマットに記載されている「BASE SPACE」「Library」「Grave-yard」などの文字のフォントだが、「Apple Chancery」が近いようだった。
プレイマットの文字↓

「Apple Chancery」の文字↓

ということで、リリースバーも同じフォントにした