言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

マインクラフト4: MCreator

この勉強の目的は小学生がマインクラフトのアドオンを作るれるようにする事です。小学生に Visual Studio Code を使ってのアドオン開発はきついので、サードパーティのツールを検討しています。これまで Blockbench を使うとそれなりにモブやアイテムを作成できる事が分かったのですが、制限がキツイので他に探して MCreator を見つけました。MCreator は JAVA 版の Mod を作るのが主目的のツールで統合版のアドオンはまだ発展途上ですが、BlockBench に無い mcaddon ファイルのエキスポート機能に対応しているので期待しています。

今日は簡単なブロックを独自に作って mcaddon ファイルを作るまでの流れを試します。

Download MCreator から EXE Installer を選択してインストール。

Preference > Interface Language: Japanese を選択すると日本語になります。

+ 新規ワークスペース を選択

ワークスペースのタイプで Minecraft データパックを選択。

  • アドオンの表示名: なんでも良いみたい。
  • アドオンID: 英数字。フォルダ名などになる。

+ (追加ボタン) > ブロックを選択

ブロックの名前を入力

ブロックのテクスチャのどこかを選択する。

テクスチャを作成

適当にテクスチャを作って「このテクスチャを保存」を選択し、名前を付けます。

ブロックのそれぞれの面に作ったテクスチャをあてはめます。

あとは特に難しい部分は無いと思います。画面下のタブ(?)をバウンディングボックス、プロパティと順に選択して好きに設定します。Not supported と出てる奴はまだ対応していない項目です。案外設定できる項目が少ないので迷わないです。

この中で「生成 > このブロックを置き換え可能なブロック」は面白い設定です。例えば以下のようにするとワールドを生成するときに草ブロックの所に作成したブロックが生成されます。

  • チェックして有効にする: チェック
  • このブロックを置き換え可能なブロック: + を押して grass を追加
  • チャンク当たりの鉱石グループの平均量: 32 以下の適当な数
  • 鉱石グループ内の平均鉱石数: 32 以下の適当な数
  • 生成される高度: 好きな高度の範囲

最後に、「Mod 要素を保存」すると完了です。

次に実際にゲームで試してみます。「ビルドと実行 > クライアントを実行」でアドオンがマイクラにインストールされるので、適当にワールドを作ってアドオンを追加します。

happy ブロックが生成されています。キモイですね。。。

さて、いよいよ mcaddon ファイルの作成です。

ワークスペース > Mod を配布用にエキスポート > 寄付をせずに Mod をエクスポートするを選択し適当にディレクトリを選ぶと mcaddon ファイルができます。

さて、実は作成した mcaddon ファイルをこのままではマイクラに読み込めません。先ほどテストした開発中のアドオンと UUID が被るからです。mcaddon をテストするには、MCreator がテスト用にインストールしたアドオンを削除します。

  • イクラの設定 > ストレージ > リソースパック: 開発中のアドオンを削除
  • イクラの設定 > ストレージ > ビヘイビアーパック: 開発中のアドオンを削除

アドオンを削除しても、MCreator のプロジェクトディレクトリには残っているので大丈夫です。ここで、作成した mcaddon ファイルをマイクラで開くと先ほど作成したアドオンがインストールされます。

開発したアドオンと mcaddon からインストールしたアドオンには以下の違いがあります。

  • 開発中のアドオン
    • com.mojang 内の development_behavior_packs と development_resource_packs にインストールされる。
    • 普通のマルチプレイでは使えるが、Realms で使えない。
    • 変更が即反映される。
  • mcaddon からインストールしたアドオン
    • com.mojang 内の behavior_packs と resource_packs にインストールされる。
    • 普通のマルチプレイでも realms でも使える。
    • 変更は反映されない(多分 mcaddon からの再インストール必要)

今回は MCreator をご紹介しました。MCreator では BlockBench と同様メニューを使ってアドオンの開発ができます。さらに MCreator では mcaddon へのエキスポート機能が用意されているためより実用的です。

参考

今後の予定

  • MCreator でエンティティを作成する。
    • もしかして、複雑なモデルには BlockBech を使ったほうが良いかもしれない。
    • モデル、スキン、アニメーションについて詳しくなる必要がある。
  • MCreator でパーティクルを作成する。

マインクラフト3: 教育版マインクラフトの個人購入

妻が 第6回Minecraftカップ に興味を持ったので調べています。この Minecraft というのに参加するには、JAVA 版でも統合版でもないもう一つの 教育版 Minecraft というのを使わなくてはいけないらしい。教育用 Minecraft については以前少し調べた事があるのだがアカウントの作り方がわからず挫折していたので再び調べました。

