New Game Updates!
What is Included
- Object types and their properties are now an ECS (Entity Component System) based system where you can pick-and-choose exactly what features you want on any given object. An entity component system is different because things such as lights can be components on an object (an entity) instead of a light being a child of a normal object. This means you can mix and match features (like a light, a collider, sound players, and scripts all on the same object).
- Parenting is now fully functional.
- Large visual improvements to lighting, shadows, and more to bring the game more inline with our vision.
- New Builder UI that includes...
1) Resizable panels!
2) Dockable panels with tab functionality!
3) New loading screens and prompts to match the voxel editor!
4) 3D gizmos for components like colliders and lights to represent them better visually!
5) We removed text blurriness!
6) Color picker tool now uses a full RGB color selector instead of a palette!
- New Builder Tools that includes...
1) Improved drag tool!
2) Better visuals!
3) Grid snapping!
- We added a "simulate physics" button in the builder to show you physics in real-time in the editor.
- We upgraded the camera controls for the builder.
- Physics objects now have an automatic mass (as well as a custom mass setting), and characters have appropriate mass to be able to push them around as expected.
- Huge FPS improvements! We added new culling systems to help improve FPS.
- Complete Lua overhaul that includes...
1) Efficiency improvements!
2) Simple to understand!
3) wait(), printScreen(), and many more basic functions and properties to simplify your scripts!
4) Separation of Player and Character!
5) Separation of components from object!
6) Lots of new events!
7) Validity checks ("IsValid(var)", "IsCharacter(var)", etc)!
8) Implicit multithreading with accessors like branch(), timer(), stop(), and more!
9) Networked tables (.netTable) on every object to network properties between clients easily. OnNetTableUpdates is called every time a client receives an update.
Check out the full Lua documentation here: https://docs.worldtobuild.com/
The Bad News
This update does not include legacy script support.
Unfortunately, we cannot automatically convert old scripts to use the new Lua we are using, but we are offering to help users who would like assistance converting their old scripts to the new Lua. You can start a conversation with @tyster or myself with the script that is broken and we will help you fix it. Additionally, you can reach out to some of our Community Engineers as they may also be willing to help you with your scripts.
Materials are gone, temporarily.
We are looking into some in-theme material options that are more inline with what a voxel game would typically have, but we are not there yet. In the meantime, materials have been removed but will be returning in all their glory sometime in the future. We are open to hearing your thoughts on what you'd like to see out of any new material options!
Extra shapes were removed.
As our company evolves, so does our game. Unfortunately, our style has changed over the years and this update brings us up-to-date on our vision for World to Build. When we changed our style to a voxel-based setup, some game designs just didn't make sense.
You may notice a change in some games with the removal of extra shapes. Non-existent shapes have been replaced with normal blocks. The good news is that the new blocks that are replacing the shapes do not exceed the original shape's boundaries. For example, if you had a 3 by 3 sphere in your world, it is now a 3 by 3 block instead.
The Good News
The game client is way faster than it originally was.
It took deep rewrites to get the game client to a better place, but we are here now! This is probably the biggest, noticeable change with this update and will allow many players who could not previously play the game client to now play with minimal issues.
We added a new setting to help fine-tune game performance.
We added a new setting available on all objects that helps with the performance for larger worlds: static!
Static is a setting that should be turned on for objects that do not move or interact with the world in any way (no physics, no scripts, etc). If an object is static, World to Build will not network it or use any extra effort running scripts or physics on those objects.
We also do some fancy performance boosts for these objects. For a giant map that has roughly 10,000 objects, let's say around 9,000 of them don't do anything - those objects are perfect candidates for being static.
We are paving the way for future updates.
Our codebase was being maintained pretty haphazardly by many developers during the first few years of World to Build. Speed over architecture was a big part of our philosophy for bringing content to everyone in a meaningful timeframe with what we were capable of at the time.
We now have a clear mission to be a game as a service that will last for many years to come, and a messy codebase only slows down the development process moving forward. Now, our codebase is strong and ready for improvements of all kinds, and updates will be coming out lightning fast from now on.
Our new Lua is faster, simpler, and has more features.
Losing legacy scripts is one of our biggest problems in this update, but the new Lua rewrite is well worth it. I encourage everyone interested in learning scripting to take a look at the scripting documentation we have available and check out the new stuff we have to offer!
We are aware of a few bugs with the new update, and these are next on our priority list to iron out.
- Players will tilt slightly when standing still.
- Thumbnail generation for worlds is temporarily disabled.
- The idle animation is acting strange.
- Nametags are broken for everyone but the game host.
Thank you for your feedback over the last few years, and thank you for allowing us to continue to make a game that you enjoy.
As always, please provide any of your feedback to us directly through Discord (13+) or post a topic here: https://www.worldtobuild.com/forum/subforum/2