Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Minecraft概論
Search
stonriver
December 05, 2018
Technology
0
390
Minecraft概論
stonriver
December 05, 2018
Tweet
Share
More Decks by stonriver
See All by stonriver
中規模イベントに急造で変なネットワークを構築する
strvworks
1
780
並行処理入門 -Goで遊ぶ-
strvworks
0
250
ターミナル雑記
strvworks
2
1.3k
お手軽金盾体験
strvworks
1
770
Kosen_LT_ONLINEのおしらせ
strvworks
0
92
日本列島の移動速度に関する考察
strvworks
1
150
PythonにおけるGUIフレームワークのはなし
strvworks
0
400
快適な読書環境のご提案
strvworks
0
130
テクノ手芸
strvworks
0
84
Other Decks in Technology
See All in Technology
株式会社ビザスク_AI__Engineering_Summit_Tokyo_2025_登壇資料.pdf
eikohashiba
1
110
アラフォーおじさん、はじめてre:Inventに行く / A 40-Something Guy’s First re:Invent Adventure
kaminashi
0
140
SQLだけでマイグレーションしたい!
makki_d
0
1.2k
ペアーズにおけるAIエージェント 基盤とText to SQLツールの紹介
hisamouna
2
1.6k
Agent Skillsがハーネスの垣根を超える日
gotalab555
6
4.2k
Microsoft Agent Frameworkの可観測性
tomokusaba
1
110
AI との良い付き合い方を僕らは誰も知らない
asei
0
250
『君の名は』と聞く君の名は。 / Your name, you who asks for mine.
nttcom
1
120
Authlete で実装する MCP OAuth 認可サーバー #CIMD の実装を添えて
watahani
0
170
アプリにAIを正しく組み込むための アーキテクチャ── 国産LLMの現実と実践
kohju
0
220
事業の財務責任に向き合うリクルートデータプラットフォームのFinOps
recruitengineers
PRO
2
200
AWS re:Invent 2025~初参加の成果と学び~
kubomasataka
0
190
Featured
See All Featured
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
210
Building Applications with DynamoDB
mza
96
6.8k
Utilizing Notion as your number one productivity tool
mfonobong
2
190
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
17
The SEO Collaboration Effect
kristinabergwall1
0
310
Skip the Path - Find Your Career Trail
mkilby
0
27
Ruling the World: When Life Gets Gamed
codingconduct
0
100
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.7k
Typedesign – Prime Four
hannesfritz
42
2.9k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.1k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
45
Marketing to machines
jonoalderson
1
4.3k
Transcript
自己紹介
自己紹介 名前: すとんりばー クラフター歴: 5年 得意分野: コマンド、回路設計
突然ですが皆さん
Minecraftをプレイしたこと はありますか?
Minecraftとは
Minecraftとは Minecraftとは、2009年にMojangより発売されたサ ンドボックス型ゲーム。 ブロックで構築された世界でサバイバルや建築がで きる。 近年は教育分野でも注目されいます。が…。
Minecraftをたかがゲームと甘く 見てはいませんか?
仕方がないので 開講
すとんりばー 著
Minecraftで できること
サバイバル
サバイバル ランダム生成される広大な世界
サバイバル 木こりから始まり
サバイバル クラフトで道具を作ったり
サバイバル 洞窟で鉱石を集めたり
サバイバル 君だけのサバイバルライフを!
サバイバル MIT在学サバイバルガチ勢のコメント
いくらでも遊べるサバイバル
いくらでも遊べるサバイバル 僕はちゃんとやったことがない
建築
Minecraftで作られた建築物 お城
建築はすごい
建築はすごい 僕に語れることはない
レッドストーン回路
レッドストーン回路 redstone dust block torch 伝達系 動力系
レッドストーン回路 lever button lamp 操作系 受信系
レッドストーン回路 伝達系は動力系の信号を伝達する
レッドストーン回路 トーチは動力を受けると消灯する
レッドストーン回路 つまりNOT
NOTができるということは
レッドストーン回路 NANDができる
NANDができるということは
レッドストーン回路 回路が組める
レッドストーン回路 3Bit加算だってできる
レッドストーン回路 ルックアップテーブルを実装した 高速計算機を実装した人もいる
わあいすごいね
わあいすごいね ちょっとわかるけど 回路は専門じゃない
-コラム- ブロックとエンティティ
ブロックとエンティティ Minecraftの世界にはブロックとエンティティの2種類 が存在する。
ブロックとエンティティ ブロックは固定の整数座標に留まり、見た目を表現 したりその場でGUIを用いた機能を発揮したりするこ とが多い。 エンティティは浮動小数点座標を含むダイナミックな 移動が可能。ワールド上で目に見える独特の機能を 持つ事が多い。
ブロックとエンティティ
ブロックとエンティティ プレイヤー:エンティティ 動物: エンティティ 防具立て: エンティティ トロッコ: エンティティ ダイヤモンドブロック:ブロック 草ブロック:
ブロック
やっと本題
コマンド
コマンドとは Minecraftの世界の事象を操作できる命令文。 権限を持つユーザーのみが利用できる。
4つだけコマンドの例を ご紹介
/giveコマンド 構文: /give [対象] [namespace]:[item_id] [count] 実例:
/setblockコマンド 構文: /setblock [x] [y] [z] [namespace]:[block_id] [mode] 実例: →
/scoreboardコマンド 概要: スコアというオブジェクトを宣言できる。 宣言されたオブジェクトはすべてのエンティティごとに値を保持で きるようになる。スコア間の演算・比較が可能。別コマンドに演算・ 比較結果を渡すことでさらに別のコマンドの条件付き実行等も可 能になるスコアを扱うことができるようになるコマンド。
/scoreboardコマンド 例: /scoreboard objective add param1 dummy →param1というスコアオブジェクトを宣言 ↓ /scoreboard
players set @e[limit=10] param1 100 →@e(すべてのエンティティ)のなかで近傍の10体のparam1スコ アオブジェクトに100をセット
/scoreboardコマンド 例: /scoreboard players operation @p AX += @p BX
→@p(近傍プレイヤー)のスコアAXに@pのスコアBXを加算した 値を@pのスコアAXにセット /socreboardには他にも大量のサブコマンドが!
/dataコマンド 概要: entityまたはblockがJVM上で保持している独自形 式のデータであるNBT(Named Binary Tag)データ を指定して、get,merge,removeなどの操作を行うこ とができる。
/dataコマンド 構文: /data get block [x] [y] [z] [path] [scale]
x y z のブロックの内部のNBTデータのpath位置にある値をscale 倍した値を取得 /data merge block [x] [y] [z] [NBT] x y z のブロックの内部のNBTデータに指定したNBTデータをマー ジする。競合箇所は上書きする。 他にも沢山のサブコマンドが!
今回は4つだけコマンドを紹介し ました。
Minecraftにはなんと 計69種ものコマンドが あります。
さらに、これらのコマンドを 保存して実行できる、コマンドブロックという ブロックが存在します。
コマンドブロック 左から、インパルス、チェイン、リピートというモード のコマンドブロックとなっています。
コマンドブロック インパルスモードでは、レッドストーンの信号が入る と1度だけ内部に書き込まれたコマンドを実行しま す。
コマンドブロック チェインモードでは、一つ後ろのコマンドブロックの実 行に連鎖してコマンドが実行されます。
コマンドブロック リピートモードでは、ゲーム内の最小時間(1Tick)ご とに1回、書き込まれたコマンドが実行されます。
さらに強力なツールとして、 コマンドを外部ファイルに列挙して、 ファイルごとに実行が可能な Function機能も存在します。
実際にものを作ってみた
コマンド動作式 ノイマン型コンピュータ
コマンド動作式ノイマン型コンピュータ 今回は、次のようなアセンブラを実行可能なコン ピュータをMinecraft上で構築することを目標に設計 しました。 設計上、数値を扱うかレジスタを 扱うかで命令を変えていますが、 “n”などを抜かして通常のアセン ブラとして読んでOKです。
1.メモリの設計
コマンド動作式ノイマン型コンピュータ 何を動作させるにせよ、メモリ空間が必要です。今回 は、今後大きな規模のプログラムを実行する可能性 も考慮して、メモリ作成時に指定したサイズを可変で 確保できるメモリを設計しました。
コマンド動作式ノイマン型コンピュータ 先程紹介したコマンドブロックには、SuccessCountとい うNBTタグがあります。 本来はコマンドの成功回数を格納する場所ですが、 /dataコマンドでrwを行うことで値の保存場所として利用 可能なはずです。 つまり、コマンドブロック1つを メモリセル1つと捉えられます。
コマンド動作式ノイマン型コンピュータ よって、前述の要件を満たすためには、指定したサイズ のコマンドブロックの塊を生成する機構をコマンドで構築 する必要があります。 実際に作成したメモリ確保装置の動作をお見せします。
2.メモリコントローラの実装
コマンド動作式ノイマン型コンピュータ これで確保自体は成功しましたが、まだメモリ内の値 にアクセスするためのコントローラの実装がありませ ん。
コマンド動作式ノイマン型コンピュータ 今回は、メモリ塊のある1頂点に1体の基準点エン ティティを設置し、そのエンティティとの3次元相対距 離をコマンドで計算することで、任意のメモリセルに アクセスする方式を実装しました。
コマンド動作式ノイマン型コンピュータ エンティティの3次元移動+読み書きであるため、コマ ンド的にステップ数がかさみますが、処理の性質上 1Tickで処理しなければ次の命令解釈と競合してコ ンピュータが正常に処理を継続できなくなります。 すべての処理を1Tickに収めるのに苦労しました。
3.ニーモニックからオペコードへの変換
コマンド動作式ノイマン型コンピュータ 次に、アセンブラニーモニックを、定義した各命令ごとの オペコードに変換して、確保したコマンドブロックメモリに 順に書き込む必要があります。 流石にテキスト処理はコマンドでは困難なので(テキスト ファイルが読み込めないので)、Pythonでアセンブラから マインクラフトのコマンドへの変換プログラムを作成しま した。
コマンド動作式ノイマン型コンピュータ これにより、アセンブラが以下のようにメモリへの書き込 みコマンド群へと変換されます。
コマンド動作式ノイマン型コンピュータ このコマンド群をファイルに書き込み、Minecraftの Function機能から呼び出すことで、ワールド上のコマン ドブロックメモリに先程のアセンブラニーモニックのオペ コードが格納されることになります。 実際に変換→書き込みの流れをやってみます。
4.オペコードの解釈
コマンド動作式ノイマン型コンピュータ これでメモリ上の準備は整いました。しかし、まだこのオ ペコードを解釈するプロセッサ実装に当たる部分を記述 していないので、これもコマンドで実装します。これに関 しては命令ごとに地道に実装していくしかありません。
コマンド動作式ノイマン型コンピュータ 結果、以下のようなコマンド実装ファイル群が出来上が ります。プログラミング言語 ではなくコマンドで実装するので、 自由度が低く記述がとても大変で す。
実装の一部 ADDの実装の冒頭
5.実行用コンピュータの実装
コマンド動作式ノイマン型コンピュータ ここまでで大体の処理は完成しましたが、処理上で扱っ てきたレジスタに当たるスコアを保持して管理、さらに表 示するインターフェイスを用意する必要があります。
そこで作成したのが、こちらの制御盤です。
↓のエンティティがレジスタのスコアを保持
看板の値はリアルタイムにレジスタの値を 反映します。
STEP RUNボタンを押すとアセンブラが1命令 分解釈実行されます。
RUNレバーを下げると、STEP RUNが毎Tick実 行され、1秒間に20命令を処理します。
コマンド動作式ノイマン型コンピュータ 実際にコマンド動作式ノイマン型コンピュータが動作して いるところを見てみましょう!
Minecraft の可能性
Minecraftの可能性 基本的に、やろうと思えばなんでもできます。 今回はゲーム的機能に絞って紹介しましたが、リソース パックというファイルを読み込ます機能を利用すれば、 自分の作成した画像をブロックのテクスチャに適用した り、ブロックのモデルデータを変更したりなども可能で す。
Minecraftの可能性 また、そこから発展してMod作成を行えばJavaやKotlin を用いたプログラミングに触れることもできますし、先程 紹介した回路設計や最適化方面に進んでいくこともでき ます。
ただし
Minecraftの可能性 これは僕の意見ですが、結局こんなに可能性に溢れた Minecraftを教育に取り入れるなどと言っても、それなら ば現実世界のほうが可能性は豊富にありますし、どんな 遊び方をするかによって大きく変わると思われます。 手放しにすごいと取り入れても、予想通りに進んでくれる 可能性のほうが低そう。
Minecraftの可能性 でも!!Minecraftはどんな遊び方もできて、技術を身に つけることだってできる開発環境です。 みなさんもMinecraft上で加算器を作ったり、コンピュー タを作ったり、MinecraftでMinecraftをエミュレートしてみ たり、ユビキタスMinecraft社会を迎えたりしてみたいと 思いませんか!?
None