非常に分かりにくいのでポイントを整理します。

  • 教育版マインクラフトを利用するには教育版のライセンスが必要
    • 学校の Office 365 ライセンスを使える人は学校に頼む(?)
    • うちみたいに学校関係ない人は一人二千円弱/年で「キャンプやクラブ、その他組織で使用するための個別ライセンス」を買える。
  • 案内に沿って個別ライセンスを申し込むと、
    • ユーザ名@組織名.onmicrosoft.com というユーザ名をもらえる。
    • Microsoft 365 管理アカウントに一人分教育版マインクラフトライセンスが付いた状態になる。

実際の作業は Motoko's Blog: 教育版マインクラフトを個人購入してみました の通りに作業すると大丈夫でした。一応以下に手順を書きます。

ここまで調べるのに本家含めて色々参考にしましたが、上記 Motoko's Blog さんの記事以外は難しかったので省略します。

さて、実際に使ってみての感想ですが、どうも同じ発行元(ドメイン?)のユーザ同士でしかマルチプレイできない縛りがあるらしく、うちみたいな不登校の子供たちが一緒に遊んだり学ぶには適切でないという事がわかりました。不登校の親がそれぞれ子供に教育用マインクラフトのライセンスを購入してみんなで Minecraft カップに出そうみたいなのを考えていたのですが、同じ組織に属してないと一緒に遊べないとなると無理です。。。残念。

次回用メモ

マインクラフト2: Creator Learning Journey を眺める。

公式ドキュメントの Creator Learning Journey を読むと、マイクラ開発初心者が学ぶべき項目が整理されています。これを読みながらアドオン勉強の道筋を考えます。

Step1 何がどこにあるか確認しよう

Getting Started With Minecraft Add-Ons | Microsoft Learn

基本的なアドオンの知識について書かれてあります。特に大切なのはアドオンにとっての魔法のパス

%localappdata%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang

です。これを Win+R に打ち込むとマイクラのデータディレクトリが開きます。アドオン開発はこの com.mojang ディレクトリ内で行います。スタートにピン止め推奨です。

ビヘイビアパックとリソースパック

アドオンはビヘイビアパックとリソースパックの二種類あります。それぞれ役割が違っていて、あるアドオンをインストールするときは典型的にはビヘイビアパックとリソースパックの両方を読みます。

  • リソースパック: 見た目を制御する部品です。クライアント側で動作します。
  • ビヘイビアパック: 動きを制御する部品です。サーバ側で動作します。

Resource pack & Behavior pack

参考: Creating New Entity Types > File structure

com.mojang の構造

com.mojang には以下のようなディレクトリがあります。

  • behavior_packs: インストールされたビヘイビアパック。インストール時のみ更新されます。
  • resource_packs: インストールされたリソースパック。インストール時のみ更新されます。
  • development_behavior_packs: 開発中のビヘイビアパック。ローカルや Realms の world にはコピーされない。内容即時更新。
  • development_resource_packs: 開発中のリソースパック。ローカルや Realms の world にはコピーされない。内容即時更新。
  • minecraftWorlds
    • (ワールドごとの ID)
      • behavior_packs: 有効にしたビヘイビアパックがコピーされる。(development_behavior_packs にあるものはコピーされない)
      • resource_packs: 有効にしたリソースパックがコピーされる。(development_resource_packs にあるものはコピーされない)

ここで、development_ で始まるディレクトリが開発ように特別に用意されたアドオン用のディレクトリです。以下の違いがあります。

  • development_ で始まるディレクトリは内容が即更新されて開発に便利な一方で、world にコピーされないので Realms では使えない。
  • development_ で始まらないディレクトリは作成時に minecraftWorld の各 world ディレクトリにコピーされるため、Realms でも使える。

前回 Blockbench で作成したアドオンが Realms で使えないと言った理由はここにあります。Blockbench ではアドオンを development_ で始まるディレクトリに作成するので、マイクラ内の設定で有効にしても minecraftWorlds にコピーされず、Realms サーバにもアップロードされません。

作成したアドオンを Realms で使うには zip で固めて .mcaddon ファイルを作成し、適切にマイクラにインストールさせる必要があります。

Comprehensive List of Pack Contents

Step2 何か作ってみよう

この章では、リソースパックとビヘイビアパックの基礎知識を解説しています。

An Introduction to Resource Packs

An Introduction To Behavior Packs

