Louis Erbkamm knows his way around Arnis, the smallest town in Germany, but he’s never set foot in it.
I know where the shops are. Where the boats are… I know the city pretty well, but I haven’t been there yet.
Louis Erbkamm, maintainer of Arnis
Arnis is also the name of his open source project, which takes real-world data from OpenStreetMap and other sources to turn places you know into Minecraft worlds you can freely explore. Since Louis started Arnis in 2022, it’s reached close to 900,000 downloads from GitHub and about 70 contributors.
Two weeks and a slow prototype
Louis grew up playing Minecraft and started coding at 13, always looking for ways to bring code into the game. Arnis began as a fun diversion combining Minecraft with geospatial data, and it went on GitHub, where he already kept his side projects. He finished the first prototype within two weeks while on a break from school.
That first version was Python written by hand, built only on OpenStreetMap, and generating a town took a while. He needed somewhere real to test it, so he looked up towns in Germany, where he lives, and found Arnis. A small town helped while early generation was slow.
Arnis has a lot of buildings, it has streets, it has waters, it has all kinds of different elements that are useful to test with.
Louis
The project didn’t have a name yet, so it borrowed the town’s unique moniker.
A community that brings its own ideas
When Arnis added elevation, its worlds stopped being flat, and geospatial specialists from all over showed up with ideas on how best to integrate it. They started discussions on their own, and Louis says that’s exactly what he needed.
Bigger calls happen in the open too: before porting Arnis from Python to Rust, Louis opened discussions on GitHub to hear different perspectives. Contributors have since translated Arnis into about 20 languages and built major features of their own.
The best thing that has happened to me is essentially this big community on GitHub to see actually people from all kinds of different fields coming together to work on something that I started as a side project.
Louis
How a trash bin gets into Minecraft
Some features start on a walk. Louis noticed how many trash bins there were in his city, and there were none in his generated worlds.
Minecraft has no dedicated bins, so he took the question to the community, and together they found a block that fit. Placing one follows the same path as everything else: for the area a user selects, Arnis queries OpenStreetMap for every mapped element, then looks up each element’s coordinates and type.
If an element isn’t mapped, Arnis can’t place it. For structures too detailed for the map to describe, like the Statue of Liberty in New York, or Christ the Redeemer in Rio de Janeiro, Arnis converts 3D models into Minecraft blocks.
One maintainer, a stack of pull requests
As the sole maintainer, Louis reviews every pull request himself, and they stack up. He usually spends evenings or weekends working on Arnis, which means the community has to wait for him to be done with work for the day.
He uses GitHub Copilot to get an overview of open issues and bugs from the latest release, see how many people are running into them, trace where a bug came from in the codebase, and create a fix. Since he brought AI into the project, he says, code reviews and documentation have both increased.
I could delegate those annoying and boring tasks to Copilot, while I could still have a look at those really cool topics that are related to the development of it.
Louis
Sub-agents that look for regressions
Big features arrive as big pull requests.
Louis opens a large pull request in the GitHub Copilot app for a first overview and a performance review, with Copilot running in the background looking for small changes that would cut memory usage or generation time.
It takes just one wrong calculation in street lights, for example, to make the generation time of an entire city much slower.
Louis
He also keeps a mental list of the areas of the codebase that need extra care whenever someone changes them, and he has written the same warnings out by hand over and over.
I’m starting a few sub agents with the GitHub Copilot app to have a look specifically at those cases, and to come up with corner cases to test to make sure that we do not introduce any regressions into new releases.
Louis
He likes that the terminal, his files, the code changes and the pull request all sit in one app next to the chat.
An unexpected classroom
Louis’s favorite use of Arnis is in schools, where teachers have generated their city or a neighborhood park.
Some turn it into a contest: every student starts from the same generated area, improves a nearby park or playground using Arnis and Minecraft, and the class looks at the results together.
Where Arnis goes next
Recent releases have gone beyond the bounds of Earth, adding the Moon and Mars. Louis wants Arnis to stay easy to use while getting closer to reality, with more detail in less time, and he would like to see it in more schools.
Start with your hometown
Download Arnis from github.com/louis-e/arnis, pick a place on the map, choose where to spawn, and click Start Generation: within a few minutes, the world is ready to open in Minecraft. Louis suggests a place you know, like your hometown or somewhere memorable you’ve been, such as the Grand Canyon or Niagara Falls. Then look for what’s missing.
So maybe you see a bench that was not generated even though it is there.
Louis
Map it on OpenStreetMap, or tell Louis if it’s a bug and he will fix it.
The post Arnis turns any place on Earth into a Minecraft world appeared first on The GitHub Blog.