Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
マイクラ花火師入門
Search
たくのろじぃ / Takunology
August 21, 2022
Programming
1
720
マイクラ花火師入門
MS Tech Camp #17 後夜祭で使用したスライド資料です。MinecraftConnection ライブラリを使用して花火を打ち上げる方法について説明したものです。
たくのろじぃ / Takunology
August 21, 2022
Tweet
Share
More Decks by たくのろじぃ / Takunology
See All by たくのろじぃ / Takunology
mcwithcode プロジェクト概要
takunology
0
7.9k
家族のために ChatGPT と話せるLINE Bot を作った話
takunology
0
380
Minecraft を使った Azure の新しい学び方
takunology
2
1.8k
MLSA 卒業式&歓迎会!@Microsoft Base 代官山
takunology
0
240
Ambassadors Meetup 2022
takunology
1
1.6k
MS Tech Camp #14 資料
takunology
0
290
ASP.NET Core と Azure Web Apps でできる!簡単 Web サイト作成&公開デモ
takunology
0
320
MinecraftConnection ライブラリによるマイクラプログラミング
takunology
0
520
Other Decks in Programming
See All in Programming
Compose 1.7のTextFieldはPOBox Plusで日本語変換できない
tomoya0x00
0
190
Flutterを言い訳にしない!アプリの使い心地改善テクニック5選🔥
kno3a87
1
200
Generative AI Use Cases JP (略称:GenU)奮闘記
hideg
1
300
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
1k
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
900
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
120
as(型アサーション)を書く前にできること
marokanatani
10
2.7k
3rd party scriptでもReactを使いたい! Preact + Reactのハイブリッド開発
righttouch
PRO
1
610
みんなでプロポーザルを書いてみた
yuriko1211
0
280
.NET のための通信フレームワーク MagicOnion 入門 / Introduction to MagicOnion
mayuki
1
1.7k
Less waste, more joy, and a lot more green: How Quarkus makes Java better
hollycummins
0
100
ペアーズにおけるAmazon Bedrockを⽤いた障害対応⽀援 ⽣成AIツールの導⼊事例 @ 20241115配信AWSウェビナー登壇
fukubaka0825
6
2k
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
YesSQL, Process and Tooling at Scale
rocio
169
14k
The Invisible Side of Design
smashingmag
298
50k
Teambox: Starting and Learning
jrom
133
8.8k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
The Cult of Friendly URLs
andyhume
78
6k
Being A Developer After 40
akosma
87
590k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Transcript
大川 匠 (Takumi Okawa) @takunology_net Takunology MS Tech Camp #17
後夜祭! マイクラ花火師入門
自己紹介 大川 匠 (たくのろじぃ/Takunology) 日本大学理工学部 4年 / 元高専生 【趣味】プログラミング /
Minecraft / Azure で遊んだり、Vtuber の配信見たり... 【好きな言語】C#(最近は Windows App SDK / WinUI 3 まわりを触ったりしてます) 【主な活動】 • Microsoft Learn Student Ambassadors (2021/1/7~) • Minecraft with Code Project (2020/11/1~) • MinecraftConnection ライブラリ開発 (2021/7/1~) • classmall Kids マイクラプログラミング講師 (2022/7/6~) 【出版物 (Zenn にて公開中)】 • Azure × LINE Messaging API によるMinecraft 農業の自動化 (2021/3/8) • C#ではじめるマインクラフトプログラミング (2022/2/9) @takunology_net Takunology たくのろじぃのメモ部屋 2
花火大会を Minecraft で楽しむ企画 オ ン ラ イ ン 3 プログラミング
(C#) + マイクラで日本の伝統的な花火大会を実現する
4 花火は影modでこそ輝く 花火大会をもっとリアルな演出で楽しむには? 1. OptiFine Downloads から対象のバージョンをダウンロード 2. このまま Install
をクリック 3. 起動構成から新規作成をクリック 4. バージョンから Optifine を選んで 起動構成を作成!
5 5. BSL Shader のサイトにて Files を選択 6. マイクラバージョンに合わせてダウンロード 6.
マイクラのファイルが入っているところに shaderpacks のフォルダをつくる 7. ダウンロードしたファイルを Zip 形式のまま shaderpacks フォルダの中に入れる 8. 手順4で作成した起動構成で マイクラを起動する
6 9. 設定からビデオ設定を開く 10. シェーダーの詳細設定を開く 11. BSL を選択して完了をクリック これで導入は完了!! ですが、せっかくなので設定もしてみましょう!
7 設定値は任意ですが、個人的なおすすめはこんな感じです 夜空に関する設定 花火に関する設定 1つ前の画面から設定
8 マイクラで花火を打ち上げるには? 方法1 : 花火アイテムをディスペンサーで打ち上げる 方法2 : 花火のデータ構造を作ってコマンドとして実行する /summon firework_rocket
~10 ~ ~ {LifeTime:30,FireworksItem:{id:firework_rocket,Count:1,tag: {Fireworks:{Flight:2,Explosions:[{Type:1,Flicker:0,Trail:1,Col ors:[I;15435844,14602026],FadeColors:[I;14602026]}]}}}}
9 マイクラで花火を打ち上げるには? 方法1 : 花火アイテムをディスペンサーで打ち上げる 方法2 : 花火のデータ構造を作ってコマンドとして実行する → コマンドをもっと簡単に実装したい
花火ロケットを作るまでの手順が多く、レッドストーン回路が必要になる データ構造の書き方を知らないと難しく、書き間違えると正しく動かない(文字列がクソ長い) • LifeTime : 花火が咲くまでにかかる時間 [Tick] • id : アイテム名 (firework_rocket) • Count : アイテム数 • Flight : 飛行距離 (1~3段階) • Type : 花火の形状(後述) • Flicker : きらめきの有無 • Trail : 流星の有無 • Colors : 花火が咲いたときの色 • FadeColors : 花火が散るときの色
10 MinecraftConnection ライブラリを使う リモートコンソール(RCON)を使用して、マインクラフトサーバにコマンドを送信できるライブラリ パッケージマネージャコンソールで導入する : Install-Package MinecraftConnection .NET Standard
2.1 以上の環境で使用可能 (.NET Core 3.0 ~ .NET 6.0) サンプルコード
11 花火の色を変える FireworkColors 列挙体には 16 色のプリセットがある 爆発した瞬間の色、爆発後の色を任意に変更すれば様々な色の花火を打ち上げられる BLACK BLUE BROWN
CYAN GRAY GREEN LIGHTBLUE LIGHTGRAY LIME MAGENTA ORANGE PINK PURPLE RED WHITE YELLOW 複数の色を含めることもできる
12 花火の形を変える FireworkType 列挙体には 5 種類のプリセットがある 花火のデータ構造では、それぞれ番号で花火の形状を識別する ※ 星型、クリーパー型、バースト型は角度によって見え方が変化します Type
0 1 2 3 4 形状 小玉 大玉 星 クリーパー バースト デフォルトでは小玉の形になる
13 花火の特殊効果を付与する Flicker = true にすると、きらめき効果が付与される Trail = true にすると、流星効果が付与される
きらめき効果 (Flicker) 花火がパチパチ弾ける 流星効果 (Trail) 花火が軌跡を残す 両方とも true の場合 ※ 特殊効果によって花火の音も変化します
14 花火が爆発するまでの時間を変える LifeTime に short 型の値を代入することで時間を変えられる 値が大きいほど爆発までにかかる時間が長い = 高い位置で爆発する マイクラの世界では、現実世界の20倍の時間で進む
→ 1[s] = 20[tick] という関係を使用する 1[tick] = 1/20 [sec] = 0.05 [sec] = 50 [msec] 上記の例では 30[tick] に設定されているので、現実世界では花火が打ち上がって 1.5 秒後に爆発することになる 色や形、特殊効果などを色々変えてみると、様々な種類の花火を打ち上げられます!
15 デモ:MinecraftConnection の導入と花火の打ち上げ方法
16 ここまでは基礎中の基礎の話... 本当に面白いのはここから!
17 疑似乱数と反復処理を利用する 疑似乱数で打ち上げる座標を適当に決めて、反復処理で連続して打ち上げてみると…? 少し本物っぽい雰囲気に!! 高さもランダムにするともっと本物に近づくかも??? RandomColor() で適当に色を選ぶ Next() で適当な座標を選ぶ
18
19
20
21 マイクラ花火の等加速度直線運動 マイクラの花火は打ち上げ地点から鉛直上向きに等加速度直線運動する 横軸に LifeTime, 縦軸に進んだ距離(ブロック)をとってプロットすると以下のような関係が得られる 多項式近似において、距離が のような関係にあるとき、これを2階微分すると となり、加速度は一定であることがわかる →
打ち上げた花火は等加速度直線運動に従う (現実の花火は空気抵抗や重力で減速する) 𝑡2 − 𝑡 + 𝐶 ⅆ2 ⅆ𝑡2 𝑡2 − 𝑡 + 𝐶 = const. 𝐶 : 初期条件 (初期値)、 𝑡 : 時間( 𝑥 ではややこしいので文字を変えた) この関係式をうまく使うと、複雑な花火を作ることができる 簡単のため、係数は除く。
22 万華鏡花火を作る 万華鏡花火を作るには、大玉花火+バースト花火の組み合わせが必要 ただし、大玉花火が爆発したときにバースト花火を打たないといけないので、少し工夫が必要 • バースト花火を斜めの方向に打ち出すにはベクトルの合成をイメージする • 大玉花火の中心(爆発する位置)は多項式近似の式を用いて求める 【ポイント】
23 デモ:万華鏡花火を打ち上げる
24 万華鏡花火のサンプルコード Motion の値を色々変えてみると バースト花火の厚みも変わります
25 ここまでを踏まえて... プチ花火大会開催! 様々な花火のレシピはこちらから公開中!! https://zenn.dev/takunology/scraps/9462b03d13dd0a
26 Minecraft with Code Project Fireworks Project C#プログラミングとMinecraftで花火を楽しむプロジェクト https://fw.mcwithcode.com