Cubitect / cubiomes

C library that mimics the Minecraft biome generation.
MIT License
556 stars 98 forks source link

Biome Colors after AMIDST #112

Open EtlamGit opened 8 months ago

EtlamGit commented 8 months ago

Hi, like most projects you have used AMIDST colors as long as they where alive. But as they stopped further development after 1.17, all Minecraft related projects have the issue to select nice Biome Colors. And potentially we all will drift away with our color selections and users will get confused with different Biome Colors for each tool.

I try to harmonize Biome Colors for new biomes. Do you have interest to join such harmonization round?

Cubitect commented 8 months ago

I'm generally not opposed to the idea, but there may be a few issues to consider.

The first issue is agreeing on the biomes themselves. In 1.18 the ID/name of several biomes changed together with the new world generation, so it wasn't always clear which biomes should be considered new. With Cubiomes I decided to only consider biomes as new if they did not have a counterpart when migrating a world from 1.17 to 1.18. Luckly Chunkbase seems to use the same concept, or at least the colors appear consistent for the affected biomes.

The challenge is to create a color mapping that provides sufficient contrast to differentiate the biomes while keeping them recognizable. Amidst did a suitable job at this for the old world generation and its colors are widely known. Unfortunately, even without the new biomes, their color table is not well optimized for the 1.18+ generation. For example the color of sparse_jungle (aka jungle_edge) and bamboo_jungle is too similar in my opinion. With the old generation this did not matter much because of the biome distribution, but in 1.18 it is very common for large areas of sparse_jungle to appear next to bamboo_jungle, and I appreciate them being recognizable at a glance.

In Cubiomes there are several biomes where I've subtly deviated from Amidst's colors to improve the contrast, while keeping the colors familiar. I find it important that biomes always have a sufficient contrast in color to easily distinguish them. I'm not sure how Chunkbase decided its colors for the new biomes, but I'm having a hard time telling some of them apart:

Chunkbase: chunkbase_13666381

Cubiomes: cubiomes_13666381

Cubiomes' color table can be found in util.c. I have refactored the code so the differences to Amidst should be more clear. I do not think the colors are perfect, but it's the best I could come up with after a day or two of tweaking, while staying as close as possible to Amidst and compromising between the old and new world generation.

EtlamGit commented 8 months ago

I totally agree to your comments.

As I also struggle with some of the new colors used by ChunkBase, I recently developed a better distinguishable set together with my color artist team. You can find my current Biome Color set here. I did not change the AMIDST color for Biomes that just got renamed. But I would be open to it, when they get better recognizable. Right after 1.18 I started with pure random colors for new Biomes, in the hope AMIDST would come back. But as this seems unlikely nowadays, I took a design process similar to your approach: for each new Biome we selected an initial color based on the general look and typical blocks in that Biome, afterwards we tried to get neighboring Biomes more recognizable. And I think the result is also relatively similar to yours.

ChunkBase already stated interest to join this harmonization approach, so the colors there could be changed. They also did not change the old colors.

My ideal goal of course would be that we find colors that match all our needs and that we all like. But if we do not agree for a Biome it would also be fine to just document the difference. I already started to document the current differences, but that is just the starting point with the hope we will find a way to align it a bit better. You can find that GitHub project via my profile. But it is not linked anywhere at the moment, as it is work in progress (therefore I also do not link it here).