ここでのポイントは以下と思いました。

  • リソースパックは既存のマイクラの見た目を変更できる。
  • 既存の見た目を変更するには、Vanilla resource pack でファイル名を調べると良い。
  • ビヘイビアパックは既存のマイクラの動きを変更できる。新規のエンティティも作成できる。
    • ビヘイビアパックからリソースパックへの依存を設定すると、依存するリソースパックを自動インストールできる。

Step3 もっと複雑なものを作ってみよう

読んでないのでリンクだけコピペ

さらに上級編

とまあこの線に沿って勉強していきます。ただ、飽きてきたので MCreator を調べよっかな。

マインクラフト1: アドオン勉強の記録を始めます。

マインクラフトの素晴らしいところは、一通り普通に遊んだ後で、マーケットプレイスや HIVE など色々な追加機能で無限に遊び方が広がる事です。そのマインクラフトの拡張に中心的な役割を果たすのが「アドオン」という機能です。アドオンというのは zip で固められた設定ファイルのようなもので、既存のスキンや動作を上書きしたり、新しいモブやアイテムを作成できます。アドオンの機能は強力で、マイクラの上に FPS人狼など、まったく新しいゲームを構築する事すらできてしまいます。

うちの子供たちも、マイクラを初めるとすぐに「アドオンを作りたい!」と言い始めました。その希望を叶えるために半年前から時間を見つけてはアドオンについて調べているのですが、週末の限られた時間しか無く、すぐに調べたことを忘れてしまうので、ここに記録を残しながら調べていく事にします。

目標

  • 小学生が簡単にマイクラのアドオンを作れる。
  • 好きなスキンのドラゴンを作れる。
  • かっこいい剣を振るとすごいパーティクルが出る。

イクラアドオン基本情報

イクラアドオン開発に必要な基本的な情報を書きます。まずマイクラには統合版と Java 版という二つの種類があります。ここでは統合版のみ触れます。統合版には任天堂スイッチで遊べるという絶大なアドバンテージがあるので、お子様におすすめしやすいです。一方で、残念な事に Mac 版が存在しないという欠点があります。という事でマイクラ統合版のアドオン開発には Windows 機が必須となります。Mac に慣れた自分にはこれが一番キツイが仕方がない。。。

一般に、マイクラアドオンというとマイクラ統合版のアドオンを指します。Java 版の拡張機能は Mod と言って完全に別の仕組みです。

アドオン開発の公式サイトは マインクラフト クリエーター です。Microsoft らしい素晴らしい参考資料ですが、中身は英語なので子供には難しいかも知れません。

サードパーティーのツールによるアドオン開発

アドオン開発には様々なサードパーティーツールが存在します。特に公式サイトで紹介されている Blockbench の Plugin を使えば、小学生でも簡単にアドオンを作成する事ができます。英語ですが Getting Started with Minecraft Entity Wizard に解説があります。BlockBench を使えば、既存のマイクラのモブを元にスキンを変えたり動きを変えたり簡単にできます。例えば空を飛ぶニワトリとかを作れます。

ただ、Blockbench の Plugin だけでは色々機能が不足していて、例えば作ったアドオンを Realms で共有するのが子供には難しいです。Blockbench の本来の目的は低ポリゴンの 3Dモデルを作る事らしいので、Blockbench とほかのツールを組み合わせる必要があるのではないかと思っています。いくつかのツールを紹介します。

  • Blockbench
  • MCreator
    • Java 版の Mod 作成を GUI で行うツールらしい。最近統合版 Add-on にも対応したらしい。
  • Novaskin
    • Web でスキンの作成ができる。
  • SNOWSTORM
    • パーティクルを作成するツール
  • Mine-imator
    • アドオン開発とは関係ないですが、マイクラっぽいアニメを作るツールらしい。

勉強の流れ

やみくもに試行錯誤を繰り返した結果、以下の二つの作業を平行して進める必要があるらしいと分かってきました。

  • Creator Learning Journey を元にまじめにアドオン開発を学ぶ。
    • アドオンの中身は zip で固めた json ファイルと画像などのリソースファイルなどです。まじめなアドオン開発とは、VisualStudio Code などでこれらを作成する事です。
    • 小学生にはまだこの方法は難しいので、サードパーティのツールを使わせる事にします。
    • ただ、サードパーティのツールはまじめなアドオン開発の知識を前提としているので、まじめなアドオン開発の知識は避けて通れないみたいです。
  • サードパーティツールの使い方を学ぶ。
    • VisualStudio Code によるアドオンの直接開発は小学生には難しいので、子供にはサードパーティツールを組み合わせてアドオンを作ってもらいます。
    • 必要に応じて、ツールの拡張や改造を行います。

