3 ポイント 投稿者 GN⁺ 2025-01-01 | 1件のコメント | WhatsAppで共有
  • Arnisは、実際の地理、地形、建築を反映した Minecraft Java Edition 1.17+ および Bedrock Edition のワールドを生成する、無料のオープンソースプロジェクト
  • 生成アルゴリズムは OpenStreetMap の地理空間データ と標高データを処理し、地形や建築物を Minecraft 内でより正確に再現する
  • ユーザーは地図上で 長方形ツール を使って範囲を選び、Minecraft ワールドを選択した後、Start Generation を押すことで生成でき、ワールドのスケール・スポーン地点・建物内部の生成といった設定も調整可能
  • インストール不要でブラウザからワールドを作成したり、より大きな地図サイズやモバイルでの生成を望む場合は MapSmith を利用できる
  • 公式のダウンロード先は arnismc.com と GitHub リポジトリのみであり、他のウェブサイトの Arnis ダウンロードは非公式で悪意のあるものである可能性がある

Arnisが作るMinecraftワールド

  • Arnisは、現実世界の地理、地形、建築を反映した Minecraft ワールドを生成する
    • 対応対象は Minecraft Java Edition 1.17+Bedrock Edition
    • 故郷、大都市、自然景観のような実在の地域を Minecraft ワールドにできる
  • このプロジェクトは、大規模な実世界の地理データを扱うために設計された 無料のオープンソース ツール
  • 生成プロセスでは OpenStreetMap の地理空間データと標高データをあわせて使用する
    • 地形や建築物の Minecraft 表現をより正確にすることが目的

使い方

  • ユーザーは 最新リリース をダウンロードするか、自分でビルドできる
  • GUI では、地図上で 長方形ツール を使って希望する範囲を選択し、Minecraft ワールドを指定した後、Start Generation をクリックする
  • 生成設定では複数の項目を調整できる
    • ワールドスケール
    • スポーン地点
    • 建物内部の生成
  • モバイルでの生成や、より大きな地図サイズが必要な場合は、MapSmith がブラウザ上でインストール不要のワールド生成を提供する

ドキュメントと開発目標

  • 全ドキュメントは GitHub Wiki で提供されている
    • 技術説明
    • FAQ
    • コントリビューションガイドライン
    • ロードマップ
  • プロジェクトの中核目標は モジュール性、性能、文書化、使いやすさ、クロスプラットフォーム対応
    • データの取り込み、処理、ワールド生成を明確に分離し、保守性と拡張性を高めようとしている
    • 高速なワールド生成のための性能最適化を重視している
    • コード内部の文書化を通じて、構造とロジックを明確にしようとしている
    • 最終ユーザーが簡単に使える体験を目標としている
    • Windows、macOS、Linux で円滑に動作することを目指している

ビルドと貢献

  • このプロジェクトは、バグ修正、性能改善、新機能追加、文書改善など、あらゆるレベルの貢献を受け付けている
  • 貢献方法は、リポジトリをフォークして変更を加えた後、pull request を提出する流れ
  • コマンドラインビルドの例は次のとおり
    • cargo run --no-default-features -- --terrain --path="C:/YOUR_PATH/.minecraft/saves/worldname" --bbox="min_lat,min_lng,max_lat,max_lng"
  • GUI ビルドは次のコマンドで実行する
    • cargo run
  • Nix ユーザーは次のように直接実行できる
    • nix run github:louis-e/arnis -- --terrain --path=YOUR_PATH/.minecraft/saves/worldname --bbox="min_lat,min_lng,max_lat,max_lng"
  • pull request がマージされると、定期的なアップデートリリースに変更内容が含まれる

認知度、ライセンス、公式情報源

