[HN Gopher] Arnis: Generate cities in Minecraft from OpenStreetMap
       ___________________________________________________________________
        
       Arnis: Generate cities in Minecraft from OpenStreetMap
        
       Author : jamesy0ung
       Score  : 439 points
       Date   : 2024-12-31 20:47 UTC (1 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | m3kw9 wrote:
       | Someone should use the point maps Japan released and match it
       | with open street maps to create even more detailed buildings.
        
         | NavinF wrote:
         | Link to the point maps?
        
           | verdverm wrote:
           | technically just tokyo
           | 
           | https://news.ycombinator.com/item?id=42501102
        
       | woopersiop wrote:
       | Very cool, the generation of Chicago's L tracks seemed to be a
       | challenge for the algorithm.
        
       | claytonwramsey wrote:
       | Is it just me, or does the README have the ChatGPT accent? For
       | instance:                 Whether you're looking to replicate
       | your hometown, explore urban environments, or simply build
       | something unique and realistic, Arnis offers a comprehensive
       | toolset to achieve your vision.
       | 
       | I don't have a lot of issues with people using LLMs to generate
       | documentation, but it does seem to have a lot of nothing-
       | sentences.
        
         | idle_zealot wrote:
         | ChatGPT sounds like that because that's what vapid feel-good
         | corporate copy reads like, and there are mountains of it
         | churned out by humans.
        
           | wjnc wrote:
           | A legitimate question for me would be is documentation made
           | to be read or to be written and what is the appropriate
           | trade-off in energy invested? I might write a one off email
           | to an individual, a email to a big audience or a presentation
           | to the board. All three get different levels of attention.
           | From little, to there are layers to this text nobody would
           | expect (perhaps mostly for my enjoyment).
        
         | mitthrowaway2 wrote:
         | How would you phrase it?
        
           | ripbozo wrote:
           | For one, it's not a "comprehensive toolset" (focus on
           | toolSET) - it's one tool with one config option.
        
           | a12k wrote:
           | Build your ideal city with Arnis.
        
           | taberiand wrote:
           | Arnis uses OpenStreetMap data and Rust to generate Minecraft
           | worlds based on real-world geography and architecture.
           | 
           | It processes large-scale data to create accurate cities,
           | landmarks, and natural features in Minecraft, making it easy
           | to replicate real places or design realistic environments.
           | 
           | (This rephrasing generated by ChatGPT)
        
             | Modified3019 wrote:
             | This is actually really good.
        
           | recursive wrote:
           | That sentence just doesn't need to exist at all. The nature
           | of the tool is already covered. I don't think there's a
           | reason to tell people that they could use it for this, that,
           | or the other thing.
        
         | thorum wrote:
         | You're right, and this is unfortunately becoming very common on
         | GitHub, even for otherwise great projects.
         | 
         | Good technical writing is concise and tells you what you need
         | to know as directly as possible. ChatGPT written documentation
         | always reads like bad marketing copy.
        
           | mewpmewp2 wrote:
           | On the other hand you can prompt it to be more concise, use
           | simpler words, etc.
           | 
           | I asked ChatGPT for a concise version and this is what it
           | did:
           | 
           | "Arnis generates Minecraft worlds based on real-world
           | locations. Select an area to recreate cities, landmarks, and
           | landscapes in the game."
           | 
           | So overall it's up to the person to decide how it should look
           | like.
        
         | tucnak wrote:
         | It seems everybody is LLM-suspicious these days, but keep in
         | mind humans had mastered the art of nonsense long before!
        
       | aduermael wrote:
       | That's really cool!
        
       | DannyPage wrote:
       | Just like Microsoft's latest batch of Flight Simulator games, I'd
       | love if there was a version of this for creating race tracks out
       | of real areas in the world.
        
         | rrr_oh_man wrote:
         | ...or GTA: Auburn, AL
        
       | genghisjahn wrote:
       | Hmmm. Wonder if this can be done for Valheim?
        
       | redundantly wrote:
       | It would be awesome if it could generate street signs at
       | intersections. I'd love to use it to help my kids get more
       | familiar with our area. Theyre tired of me constantly asking for
       | street names or which way to turn. Sometimes, they even give me
       | full turn-by-turn instructions, and we have only gotten lost a
       | couple of times so far ;)
        
       | globalnode wrote:
       | something like this could be made into a game to help taxi or bus
       | drivers learn their routes or local areas.
        
         | rrr_oh_man wrote:
         | Yes, so they can ride their horse carriages even faster!
        
       | matt3210 wrote:
       | This project really likes to mention that it's made in rust
       | wherever it can.
        
         | core_dumped wrote:
         | It should be a part of the Rust style guide at this point
        
         | urbandw311er wrote:
         | Q) How do you know if somebody is a Rust coder? A) They tell
         | you.
        
           | calebio wrote:
           | I wonder if there is an overlap in the Rust and Arch Linux
           | community then :D
        
             | OfficialTurkey wrote:
             | I'm sure one of them will comment here and tell you. Just
             | as soon as they fix their wifi driver, and oh shit the
             | bluetooth is broken too, okay time to open up the local
             | copy of the arch wiki..
        
             | n_plus_1_acc wrote:
             | Definitely. Pacman and ALPM are currently being rewritten
             | in Rust.
        
             | wongarsu wrote:
             | From personal/professional experience this is true. Your
             | typical rust developer uses Arch and Neovim. Yes, he will
             | tell you about both.
        
               | n8henrie wrote:
               | NixOS and helix!
        
               | wongarsu wrote:
               | And has a github repo with dotfiles
        
           | poincaredisk wrote:
           | Seriously, I consider a programming language mature when
           | projects written in that language stop feeling the need to
           | stress that. I mean, for some time projects listed "written
           | in rust" (or "written in go", etc) as the main feature. Now
           | rust is more normalized, finally.
        
         | snappysnap wrote:
         | I don't think we're anywhere near the equivalent of any library
         | or application being named starting with a J when it was
         | written in Java - and not even actual words beginning with J -
         | just slap a J at the start of any old name.
        
         | djfergus wrote:
         | " I decided to port the project to Rust to learn more about the
         | language and push the algorithm's performance further. We were
         | nearing the limits of optimization in Python, and Rust's
         | capabilities allow for even better performance and efficiency"
         | 
         | So there is an existing solution in Python, seems reasonable to
         | flag why this is different up front.
        
         | xboxnolifes wrote:
         | Not really? It has 6 occurrences of "Rust" in the README, and
         | half of those are in the paragraph of the FAQ explaining why
         | they ported to Rust from Python. There's actually an equivalent
         | number of references to Python.
        
       | cbeach wrote:
       | As far as I know OSM doesn't have the granular elevation data
       | required to render buildings as shown in the screenshots.
       | 
       | I'd be interested to understand how the buildings were
       | constructed?
        
         | Rygian wrote:
         | https://wiki.openstreetmap.org/wiki/Key:building:levels
        
           | sp8962 wrote:
           | If you want to add more details (don't overdo it)
           | https://wiki.openstreetmap.org/wiki/Simple_3D_Buildings
        
       | westurner wrote:
       | Re: real-time weather, flight, traffic, react-based cockpits, and
       | open source Google Earth GlTF data and flight sim applications
       | like MSFS and X-Plane:
       | https://news.ycombinator.com/item?id=38437821
       | 
       | Probably easier to determine whether a verbal or (lat,long,game)
       | location reference is a reference to an in-game location or an
       | virtual location in a game with the same name.
       | 
       | From
       | https://developers.google.com/maps/documentation/tile/3d-til...
       | re: Google Maps GlTF 3d tiles:
       | 
       | > _Note: To render Google 's photorealistic tiles, you must use a
       | 3D Tiles renderer that supports the display of copyright
       | attribution. You can use [CesiumJS or Cesium for Unreal]_
       | 
       | Open source minecraft games with Python APIs:
       | 
       | > _sensorcraft is like minecraft but in python with pyglet for
       | OpenGL 3D; self.add_block(), gravity, ai, circuits_
       | 
       | WebGL is more portable than OpenGL; or can't pyglet be compiled
       | to WASM?
       | 
       | panda3d and godot easily compile to WASM FWIU.
       | 
       | An open source physics engine in Python that might be useful for
       | minecraft clones: Genesis-Embodied-AI/Genesis; "Genesis: A
       | Generative and Universal Physics Engine for Robotics and Beyond"
       | https://news.ycombinator.com/item?id=42457213#42457224
       | 
       | From "Approximating mathematical constants using Minecraft"
       | https://news.ycombinator.com/item?id=42319313 :
       | 
       | > [ luanti, minetest, mcpi, MCPI-Revival/minecraft-pi-reborn ]
        
         | anthk wrote:
         | That was done long ago under Flightgear, but just the maps.
        
       | devops99 wrote:
       | Niiice. This is like that one time my friend make a Counter
       | Strike map of our local high school.
        
         | lostlogin wrote:
         | Sounds like something that would get you on a watchlist.
        
           | devops99 wrote:
           | Yeah I still wish I could be half as cool as that guy.
        
       | abotsis wrote:
       | I'm just here to say thanks, as I'm not above taking credit for
       | creating our neighborhood in Minecraft for my 8yo. There's
       | nothing in the GPL that prohibits creating false heroes AFAIK.
        
         | rollcat wrote:
         | GPL does not restrict how you can use the program (freedom #0),
         | unless (as is the case with lexer/parser generators) the output
         | contains a part of the program's own source - e.g. GNU Bison's
         | license has an explicit exception to allow that.
         | 
         | In case of Minecraft, you _do_ have Redstone and Command Blocks
         | at your disposal, and people have built things like an 8086 or
         | Tetris. I wonder if there 's an edge case with those WG tools,
         | where the generated world becomes GPL-contaminated.
         | 
         | (Personally I'm a fan of BSD/MIT licenses, for those kinds of
         | reasons - I'd rather not have anyone pay a lawyer to answer a
         | simple question like, "can I actually _use_ this program? ")
        
       | dadoum wrote:
       | IGN (a French public institute) also has its service to generate
       | a Minecraft map from real places. [0]
       | 
       | It's probably not as detailed though.
       | 
       | [0]: https://minecraft.ign.fr/
        
         | aziaziazi wrote:
         | Video with famous touristic places:
         | 
         | https://youtube.com/watch?v=vl_MExz52jA
         | 
         | And the same plus some explanation from a (fake?) child:
         | 
         | https://youtu.be/7JYjxSfvJQk?feature=shared
        
       | opless wrote:
       | I just know a lot of children will be introduced to orienteering
       | by their parents due to this ;-)
        
       | anthk wrote:
       | I had that literal exact same idea one month ago, but with
       | Minetest.
        
       | ocschwar wrote:
       | Right now I'm using my work Mac, which I can't install Minecraft
       | on. My personal Mac is not in my hands, and the kid using it is
       | the one I want to surprise with a Minecraft level of the area.
       | 
       | If anyone could post a zip file of Minecraft worlds so I can fool
       | this app into using it, I would be much obliged.
        
       | klamann wrote:
       | I love that the OpenStreetMap community provides a mature
       | toolscape that allows projects like this to access geospatial
       | data for anyone, no questions asked. It's hard to overstate how
       | valuable this kind of resource is to the free software community.
       | 
       | Just to give some perspective: More than 10 years ago I built an
       | open source project that generates cities for a different game
       | (maps4cim [1], a map generator for Cities in Motion 2). It relies
       | on OSM data to generate roads and buildings and stuff, and NASA
       | SRTM data for elevations. The OSM part of the application is far
       | more complicated, since it covers so much data that is changing
       | every day, yet you can make the exact same query against the
       | Overpass API and get a response with the latest data in the
       | expected format. NASA however at some point decided to shut down
       | public access to SRTM data, which is in the public domain, and
       | hide it behind a non-RESTful webservice where only registered
       | users have access.
       | 
       | To me this feels like such a loss. I never would have started
       | this open source project a decade ago if there was no free access
       | to all the data the users would need. Yes, it's still public
       | domain data, therefore someone could go through all the hassle of
       | signing up for the service, scrape all the data and then host it
       | free of charge, but right now there is no such service. Don't get
       | me wrong, I don't feel entitled to this kind of free service, but
       | I feel like these barriers to entry really matter and we all lose
       | access to great tools that are built on the shoulders of giants.
       | Very sad to lose NASA as one of the giants that once gave us free
       | and easy access to highly useful data. More power to projects
       | like OSM that live the spirit of open data!
       | 
       | 1: https://github.com/Klamann/maps4cim
        
         | m4rtink wrote:
         | Looks like its is possible to download the full SRTM dataset -
         | would that not work ?
         | 
         | https://www.reddit.com/r/gis/comments/qg4b6j/is_it_possible_...
         | 
         | Also I know Geonames has a service for elevation lookup based
         | on SRTM & other data: http://www.geonames.org/export/web-
         | services.html
         | 
         | But if you need to semple a big are in detail, that could
         | potentially run into API limits or overload the service. But it
         | demonstrates its possible to get the dataset & provide an API
         | on top of it by a third party. :)
        
           | m4rtink wrote:
           | Some more information from DRL, which was apparently involved
           | in the mission:
           | 
           | https://geoservice.dlr.de/web/dataguide/srtm/
           | 
           | https://download.geoservice.dlr.de/SRTM_XSAR/
        
             | klamann wrote:
             | I did a quick review of the resources that you linked to:
             | 
             | https://portal.opentopography.org/raster?opentopoID=OTSRTM.
             | 0... allows to submit a request for data from a specific
             | area through a web form (no REST API), then you get
             | redirected to a page where you get a download link after
             | your request has been processed. Does not give access to
             | the original SRTM data.
             | 
             | http://www.geonames.org/export/web-services.html exposes
             | SRTM data through a REST API in their own custom format. I
             | immediately ran into rate limiting when I tried to download
             | a small map tile.
             | 
             | https://download.geoservice.dlr.de/SRTM_XSAR/ provides free
             | access to SRTM data in the original format. This is a great
             | resource! Unfortunately, the map tiles cover 10x10 degrees,
             | which results in huge files. NASA used to provide 1x1
             | degree tiles, which was much better suited for on-demand
             | access.
             | 
             | https://download.geoservice.dlr.de/TDM30_EDEM/ DLR does
             | provide 1x1 degree tiles for similar data sets like
             | TanDEM-X, but for those they do not provide anonymous
             | access.
        
         | raybb wrote:
         | It's also pretty amazing how easy it is to contribute. Between
         | things like street complete with gamified quests and the
         | browser based editor on osm.org basically anyone with an
         | internet connection can update the places around them in
         | minutes.
         | 
         | That being said, the fact that there's always something to fix
         | just about anywhere I go tells you there's not enough people
         | that contribute. Tbh I think the major problem is that there's
         | no single go to app that people use all the time and then
         | notice the issues. Though that's changing a bit with Organic
         | Maps. Tesla self parking also had a bunch of new people mapping
         | places, or so I heard.
        
       | moonlion_eth wrote:
       | This is too cool. Way to represent your rust peers
        
       | unquietwiki wrote:
       | Weirdly enough, my apartment complex doesn't render in this; the
       | surrounding buildings and the pool are rendered, though. I
       | verified the data on OSM, which is even more mystifying. On the
       | other hand, the kiddo's school isn't far away, and that is
       | rendered in pretty good detail. Hmmm...
       | 
       | Edit: I dug deeper into the OSM stuff. Apparently the building is
       | rendered in OSM as a "multipolygon" with two different layers;
       | but all the other stuff is rendered based on sets of nodes.
        
       | lostlogin wrote:
       | I like now you can see a massive spike in installs in the last
       | day. The HN community mines?
        
       | voidUpdate wrote:
       | what "powerful capabilities of Rust" does this utilise?
        
       | remoquete wrote:
       | Can't describe the excitement that tools like thise bring to me.
       | I remember when we used to create cities in Sim City 2000 and
       | then navigate them in Sim Copter and Streets of Sim City. I'm
       | hoping to see something similar happening with photo-realistic
       | levels of accuracy.
        
         | ygra wrote:
         | There's a few projects that do rendering and 3D geometry
         | construction from OSM Data, e.g.
         | 
         | - https://streets.gl (data outdated, sadly)
         | 
         | - https://demo.f4map.com/ (commercial, no textures)
         | 
         | - OSM2World (sadly not interactively on the web, good textures,
         | lots of rendered details, e.g. street signs)
         | 
         | - osmbuildings.org (no live data, no roof shapes)
         | 
         | None are really photo-realistic, and there's are a bunch of
         | problems in the map data where it's hard to infer good 3D
         | geometry, e.g. stairs.
        
       | johnisgood wrote:
       | > The script uses the fastnbt cargo package to interact with
       | Minecraft's world format
       | 
       | At first I was like damn, he made a way to interact with the
       | world map, but apparently there is a library for that! Who would
       | have known.
       | 
       | Cool project nevertheless.
       | 
       | I wonder about the performance claims though.
       | 
       | > Performance Optimization: Utilize Rust's memory safety and
       | concurrency features to optimize the performance of the world
       | generation process.
       | 
       | Is not much of an answer of performance.
       | 
       | What were the limitations in Python, and how did Rust help?
       | 
       | Since it relies on third-party libraries, what are the
       | optimizations that the author did indeed implement as opposed to
       | the Python version?
        
       | tithos wrote:
       | Cant find the Mac version. Cant up vote without it
        
         | SpaghettiCthulu wrote:
         | It uses Tauri. It would probably just work if you compiled it
         | yourself on macOS.
        
       ___________________________________________________________________
       (page generated 2025-01-01 23:01 UTC)