Trying to eradicate waste from the household is hard! I mean beside obvious stuff, like soap instead of shampoo, it’s literally everywhere. I was just introduced to a more unexpected solution by ‘Dimicator’, who’s work I’m following closely for some years now. Roland suggests waxed cloth even in the fridge and not just for or – a very solution:

https://exciting-pioneer-6049.ck.page/posts/historical-crafts-natural-raw-materials

He also helpfully explains how to waxed cloth: https://www.patreon.com/posts/90314554

No first hand experience on this yet but tbf we’re already _not_ wrapping food in _single use_ plastic anyway. It is intriguing though. I mean people did fine without plastic for food supplies for centuries, no? 🤷

Visited the abandoned silver/copper/barite mine in Hallwangen, 72280 Germany. It’s a rather interesting one as it dates back to times and is still excavated by voluntary workers. The earliest record found dates back to 12C and the upper mining gallery “Himmlisch Heer” shows markings that are the result of hand tools while the second gallery “Irmgardsglück” has holes for explosives drilled with machines powered by compressed air. That part also has wider tunnels while the upper part is mostly crawl spaces.

The mine was abandoned and reopened several times for different reasons. The last activity was in 1912 and some stuff like an old rail for push carts and parts of electric installations can still be seen to this day.

I liked especially that we were allowed to walk through the mine at our own pace. I remember a visit to another mine where we were ushered along so fast that the children had trouble keeping up. Not so in this case. Our guide was very friendly and described everything in an exciting way so the children would even pay attention 😀

Speaking of, the guide noticed my interest in the medieval part of the mine and recommended me the De Re Metallica (yes, like the band 🤘) by Georg Agricola, which is apparently a treasure drove on historic mining operations (and myths) and lucky me: A translation in English is available on Project Gutenberg (as well as the original Latin text) – figures included.

I can totally recommend a tour. We got to see a lot of interesting stuff packaged with fascinating stories and explanations. Been to some mines in my life already but seldom did I get to see so many details in such tiny tunnels. Granted, most mines were rather modern and huge drilled exclusively with modern machines.

If you visit don’t forget to greet the tunnel at the entrance with the classic “Glück auf!” shout of the local miners for safe passage and fortune.

Links:

https://www.bergwerk-hallwangen.de/

https://en.wikipedia.org/wiki/De_re_metallica

https://gutenberg.org/ebooks/38015

https://echo.mpiwg-berlin.mpg.de/ECHOdocuView?url=/permanent/library/5CTEBAHQ/index.meta&tocMode=figures&viewMode=text&pn=308&viewLayer=dict

Geheimnisvolle Welt des Mittelalters by Karolin KüntzelKarolin Küntzel
Wie sah eine Ritterburg von innen aus? Welche Kleidung trugen die Menschen? Mussten die Kinder damals auch zur Schule gehen? Dieses Sachbuch ab 8 Jahren nimmt Kinder mit auf eine aufregende Reise in die spannende Welt des Mittelalters! Atemberaubende Bilder und packende Texte erwecken die geheimnisvolle Epoche wieder zum Leben.
Geheimnisvolle Welt des Mittelalters

Eyed that for a while already and got this yesterday. It’s a children’s book about medieval times with illustrations by @kristinagehrmann@mastodon.art

It’s not like most children’s books and also has chapters about uncomfortable topics, like the plague, and is apparently not full of Holywood bs.

ISBN: 9783817423545

Working on a loosely based on NZ-43 (14C). It’s approximately 12m long 🙂

First time I’m trying my luck with a vessel and not a building. The curving is difficult to realise in tho.

It started life in the old Java version of the game because the new Unity version has no posters yet. I had to segment the plan of the cog (carved in a very bad resolution from a PDF) into several in-game posters that had to be aligned in-game again to get the proper measurements.

After that I moved the blueprint of the frame over to the new version and started putting planks on it. A cumbersome process during which I learned a lot. I’ll probably make another and more improved hull based on the gathered know how.

I also fell straight into another “not yet implemented” trap. RisingWorld has a flip command to mirror an object and I kinda assumed this would work with blueprints too. It does not. And I was really not looking forward to put plank on both sides of the frame.

