Skip to main content

Make some noise

Greetings! Version 3.4.0 of ScrewBox added support for generating Perlin Noise and fractal noise. Both algorithms can be used to generate infinite deterministic landscapes and are commonly used in games like Minecraft or whenever 'procedural generation' is mentioned. The next minor version of ScrewBox will also add support for three dimensional Perlin Noise.

noise

ScrewBox is a game engine designed for creating 2D content, so the third dimension used for generating noise will most likely be time. Nonetheless, you can also create some pseudo 3D content using these utilities, as seen in the example screenshots. The second one is a three-dimensional fractal noise which looks quite cool but doesn't add much value to the engine because it's so slow and I cannot imagine any actual use but creating nice looking blog post illustrations.

noise

Generating noise is quite easy. Enjoy!

// 2D noise
PerlinNoise.generatePerlinNoise(seed, x, y); // value in range -1 to 1

// 3D noise
PerlinNoise.generatePerlinNoise3d(seed, x, y, z); // value in range -1 to 1

Update July 26, 2025

After massively improving the performance of noise generation (10 times faster!) version 3.6.0 will also ship 3D Fractal Noise generation. Because, why not?

Maven relocation

Yesterday I reworked the build process to move Maven source to the updated Sonartype Central Repository. I used the opportunity to update the Maven coordinates to the new domain. ScrewBox can now be found at the updated coordinates: dev.screwbox:screwbox-core. The update comes with updated packages for all classes and some improvements for the build process. For further info see full changelog.

Fluid physics

Greetings! Version 2.19.0 of the ScrewBox engine has just been released. This version adds support for simple fluid physics.

fluids

To make something fluid, just add a FluidComponent to the entity you want it to be. To make the fluid show up, add a FluidRenderComponent and pick your colors to make water, lava, or anything else you want. Physics entities can swim in the fluid by adding a FloatComponent.

Future will tell what features will be added to the fluid physics. In the current state, the fluids are quite rudimentary. Combining the fluids with a reflection is definitely on my to-do list.

A fresh start

A few weeks ago I decided to add some real documentation to ScrewBox, the project I have worked on for nearly four years now. I used this opportunity to register screwbox.dev as new home address for the project. Hopefully anybody will have a few good hours or days working with ScrewBox. Stay tuned for some upcoming content updates.