OpenStreetMapを活用したMinecraft都市生成技術 Arnis
(github.com/louis-e)- 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 がマージされると、定期的なアップデートリリースに変更内容が含まれる
認知度、ライセンス、公式情報源
- Arnis は 2024年12月以降、より多くの注目を集め、複数の学術・報道資料で取り上げられている
- Building realistic Minecraft worlds with Open Data on AWS: How Arnis uses elevation datasets at scale
- Floodcraft: Game-based Interactive Learning Environment using Minecraft for Flood Mitigation and Preparedness for K-12 Education
- Hackaday: Bringing OpenStreetMap Data into Minecraft
- TomsHardware: Minecraft Tool Lets You Create Scale Replicas of Real-World Locations
- XDA Developers: Hometown Minecraft Map: Arnis
- Arnis は Apache License 2.0 のもとで配布されている
src/luanti_block_map.rsの Luanti ブロック名マッピングは MC2MT に由来し、GNU Lesser General Public License v2.1 以上に従う- 公式プロジェクトのウェブサイトは arnismc.com と GitHub リポジトリのみ
- 他サイトのダウンロードは非公式で、悪意のあるものである可能性がある
- Arnis は公式な Minecraft 製品ではなく、Mojang または Microsoft の承認を受けておらず、関連もない
1件のコメント
Hacker Newsのコメント
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 の自動駐車のために新しくマッピングする人たちも出てきたと聞いた
https://www.reddit.com/r/gis/comments/qg4b6j/is_it_possible_...
Geonames も SRTM や他のデータに基づく標高照会サービスを提供している: http://www.geonames.org/export/web-services.html
ただし広い地域を細かくサンプリングする必要があるなら、API 制限に引っかかったりサービスに過負荷をかけたりする可能性がある
それでも、第三者がデータセットを入手して、その上に API を提供することは可能だと示している
私の知る限り、GPL には偽のヒーロー作りを禁じる条項はない
ただしレキサー/パーサージェネレーターのように、出力物にプログラム自体のソースの一部が含まれる場合は例外で、GNU Bison のライセンスにはそれを許可する明示的な例外がある
Minecraft には Redstone と Command Blocks があり、人々は 8086 や Tetris のようなものまで作っている
こうしたワールド生成ツールで生成された世界が GPL に汚染される境界事例があるのか気になる
個人的には、こういう理由で BSD/MIT ライセンスを好む。「このプログラムを実際に使っていいのか?」という単純な質問に弁護士費用を使わせたくない
子どもたちが自分たちの町にもっと慣れるために使いたい
私が道路名やどこで曲がるべきかをずっと尋ねるのにうんざりしていて、時には完全なターンバイターン案内までしてくれる
これまで道に迷ったのは数回だけ
ただし、このプロジェクトほど詳細ではなさそう
[0]: https://minecraft.ign.fr/
https://youtube.com/watch?v=vl_MExz52jA
そして同じ内容に子どもっぽく見える説明が付いた動画:
https://youtu.be/7JYjxSfvJQk?feature=shared
既存の Python 実装があった以上、冒頭でなぜこのバージョンが違うのかを伝えるのは合理的に見える
実際に J で始まる単語でもなく、どんな名前の前にも J を付けるというやり方だった
Python に言及した回数もほぼ同じ
発話や
(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 には
luanti、minetest、mcpi、MCPI-Revival/minecraft-pi-rebornも出てくるOSM データも確認したので、なおさら不思議だ
一方で子どもの学校はそれほど遠くない場所にあり、かなり詳しくレンダリングされる
さらに掘り下げてみると、その建物は OSM で 2 つの異なるレイヤーを持つ multipolygon としてレンダリングされ、ほかはノード集合ベースでレンダリングされているようだ