LoginSignup
0
0

マイクラでバトロワを作ってみた

Posted at

■ 概要

マイクラでコマンドを使って、バトロワを作ってみた。
ワールドデータをダウンロードして、realmsやサーバーにアップロードすればフレンドと遊べると思います。

ワールドデータ↓(データパックも入ってる)

データパック↓(ワールドデータないと動かないのでコード確認用)

■ 環境

minecraft : 1.20.4

■ ゲームの内容

● ゲームルール

ゲームエリアで武器などを拾い、一人になるまで戦う
最終的にキル数と順位によって一番ポイントの高い人が優勝
2024-04-13_13.51.13.png

● ゲームエリア

150x150マスの中で戦う
ゲーム開始から一定時間経つとワールドボーダーによってエリアが小さくなる

● プレイヤーのスポーン位置

真ん中のチェストを囲んで丸形でスポーン
ゲームタイマーがスタートしてからプレイヤーが移動できるようになる

● 戦闘用アイテムの入ったチェストについて

チェストの種類は4種類
・メイン
  プレイヤーで囲んだ真ん中にあるチェスト
  チェストの中身はランダム(20種類)、食料が充実している
  
・ベース
  固定の場所に置かれているチェスト
  チェストの中身はランダム(20種類)、武器が充実している
  
・ランダム
  ランダムに生成される5つチェスト
  中身は固定、金にんじんが入っている
  

・レア
  マップの端にあるチェスト
  チェストの中身はランダム(5種類)、ネザライト防具などが入っている
  

■ データパックの中身

● メイン実行ファイル

コマンドブロックとして使用するファイル

#ゲームスタート
data\battle\functions\game_start.mcfunction

#ゲームストップ
data\battle\functions\game_stop.mcfunction

#ゲームデータをリセット(game_startとgame_stopで使用)
data\battle\functions\game_reset.mcfunction

● ゲームの状況によるフォルダごとの処理内容

#エントランスでの処理
data\battle\functions\functions\standby

#ゲームエリア内でゲーム開始までの処理
data\battle\functions\functions\ready

#ゲームエリア内でゲーム終了までの処理
data\battle\functions\functions\play

#ゲーム終了からエントランスに戻るまでの処理
data\battle\functions\functions\end

● その他のファイル、フォルダ

#ゲームデータを編集する関数まとめ
data\battle\functions\functions\data_edit\data_setup.mcfunction  #ゲームデータ作成
                                         \data_delete.mcfunction #ゲームデータ削除

#ゲームの設定を変更するコマンドブロック一覧
data\battle\functions\functions\setting

■ 個人的に実装で学べたところ

● チェストの中身をランダム化する

  1. ストラクチャーブロックでチェストを保存し、名前をchest_base1,chest_base2のように割り当てる
  2. random value 1..2で乱数を実行して、scoreboardに記録する
  3. if文でscoreboardと同じ数字のチェストをplace templateで生成する
execute store result score baseChest Chest run random value 1..2
execute if score baseChest Chest matches 1 run place template minecraft:chest_base1 300 26 128
execute if score baseChest Chest matches 2 run place template minecraft:chest_base2 300 26 128

↑ 頭の悪いコードを書いている気がするので他の方法があるなら知りたい...

● チェストをランダムに生成する

  1. ストラクチャーブロックでチェストを保存し、名前をchest_randomでつける
  2. アーマースタンドに、tag名でrandomChestをつける
  3. spreadplayersで、tag名がrandomChestのアーマースタンドをランダムに移動
  4. tag名がrandomChestのアーマースタンドの位置に、place templatechest_randomを生成する
spreadplayers 275 75 1 74 under 32 false @e[type=minecraft:armor_stand,tag=randomChest]
execute as @e[type=armor_stand,tag=randomChest] at @s if block ~ ~ ~ air run place template chest_random

参考にしたサイト↓

● 雪玉でフグを生成する

  1. 雪玉に名前どくどくだまを付ける
  2. execute as @e at @sで着弾を検知して、summonでフグを生成する
execute as @e[type=minecraft:snowball,nbt={Item:{tag:{display:{Name:'[{"text":"どくどくだま"}]'}}}}] at @s unless block ~ ~-1 ~ air run summon minecraft:pufferfish ~ ~ ~

参考にしたサイト↓

■ 使用感、感想

twitch配信者のだみあさんの企画で使用してもらいました。
ゲームバランスの不安があったんですが、そこまで悪くなかった印象。
初めて作ったデータパックにしては、まあまあかなといった感じでした。

四枚目の写真がプレイしている様子↓

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0