Project Soon

I have made too many projects in my lifetime, and thought that a repository is not enough to handle support for them. I also believe that to be able to dump my mind from time to time keeps myself on track. I make projects because I like to help people with problems that may or may not be an issue, now or in the future.

Experiment

An experiment in Computer Science usually is a small trivial program that runs a larger complex program. There are tons of ways to execute an experiment. Most end up checking how long it takes to run a specific task, and compare between different algorithms or change the size of data. Another is the amount of occurrences of a specific event. Most of the time it is difficult to determine what metrics to measure, so you end up taking several of them in different locations and later create graphs which you can pick whether you think they are useful for your study.

Light Flood

I said I would not do this, but then I thought it would be possible so I spent a couple of hours, i.e. too much time, to implement this for Bedrock worlds: block light. As I mentioned previously, Bedrock worlds does not store light maps as Java does. This means that I need to manually generate the lights for night mode. I thought it would be a simple algorithm: Find min-max on world.

Ambivalence

I am a procrastinator by heart. I often start something, and whenever I feel that something is off or not fun enough, I will deviate from the subject, find something else that is easier, or just stop completely. Sometimes I plan to do something, but it is being postponed for months, even years, because I do not feel like doing it. For this paper, I do like the topic in itself, but there are some issues that makes it a bit difficult to complete:

FOSS and Licensing

I have since I wanted to make this program open sourced contemplated over the best licensing for it. Not only have I skimmed through several license types, but also discussed with a multitude of people (sadly no lawyer). Just recently I went through what the existing mappers, those being released as FOSS, had and found three licenses: GPLv3, MIT and BSD. I also figured other issues that I needed to settle with licensing.

Minimalistic Saving

I forgot to mention that while Bedrock tries to avoid saving sections in order to reduce storage footprint, it also avoids saving certain data, like light maps. This makes it a whole lot harder to determine light in the world, and I rather avoid generating light, even if it should be straightforward (find light source; breadth first search with reduction and light conditional check), but I guess I have no other choice.

Description

Last week I spent most time writing the experiment and figure out what metrics matters. I have tried to dedicate myself to write at least a section each week to keep up with the schedule, but sadly I barely managed to write down 3 sentences. I do hope that it will eventually flow better. I recognized that I have not written what the project is about. I first thought that the brief explanation in PixelMap would describe this, and as it will definitely change over time, it could be confusing over time.

Init commit

Two weeks ago I sent in an application that describes what I was going to write about. It was denied, so the next week I had to skim through a bunch of articles to find references and then write down in more detail what the paper was about. It took me almost the whole week, but finally it was approved, so I immediately began building the folder and file structures that I’m going to use the next over two months.

PixelMap 1.20

It has finally been released. I spent about an hour to just fix all compilation errors that popped up in Windows, but now it is done. I expect several bugs, and stability going through the roof, due to how Bedrock works, but at least I can focus on other things, like fixing bugs, optimize, stabilize and additional features.

Log Format and MCBE Saving Mechanics

While the log format is rarely used in MCBE, it still is used to add an another layer to reduce overhead while keep the integrity of the database in rare cases of sudden shutdown. I previously ignored it, as the worlds I saw never had any data in the log file anyway. However, it may include certain updates which adds additional information to the world which was added recently, especially if you stopped playing right after you did some changes to your world.

Quick Update

I went through and cleaned up the code for Bedrock a bit, and changed some parts of the processing when rendering, and that resulted in both 5 times less memory used and 3 times faster processing. I am pleased with the result, because that lines up perfectly with Java Edition. I still need to add in additional functionality before release, but this makes it completely usable for general use.