猫山さんの雑記ぶろぐ。

パソコンマイクラその他のぶろぐですぅ

function - 関数ファイルの実行コマンド限度について Minecraft

説明うんぬんってより、独り言ってか、書きなぐり。

そのため画像なんてものはねェ!!!!

 

ここ玄人向け

 

 

Minecraft Bedrock Edition には現在functionと呼ばれる関数ファイルを呼び出すことが出来るコマンドが備わっている

 

関数ファイルは呼び出すとそのファイルの中にあるコマンドを一度に全て実行できる便利なものである。

 

例えば、簡単な例で行く

単純にここにゾンビを7体召喚したいとする

summon zombie を7回実行する

もしくはコマブロに入れて7回RS入力する

 

めんどいね。

そこで、zombie.mcfunctionってファイルを入れる。

中には summon zombieを7文入った状態。

/function zombie を実行する

するとどうだろう

たった一文でゾンビが7体召喚出来る。このように予め設定したコマンドをfunctionファイル指定でそのファイルに入っているコマンドを一括で実行することが出来るコマンドを/functionといい、関数ファイル呼び出しが出来る。

メリットは、複数コマンド実行する場面でのコマブロの数や実行回数を一回に抑えられる点

デメリットは、コマンドを編集する度/reloadコマンドを実行し再読み込み、追加する場合はマイクラを再起動する必要があり少々面倒なこととスペルミス等エラーでコマンドが実行できなくてもなんのメッセージも出ないため原因特定に時間がかかることがあるという事だ。

まあそこはdevelopment_behavior_packフォルダにぶち込んでおけば少し手間は省けるがWin10以外にできた技じゃないと思う。iOSのファイルアプリを使用して頑張ってはいたけど、出来るんだけど、非常に面倒でWin10でやってみるとアホらしくなる。

iOSマルチタスク機能を使ってたのでスマホAndroidじゃ至難の技であろう

さて本題に入ろうと思う

 

タイトルは「実行コマンド限度について」だ。まあご存知の方は知っているだろうが最大実行数は10000文だ。はっきりいって普通そんな使わないから限界点に到達して困ってるなんてやからはいないだろう。使ったとしてファイルサイズと同時実行時の負荷がえげつない事になるのは必須だ。

 

んで、gameruleコマンドにてfunctioncommandlimitだっけ?そいつで限界同時実行コマンド数を変えることが出来る。が、どうやら1-10000の間しか指定出来ないらしい。限界突破は出来んようで、このゲームルールの存在意義ないでしょ。って思うよ。うん。

 

まあ、10000文 10000個のコマンドを同時実行ね

やってみよう。

コマンドにもよるが結構実用的そうなものとして作ってみた。

10000超えてしまったのでoverran.mcfunctionとしてチェーンで実行させることにする。10020個ほどのコマンドを2個のコマンドブロックで実行する体勢で実行は反復常時で毎秒200000回ほどのコマンドを処理することになる。頭おかしいね

 

んでコマンドの中身とは「スコアボード-経験値レベル連動」である

scoreboard players add @a[lm=1] levelscore 1

scoreboard players add @a[lm=2] levelscore 1

scoreboard players add @a[lm=3] levelscore 1

としていくだけでレベル3でlevelscoreは3に、レベル2ならlevelscoreは2にと、シンプルな構造である(リセットとoperationとか色々使ってはいるけどね)

んで10000レベルまで連動させる。経験値レベルのカンスト値は24791だからまだ伸びしろはあるけどはっきりいって無駄だよね〜

10000で毎秒20万回のコマンドの処理をするんだし、負荷と実用性が割に合わない。

そして実行した結果

レベルが高いプレイヤーほど処理が増えるため負荷がかかるようで、自作ローエンドPC(3.4GHz 4コア4スレッド GPUはGT640)は結構重くなる場面ってのはなくお、行けるんかなって思ったらSwitchとかスマホ勢がみんな死んでる。

まあfunction10000の限界点まで来ると性能的限界が来るようで、これ以上多くのコマンド実行してもいいことはないってもんだな

結論

function1関数ファイルでの最大こまんど実行可能数は1万。同時実行するコマンドの数が増えれば増えるほど当然負荷が増え、限界点近くの1万文をひとつの関数ファイルとして呼び出すと非常に負荷がかかる。

functionは完全なる万能体ではないが非常に便利な設計である

ビヘイビアパックとしてmanifest.jsonとfunctionフォルダと関数ファイルを要した.mcpack拡張子のファイルをワールドにぶち込むだけで簡単に使用することが出来るので、みなさんも活用してみてはいかが?

 

それと、ここまで読んだ人

相当な物好きだな。

ここまで完璧に読む人そうそういないよ

読解力があり理解してないとここまでは読めないはず

ぜひコマンドを極めよう★(ほぼ関係ない)