Hello everyone,
I've been working on the programming system rework for the past month, and the open beta is now ready! You can opt into this beta by right-clicking on Mechanica in your Steam library -> properties -> betas -> select 'new_programming_beta'.
In this update, I've focussed on reworking the programming system so that it is faster, easier, and more intuitive to work with. On a basic level, It functions similarly to the old system, except that instead of functions, events, and variables existing abstractly and only being visualized within the programming menu, all of these now have physical visual representations - an object's functions/events are represented as a physical 'block' that you can find attached to the object. Variables are represented as input/output ports (depending on if it is read only, set only, etc) that are also physically located on the object.
You can link events and functions together by wires - these work just like the white curvy links from the old programming menu. Variables are also connected via wires, and their values automatically replicate to each other - for example, connecting a buttons 'is on' variable to a point light's 'is on' variable will cause the light to switch on or off depending on the button's on/off state - no more fiddling around with event listeners, and no more manually executing 'set light on, set light off, etc' functions. It all happens automatically.
This is probably the most comprehensive change I've made to Mechanica, and with change comes resistance - I know that some people may be unhappy to see the most fundamental aspect of the change so significantly. I'd like to assure these people that no one is more hesitant to changing the programming system than I am - it was the first thing I designed/coded for Mechanica and it took months of hard work. I would only replace it if I were 100% confident that it's successor was an objective improvement, and I truly believe this new system is. As far as I am aware, everything that could be achieved with the old system can also be done with the new one - simplicity and intuitivity has not come at the cost of flexibility.
With that being said, I'm doing this open beta to iron out bugs, but more importantly, to gather feedback. I'm willing to make any changes necessary to refine this new system and make it as pleasant as possible to work with. Please let me know if you have any ideas for improvement.
You may notice a couple of objects missing in this version of the game, namely the Buddy-Bot and the Speeder. The Speeder will be replaced in the next update by the introduction of various mechanical objects. This will allow you to build fully customized vehicles from scratch. The Buddy-Bot will be replaced in the future with a Drone that transports small quantities of items long distances. It will also have the ability to refuel machines.
The creation tool is also temporarily disabled for the beta. It will be available in the full release.
This update will remain as an open beta until New Years (approximately). I've rewritten probably at least 25% of Mechanica's codebase for this update. There are significant user-facing changes, and even more changes under the hood (mostly related to saving, loading and networking). Save times are significantly faster, but I expect there will be a few bugs at first. I'll get these sorted during the beta.
This post will not include a proper list of additions, changes and bug fixes - that will be in the full release update post. I'll also make a video outlining how the new programming system works.
Thanks for the patience. I really hope you guys enjoy this update, I've worked super hard on it and I think it's a massive improvement. Nonetheless, let me know what you think - I'm happy to make changes :)
Thanks for reading,
Tyler
Changed depots in new_programming_beta branch