Luckily most of the leg work to read the binary blueprints was done by @paulevs before who released https://github.com/paulevsGitch/BlueLib under the MIT license. It has been a while that I touched Java but I could come up with some code of my own that would flip the planks only (I used rounded cubes for the planks exclusively) making use of this lib and the very first try at it looked promising already.

Here is the source I came up with in case you wonder:

package blueprint.flip.maybe;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import paulevs.bluelib.blueprint.Blueprint;
import paulevs.bluelib.blueprint.BlueprintIO;
import paulevs.bluelib.blueprint.element.BlueprintElement;
import paulevs.bluelib.blueprint.element.BlueprintElementType;

public class App {
    public static BlueprintElement cloneBlueprintElement(BlueprintElement el) {
        BlueprintElement element = new BlueprintElement(el.type);
        element.setPosition(el.posX, el.posY, el.posZ);
        element.setSize(el.sizeX, el.sizeY, el.sizeZ);
        element.rgba = el.rgba;
        element.setRotation(el.rotX, el.rotY, el.rotZ, el.rotW);
        element.setSurfaceOffset(el.surfaceOffsetX, el.surfaceOffsetY, el.surfaceOffsetZ);
        element.texture = el.texture;
        return element;
    }

    public static Blueprint readBlueprint(String pathname) {
        File file = new File(pathname);
        Blueprint blueprint = null;
        try {
            blueprint = BlueprintIO.read(file);
        }
        catch (IOException exception) {
            exception.printStackTrace();
        }

        return blueprint;
    }

    public static void main(String[] args) {
        final Blueprint blueprint = App.readBlueprint("/path/to/Blueprint-flip-maybe/cog_base_split_1670726695.blueprint");
        System.out.println("Opened " + blueprint.name);
        System.out.println("Blueprint has " + blueprint.elements.size() + " elements");

        ArrayList<BlueprintElement> elements = new ArrayList<BlueprintElement>();

        blueprint.elements.forEach(element -> {
            if(element.type == BlueprintElementType.ROUNDED_BLOCK) {
                System.out.println("T: " + BlueprintElementType.getElementName(element.type));
                System.out.println("pX: " + element.posX + "pY: " + element.posY + "pZ: " + element.posZ + " rX: " + element.rotX + "rY: " + element.rotY + "rZ: " + element.rotZ);
                BlueprintElement el = App.cloneBlueprintElement(element);
                el.posX = el.posX * -1;
                el.rotY = el.rotY * -1;
                el.rotZ = el.rotZ * -1;
                System.out.println("pX: " + el.posX + "pY: " + el.posY + "pZ: " + el.posZ + " rX: " + el.rotX + "rY: " + el.rotY + "rZ: " + el.rotZ);
                elements.add(el);
            }
        });

        elements.forEach(element -> {
            blueprint.elements.add(element);
        });

        blueprint.name += "_flipped_X";

        File outputFile = new File("/path/to/Blueprint-flip-maybe/" + blueprint.name + ".blueprint");
        try {
            BlueprintIO.write(blueprint, outputFile);
        }
        catch (IOException exception) {
            exception.printStackTrace();
        }
    }
}

I’m kinda happy with the result. This Lib also allows me to change the texture of the elements so I don’t have to worry how the used texture during the construction may look in the end.

Now onwards to improve the curves. I really wish for a bend mode where the beginning would snap on to an existing object and the opposite plane could be moved around individually.

With (Unity) improving a lot lately we’re feature wise almost on par with the old Java version again. Due to my hobbies I’m playing on the server https://medievalrealms.co.uk/ where I usually construct buildings based on specific periods according to my understanding of timber-framed constructions. Which may not be the best to rely on but hey, it’s a game after all.

One of the features still missing is an ingame map. We do have the compass already though and with debug enabled we even get an exact position on the current map. And the new maps are huge! And since we’re building here in multiplayer it’s no wonder that this is a dire missed feature to get an idea where the others are and what they are building, because it’s not fun navigating with X,Y,Z alone to visit other players (and keep note of where the own spot is located).

So I was intrigued to see that the player @Bamse did what gamers tend to do when a feature is missing. They start some sort of helper app (or wiki or whatever). This resulted in a Cloud map project at https://qgiscloud.com/Bamse/MapMedievalRealms/ where players from the same server may add POIs and do the leg work of surveying the “new” world.