目次

記事が増えるたびにここに追記する予定です。

不登校双子との日々 2024-06

六月の週末は毎週お菓子作りをした。

  • 6/1: クッキーチョコチップ入り
  • 6/2: クッキー(同級生が来る)
  • 6/8: 白玉団子きなこ味/蜜味
  • 6/9: 白玉団子フルーツポンチ
  • 6/15: ジャム入りクッキー(同級生が来る)
  • 6/16: かしわ餅
  • 6/22: クッキー(フリースクールオフ会)
  • 6/23: クッキー(フリースクールオフ会)
  • 6/29: わらび餅
  • 6/30: 白玉団子フルーツポンチ(二度目)

前から出不精ではあったが先月長女が路上で転んでから外出を極度に嫌がるようになってしまい。アイスで釣ってコンビニに歩く事すらできなくなってしまった。フリースクールのオフ会に二日参加した以外双子は全く外出していない。

ゲーム以外の遊びにも全く興味を示さないので、せめて毎週僕が家にいるときはお菓子作りをする事にした。先月から続けているクッキーの他、今月は白玉団子、柏餅、わらび餅などの和菓子にも挑戦した。洋菓子に比べて和菓子は体に良さそうだし、スライムにも似て手でこねる感じが癒される気がして気に入っている。

お菓子作りのような遊びのネタは子供にやりたい事を聞いても出てこないが、案外始めると楽しんでくれる。不登校だと自宅で篭るしかなく刺激の無い毎日になりがちだが、不自由な中でも親としてはできるだけ広くアンテナをはって子供の世界を広げるような面白い体験をさせてあげたいと思う。


他に今やりたいことを整理する。

  • 次女がマイクラのアドオン作成に興味を持っている。前に Blockbench を教えたがウィザード以上の事をやろうとするととたんに難しくなるが、MCreator というのを併用すると小学生にもアドオンが作れるかもしれないので調べる。
    • ドラゴンの色を変えたりしたいらしい。(Blockbench のデフォルトでドラゴンのモデルは無い)
    • 剣を振ると光の輪が出るようにしたいらしい。
  • 長女はやりたい事が見つからずロブロックスのスコア上げだけを毎日やっていてより難しい状況にある。ロブロックスが好きなので、できたらロブロックスのゲームを自分で作れるようにさせてあげたい。ただ、ロブロックスのカスタマイズは本格的なプログラミング知識が必要なので Blockbench のような簡単ツールを探したい。
  • 長女が外に出られないのは健康上非常によくない気がするので、こちらもどうにかしたいが全くアイデアが無い。

52才とあるプログラマの近況

たまには子供以外の事も記録しておく。前職 Xevo 社のレイオフが現実味を帯びてきたのが丁度一年程前の事だ。ちょっと生々しくてまだ面白い話は書けそうに無いが、色々あって今の会社に転職した。去年の夏は失業の恐怖で眠れず深夜の漫画喫茶で過ごしたりやばかった。この業界ではよくある話で私も初めてではないのだが、特に家を買って借金があると冷静ではいられない。結果的には退職金も貰えたし、給料も大して下がらなかったので悩んで無駄だった。

今の会社にはテックリードで応募した。Xevo では管理職だったのでバリバリのICは無理かなーと思ったんだけど、面接が終わってから追加面接があって、やっぱりマネージャやらなくても良いと言われた。私が面接の時にマネージャやりたくない感を醸し出していたのが伝わってしまったのかも。という事で五十代にしてヒラ開発者として復活することになった。さらに入社してみると同僚みんな私以上のおっちゃんだらけだった。プログラマ35才定年説は何だったんだ。むしろこの会社ではマネージャがみんな若い。

仕事内容は拍子抜けするほど前職と同じだった。最終製品は全然違うのだが、今どきはベストプラクティスが一瞬で共有されるので、製品に関わらずプログラマの仕事は同じなのかも。利用技術が同じなだけでなく、前職と同じように今回も先行開発と称して本開発前の糞コードを書いては消すという、多分自分に向いている仕事をしている。携帯アプリからサーバから機械学習からCIからインフラまで全部一通り浅く広く自分で書く所も前と同じだ。全くどれも詳しくないが中途半端に知ってるだけで意外と役に立つ。

