言語ゲーム

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

Twitter: @propella

停滞

7月に入ってから四年生不登校双子の事態は悪化している。6月末にフリースクールのオフ会があった頃までは毎週お菓子作りをしたり、それなりに楽しく過ごしていたのだが、飽きたのか突如お菓子作りに付き合ってくれなくなり、またゲームだけの日々になってしまった。外出もできないままなので事態は悪くなる一方で非常に苦しい毎日だ。何も進展が無いが記録を残す。

長女は毎日ロブロックスをやっている。「究極のトイレロールプレイ2」や「Toilet Tower Defence」「スキビディウォーリアー」などがお気に入りのようだ。どうやら固定のフレンドがいるらしいのだが、チャットの内容を見せてくれないので何をしているのか全く分からない。長女の世界を理解しようと私もたまにロブロックスを起動するが、面白みが理解できず苦痛で仕方がない。オンラインフリースクールへの参加率も落ちる一方なのに他にやりたい事もなく「暇だ」と言いつつ一日中ロブロックスをやっている。たまに会話が成立するのは食事とおやつの時だけだ。

もともと長女の不登校のきっかけは足の怪我の後の心理的な頻尿だったのだが、諦めたのか薬が効いているのか尿意の事はあまり言わなくなった。風呂に入りたがらない以外は生活は規則的で、歯磨きやお茶碗片付けなど基本的な事は普通にする。ただ以前より好奇心がぐっと減ってしまった。

次女は毎日 Youtube を見ている。行動にムラがあるが、最近は少しずつ Discord をしながらマイクラをする事もある。楽しそうに声を上げてる時は何をやっているか理解できる。ただ感情の落ち込みは長女以上で、機嫌の悪い時は寝室に引きこもってじーっと iPadYoutube を見ており、会話は成立しない。次女は不登校以外身体的な問題は無く、お友達ともまだ普通に話せる。ただ、嫌な事を話すのが苦手なので、一人で閉じこもっていても何が問題なのかさっぱり分からない。何とか首の振り方で Yes / No の表現はできるので、気に入った服が無いとか、iPad を無くしたとか、頑張って不機嫌の原因が分かることもたまにある。

次女はどこも悪くないはずなのに外出できないのは、長女への遠慮があるようだ。例えば、アイスを買いにコンビニ行こうと誘っても、長女が行かないなら行かないというような返事をする。長女の大けがの時も隣にいたので、まるで長女の苦痛が次女に伝染してしまっているようだ。

とりあえず今日は誰も手伝ってくれなかったので一人でういろうを作って食べた。あと、図書館に行って不登校関係の本を沢山借りた。図書館では普段遊びの本を借りるのだが、今となっては何の遊びも響かなくどうしようもないのでせめて不登校についてもうちょっと調べる。

マインクラフト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 風呂に入って就寝。