The only drawback (haha. sorry.) is: It’s a PITA to do the surveying because stopping every few meters to note down a bunch of coordinates takes hours! Someone had to do this though, because “my” isle – a piece of rock I randomly stumbled over after the latest server reset – was still missing! And while I clocked roughly ~700h on this game already I was not going to do that. I’m a programmer – which equals to lazy in my opinion. So I started scripting and after a few minutes came up with the following still crude solution:

echo "" > move.log
while true; do
	gnome-screenshot -w -f /tmp/snapshot.png && convert /tmp/snapshot.png -crop 165x30+905+975 /tmp/snapshot-cropped.tiff && tesseract /tmp/snapshot-cropped.tiff - -l eng --psm 13 quiet | awk 'match($0, /([[:digit:]]+[.][[:digit:]])+.([[:digit:]]+[.][[:digit:]]+).([[:digit:]]+[.][[:digit:]]+)/) { print substr($0, RSTART, RLENGTH)}' | awk '{ printf "%0.0f,%0.0f,%0.0f\n", $1, $2, $3}' >> move.log 
	sleep 2
done

This surely can be improved a lot but… minimum viable product. We’re still talking about a game. Here is what it does:

* Take a screenshot of the active window (Rising World while playing)

* Save it to /tmp (that’s in my RAM disk)

* Crop out the coordinates and convert it to tiff using `imagemagick`

* Run `tesseract` for OCR detection

* Pipe the result to awk and use a RegEx to identify three numbers

* Reformat the 3 numbers (remove the precision) and dump it in as csv-like log

* Sleep for 2 seconds and repeat until terminated

And in case you wonder why I used gnome-screenshot: I’m on and the usual suspects written for X do simply not work. I did recompile gnome-screenshots tho to disable the annoying flashing though so it’s silent now.

Why the awk program? Well, tesseract is good but the raw data looked something like this in the end and the RegEx cleans that up somewhat:

serene ep)
9295.2 95.4 2828.0 |
9295.2 95.4 2828.0 |
9296.4 95.4 2828.5 |
nn
9303.1 95.4 2838.5 |
9295.0 98.4 2857.65
9289.1 98.7 2868.1 (7
9296.5 96.7 2849.0 |»
9301.1 95.4 2835.5 |
9301.1 95.4 2835.5 |
nn

So I put this to a test and jogged around “my” isle and here are the results:

One(!) data point was misread during the ~15 minutes run. Not too shabby! That could easily be fixed manually and who knows… mebbe I’ll improve on the script to check for implausible spikes like that at some point.

I demoed the script to other players on the same server and some already started investigating into solutions to adapt this script to Windows. Just don’t ask me how to do that – I really wouldn’t know 😛

Updated 10th Dec 2022: A solution to do the same on Windows PC appeared on https://wiki.calarasi.net/en/public/medievalrealms/ocr-coordinates

I was delighted to read about the digital reconstruction of a chain mail based on an exhibit next door.

The piece in question (exhibit F 14,01-2) was found in a grave near 72501 Gammertingen, Germany and consists of ~45.000 iron pieces. It’s well preserved and can be viewed in our local state museum or online at https://www.landesmuseum-stuttgart.de/sammlung/sammlung-online/dk-details/?dk_object_id=1280 – both basically next door for me.

The interesting part is that it’s a mix of riveted and stamped rings, also known as “Roman Mesh”. I own a similar piece myself and I’m fascinated by this type of mail.

This pattern was digital reconstructed using Blender and it’s polygonal modelling functions and uploaded to SketchFab under CC license by it’s authors:

Aleksei Moskvin (Saint Petersburg State University of Industrial Technologies and Design) https://independent.academia.edu/AlekseiMoskvin

Mariia Moskvina (Saint Petersburg State University of Industrial Technologies and Design) https://independent.academia.edu/MariiaMoskvina

Martijn A. Wijnhoven (VU University Amsterdam) https://vu-nl.academia.edu/MartijnAWijnhoven

It can be viewed in 3D with a modern browser at https://sketchfab.com/3d-models/gammertingen-mail-fabric-3d-reconstruction-dd52c61041f04f27a613488893082e29

So dear game devs, there is no longer an excuse for shoddy chain mail patterns in games – here it’s served on a silver platter 😛