Skip to main content

Jul: Forge, Accelerated CEF & Coroutines!

· 9 min read
Gabriel • SyedMuhammad
lead developer™

Forge Plugin, Accelerated CEF, Coroutine Fixes, Vehicle Updates & more!

Welcome to our roundup of the latest updates from the past month! This blog comes slightly later than usual, as announced on Discord earlier this month. Moving forward, our news blogs will return to their regular schedule, ensuring they reflect the progress made in the previous month.

CEF Experimental Features

We are excited to introduce several new CEF features that have been highly requested for a long time. From Hardware Acceleration to new Dev Tools features!

Hardware Acceleration

We implemented a ability to enable Hardware Acceleration on CEF! This is a feature that allows the WebUI to utilize your GPU for rendering instead of the CPU. Allowing complex animations to run smoothly while offloading work from the CPU.

Recommendation

Even with Hardware Acceleration enabled, avoid using overly complex animations in your UI. Not all players will have this setting enabled, so it's advisable to provide fallback animations for them.

Accelerated Painting

Currently, CEF renders WebUI pages into a buffer, which is then copied to an Unreal texture for on-screen rendering, all handled by the CPU.

Accelerated Painting shifts this process to the GPU, directly copying the rendered texture (DirectX Texture) to the Unreal texture, reducing CPU workload.

Performance Note

While this feature is highly anticipated, it may not improve performance in all cases.

For example, if your PC is GPU-bound, enabling Hardware Acceleration and Accelerated Painting could negatively impact the responsiveness of the WebUIs.

New WebUI Settings

We've exposed several new settings to help you experiment with these new features:

New CEF/WebUI Settings

Hardware Acceleration & Accelerated Painting

Allows you enabling those features previously mentioned. Note that Accelerated Painting requires Hardware Accelerated enabled.

Max Resolution

We've added a setting to limit the maximum WebUI resolution. This can be a performance saver if you run the game at 4K resolution, allowing you to cap WebUI resolution at 1080p, for example.

Message Loop Schedule

This is an internal CEF setting that may improve the CEF performance by reducing unnecessary CEF loop calls when it's idling.

New Dev Tools

We're introducing the in-game Dev Tools, similar to what you find in browsers!

Debugging with Dev Tools

Previously, we've had the Remote Debugging feature as our only option for runtime debugging, but it was disabled due to security concerns and issues with Windows Defender blocking it.

Now with the new Dev Tools you can debug your WebUI directly in-game using the new methods: WebUI:OpenDevTools() and WebUI:CloseDevTools().

It launches a new window pop-up integrated with the game to inspect and debug the HTML elements from the page!

Other WebUI Improvs

  • DPI Scaling: WebUI pages now scale properly with the monitor's DPI, fixing issues where Windows resolution scaling affected WebUI resolution.
  • Smooth Scrolling: We've implemented native smooth scrolling for WebUIs, replacing the previous simulation.
  • Print Command Disabled: The print command in JavaScript, which opened an external print popup, has been disabled.
  • Multi-Instance Fix: Resolved an issue preventing two game instances from displaying WebUI simultaneously.

Introducing... The Forge!

nanos world Forge is a new community-made plugin for Unreal Engine designed to simplify asset creation for nanos world. It comes with built-in tools and cooking automation to increase your productivity!

New Forge Plugin!

While still under development, it is recommended as a complementary tool to the current ADK, as it automates various processes like cooking, scripting, and, in the future™, uploading assets to the Vault.

note

This plugin is being developed by a dedicated community member, NegativeName, and will be distributed for free alongside the ADK!

Since this is a voluntary project, please consider supporting him and this project by buying him a coffee: https://ko-fi.com/negativename.

Cook Handler

The Cook Handler is a feature that automatically copies your cooked assets after they are cooked, it moves them to the configured ServerPath/Assets/ directory, so you don't have to copy them manually every time you cook.

And putting together with the Asset Pack Auto Reload feature, it drastically speeds up the iterating process of re-cooking and testing your assets!

It also generates an Assets.toml file in each asset pack folder, listing all its assets automatically.

Other Tools & Features

Forge includes a variety of tools to enhance your asset creation experience:

  • Object2Lua: Converts Unreal Engine blueprint assets into Lua tables.
  • Foliage2Lua: Transforms foliage actors into Lua table representations.
  • Material Picker: Quickly identify materials by clicking on them in the viewport.
  • Placeholders: Place actors in your map and export them to Lua code.
  • Quick Instancer: Converts Static Mesh actors into Instanced Static Mesh actors.
  • StaticMeshToFoliage: Converts static mesh actors into foliage types.
  • Thumbnail Generator: Creates high-quality PNG thumbnails for assets, with bulk processing support.

