ゲーム」カテゴリーアーカイブ

NTE上の釣りにおける高価な材料で作られた釣り餌の有効性調査

NTEの「高価な材料で作られた釣り餌」は最も安価な釣り餌の14.4倍の金額となっている。本釣り餌について、その高価さに見合う性能があるのかを簡易的に調査した。

本調査は暇つぶしで行われた、あくまでも簡易的ものであり、信頼できる品質の結果を取得することを目的としていない。

検証環境

本検証は、2026年6月3日にリリースされたNTE バージョン1.1の新釣り場である、「ヒナタ島釣場」にて行った。検証は2026年6月6日に一回のみ行われた。ランチャーの提示するバージョンは1.1.4であった。

検証では、72魚鱗コインで販売されている「幽蘭の餌」を11点購入し、これらの餌及び「上級者の釣り竿」を利用して釣れた魚に、販促文に記載されている、「ゴールデンカマス」及び「海中の栗」の出現回数を調査した。

また、同時に5魚鱗コインで購入できる「万能釣り餌」についても同様の検証を行い、取得できる経験値量及び魚鱗コインを比較する。

検証結果

最終的に、逃げられることなく11匹の魚を釣ることができた。しかし、販促文に記載されている、ゴールデンカマス及び海中の栗に関しては観測できず、釣り経験値にして合計421 Expの取得と、202魚鱗コインの取得にとどまった。取得できた経験値の中央値は25で、平均値は38であった。

実際に釣れた魚の内訳を、下記の表に示す。

Attempt # 魚種別 Exp
1 クロマグロ 24
2 ヒトデ 109
3 クロマグロ 24
4 アオノメハタ 24
5 ユカタハタ 38
6 シャインシイラ 22
7 クロマグロ 25
8 クロマグロ 25
9 藍鱗の旗 43
10 サバ 48
11 金サバ 39

万能釣り餌でも同様に、逃げられることなく11匹の魚を釣ることができた。釣り経験値は385 Exp取得し、184魚鱗コインの取得にとどまった。取得できた経験値の中央値は38で、平均値は35であった。

万能釣り餌にて釣れた魚の内訳を、下記の表に示す。

Attempt # 魚種別 Exp
1 シャインシイラ 18
2 赤鱗の旗 48
3 サバ 59
4 緑鱗の旗 38
5 クロマグロ 19
6 マンボウ 19
7 マンボウ 20
8 エンペラーエンゼル 42
9 赤鱗の旗 51
10 キリンミノカサゴ 21
11 金サバ 50

取得経験値の中央値が幽蘭の餌に比べ高いにもかかわらず、平均値及び合計値は幽蘭の餌が上回った結果となった。

t検定による検証

幽蘭の餌による経験値量及び万能釣り餌による経験値量を非等分散と仮定し、有意水準5%にて両側検定を行ったが、この2点の経験値量の平均値に有意的な差は見られなかった。

議論

本調査では、NTEでの釣りにおける高価な釣り餌の有用性について、簡易的に調査を行った結果、少なくとも11回程度の試行回数では、合計で202魚鱗コイン程度の売り上げにしかならず、釣り餌の金額である792魚鱗コインの元を取ることができなかった。

取得経験値の平均値及び合計値は幽蘭の餌が上回った結果となった原因として、幽蘭の餌において検証を行った際に、経験値量の高い、「ヒトデ」が釣れたためであると考える。ヒトデは本釣り餌の販促文に記述されていないため、偶然このような結果になったと考えられる。

本検証では、サンプル数が11件と極めて低く、外れ値と考えられるレアリティの高い魚による影響を否定できない。今後の検証では複数の釣場の利用や、試行回数を増やす必要性があると考える。

PowerShellを使ってMinecraftのリソースを正式名でエクスポートする

最初に

Minecraftはデフォルトリソースをハッシュ名にして保存しています。実際のリソース名とはJSONファイルを使用して関連付けています。

{"objects": 
    {
        "resource1.png": 
            {"hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "size": 1234},
        "resource2.png": 
            {"hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", "size": 5678}
    }
}

このような形でハッシュとリソース名を対応付けています。これをリソース名にしてエクスポートしようという試みです。

対応環境

Minecraft 1.16とPowerShell 5.1で実行できることを確認しました。また、オープンソース版のPowerShellでも実行できると思われます。

最低限の検証しかしていません。

実際のコード

$objects_dir = "C:\Users\Owner\AppData\Roaming\.minecraft\assets\objects"; # .minecraftフォルダ内のassets/objectsまでのフルパス
$listjson = "C:\Users\Owner\AppData\Roaming\.minecraft\assets\indexes\1.16.json" # .minecraftフォルダ内のassets/indexes内の任意のバージョン名のJSONファイルまでのフルパス

$exportdir = "C:\Users\Owner\AppData\Roaming\.minecraft\assets\extracted" # エクスポート先フォルダのフルパス

# ===================

$json = Get-Content $listjson
$list = ConvertFrom-Json -InputObject $json


foreach ($r in $list.objects.psobject.Properties) { 
    $fname = $r.Name
    $afname = $list.objects.$fname.hash

    $hash_dirname = $afname.Substring(0, 2);

    $from = $objects_dir + '\' + $hash_dirname + '\' + $afname;
    $to = $exportdir + '\' + $fname;

    $destdir = Split-Path $to -Parent;

    if (!(Test-Path -Path $destdir)) { $0_ = New-Item $destdir -Type Directory }
    Copy-Item -Path $from -Destination $to
}

汚いコードですが概ねこのような形です。先頭の3行(改行含め4行)を書き換えて利用してください。

注意点・解説

先ほども説明した通り、JSONでリストが作られています。そのため、ConvertFrom-Jsonで簡単に読み込むことができました。しかし、いくつか注意点があります。

PowerShell 5.1ではJSONをHashtableにできない

Windows 10に標準搭載されているPowerShellは-AsHashtableオプションに対応していません。そのため、PSCustomObjectで出力されたオブジェクト名をそのまま取得することができません。
 これを解決するために、foreach文ではpsobject.Propertiesを取得したいオブジェクトにつけることによって、プロパティのデータをforeachにかけています。
 これによって取得したオブジェクト名をそのまま埋め込み、$list.objects.$fname.hashとすることによってPSCustomObjectのままでデータを取得しています。

ファイルコピー時に親ディレクトリがない

PowerShellのCopy-Itemコマンドレットは親ディレクトリを自動的に作ることはできません。そのため、Split-Path $to -Parentで親ディレクトリを取得し、当該ディレクトリがなかった場合は、新しくディレクトリを作成しています。

ディレクトリ作成時のログ

New-Itemコマンドレットを使用すると、実行時に結果としてディレクトリの詳細データを出力します。しかし、今回は邪魔なだけなので、$0_変数に結果を代入させることによって表示をなくしています。