The Minecraft Overviewer

a high-resolution Minecraft world renderer with a LeafletJS interface


Status of the new beta, and comments on Anvil

Thanks to those that have tried the new beta and given us feedback. We've already fixed several bugs; things are shaping up nicely!

About the new "Anvil" level format, we will be supporting this, but it is a rather hefty change. Our tentative plan is to make a new branch off of the beta "rewrite" branch for the anvil level format. Once the anvil format makes its way out of the Minecraft "pre-release" stage and into a proper release, we will merge the branch of our code and the new format will be the only one supported from then on.

We currently don't have any plans to support the Anvil format in the old "master" branch. We are not against it, but I don't foresee anyone stepping up to do the work. This means there is a deadline for those of you to convert your config files and setups to the new config format if you want to stay up to date. We believe the new config format is not complicated enough to be a big barrier for converting. If you need help please see us in IRC!

We also currently don't have any plans to support both world formats in one code-base. The changes it requires are quite extensive and I don't see that as being a very feasible option. Thus, if you want to continue running an older version of Minecraft with the older level format in the future, you will be blocked from updating Overviewer past a certain point. We will probably end up leaving a Git branch or tag at the last commit that supports the old format for those that don't want to upgrade. However, as time goes on we think most everyone will end up updating (just like we did for the old chunk format when it upgraded to region files)

Again, this is our tentative plan. Things may still change depending on demand or who's willing to do what work or how difficult a task turns out to be.

As always, happy Overviewing!

-brownan

(permalink)

About the new Config File format

Edit Mar 3 2012: The "anvil" branch has been merged into master. This post edited to reflect that.

Edit: Mar 1 2012, updated this post to reflect the new "anvil" branch.

In our efforts to rewrite the internals of The Overviewer, we have stripped overviewer.py of almost all its command line options and opted to require everything but the simplest renders into a new config file format. This post goes over the rationale and how to get started with the new format.

Why?

Before it was possible to run the Overviewer without a configuration file at all. Every option was on the command line, and the only thing you needed the config file for was custom rendermodes.

But as we were thinking about supporting multi-world, where a server may run many Minecraft worlds, we wanted Overviewer to handle options in a more general way. Some options may only apply to one render of one world, others may apply to all renders.

We briefly considered how to support this on a command line, perhaps with something like this:

./overviewer.py --world=/path/world1 --opt=1 --world=/path/world2 --opt=2

but this seems cumbersome and confusing. It seems obvious that a more structured method of configuring your renders is needed.

The Config File

So here's the solution we came up with. It lets you individually specify "renders", which is a rendering of a world with a set of options. You can specify multiple renders of a single world with different options, renders of different worlds, etc. We tried to leave it as customizable as possible.

The configuration file is, as before, parsed as a regular python file, meaning you can put any extra complicated logic you want in there. After it's parsed, it expects three things to be defined:

  • a dictionary called "worlds" that maps world names to their paths on disk.
  • a dictionary called "renders" that maps render names to a dictionary of options.
  • a string called "outputdir" containing the path to the directory to place the output

I have written up further details about the config file on the documentation site: http://docs.overviewer.org/en/latest/config/. Head there and have a look over it to get an idea of what's possible. I don't want to repeat what's there, and I think that's a pretty good place to start.

Converting your existing setup to a config file

Most likely you have some setup where you run overviewer.py from a cron or on a schedule with a bunch of options. Let's say you're running this:

overviewer.py -v --north-direction=upper-right --imgformat=jpg --rendermodes=smooth-lighting,smooth-night /path/to/myworld /path/to/mymap

To migrate to the new branch, you should first create a config file. It can be named anything you want. If your editor has syntax highlighting, it will be helpful to give it the extension .py, but it's not necessary.

Say you create "myovconfig.py". This is what you'd add to that file to duplicate your setup:

worlds["myworld"] = "/path/to/myworld"

renders["dayrender"] = {
        "world": "myworld",
        "title": "Daytime",
        "rendermode": smooth_lighting,
        "imgformat": "jpg",
        "northdirection": "upper-right",
        }

renders["nightrender"] = {
        "world": "myworld",
        "title": "Nighttime",
        "rendermode": smooth_night,
        "imgformat": "jpg",
        "northdirection": "upper-right",
        }

outputdir = "/path/to/mymap"

Note: the 'world' option was named 'worldname' up until recently.

Then you run Overviewer with this command:

overviewer.py --config=/path/to/myovconfig.py

Yes, it is a bit more verbose, but you can see how it is much more customizable than before. You can change the options for the individual renders, add renders for other worlds, add additional renders for the same world (perhaps with a different north-direction!) It's up to you!

As always, join us in IRC if you have any questions!