転職先選びで重視したのは『世の中の役に立ってる感』だった。前職では下請けだった事もあり儲かった割には世の役に立ってる感がなく、モチベーションの維持に苦労した。ただ、子育てが滅茶苦茶大変な事と、いまだに作品制作を人生の第一目標としている事を考慮して、無難なところに落ち着いた。本音を言うと仕事はほどほどにして、子育ても早く卒業して、「本職の」からくり計算器に没頭したい。とはいえ、自分は仕事をほどほどに調整するバランス間隔に乏しく、子供は不登校で鬼のように手間がかかり、理想の人生とは真逆を突き進んでしまっている。

プロジェクト管理の目的は、スコープ、時間、予算のバランスとる事だという。人生をプロジェクトと考えると、そろそろ健康寿命の先が見えているので時間は伸ばせないので、制作三昧な人生を送るには他のスコープを減らすか予算を増やすしかない。実はあまりお金に困ってないので予算を増やしても良いのだが、不登校の子供にお金を使っても家から出てくれないし、今のところ行き詰っている。

行き詰りながら色々な事を考えている。 前に、『こどものスモールトラウマのためにできること』の紹介で少し書いたが、精神的な余裕(=遊び)と行動の変化について持論があるのでまた書きます。

記録: 会社には週3-4日程度出社している。最近の出社する日の一日は以下のような感じ。

  • 6:00 起床。ゴミ捨て。洗濯物干し。
  • 7:00 通勤。NHK オンデマンドで古い大河ドラマ(例えば『花神』)を観ながら電車に乗る。
  • 8:00 朝食。会社の近くの松屋の納豆定食 290 円が一番多い。ドトールのモーニングか、パン屋でパンを三つ買う事もある。
  • 8:30 始業。裁量労働制なので時間通り出社する必要は無いが、たまにミーティングのある時だけ早起きするのが辛いので毎日同じ時刻に出社している。
  • 11:00 昼食。社食で 550 円定食が多い。たまに外に出てなか卯か、わざわざ地下鉄で秋葉原まで行ってラーメンを食べる事もある。
  • 18:00 - 19:00 ごろ終業。
  • 20:00 自宅で夕食。
  • 21:15 長女を寝かせる。次女は妻が寝かせている。
  • 22:00 ランニング5,6キロ。自宅から東西南北それぞれ次の駅まで走って酔っ払いを見ながら走る。
  • 23:00 風呂に入って就寝。

クッキーを焼く

精神科の医者からは、不登校の子供には八割くらい達成できそうな目標を与えてくださいと言われている。そんなん分かっとるわ!と思うのだがなかなか実践は難しい。最初は紙粘土やお絵描きなど、親である自分にも興味のあるクラフト系の遊びを色々試したが食いつきにムラがあり継続が難しい。ふとべっこう飴を作ってみるととても評判が良かったのでお菓子や料理作りをメインにしていこうと思っている。

今週はクッキーを焼いてみた。昔読んだその3Dプリンタ製クッキー型、違法です|yskという記事をふと思い出し、最終的に子供の好きなマイクラや SCP のクッキーが焼けたらウケるだろうと思った。ただ今までの経験で最初からうまく行くはずがない。何度か失敗する心づもりで気長に試さなければ。

初日は「小学生のお菓子ブック」星野菜々子著を参考に次のレシピを試した。

  • 有塩バター 50g (元レシピは無塩だが無かったので)
  • 砂糖 50g (甘すぎると子供が食べないので元レシピから 10g 減らした)
  • 卵 1個
  • 薄力粉 100g

クッキー1日目

これを混ぜて型抜きしたかったのだが、柔らかすぎて型抜きできなかった。適当にまとめてオーブンで 170度16分焼いた。味は美味しかった。

二日めはサクサクで美味しい! 基本の型抜きクッキーのレシピ動画・作り方 | DELISH KITCHENを参考に次のレシピを試した。

  • 無塩バター 50g
  • 砂糖 50g
  • 卵の黄身 1個
  • 薄力粉 100g

一日めに柔らかすぎた反省から卵を黄身だけにして、あと最後生地が多少まとまるまで薄力粉を少し足した。念の為バターも無塩にしてみた。40分寝かした後型抜きしたが、今度はちょっと硬すぎて生地にひびが入ってしまった。なかなか型抜きに丁度良い硬さに作るのは難しい。アマゾンで買ったポケモンの型 https://www.amazon.co.jp/dp/B0CWXSSVT9 を使った。この製品サクラチェッカーの評価では危険となっているのだが、全く問題無い。170度のオーブンで15分焼いた。昨日色が濃いめだったので1分減らした。

クッキー2日目

一日めと二日めで多少材料を変えたので味も変わるかなと思っていたが、私の舌では全く同じくどちらも美味しかった。特にバターを有塩から無塩に変えても違いが分からなかった。