「VキャスのVCIで◯ine◯raftっぽいもの作る Advent Calendar 2024」1日目
Vキャス内で、穴を掘って、石を砕き、木を切って、組み合わせて武器を作って、何なら出てくる敵を倒して・・・
そんなことをやりたいなぁっていう試みを12月でできるところまで行こうというカレンダーの1日目です!
設計図を書く
まずは、設計図を作ります。
この図はmiroというWebツールで描いています。
無料で3シートまで使えてとても直感的に使えるのでおすすめですよ!
このクラフトの仕組みを、以前作りかけだったSAC-Craftと名付けました。
設計の説明
構成
3種のVCIによって成り立つことを考えます。
VキャスのVCIの仕組みには、VCIStorageという、ルームを跨いでも、ルームへの入退出をしたあとでもそのVCIに紐づけられた情報を保存できる仕組みがあります。
何ができるかというと、ルームを跨いだレベルアップの仕組みを作ってVキャス自体にRPGみたいにしたり、例えば得点が競えるゲームの結果をルームを跨いで保存することで、知らないユーザーと競えるようにしたり。そんな事ができます。
ただし制約として、1つのVCIストレージには最大1000個のKey-Valueペアまでの制限があります。
今回作りたいSAC-Craftは、ユーザーの情報としてレベルだったりステータス、職種みたいなものも後々管理したいと考えています。更に、アイテムの制御もやりたい。そしてそれはちゃんとデータで残しておきたい。
そんな事を考えているので、1つのVCIの種類が管理できる「1000個のKey-Valueペア」では足りなくなりそうです。
そこで、この3種構造を考えます。
① ユーザーを管理するVCI
② ステータスを管理するVCI
③ アイテムや敵のような実態のVCI
役割の種類で3つに分けようという考えです。
① ユーザーを管理するVCI
このVCIでは、ユーザーのIDだけを管理します。
ルーム内でユーザーが一意に持つIDがあるので、それを保存していきます。
このVCIは前提VCIとなるので、SAC-Craftを使うためには必ず必要なVCIに位置づけます。
よって①のVCIは1つだけになると思われます。
② ステータスを管理するVCI
このVCIでは、ユーザーだったりルームだったりのステータスの管理を想定します。
例えば、Aさんは職業が剣士で、レベルが10で、HPは100で・・・みたいな情報を制御することを考えます。
また同じ種類だが別VCIでは、このルームでこの箱はこの位置にあって、クラフトの結果つるはしがあって、つるはしは壊れるまであと54回で・・・みたいな情報制御を考えます。
②のVCIは、ユーザーのステータス管理だったりをするものと、ルームの管理だったり複数のVCIがあり得ると考えておきます。
また、ステータスの書き換えとかはこのVCIで制御してほかで不正ができないようにします。
③ アイテムや敵のような実態のVCI
このVCIは、無限に存在することを想定します。
例えば土、例えば木、例えば敵キャラ、おそらく遊ぶユーザーが触ったり色々するのはこのVCIです。
おわりに
まずは設計をざっとしてみました。
作っていく中で、これでは無理というような局面が出てきたらまた変えていきますが、まずは手を動かすための前提とします。
明日は、まずはテンションを上げるために③のアイテムを作ってみます。