演出に革命をもたらす、「アドオンパーティクル」【第1回パーティクル講座】

初めて執筆させていただきます、Rutlδという者です。(名前の呼び方は後ろの記号から「でるた」と呼ばせてもらっています。)
至らぬ点もあるかと思いますが、分かりやすい解説を目指して行きます。何卒よろしくお願いします。


1.パーティクルって何?

今更説明する必要はないかもしれませんが、念のため解説していきます。
パーティクルは直訳すると「粒子」。Minecraftでは視覚上の演出の一つで、様々なところで登場しています。
例えば、ブロックを破壊した時に飛び散る欠片。

アカシアの木を伐採している。

クリーパーの爆発!

MY HOOOOOOOOUSE

エフェクトを得たりポーションが炸裂したときのもやもや。

治癒のポーション「村人は僕が守る!」

そんなパーティクルですが、バージョン1.8から/particleコマンド、そしてアドオンによるパーティクルカスタマイズが可能になったことにより、パーティクルを使った演出強化が見込まれています!

2.ファイル構成

そんなアドオンによるパーティクルカスタマイズですが、実際のリソースパックのファイル構成はこのようになっています。

リソースパック本体
-particles
  -パーティクル1.json
  -パーティクル2.json
  -パーティクル3.json
  -…
 -…

particlesのフォルダの名前は最後の「s」の部分を書き忘れないようにしましょう。

3.jsonファイルの中身(1.10.0format対応)

では、実際にjsonファイル内に記述する際の例を載せていきます。

(パーティクル名:particle_test_tip_1)

{
 "format_version":"1.10.0",
 "particle_effect": {
  "description": {
      "identifier": "particle_test_tip_1",
   "basic_render_parameters": {
    "material": "particles_alpha",
    "texture": "textures/particle/particles"
   },
   "components": {
    "minecraft:emitter_rate_instant": {
     "num_particles": 1
    },
    "minecraft:emitter_lifetime_once": {
     "active_time": 0
    },
    "minecraft:emitter_shape_sphere": {
     "radius": 0,
     "direction": "outwards"
    },
    "minecraft:particle_initial_speed": 1.2,
    "minecraft:particle_lifetime_expression": {
     "max_lifetime": 3.0
    },
    "minecraft:particle_motion_dynamic": {
    },
    "minecraft:particle_appearance_billboard": {
     "size": [ 1.0, 1.0],
     "facing_camera_mode": "lookat_xyz",
     "uv": {
      "texturewidth": 128,
      "textureheight": 128,
      "flipbook": {
       "base_UV": [ 56, 0 ],
       "size_UV": [ 8, 8 ],
       "step_UV": [ -8, 0 ],
       "frames_per_second": 8,
       "max_frame": 8,
       "stretch_to_lifetime": true,
       "loop": false
      }
     }
    },
    "minecraft:particle_appearance_tinting": {
     "color":[1.0 ,1.0 ,1.0 ,1.0]
    }
   }
  }
 }
}

慣れない人には頭が痛くなる文字の数ですが、ご心配なく。内容自体はとてもシンプルです。
minecraft:~と書かれた部分が、パーティクルをカスタマイズするコンポーネントになります。
詳しい解説と行きたいところですが、こんなたくさんの種類のコンポーネント、すぐに理解するというのはなかなか厳しいです。
まずは 習うより慣れよ ということで、これをどう弄れば面白い変化が起きるのかを説明していこうと思います。

4.上の記述例をアレンジしよう!

まずは最初に、/particleコマンドで呼び出すパーティクルの名前を定義する部分についてです。

{
"format_version":"1.10.0",
 "particle_effect": {
  "description": {
   "identifier": "particle_test_tip_1",
  }
 }
}

identifierのところにparticle_test_tip_1と書かれたところがありますが、それが名前となっています。「/particle particle_test_tip_1 ~ ~ ~」という/particleコマンドを実行すると出力されます。
ここは好きな名前に変更することができます。適当に名前を付けてあげましょう。

また、アドオンを配布するといったことになってくるとパーティクルで指定した名前がかぶったとき演出が上書きされてしまうということにもつながります。
それを避けるために、一例ですが命名はオリジナルのアドオン名:パーティクルの名前とするといいでしょう。

"minecraft:emitter_rate_instant": {
"num_particles": 1
}

こちらはパーティクルを一度に何個出力するかを定義します。この例では1となっています。シンプルですが、大きすぎる値を入れてパーティクルの出しすぎに注意です。

"minecraft:particle_initial_speed": 1.2

パーティクルが進む速度の速さです。この例では1.2となっています。

"minecraft:particle_lifetime_expression": {
"max_lifetime": 3.0
}

パーティクルが残る時間を定義します。この例では3.0となっています。

"minecraft:particle_appearance_billboard": {
"size": [ 1.0, 1.0]
}

パーティクルのサイズを定義します。一つ目の値が横のサイズ、二つ目が縦のサイズです。この例では一つ目二つ目ともに1.0となっています。

"minecraft:particle_appearance_tinting": {
"color":[1.0 ,1.0 ,1.0 ,1.0]
}

パーティクルに掛ける色合いを定義します。0.0以上1.0以下の範囲で指定します。4つ値が並んでいますが、左から三つの部分はR(赤色),G(緑色),B(青色)となっております。
4つ目の数値は透明度とされていますが、実際に数値を変更してみてもそれと思わしき挙動が見られなかったため、現在調査中です。判明次第追記します。


シンプルで分かりやすいものだとこのあたりでしょうか。値の部分を好きなように変えて試してみましょう!

終わりに

ひとまず今回はここまでとします。今後もパーティクルを使ってどのような演出ができるか、上記のようなコンポーネントなどを紹介していければと思います。

それではお疲れ様でした!


次回↓