Monthly Archives: December 2021

Seven Things for December 13, 2021

  • Want more metaverse? Attend the Real-Time Conference, free, happening right now.
  • I3D 2022 Call For Participation is up. It will be online (sad face emoji) May 3-5. Graphics Interface CFP is also up, conference is May 17-19.
  • An entertaining rant in the Communications of the ACM (of all things) about why you shouldn’t ever look at patents.
  • If you want to use paint brushes on your iPad, make a Light Strokes system. If you don’t, the demo reels are fun to watch.
  • This article surprised me, about ten image formats the world allegedly forgot. Checking my own system right now (using the wonderful, free Everything finder on Windows), I see hundreds of BMPs loaded this year used in various applications, including UE4, Visual Studio, Maya, and 3DS MAX; TGA gets extensive use in Minecraft PBR resource packs; VRML is mostly dead but is still commonly used in the 3D print field. Some I agree with: TIFF is happily almost gone, good riddance (some traces in Houdini, Maya, and others – still seen for some terrain files on the USGS site, though (update: Angelo Pesce says it’s used in Photoshop still and sometimes is preferred over PSD. The horror, the horror.)); PCX is essentially defunct (the wonderful G3D uses it extensively and that’s it); AFAIK Maya and no one else uses IFF (and Irfanview can’t open them anyway).
  • Orano’s site is quite impressive graphically, running in the browser. I don’t particularly care about or even know what this company does (nuclear mumble something?), but I like that they splashed out for cool interlinked graphical tidbits. Try the “Live the Experiences” menu in the upper right, and scroll down to the bottom of each page for an interactive demo.
  • Townscaper is lovely, and a basic version is now free in the browser. Two minutes of semi-random clicking gave me this:

Mineways: Lessons Learned

Mineways is my little hobby project. It exports models from Minecraft, for making animations or for 3D printing. It’s just turned 10 years old, and has been downloaded over a million times, from what I can gather (about 300 downloads a day currently). So, I thought I’d summarize some of the lessons I’ve learned from developing this interactive app.

Useful error messages: The most boring part of any interactive application, but vital. Recently I received the error message “An Error Occurred Installing iOS 15 on iPhone.” This is a prime example of “not useful.” Googling around and wading through the “buy our software to fix this” come-ons, I found the problem was maybe that there wasn’t enough memory free on my phone. Indeed, one Google Photos purge later, that was it.

Instead of sending your users on a possibly fruitless search expedition, or them just giving up on your software, spell out what’s going wrong.

I’ve noticed a tendency to have extremely terse error messages, installation instructions, and explanations in general. It’s as if every word costs us a dollar (hmmm, I guess it could, with localization…), so it’s like we play a game of making the messages as short as possible. Or we’re embarrassed to fully explain the solution, “everyone should already know that; I’ll feel I’ll look dumb and will insult my users if I write it all out.” You aren’t dumb, and no you won’t.

Over time, the error messages in Mineways have gotten longer and longer, as new problems get reported by users. Really, I should change a few to optionally take the user to a web page describing what to do.

As a user, I’m happy to get as much information as I can. Please give it to me, I won’t mind. I could stop this post right here, as I’d say that’s the main thing I’ve learned.

Eat your own dogfood: I’m lucky in that I actually want to use Mineways, that’s why I originally wrote it. Using your own software makes you realize things that could be better. This can unfortunately sometimes lead to feeping creaturism, as more and more crazy options get added, to the point where the author is the only one who understands how to use their program. If you can leave the basics in place and make the frills and power-user features available but not distracting, great.

One example for Mineways is basic scripting. Every UI action has some simple, English script command for it. Nothing clever, very little to learn, no Python or even loop constructs in the scripting. But for power users, if you want to do a bunch of exports in a row, e.g., tiles of terrain, it’s invaluable. Or if you can put a script on the command line if you want to start Mineways up with certain export options or viewing a particular world. This system doesn’t get in the way of most people simply using the program as-is. I made scripting in good part for myself, so that I could restart where I left off, and also do at least some minimal QA testing before making a new release. But I quickly realized it could help users in many other ways.

Professionals: consider paying someone to use your software for some real activity, not just unit testing, and have them report bugs and annoyances. If it’s a graphics app, bonus: you get a cool demo/video/stills out of it.

Eat others’ dogfood: And pay attention to what you’re eating. It took me a mere 9.5 years to realize I should add drag and drop to Mineways. Drop a level.dat file, Mineways figures out you’re opening a Minecraft world. Drop a terrain*.png file, you’re assigning a resource pack. Drop a saved OBJ, VRML, or USD file, you’re wanting to restore all the export setting you used to make that model file. Drop a script, run the script.

I realized I should add this simple feature (40 lines of sloppy coding – maybe an hour of work learning how to add the event and respond to it) only after doing some recent testing on Cinema 4D. That package’s UI is just wonderful in some areas. Blender is by far the most popular “consumer” of Mineways’ output (both are free, and amateurs – in the best sense of the word – are the main users), but has poor flow in this area. I was blinded by Blender’s involved model import system: File | Import | select file type, paste directory into the dialog, choose model file. Cinema 4D just loads whatever you drop on its viewport, as best it can (perhaps popping up a dialog as needed). I now use this drag and drop feature in Mineways all the time.

Another example: In trying “the competition,” Jmc2Obj, I found I should export to OBJ model files the “map_d” alpha texture for the material. I had not done so for many years, because support in other applications was spotty, sometimes worse if map_d was included (and, to be honest, because long ago I found Jmc2Obj literally unusable, I couldn’t get an export out of it to save my soul; it’s now a lot better). I had also convinced myself that “hey, there’s an alpha channel in the four-channel PNG file itself, that should simply be enough – it should get used.” Some applications indeed use this alpha channel without fuss, but others (looking at you, Blender) do not. Seeing that Jmc2Obj exported map_d, and testing a bunch of modern model-viewing applications, convinced me to do the same (I actually had to finally build and patch G3D, a model viewer I otherwise love and recommend for Mineways preview, as setting “map_d” to an RGBA PNG file in unpatched G3D would use the red channel instead of the alpha).

Keep in contact: I have a Google Group and Minecraft Forum thread for announcements, Github for issues, a subreddit and Discord server for questions, betas, and other stuff – users can take their pick. I also reveal my email address (gasp! (it’s erich@acm.org)) on the Mineways site’s contact page. 15 years ago it was perhaps unwise to expose your email address anywhere, as you’d be asking to be a spam magnet (I still did so and lived to tell the tale). Nowadays Gmail’s filter and other services have become great at weeding out the junk. I was a bit leery of adding a Discord server, but I’m thrilled to find that a few other users have enjoyed helping out, answering common questions.

So, hobbyists, stop hiding as SpaceTurtle258 and not giving users any way to reach you. Pros, can your users easily ask for help? Can they find the locations of the support, forum, live chat, email, and whatever other services you offer? This information should be linked in some form from every web page on your site. Same thing for you, blog writer or webmaster – people should be able to contact you. If you don’t want to hear from users, start to question your life choices.

That’s it (especially the installation instructions and error messages!). Mineways’ code is nothing brilliant. Could be a lot better, but it’s free, and a hobby. I try to make it work reasonably well and be user friendly. It does one small task – model export – and does it in a fairly reasonable fashion. Happily, it’s also been extremely useful in my paid work for testing out and learning about the new USD scene format, for example.

I like finishing posts with a little eye candy. So, here, lava refracting through some water (from some recent test images):

JG-RTX resource pack, USD output, path-traced in Omniverse Create – all free