Skip to main content

4 posts tagged with "milestones"

Milestones in the ScrewBox development.

View All Tags

Illumination reworked

Hello everyone,

the last three versions of ScrewBox made a huge effort to improve the game illumination:

The overall performance was improved significantly by improving the speed of the internally used image filters and algorithms. The blurring filter is now 20-30% faster and supports higher blur values for even smoother visuals. The time consumed for image opacity inversion was reduced by a staggering 98%.

This increased throughput allows for higher-quality shadow maps and heavier shadow blurring without sacrificing frame rates.

occluders.png

I have also introduced a new directional light source and backdrop occluders:

  • Directional light easily simulate natural illumination like sunlight.
  • Backdrop occluders create shadows directly on the background behind objects. Backdrop occluders work in perfect harmony with soft physics entities. The shadows add a new level of immersion to these entities.

Flexible draw order

Hey everyone,

in the past, ScrewBox had some very restrictive limitations due to the architecture decisions I made, both consciously and unconsciously. For instance, I never considered implementing a split-screen mode within the existing code base. However, it was possible, but it was a significant challenge to rewrite hundreds of lines of code. After at least three months of work, finally getting it done felt like a huge success.

The upcoming version 3.14.0 will finally address another restriction that had been bothering me. Unfortunately, it doesn’t sound particularly exciting: Now, it’s possible to draw entities in any order across all entity systems. This allows for some nice refactorings within the engine, which results in slight performance improvements. However, it also provides much more freedom when creating games with ScrewBox.

To draw across entity system execution order simply add the order offset to your drawing call.
// will be drawn second
canvas.drawLine(line, LineDrawOptions.color(RED).drawOrder(2));

// will be drawn first
canvas.drawLine(line, LineDrawOptions.color(RED).drawOrder(1));

// will be drawn above the light
int aboveLight = Order.PRESENTATION_LIGHT.mixinDrawOrder(1);
canvas.drawLine(line, LineDrawOptions.color(RED).drawOrder(aboveLight));

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.

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.