For a detailed list of tools and instructions on how to download it, visit the Forge page:

Forge Setupassets-modding/forge/setup

Future Development

The Forge is still under development, if you have any suggestion or find any bug, don't hesitate to contact us or NegativeName directly!

We are still working together to keep expanding the Forge possibilities, we have plans to make a way solid workflow for creating, managing and upload Assets Packs directly from the Forge!

Also, in the next days, we will be updating our ADK tutorials and the ADK project to reduce the redundant tools and simplify it even more! Stay tuned for updates!

Vehicle Updates

We've made significant improvements to Vehicles, adding missing methods and enhancing procedural hand placement on steering wheels.

Hand Placements

Characters' hands now adapt procedurally to the steering wheel's position. To achieve this, you must specify the steering wheel's position when configuring VehicleWheeled:SetSteeringWheelSetup().

Previously, we used the character's relative position, which caused inconsistencies across different characters and meshes. With this update, all characters and meshes will behave consistently.

We also added a new parameter to VehicleWheeled:SetSteeringWheelSetup(): rotation. This refactor ensures that the parameters passed to it are relative to the vehicle's root bone. As a result, all vehicles will need to be reconfigured using this new relative location.

Characters procedurally adapting their hand positions based on the steering wheel and seat location

Torque Curve

You can now configure the Vehicle's Torque Curve! We added a new parameter to VehicleWheeled:SetEngineSetup(): torque_curve to allow customizing it through scripting:

Server/Index.lua
local torque_curve = {
[ 0.0] = 0.5,
[ 800.0] = 0.9,
[2000.0] = 1.0,
[4000.0] = 0.9,
[5000.0] = 0.0,
}

my_vehicle:SetEngineSetup(600, 5000, 900, 0.2, 5, 600, torque_curve)

New Vehicle Methods

We introduced a new method: VehicleWheeled:SetDifferentialSetup(). Allowing you to configure the vehicle's differential by passing a custom DifferentialType.

Also, we exposed a new parameter to change the shape used for calculating wheel suspension to :SetWheel(): suspension_sweep_shape (SuspensionSweepShape).

Lua Coroutine Fixes

We've finally managed to solve most of the known issues with Lua Coroutines, fixing numerous crashes and ensuring it works with various scripting calls and methods.

For example, Package.Require and async callbacks from Database or File operations now work seamlessly within coroutine executions.

Thanks to all the testers who helped reproduce these bugs and crashes!

Linux Server Requirements

We've reviewed the minimum required versions for running a Linux server. The officially supported versions are now Ubuntu 22 and 24, and Debian 12.

We've also improved the build process to include necessary libraries (e.g., glibc) for older machines, resolving compatibility issues. However, Debian 11 is no longer officially supported.

For more details, visit the updated Server Installation Guide:

Server Installation Guidecore-concepts/server-manual/server-installation

Vault Maintenance

Vault Maintenance in Progress

Earlier this month, we announced a maintenance period for the Vault/Store. We're working on a new version of the Vault that will better meet our needs, so having a complete backend refactor.

While we don't have a release date yet, progress is moving quickly. For now, the game will still provide default packages (sandbox, default-weapons, and default-vehicles) for download via the in-game Vault and CLI.

Account System Migration

In addition to Vault maintenance, we're also improving our account system backends, integrating them with the new Vault system. We've paused new tester invites for a few weeks while we finalize these migrations. We should be ready really soon™.

If you encounter login errors during this transition, please let us know!

Conclusion

This was a "2-month" update packed with several exciting features and improvements. The introduction of the community-created Forge is the beginning of our vision for a more solid Asset Development Kit (ADK), simplifying the asset creation process. While there is still much to improve, this is a significant first step. Thank you again @NegativeName for taking this initiative!

The highly requested CEF Hardware Acceleration feature has been integrated, it was not an easy integration, and hopefully you can make great usage of it! Now let's test its stability and ensure it works as expected!

The Lua Coroutines issues have been haunting us for a really long time, and thanks to your reports and persistence, we managed to fix most of the issues it had!

We are also working tirelessly to create a new ecosystem for the Vault and Account System, we are already migrating accounts to a new system and developing a backend for the Vault that meets all our needs. These changes are being rolled out gradually to minimize friction. Many updates have already been implemented seamlessly, we are trying to do it without any downtime to make this transition as smooth as possible!

We appreciate your patience and support during these transitions. Your feedback is invaluable in helping us improving. Stay tuned for more updates, and thank you for being part of the nanos world community! 💖

Also thank you for everyone supporting me on Ko-fi ☕, you have no idea how motivated I get to see your desire to support, and how this is reassuring to me! 💙

Ko-fiKo-fi