MOD解説/JointBlock/チュートリアル
親ページに戻る
├追加ブロック&アイテム&レシピ&インターフェース一覧
├チュートリアル
└R.I.N.G
導入~ユニット搭乗まで解説[編集 | ソースを編集]
クリエイティブで造形する事の多いJointBlockですが、 ブロックを一から作る必要があるサバイバルで遊ぶ場合の チュートリアルを下記ブログで解説してみました。
1章 導入
2章 パーツ集め
3章 ユニット作成
導入~ユニット搭乗まで解説 まからブログ
ユニットの作成法[編集 | ソースを編集]
ユニットは「ユニット型」と呼ばれる乗り物の特徴が用意されています。
ユニット型の種類により、移動方法や速度、体力、Enが変わってきます。
ユニット型は、コアのGUIより選択でき、11種類を選択することが出来ます。
※0.7.2よりユニット化条件は撤廃され、自由に選択出来る様になりました。
ユニットの体力やEN、スピードはユニット型毎に固定されるため、
変更する際は、アドオンを装備するかconfigを変更する事になります。
ユニットの組み方[編集 | ソースを編集]
ユニットを組む際は「コアブロック」から繋げて配置して行きます。
コアブロック以外のブロックは親ブロックを1つ持ちます。
親ブロックは1つだけで、複数の親ブロックは持つ事は出来ません。
そのため、途中のブロックを1つ壊すとその先のブロックはすべて脱落します。
(枝分かれしてそのブロックを経由していないブロックは脱落しません。)
この親子関係がボーンの様な役割になり、ユニットの色々な動きを可能にします。
正しく設置されている
コアブロックまで接続されているブロックは、明るい色で設置されます。
正しく設置されていない
接続されていないブロックは、暗い色で設置されます。
接続の向きを変える場合は、パーツブロックの再配置するか「接続変更レンチ」を使用ます。
このブロックの繋がりが動きをさせるうえで重要で、
親ブロックを動かすと、その先のブロックは塊として動きます。
逆に言えば子ブロックを動かしても親ブロックは動きません。
それを利用して、足首から先を動かす、膝から先を動かす、腿を動かす、腰を動かす
と言った動きをさせる事が出来ます。
アセンブル[編集 | ソースを編集]
ユニットを組み終わったらコアのGUIを開いてアセンブルします。
GUIを開くには直接コアを右クリックするか、紐づけされたコントローラを使います。
コントローラは、手に持ちコアをクリックすると紐づけされます。
アセンブルするとブロック状態からユニット状態に変わり、動くようになります。
アセンブル中はブロックを追加したり、彫刻をしたり、色を塗ったり出来ません。
(アセンブルチューナーを使い、ブロックの初期値を変えることはできます。)
アセンブル後のユニットは、MOBと同じような扱いになるためブロック同士の干渉を受けなくなります。
接触判定も外見とは別にコアを中心に生成されます。
(ユニット外縁部はブロックやMODに当たってもすり抜けます)
シートが付いている場合、シートに緑の☆が出るので、
それをクリックすると搭乗します。
降りる際はシフトキーを素早く2回押します。
アセンブルを解除する方法は幾つかあります。
- 紐づいたコントローラを持って右クリックする。
- 逆アセンブルボールをユニットに投げる。※アセンブルした本人のみ
- コマンド「/jbdis 〇」を入力する。
アセンブルを解くと再びブロック状態になり、ブロックを組めるようになります。
各種ユニット型[編集 | ソースを編集]
Ver0.7.3からどのタイプもパーツブロック条件に関係なく自由に選べるようになってます。
ユニット型名 | 体力/EN係数 | 説明 | 関連MCTRL | パーツブロック条件 |
---|---|---|---|---|
ユニット型なし | 50/50 | 移動できないユニット型 消費エネルギーが別設定となり、デフォルトアクションモデルの場合1/2になる。 |
なし | なし |
二足歩行型 | 120/100 | 2足歩行のユニット型。 移動・ジャンプ・ステップなど基礎的な動作は全て可能だが、後退スピードが遅い。 |
人型 | 腰 左右の股関節 |
車輪型 | 160/160 | 1ブロックほどの段差なら走破するユニット型。 移動が遅くジャンプができないが、体力・エネルギー総量が大い。 |
機械部品 | ホイール |
ヘリ型 | 80/80 | 飛行可能なユニット型。 移動スピードは遅く、体力・エネルギーも少ない |
機械部品 | ローターシャフト ローターハブ |
ホバー型 | 80/70 | 1ブロック浮いて移動するユニット型 ジャンプは出来ないが移動スピートが速い。 |
機械部品 | ホバー |
四足歩行型 | 140/120 | 4足歩行動物のような形のユニット型。 前方の移動速度が速いが、横と後ろへの移動は遅い。 |
獣型 | 左右前の脚の付け根 左右前のひざ関節 |
昆虫型 | 140/140 | 移動力・ジャンプ力に長けるユニット型。 全方位に速いスピードで移動できる万能型 |
昆虫型 | 左右の前脚の転(てん)節 左右の後脚の転(てん)節 |
二輪型 | 20/20 | バイクのような2輪型のユニットを作成するのに適している。 速度は速めで、後退はできない。 |
機械部品 | 前のホイール 後ろのホイール |
四輪型 | 30/60 | 速度は速めで、横に移動不可。 体力・エネルギー総量共に乏しいユニット。 |
機械部品 | 左前のホイール 右前のホイール |
フロート型 | 180/180 | 水の上に浮くユニット。 船のような形のユニットを作成するのに適している。 |
機械部品 | スクリューシャフト スクリューハブ |
エアクラフト型 | 40/80 | 航空機のように空を飛行するユニット。 移動速度は速いが、HP・ENともに低い |
なし | ウイング |
サブマリン型 | ?/? | 潜水艦のように水中を移動するユニット。 水上ではフロート型より慣性が弱い |
なし | なし |
二足歩行型[編集 | ソースを編集]
人型のロボットを作る際に最適なユニット型。
二足歩行型のユニットを作るには、ジョイントコア、ジョイントノーマル、ジョイントローテーター、ジョイントシートで図のように足の形の乗り物を作成する。
左右の各関節(また関節、ひじ、足首、腰)にジョイントローテーターが設置されている。
足の形にブロックを組み上げたら、各関節に「人型(下半身)MCTRL」のモーションアイテムをメニューから設置し、
各関節に合った設定を行う。
ジョイントローテーターの右クリックメニュー
各関節の設定
設定が終了したら、コアブロックを右クリックしてメニューからユニット型を設定する。
ユニットの名前もここで設定できる。
ユニット型の条件を満たしていれば、ユニットをアセンブルする。
アセンブルされたユニットを動かすには、緑のエフェクトが出ているジョイントシートの左クリックする。
W,A,S,Dで歩行。歩行キー二度押しでエネルギーを3消費してダッシュジャンプ。スペースでジャンプできる。
正しく組み上げていたら、ユニットが歩行していることが確認できる。
Shift二度押しで降りる。
ブロックに戻したければ、逆アセンブルボールをユニットに当てる。
ユニットの装飾[編集 | ソースを編集]
ジョイントブロックでは、「セラミックパテ」「ノミ」「パターンカッター」「ペイントブラシ」などを使い、
彫刻を施し色を塗ることが出来ます。
通常のセラミックパテで0~16分割(4分割以上はConfig変更が必要)
セラミックパテ(パターン)では0~5分割でき、パターンカッターで斜めの彫刻が可能です。
彫刻機能[編集 | ソースを編集]
塗装機能[編集 | ソースを編集]
彫刻を施したブロックは、任意の色で塗装することができる。
まず塗装したい色を設定するためにパレットをもってコアブロックを右クリックする。
※Ver0.7.3より、パレット番号ごと別パレットにコピペ出来る様になりました。
メニューを開くと、パレット情報を編集できるようになる。1~7がエアスプレーで使用できる色で、
BASE色がパテを使用した際の初期色。
ここで試しに1番の色をオレンジ色から赤色に変えてみる。(任意の色でもOK)
色を変更したら、保存適応でパレット情報を保存する。
エアブラシを使用して分割したブロックの塗装を行う。右クリックで塗装。スニークしながら右クリックで番号変更。(1~7がパレット情報の色に対応している。)
1番の番号で塗装すると、先ほど指定した赤色(任意の色)に塗装できていることがわかる。
パレットで設定できる色は8色だけではない。メニューで2ページ目以降も使用できる。
2ページ目以降の色に切り替えるには、パテを適応したブロックをパレットで右クリックすれば切り替えられる。
1ページ7色、6ページ使用可能で、全42色使用できる。ただし、1つのブロックに異なるページの色を使用することはできない。
彫刻のコピー、反転[編集 | ソースを編集]
ユニットの武装[編集 | ソースを編集]
モデルの適応[編集 | ソースを編集]
ユニットに特定の機能を持たせて実行させるにはモデルが必要になる。
モデルはパーツブロックの見た目を変えるだけでなく、
アクション付きのモデルに関しては武器やツールの使用が可能となる。
ミサイルや弾丸の発射、ブロックの掘削等の機能を実装することができる。
モデルの種類に関しては「アイテムリストのモデルの欄」を参照。
モデルのアクションを使用する[編集 | ソースを編集]
二足歩行型のチュートリアルで作ったユニットを元に、両腕を図のように作る。
両腕のローテーターに人型(上半身)MCTRLを右上にセットし、
モーションの種類を首・照準に設定する。このモーションを設定すると、
マウスに合わせて腕を上下に動かしてくれる。
右手にガトリングレーザーモデルを、左手にバズーカヘッドモデルをセットしキー操作MCTRL(席1)を両腕にセットする。
汎用キーをそれぞれの腕に別々でセットして、アクション実行を有効にする。
右手の汎用キーを1にセットし、左手の汎用キーを2にセットする。
汎用キーはデフォルトでは次のように設定されている。
(汎用キー1~6)「z」「x」「c」「v」「b」「n」「m」「,」
(汎用キー上下左右)「W」「S」「A」「D」
(汎用キージャンプ、スニーク)「Space」「Shift」
「マウスホイール上」「マウスホイール下」
ここではzキーを汎用キー1とし、xキーを汎用キー2とする。
モデルを使用するには燃料の補給も必要となるので、ジョイントコアのメニューから「コア燃料設定」のタブを参照し、燃料スロットに石炭や木炭等の燃料を入れる。
設定を終えたユニットをアセンブルして動かしてみる。
マウスを上下方向に動かすと腕が上下に動き、狙いを付けれる。
汎用キー1(zキー)を押せばガトリングレーザーから弾が連射出来る。
汎用キー2(xキー)を押せばバズーカヘッドから砲弾を発射出来る。
初期値の設定とポージング[編集 | ソースを編集]
JointBlockのブロックには、初期値を設定する事ができ、
アセンブルすると、初期値で設定したポーズを取ります。
初期値は複数登録する事ができ、コマンド「/jbcm x」やノーマルブロック、R.I.N.G.を使い、
アセンブル後に切り替える事ができます。
(基本で1~5 Config[maxInitLayers]の変更で最大127まで)
設定されてないレイヤ番号を指定された場合、0番のレイヤのポーズを取ります。
初期値の設定[編集 | ソースを編集]
現バージョンではCtrlキーを押す事で、初期値レイヤーのコピー、ペースト、削除が出来ます。
ユニットのデータ保存、呼び出し[編集 | ソースを編集]
ユニットのデータは文字列として保存、呼び出しができる。
文字列を通してユニットデータを共有することが可能。
今回は設計図で機体を受け渡しているが他にも、
「R.I.N.Gデータ」、「パレットデータ」、「複製金型」もコマンドを使って共有ができる。
データ出力[編集 | ソースを編集]
データ入力[編集 | ソースを編集]
文字列で出力されたユニットデータはコマンドを使用して、クリップボード経由で入力することができる。
以下の文字列は、上の画像のユニットデータでそのままコピーして使用することができる。
BR+LCAAAAAAAAABtUMFOwkAQnWmLFBQ1hLsaL3pTj4aTiSRw4CLq0Wy7S2ncbU13ET4erbPbJlJg
DrtvJu+9fTtdgGPwtSgAgJVUCFWd+XRwOFgIJYR0X/TPO8S5Acxwl9Iqa87McR4AOV4OGxwPy18I
7Ft91/tY/mz7Dq0G1g1NgOVmmzMijkfndrW8coPO97rKQqJK81xngb0sbcRGlhBxJwvsZekg7mSB
vSxdDxtZ3Pa8Q/tFr1oC+HGmbE9IOGRnWvIaZW4WEJorQ2hAqHCzNiHjUM8qKpc2tLQxkSR8a3tK
eqVyPvmY5GlmnmQefz4uloplcqVyk+ZZaoQKIciYEhBqpr6kuLvvQisu0mzuw4mW7Fu8yNxMl+4B
hB7TWqhIipFkiaaNhEtymTYMEE6jnBX8LRWriubDkaWNeWUykKxIxCtN3kWaLMwoXQvOAwiVjmYs
Gf+vyv4tljVipnDDPxFzeIvIAgAA
入力したいユニットデータの文字列をコピーする。
この状態でクリップボードにデータがあり、何もデータの入っていない設計図(青)を持った状態で、
チャット画面でコマンド「/jbid」と入力する。
- 「s」オプション付加時、設計図に封をすることが可能。封した設計図はインポートもエクスポートもできない。
なお、マルチ時には31KBまでしかインポートできない。
すると、クリップボードからユニットデータを設計図にコピーしたとメッセージが出る。
インベントリでデータがあることを確認する。
機体を呼び出したい場所に「コンストラクタブロック」を設置する。
データ量が多いほど機体を呼び出すのに必要な場所が広くなるので注意。
既存のブロックを新しく呼び出したJBのブロックに置き換えてしまうため。
右クリックでメニューを開き、左上のスロットにデータありの設計図を入れてビルドを行う。
エラーが無ければ、機体をブロック化することができる。
モーションチップの振る舞い[編集 | ソースを編集]
ブロックには回る、伸びるなど様々な「モーション」をさせる事ができますが、
GUIのモーションに「MCTRL」(通称チップ)を入れることで、より複雑な動きをさせる事が来ます。
※画像挿入(GUI)
MCTRLには大きく別けて、人型や機械などユニット型にあわせたユニット型別モーションをさせるもの
(ユニット型と同じにする必要はない)
汎用キーやマウス操作によりモーションさせるもの
R.I.N.G.でのセンサーとチャネルを設定するものの3種類がある。
※画像挿入(MCTRLアイコン)
ユニットパーツ[編集 | ソースを編集]
ブロックに入れ、コアGUIの「ユニットパーツを自動的に配る」にチェックをいれて
「ユニット構成補助」ボタンを押すと各ユニット型にあわせた下記にあるアイテムに変化します。
※画像挿入(コアGUI)
ユニット型別モーション[編集 | ソースを編集]
ローテータに入れるだけで、特定の動きをしてくれるMCTRLです。
- 振りの大きさをあらわす「振り係数」
「振り係数」を大きくすれば大きく動き、小さくすれば小さく動く。
- ジャンプ時と降下時どちらに空中時のポーズを適用するかの「跳躍時の屈伸」
- ジャンプ時にとるポーズ「空中時の角度」
などが設定できます。
導入の利点としては、各パーツ毎の同期を取る必要がない事で、
通常の振り子設定だと、最大最小値と稼動角度によりそれぞれのパーツがばらばらに動いてしますが、
このチップは入れるだけで纏まって動いてくれます。
※画像挿入(ローテータGUI+人型下半身MCTRL)
◆人型(上半身)
このチップは、人間の上半身を模したモーションをさせます。
右半身、左半身の設定などをすると、交互に動いてくれます。
また、肘は移動時曲がる為、肘以外にも移動にあわせて曲げたいパーツに使うと便利です。
(移動時、アンテナを後ろに曲げるとか。)
首視点追従と基本的に同じで、プレイヤーのYaw・Pitch角分曲がる。(AIMに向くわけではない)
肩移動時、X軸に振り子運動する。
腕手移動時、指定された角度に変わる。バネ式同様移動が終わると初期値に戻る。
※画像挿入(ローテータGUI+人型 上半身MCTRL)
◆人型(下半身)
このチップは、人間の下半身を模したモーションをさせます。
腰移動カーソルの押された方向にy軸回転する。回転制限を掛ける事も出来る。
後退時は反時計回りに後ろを向こうとする為、回転制限を掛けると左いっぱいに回った所で固定される。
腿移動時、X軸に振り子運動する。
膝移動時、X軸にプラス方向だけ振り子運動する。
踵移動時、X軸に振り子運動する。
※画像挿入(ローテータGUI+人型 下半身MCTRL)
◆獣型MCTRL
このチップは、獣の脚部の動きを模したモーションをさせます。
ただし歩く以外の動きはしなく、また四足獣の動きにしては不自然かも知れません。
付け根
膝
踵
※画像挿入(ローテータGUI+獣型MCTRL)
◆昆虫型MCTRL
このチップは、昆虫の脚部の動いを模したモーションをさせます。
転節部が回転し、腿節部ば上下運動し、船のオール漕ぐような動きをします。
転節
腿節
※画像挿入(ローテータGUI+昆虫型MCTRL)
◆機械部品MCTRL
このチップは、それぞれの機械の動きを模したモーションをさせます。
車輪
ローター
ホバー
スタビライザー
スクリュー
※画像挿入(ローテータGUI+機械部品MCTRL)
操作系MCTRL[編集 | ソースを編集]
◆キー操作MCTRL(席x)
座席ごとに、汎用キー操作でモーションやアクションをする取るよう設定する。
選べる動きはブロックの種類によって違う。
(この項目はブロック毎に説明をまとめた方がいいかも?)
ローテーター・スライダー、エクステンダー、スケーラーはモーションとアクション
ノーマルはコアのスレーブ切り替え、初期値変更
アトラクターはON・OFFなどの設定が出来る様になる。
※画像挿入(ローテータGUI+汎用キーMCTRL 項目解説画像。)
シンプル
※画像挿入(ノーマルブロック・ローテータ・スライダー・エクステンダー・スライダーicon)
最大最小値の設定項目がなく、ローテータは数値分回転し続ける。
スライダー、エクステンダー、スケーラーの場合は最大サイズと最小サイズの振り子運動になる。
また、他のモーションと違いxyz複数方向同時にモーションさせる事もできる。
ノーマルブロックはアクションの有無のみ設定可能。
※画像挿入(ローテータGUI+汎用キーMCTRL 項目解説画像。)
複合x
※画像挿入(ローテータ・スライダー・エクステンダー・スライダーicon)
最大値最小値を設定し、2つのキーでxyz1つの方向にモーションさせる。
初期値が最大値、最小値の外であった場合、モーション時即座にこの値に変更される。
※画像挿入(ローテータGUI+汎用キーMCTRL 項目解説画像。)
視点追従
※画像挿入(ローテータicon)
AIM方向に向くのではなく、プレイヤーのYawPiTch角分動く。
なので、根元の別のローテータを置き90度回しておくと、90度回った所から視点角動く事になる。
「親の回転をリセット-する」場合は、上記を回避しAIM方向を向く(ただし視点からのブロック位置差は補正されない。)
「入力時のみ追従-する」場合は、設定した汎用キーを押している間だけ動く(離すとそこで止まる)
回転制限がないので、あらぬ方向を向く事がある。
※画像挿入(ローテータGUI+汎用キーMCTRL 項目解説画像。)
ターゲットへ回転
※画像挿入(ローテータicon)
Ver0.7.3から追加。 R.I.N.G.で指定されたターゲットの方向に向く。
視点追従と違い、回転するxy軸を限定したり、回転制限を掛ける事ができる。
※画像挿入(ローテータGUI+汎用キーMCTRL 項目解説画像。)
振り子x
※画像挿入(ローテータ・スライダー・エクステンダー・スライダーicon)
最大最小値を設定し、その数値の間を設定値スピードで行ったり来たりする。
数値が大きいほど早いが、最大最小値との兼ね合いで動いていない様に見える事もある。
例えば最大最小値+-45で+90度動かした場合、中間部の移動が表示されない。
また、「パターン-サイン」にする事で、最大最小値付近の移動スピードを緩くする事ができる。
「入力なしで初期値-する」に設定すると、キーを押していない間は初期値にもどる。
ただし、再び押した際は、前に止まった所から動きだすので、パタパタする。
※画像挿入(ローテータGUI+汎用キーMCTRL 項目解説画像。)
ばね式x
※画像挿入(ローテータ・スライダー・エクステンダー・スライダーicon)
最大最小値を設定し、キーを押している間その値まで動き、離すと初期値まで動く。
戻るスピードは「戻る量/割合」で設定できる。
戻るスピードを最大にすれば、話した瞬間初期値に戻る。
また、最大最小値が+-180までなので、それ以上動かしたい場合は複数のローテータを直列に並べる必要がある。
※画像挿入(ローテータGUI+汎用キーMCTRL 項目解説画像。)
ばね式x
※画像挿入(ノーマルブロックicon)
※画像挿入(ローテータGUI+汎用キーMCTRL 項目解説画像。)
ばね式x
※画像挿入(アトラクターicon)
※画像挿入(ローテータGUI+汎用キーMCTRL 項目解説画像。)
◆アイテム操作MCTRL(席x)
座席ごとに、マウス操作でモーションやアクションをする取るよう設定する。
基本的には汎用キーと同じだが、同じブロックでも選べない設定がある。
また、右クリックは押しっぱなしにした際、汎用キーに比べ連続入力間隔が遅く
左クリックは押しっぱなしにしても連続入力されない。
※画像挿入(ローテータGUI+アイテム操作MCTRL席1)
◆R.I.N.G.チャネルMCTRL
R.I.N.G.の命令に対応したモーションチャネルに設定する。
※画像挿入(ノーマルGUI+R.I.N.G.チャネルMCTRL)
◆センサーMCTRL
設定したセンサーチャネルが有効になる
※画像挿入(ノーマルGUI+センサーMCTRL)
モデルパッケージの作成方法[編集 | ソースを編集]
概要[編集 | ソースを編集]
JointBlockではモデルを自作することができる。
新しい3Dモデルを追加したり、既存のモデルを元にパラメータを変えたモデルなどを作成・追加できる。
新規に3Dモデルを追加する場合には、3Dモデリングソフトを使用するか、
コマンド「/jbbo c」で出力したobjファイル、mltファイルが必要。
作成にはblenderを使用し、wavefront形式でエクスポート出力したobjファイルを推奨。
Metasequoia(有料版)でも出力可能。(まだ未検証なので情報求む)
無料版でもmqoをobjファイルに変換すれば使用できる可能性があり。
現時点で新しいアクションを追加する機能はないので注意。
(数種類の中から選択し数値を設定します。)
作者のフォーラムでサンプルファイルあり。
自作のモデルを収録したファイルを「モデルパッケージ」と呼ぶ。
必要なJsonファイル、objファイル、テクスチャをZipファイルで圧縮したファイル群である。
モデルパッケージはマインクラフトフォルダのConfigフォルダ直下に「JointBlock」フォルダを作り、
zip化したパッケージを配置することで追加のモデルまたは設計図がカタログから購入可能となる。
(※「JointBlock」フォルダ名はJBRobotModelの設定から変更可能。)
※参考モデルパッケージ(3Dモデル)導入の手順をまとめてみた。(まから氏-ニコブロ)>http://makara.blog.jp/archives/9096710.html
zipファイルの階層[編集 | ソースを編集]
以下の構成でパッケージを作成できる。
blueprintは設計図、langは言語ファイル、 modelは3Dモデルとなっている。
zipルート ├blueprint(固定名) │ ├xxA.json(設計図json) │ ├xxB.json(設計図json) │ └・・・・・ ├lang(固定名) │ ├en_US.lang │ ├ja_JP.lang │ └・・・・・ ├model(固定名) │ ├resource(※) │ │ ├xxx.png │ │ ├xxx.obj │ │ └・・・・ │ ├xxA.json(モデルjson) │ ├xxB.json(モデルjson) │ └・・・・・ └package.json(パッケージjson)
画像やobjなどのリソースはjson内にてzipルートからのパスで指定するので、
どのように配置してもjson内のパスさえ合っていれば読み込む。
blueprint、model、langのみファイル名は固定。
3Dモデルの作成[編集 | ソースを編集]
3Dモデルはobjファイルのみ読み込み可能。モデリングツールで作成する。
モデリングツールはblenderを推奨。Metasequoia(有料版)でもobjファイルを出力できる。
無料版のMetasequoiaを使う場合には、blenderにmqoファイルを読み込ませるプラグインを使用するか、
objファイルに変換するツールを使って変換する等の方法がある。
また、Ver0.7.3よりコマンド「/jbbo x」で出力したobjファイルも使用出来る様になった。
ID管理について
- 追加したモデルはMOD内でパッケージにつき一つのアイテムIDをパッケージIDを元に作成し、
アイテムメタ値にモデルIDを振る事でゲーム内アイテムとして管理される。
バージョンアップする際にパッケージIDやモデルのIDを変更してしまうとそれまでに作成されたアイテムが
別アイテムとなってしまうので互換性が保たれない。
パッケージIDやモデルIDを策定する際には注意すること。
設計図IDも同様に、販売した設計図アイテム内に引き当てキーを登録する方式なので、IDが変わるとそれまでにユーザーが
入手したアイテムの紐付けが異なることになるので注意。
(クリエィティブで入手可能な青設計図とは異なり、アイテム自体には機体データは保存されない
毎回ロード時にパッケージから読み取り、メモリ内にデータテーブルが登録され、コンストラクタで機体構築時は
IDからデータの情報を引き当て、それを元に機体がアセンブルされる)
- 上記仕様のため、パッケージのテストをする際には新ワールドの作成を推奨。
(アイテムIDテーブルを汚してしまうため)
blenderで出力する際の留意点
- objファイルの読み込みにはforgeの補助クラスを使っているが、いくつかの制約がある。
①ひとつのオブジェクト内ではTriangle(三角形)とQuads(四角形)のいずれかのメッシュで統一されている必要がある。
②Nigons(多角形)は使用できない模様
これらはメッシュを作成する際に決めておかないと後で修正に手間がかかる。(最後に全て三角形にしてしまう手もあり)
- blenderから出力する際は座標の設定に注意。
(デフォルトで指定されているForward:-Z Forward,Up:Y Upで出力すればOK。
なお作者の使用しているデフォルトモデルは反転させてるので抜き出して使いたい方は注意。)
- エクスポート画面の左下のチェックボックスは「IncludeUVs」だけにチェックが入っていればOK。
- メッシュの大きさはエクスポート時のスケール「1.00」で、左右0.5、下限は原点、上限は1の箱を基準に作成していれば
ブロックサイズにぴったり収まるよう描画するようになっている。
エディット画面でテンキー1を押した際の向きが正面になる。
レイヤについて
- オブジェクト情報つきで出力した場合なども処理内ではひとつのメッシュとして扱われる。
- 半透明部分と不透明部分を混合させたい場合などはそれぞれ別のメッシュを用意して、
パス0とパス1のレイヤをそれぞれ指定して重ね合わせる形式になる。
Jsonファイルの書き方[編集 | ソースを編集]
各種ファイルのパス、モデルの性能やパラメーターをJsonファイルで記述する。
パッケージJsonファイル
パッケージ全体の概要を記述するJsonファイル。
{ // ********************************************************************** // パッケージjsonのサンプルフォーマットです // ・ファイル名に日本語を使用する場合はzip圧縮時にutf-8を指定できる圧縮ツールを使用してください // ・jsonファイル内にASCII以外の文字を含むファイルはutf-8で保存するようにしてください // ・項目後の「,」の打ち忘れにご注意ください // ********************************************************************** // (必須)パッケージフォーマット 「package」としてください "format": "package", // (必須)パッケージバージョン 更新するたびに数値を加算していってください // マルチなどでクライアント側とサーバー側のパッケージの差異を検出するのに役に立ちます "packageVersion": 2, // (必須)パッケージID // ※重要※パッケージIDを使用してパッケージモデル専用アイテムをつくり、 // ※※※※メタ値をモデルIDにすることで複数のモデルを管理するようにしています // 半角英字(アンダースコア可)32文字以内の他と被らないIDを工夫して用いてください "packageId": "sample_cubes", // (必須)パッケージ名称 直接書くこともできますが、なるべくLangファイルのキーで指定するようにしてください "packageName": "jbp.sample_cubes.package.name", // (必須)パッケージアイコン カタログ画面に使用するアイコンファイルを指定してください "packageIconFile": "model/texture/packageIconA.png" }
モデルJsonファイル
モデルのパラメーター、モデル名、objファイルとテクスチャファイルのパスを記述するJsonファイル。
モデル一つごとに必要。アクションは既存のモデルのアクションを実装することができる。
バズーカモデル、ガトリングレーザーモデル、ミサイルポッドモデル、レーザーガンモデル、スラスターモデル、ブレードモデル、フレイマーモデル、ドリルモデル、プランターモデル、プランターモデルが使用可能。
{ // ********************************************************************** // 追加モデルjsonのサンプルフォーマットです // ・ファイル名に日本語を使用する場合はzip圧縮時にutf-8を指定できる圧縮ツールを使用してください // ・jsonファイル内にASCII以外の文字を含むファイルはutf-8で保存するようにしてください // ・項目後の「,」の打ち忘れにご注意ください // ********************************************************************** // (必須)モデルフォーマット 「model」としてください "format": "model", // (必須)モデルID 0-127 パッケージ内で重複しないよう注意してください(設計図IDとは別管理) "modelId": 0, // (必須)モデル名称 直接書くこともできますが、なるべくLangファイルのキーで指定するようにしてください "modelName": "jbp.sample_cubes.model.front.name", // モデル説明文 直接書くこともできますが、なるべくLangファイルのキーで指定するようにしてください "modelDesc": "jbp.sample_cubes.model.front.desc", // (必須)モデルアイコンファイル "itemIconFile": "model/texture/iconFront.png", // (必須)モデルレイヤ 必ずひとつは必須 "layers": [ { // (必須)レンダリングパス 0:不透明 1:透明 "pass": 0, // (必須)モデルオブジェクトファイル "modelFile": "model/obj/s_cube_front.obj", // (必須)モデルテクスチャファイル "textureFile": "model/texture/sampleTex1.png" } ], // 販売コスト 省略時はエメラルド1 "merchant": { // (販売コスト内に必須)販売コストアイテム名(ドメイン付きアイテム形式) "item": "minecraft:apple", // (販売コスト内に必須)販売コストアイテムメタ(ダメージ)値 "meta": 0, // (販売コスト内に必須)販売コスト個数 "cost": 6 }, // アクション 省略時はアクションなし "action": { // (アクション内に必須)アクションタイプ "actionType": "bullet", // bulletアクションのサブタイプ "bulletType": "lazer", // bulletアクションのスピード "speed": 3.5, // bulletアクションのダメージ "damage": 6, // bulletアクションの射出方向 0-5のサイド値(3:前,2:後,0:下,1:上,4:右,5:左) "shootSide":1, // bulletアクションの使用エネルギー "useEnergy":5.0, // bulletアクションのクールタイム "coolTimeTick":10, // (レーザーのみ)レーザー長さ "lazerLength":22, // (レーザーのみ)レーザー太さ "lazerWidth":9, // (レーザーのみ)レーザー色 ARGBを32ビット符号付きInteger値で指定してください "lazerColor":-855638017 } // ***他のアクションタイプの書き方例*** // // バズーカアクション // "action": { // // (アクション内に必須)アクションタイプ // "actionType": "bullet", // // bulletアクションのサブタイプ // "bulletType": "rocket", // // bulletアクションのスピード // "speed": 1.5, // // bulletアクションのダメージ // "damage": 20, // // bulletアクションの射出方向 0-5のサイド値(3:前,2:後,0:下,1:上,4:右,5:左) // "shootSide":1, // // bulletアクションの使用エネルギー // "useEnergy":15.0, // // bulletアクションのクールタイム // "coolTimeTick":60, // // bulletアクションの爆発をダミー爆発にするかどうか // "dummyExplode":false // } // // ミサイルアクション // "action": { // // (アクション内に必須)アクションタイプ // "actionType": "bullet", // // bulletアクションのサブタイプ // "bulletType": "missile", // // bulletアクションのスピード // "speed": 0.5, // // bulletアクションのダメージ // "damage": 20, // // bulletアクションの射出方向 0-5のサイド値(3:前,2:後,0:下,1:上,4:右,5:左) // "shootSide":2, // // bulletアクションの使用エネルギー // "useEnergy":10.0, // // bulletアクションのクールタイム // "coolTimeTick":30, // // bulletアクションの爆発をダミー爆発にするかどうか // "dummyExplode":false // } // // ブレードアクション // "action": { // // (アクション内に必須)アクションタイプ // "actionType": "blade", // // bladeアクションのダメージ // "damage": 50, // // bladeアクションのエネルギー使用率A(一般) // "useEnergyMultA": 0.0033, // // bladeアクションのエネルギー使用率B(人型・四足) // "useEnergyMultB": 0.0016, // // bladeアクションのエネルギー使用量(ヒット時) // "useEnergyHit": 16, // // bladeアクションのブレードカラー ARGBを32ビット符号付きInteger値で指定してください // "bladeColor":-2130758861 // } // // ドリルアクション // "action": { // // (アクション内に必須)アクションタイプ // "actionType": "drill", // // drillアクションのエネルギー使用量(ドリル※パワーによりさらに若干消費増) // "useEnergy": 0.1 // } // // プラントアクション // "action": { // // (アクション内に必須)アクションタイプ // "actionType": "plant", // // plantアクションのエネルギー使用量(耕地、播種でそれぞれ使用) // "useEnergy": 0.5 // } // // ハーベストアクション // "action": { // // (アクション内に必須)アクションタイプ // "actionType": "harvest", // // harvestアクションのエネルギー使用量 // "useEnergy": 0.5 // } // // スラスターアクション // "action": { // // (アクション内に必須)アクションタイプ // "actionType": "thruster", // // thrusterアクションの推進力 // "moveSpeed": 0.05, // // thrusterアクションの推進力限界 // "speedLimit": 0.5, // // thrusterアクションの推進力方向 0-5のサイド値(3:前,2:後,0:下,1:上,4:右,5:左) // "shootSide": 0, // // thrusterアクションのエネルギー使用率A(一般) // "useEnergyMultA":0.0060, // // thrusterアクションのエネルギー使用率B(ユニット型なし) // "useEnergyMultB":0.003, // // thrusterアクションのエネルギー使用率B(マスター連結時) // "useEnergyMultC":0.012 // } }
[ドリル] useEnergy = 0.1; [ハーベスト] useEnergy = 0.5; [プラント] useEnergy = 0.5; [スラスター] moveSpeed = 0.05; speedLimit = 0.5; shootSide = 0; useEnergyMultA = 0.0060; useEnergyMultB = 0.003; useEnergyMultC = 0.012; [ブレード] damage = 45; useEnergyMultA = 0.0033; useEnergyMultB = 0.0016; useEnergyHit = 10; bladeColor = 0x80FF3333;(-2130758861) setMobFire = false; setMobPotionEffect = -1; potionAmplifier = 1; effectDuration = 5; [フレイマー] damage = 5; useEnergyMultA = 0.0025; useEnergyMultB = 0.0012; useEnergyHit = 3; setBlockFire = true;(※延焼可能ブロックに火をつけるかどうか) flameColor = 0x80FF3333;(-2130758861)(バニラの炎を使ってるのでもともとの色が赤っぽいのでご注意を) setMobFire = true;(※) setMobPotionEffect = -1;(※) potionAmplifier = 1;(※) effectDuration = 5;(※) [ブレット] (基礎値) damage = 6; speed = 3.5; shootSide = 1; useEnergy = 1; coolTimeTick = 3; lazerLength = 12; lazerWidth = 4; lazerColor = 0xCCFFFFF;(-855638017) dummyExplode = false; setMobFire = false; setMobPotionEffect = -1; potionAmplifier = 1; effectDuration = 5; [バズーカA] bulletType = "rocket"; damage = 20; speed = 1.5; shootSide = 1; useEnergy = 15; coolTimeTick = 60; [バズーカB] bulletType = "mortar" damage = 20; speed = 1.5; shootSide = 1; useEnergy = 18; coolTimeTick = 60; [Lガトリング] bulletType = "lazer" damage = 6; speed = 3.5; shootSide = 1; useEnergy = 1; coolTimeTick = 3; lazerLength = 12; lazerWidth = 4; [L銃] bulletType = "lazer" damage = 18; speed = 3.5; shootSide = 3; useEnergy = 4; coolTimeTick = 8; lazerLength = 48; lazerWidth = 4; [ミサイル] bulletType = "missile" damage = 20; speed = 0.5; shootSide = 2; useEnergy = 10; coolTimeTick = 30;
※
setMobFire:MOBを炎にかけるかどうか
setMobPotionEffect:MOBにバニラのポーション効果を付加する場合正の整数0~321
(このへんの値は海外wikiとかに乗ってるかも?メジャーなところでは19が毒です)
potionAmplifier:バニラPotionのamplifier。上記ポーション効果のサブ値(引数)みたいなものです。
Healなら回復値Harmならダメージみたいな感じでポーション効果で意味が違う模様。細かい部分はMODDINGの知識が必要かもです
20160319追記:「/effect」コマンドのamplifier引数に相当するのでそのへんを検索したら出てくるかもです
effectDuration:炎またはポーション効果の持続時間です(tickではなく秒数)
設計図Jsonファイル
モデルカタログで購入できる設計図を追加するためのJsonファイル。
文字列は31KBを超えたサイズでも読み込む。
{ // ********************************************************************** // 設計図モデルjsonのフォーマットサンプルです // ・ファイル名に日本語を使用する場合はzip圧縮時にutf-8を指定できる圧縮ツールを使用してください // ・jsonファイル内にASCII以外の文字を含むファイルはutf-8で保存するようにしてください // ・項目後の「,」の打ち忘れにご注意ください // ********************************************************************** // (必須)設計図フォーマット 「blueprint」としてください "format": "blueprint", // (必須)設計図ID 0-127 パッケージ内で重複しないよう注意してください(モデルIDとは別管理) "blueprintId" : 1, // (必須)設計図名称 なるべくLangファイルのキーで指定するようにしてください "blueprintName" : "jbp.sample_cubes.blueprint.cubes.name", // (任意)設計図説明文 なるべくLangファイルのキーで指定するようにしてください "blueprintDesc" : "jbp.sample_cubes.blueprint.cubes.desc", // (任意)設計図データ /jbedコマンドで出力した文字列をダブルコーテーションの間にデータを入れる(間に改行を入れてもいいが、スペースは入れない) "blueprintData":"" }
詳細解説[編集 | ソースを編集]
マルチプレイ上のインポートにまつわる31kB制限について[編集 | ソースを編集]
マルチプレイでのコマンド「/jbid」で入力されるユニットのデータは31KBまでと決まっている。
シングルプレイは制限はない。
v0.3以前で巨大なユニットデータのインポートを行った場合、ある一定バイト数を超える大きなユニットデータは送信に失敗していた。
クライアント→サーバーにデータが送信される際、Forgeが汎用パケットのサイズに制限とチェックをかけていたためである。
マルチ環境などでサーバー側へ大きなユニットデータを取り込むようなケースは、サーバーの管理者と相談の上、
JBのインポート以外の手段でユニットをワールドに取り込むか、
あるいはJBRobotModelの追加パッケージ機能での設計図追加をサーバーの管理者と相談のうえ検討する。