1件のコメント

 
GN⁺ 2025-01-01
Hacker Newsのコメント
  • OpenStreetMapエコシステムが、誰でも地理空間データを使えるようにする成熟したツール群を提供している点が本当に良い
    10年以上前に Cities in Motion 2 向けの都市ジェネレーターであるオープンソースプロジェクト maps4cim を作っていて、道路・建物には OSM データ、標高には NASA SRTM データを使っていた
    OSM のほうがはるかに複雑でデータも毎日変わるが、Overpass API に同じクエリを投げれば、今でも最新データを期待した形式で受け取れる
    一方 NASA は、ある時点でパブリックドメインである SRTM データへの公開アクセスを閉じ、登録ユーザーだけがアクセスできる非 REST の Web サービスの裏に隠してしまった
    データが無料で簡単にアクセスできなかったら、そもそもこうしたオープンソースプロジェクトを始めていなかっただろうし、参入障壁ができると、巨人の肩の上に作られ得た優れたツールをすべて失うことになる
    OSM のようにオープンデータの精神を実践するプロジェクトが、もっと力を得てほしい
    1: https://github.com/Klamann/maps4cim
    • 貢献するのも驚くほど簡単
      StreetComplete のゲーム化されたクエストや osm.org のブラウザベースのエディタのおかげで、インターネットさえあれば誰でも数分で周辺の場所を修正できる
      ただ、どこへ行っても直すべき点が残っているということは、貢献者が十分ではないという意味でもある
      大きな問題は、人々が日常的に使っていてエラーを見つけることになる代表的なアプリがない点だが、Organic Maps によって少しずつ変わりつつあり、Tesla の自動駐車のために新しくマッピングする人たちも出てきたと聞いた
    • SRTM 全データセットをダウンロードすることは可能なようだが、それでは駄目なのか気になる
      https://www.reddit.com/r/gis/comments/qg4b6j/is_it_possible_...
      Geonames も SRTM や他のデータに基づく標高照会サービスを提供している: http://www.geonames.org/export/web-services.html
      ただし広い地域を細かくサンプリングする必要があるなら、API 制限に引っかかったりサービスに過負荷をかけたりする可能性がある
      それでも、第三者がデータセットを入手して、その上に API を提供することは可能だと示している
  • 自分の町を Minecraft に作って8歳の子に見せ、自分が作ったふりができそう
    私の知る限り、GPL には偽のヒーロー作りを禁じる条項はない
    • GPL はプログラムの利用方法そのものは制限しない、つまり自由0にあたる
      ただしレキサー/パーサージェネレーターのように、出力物にプログラム自体のソースの一部が含まれる場合は例外で、GNU Bison のライセンスにはそれを許可する明示的な例外がある
      Minecraft には Redstone と Command Blocks があり、人々は 8086 や Tetris のようなものまで作っている
      こうしたワールド生成ツールで生成された世界が GPL に汚染される境界事例があるのか気になる
      個人的には、こういう理由で BSD/MIT ライセンスを好む。「このプログラムを実際に使っていいのか?」という単純な質問に弁護士費用を使わせたくない
  • 交差点に道路標識まで生成してくれたら本当に良さそう
    子どもたちが自分たちの町にもっと慣れるために使いたい
    私が道路名やどこで曲がるべきかをずっと尋ねるのにうんざりしていて、時には完全なターンバイターン案内までしてくれる
    これまで道に迷ったのは数回だけ
  • フランスの公的機関である IGN も、実在の場所から Minecraft マップを生成するサービスを提供している
    ただし、このプロジェクトほど詳細ではなさそう
    [0]: https://minecraft.ign.fr/
  • このプロジェクトは機会があるたびに、Rustで作った点をかなり強調しているようだ
    • 「言語をさらに学び、アルゴリズム性能をさらに押し上げるために、プロジェクトを Rust に移植することにした。Python では最適化の限界に近づいており、Rust の能力がより良い性能と効率を可能にする」という説明がある
      既存の Python 実装があった以上、冒頭でなぜこのバージョンが違うのかを伝えるのは合理的に見える
    • 誰が Rust プログラマーか、どうやって分かるって?本人が教えてくれる
    • Java で書かれたライブラリやアプリケーション名が全部 J で始まっていた時代に比べれば、まだまだだ
      実際に J で始まる単語でもなく、どんな名前の前にも J を付けるというやり方だった
    • もはや Rust スタイルガイドに入れるべきレベル
    • 実際には README に「Rust」は6回出てきて、その半分はなぜ Python から Rust に移植したのかを説明する FAQ 段落にある
      Python に言及した回数もほぼ同じ
  • Microsoft の最新の Flight Simulator ゲーム群のように、現実世界の地域をベースにレーストラックを作るバージョンもあるといい
    • あるいは GTA: Auburn, AL でもいい
  • リアルタイム天気、飛行、交通、React ベースのコックピット、オープンソースの Google Earth GlTF データ、MSFS・X-Plane のようなフライトシミュレーターアプリに関する参考リンク: https://news.ycombinator.com/item?id=38437821
    発話や (lat,long,game) 形式の位置参照が、ゲーム内の位置なのか、同じ名前を持つゲーム内の架空の位置なのかを区別するほうが簡単かもしれない

Google Maps GlTF 3D タイル関連ドキュメント https://developers.google.com/maps/documentation/tile/3d-til... には、Google のフォトリアリスティックなタイルをレンダリングするには著作権表示をサポートする 3D Tiles レンダラーを使う必要があり、CesiumJS や Cesium for Unreal を使えると書かれている
Python API があるオープンソースの Minecraft 風ゲームとしては sensorcraft があり、OpenGL 3D 向けの pyglet ベースで、self.add_block()、重力、AI、回路などを扱っている
WebGL は OpenGL より移植性が高く、pyglet を WASM にコンパイルできるのかも気になる
panda3d と godot は WASM に簡単にコンパイルできると理解している
Minecraft クローンに役立つ可能性がある Python のオープンソース物理エンジンとして Genesis-Embodied-AI/Genesis がある: “Genesis: A Generative and Universal Physics Engine for Robotics and Beyond” https://news.ycombinator.com/item?id=42457213#42457224
“Approximating mathematical constants using Minecraft” https://news.ycombinator.com/item?id=42319313 には luantiminetestmcpiMCPI-Revival/minecraft-pi-reborn も出てくる

  • FlightGear ではずっと以前にすでに似たようなことをしていたが、対象は地図だけだった
  • 不思議なことに、私のアパート団地はレンダリングされないのに、周辺の建物とプールはレンダリングされる
    OSM データも確認したので、なおさら不思議だ
    一方で子どもの学校はそれほど遠くない場所にあり、かなり詳しくレンダリングされる
    さらに掘り下げてみると、その建物は OSM で 2 つの異なるレイヤーを持つ multipolygon としてレンダリングされ、ほかはノード集合ベースでレンダリングされているようだ
  • とても素晴らしい。Chicago L の線路生成は、アルゴリズム的にかなり難しかったように思う
  • 日本が公開した ポイントマップを OpenStreetMap と突き合わせて、より詳細な建物を作れるとよさそう
    • ポイントマップのリンクが気になる