(permalink)

Windows Noob Guide

I've written up a guide that assumes next to nothing about windows command prompts.

The Overviewer is a command-line program, and that is a barrier for a lot of people. While we have to compromise at some level -- not all the documentation can be written assuming no command line experience -- we do want to lower that barrier.

So with that, I present the first draft of the Windows Noob Guide to The Overviewer. Hopefully that will be enough to get more people started.

We love feedback. Please join us on IRC and help us improve the documentation!

About a GUI: We would love to make a GUI frontend for The Overviewer, but nobody has put forth the time and effort yet. Several people have started a GUI in the past, but nothing has materialized. If you are interested in helping us out on this front, please join us in IRC and discuss your ideas.

(permalink)

Help us test our new beta

Edit: Mar 3 2012: The new beta has now been merged into master, and as such, some parts of this post (like how to try it out) are outdated. See this post.

Edit: Mar 1 2012: updated this post for the Anvil format. -brownan

We've been working hard for the last two months to almost completely re-write a lot of the internals of The Overviewer. And now we need your help to test it out, and give us feedback!

Why have we done this?

You may be wondering why we took 2 months off from regular development to rewrite code that worked just fine. As some may have guessed, code that evolves over time tends to accumulate cruft and gets more and more difficult to work on as time goes by. Our code has been evolving for over a year now, and while it started out relatively clean, now it's not so much. As new features were added, the code strained to accommodate them. For example, the customizable north direction feature required adding a small "shim" at just about every layer of code, which is prone to cause problems because it adds complex dependencies between all layers of the program.

In short, the code was becoming increasingly difficult to work on, and more importantly, it was becoming less fun to work on. So we did what all programmers dream of doing but can't because of practical deadlines and such: re-designed most of the core components almost from scratch.

In this re-write we have completely re-thought the way all the internal components fit together and how they interact. The new interfaces between components are much cleaner and the clean separation of responsibility makes the code much easier to work on: easier to add new features, easier to fix bugs, easier to maintain.

Most of that is of no concern to end users though; people that just want to use Overviewer don't care how it works. Well, there's something for you too! Along with the rewrite we have many new features and potential features that were either impossible or prohibitively difficult before!

Here's the new fun features:

  • Multi-world! Render and display all your worlds with one unified interface.
  • Along with that, Nether and The End support!
  • Fixed north-directions to the new sun direction. (Finally!)
  • Completely re-designed configuration file format, more customizability!
  • Per-render configuration options - render one world multiple ways, render all your worlds one way, or some complex combination. It's up to you!
  • Truly customizable rendermodes: compose your own rendermode from our built-in rendermode primitives.
  • New: Anvil support
  • New: Built-in Biome Support!

Here's the new potential features -- features that are not in yet, but should be "easy" to implement with the new architecture (if there's demand for these features, they will get implemented!):

  • Configurable, pluggable caches. Configure the memory usage or even offload your cache to memcached
  • Render-farm support: get an entire cluster of machines to render your worlds!
  • Support for rendering of smaller portions or subsets of your world, and even arbitrary world transformations (Render heights 0-32, cutting off everything else? Sure! Render your world upside down? I can't imagine why, but why not!)
  • More configurable logging

We are releasing this as a "beta" at this point. The new branch is not complete yet. We still have these items to re-implement:

  • points of interest (signs, etc)
  • Overlays
  • Miscellaneous options like textures-path, skip-js, web-assets, no-signs

Additionally, it is not yet polished. For example, the output may contain lots of debug lines that got left in, any error messages may not be very friendly, and of course it may contain bugs.

But we feel like it's ready for people to try out. We're ready to start getting some feedback and some help on finding the last few bugs.

If you would like to try it out, keep reading, but know that things may still change in backwards-incompatible ways. Remember that this is a "preview" and you'd be helping us test it. It's not done yet, but we feel that it's complete enough to start soliciting feedback.

We're not building binary packages for the new branch at this time. If you would like to try it out, clone the repository and checkout the "anvil" branch:

git clone -b anvil git://github.com/overviewer/Minecraft-Overviewer.git

If you don't have git, you can also download a source tarball:

https://github.com/overviewer/Minecraft-Overviewer/tarball/anvil

I've rewritten the documentation to go over the new configuration file format. See the running and config file pages of the docs to get started.

And of course, let us know in IRC or by filing an issue on the Github issue tracker if something doesn't seem right.

A follow-up post will go into more details on the new features, notably the new configuration file format. Happy Overviewing!

(permalink)

The Overviewer Update Blog

Okay, so we need a place to tell our community about updates and to give everyone a place to follow the project. We have some big things coming soon, so everyone add this to your feed readers and bookmarks!

(permalink)