Hey everyone :)
This is a bit of an odd one, since I was originally not intending to do this tonight but now I am thanks to forgetting my meds, so, have fun with a new update lmao
There are missing textures, there are issues, this update needs to get out or it never will, have fun! I'll patch this up when I wake up. You will want to use the Modding Tools mod for the water spawner and destroyer while I fix that up.
Known Issues
Water needs to be spawned in using the water spawner in the Modding Tools mod, I need to add lakes
Can't swim!
Cloth, Crusher, Boiler, bucket, carbon steel / aluminium sheets, crushed ores and more are missing textures or have confusing textures
Multiplayer can be challenging on the CPU, needs more investigating
Fluid pipes are not the final versions
You can't vent steam
Bucket quantity is taking off
Hemp seeds only come from grass blocks, not plants, for now.
It's really been a year, huh? Initially, despite my opinions at the time, Voxel Eras launched as more of a tech demo than anything, so thanks to everyone who joined the journey back when the most interesting thing was making a coal smelting loop. I feel in a year the game has dramatically improved, so I'm excited to see what the next year looks like!
Originally, 1.4.2 was supposed to come out a few months ago, so why'd I skip that and spend 6 months on an update? Well, I wrote my own programming language that I've called Hail as partly a nod to Rhai, the language its replaced, as well as... Self insert. kek. This is for a few reasons:
Strict Typing - Rhai is a "dynamically typed language", resulting in unexpected errors at runtime that weren't getting caught on compilation (game start). Hail is "strictly typed", making breaking changes in the modding API (or other scripts) immediately obvious before even entering a world.
Performance - Hail is implemented as a "bytecode machine", as opposed to Rhai's "AST walker". This by itself is a major improvement, as it's far faster to iterate over bytecode than to "walk" an AST that's doing sanity checks and function lookups at runtime instead of compile time.
I Hate Lua - I'm sorry to all of the modders that love Lua, but that ain't it. Compared to most programming languages it's an outlier in many ways, including 1 based indices and general syntax, making it a unicorn language that you have to specifically go out of your way to learn regardless of your programming experience. This also would have killed VE, as a Lua migration would effectively be a complete restart instead of Hail's "very tedious but manageable" migration.
Control - Voxel Eras will exist for years to come, the parts that build it need to last for just as long. I can't have my development cycle held up due to a GitHub issue or trying to understand a codebase I didn't write for a use case it was never meant to support.
Writing the base POC of Hail took about a month, with another month spent "finishing" it and migrating parts of Voxel Eras, and an additional month to wrap up the migration, doubling the time this update would take. I chose this moment in particular to do it as when I was trying to add the Advanced Clockwork Drill I ran into a Rhai bug that would cause unexpected behavior that I wasn't willing to dig through to solve for a language I was already running into issues with, putting the game on a content freeze as any further gameplay work would need to be redone for a language transition.
This update is far more than just a modding overhaul though. It introduces the Steam Era as well as some new goodies and eye / ear candy that I hope will have been worth the wait! This list is likely not exhaustive as quite literally over half the codebase has been turned over (tens of thousands of lines of code), but should cover the majority of the important bits.
New
Dedicated Server - The game can now be run as a dedicated server.
Particles - More shiny more better.
Item Display - Label your builds!
Dust - Dust.
Clay + Bricks - Build bricky.
Flower Pot - Pretty!
Coke Oven - Multi-block. The ultimate coking machine.
Blast Furnace - Multi-block. High heat, hot enough for Aluminium.
Aluminium - A new material grade.
Fluid Pipe - Transport fluids.
Well - Get water with the power of Clockwork!
Boiler - Multi-block. Boil water into Steam to power existing and new machines!
Crusher - Ore-n't you glad you can get more ore per ore?
Steam Winder - The bridge between Clockwork and Steam. A Winder powered by Steam.
Turbo Pipe - 4x speed pipe.
Stack Pipe - 0.5x speed pipe that can pull 16 items at a time.
Advanced Clockwork Drill - Get more done more faster!
Minutes Between Soundtracks - For those that like the music, you can increase its frequency.
Step Up - Obstacles up to 1 unit tall can be walked over without interrupting movement.
SOUNDS - More sounds.
Anisotropic Filtering - Previously removed, this is now back as a software implementation (fuck Intel).
Directional Sunlight - Sunlight is now directional, casting moving shadows on your workshop.
Audio Dampening - When obstacles are between you and an audio source, it will now be muffled based on how much material is between you and the source.
Custom Highlight Color.
Sound Captions
Glider - Have fun
Farmland, Hoe, Hemp - For your clothy desires!
More slabs, added walls, stairs, columns
Sound ring
Changes
Improved Placement Tag Requirements - More placement conditions should work as expected.
Stack Sizes - Many stack sizes have been changed.
Construct Icons - Construct icons are automatically generated if the specified one doesn't exist.
Server-side Saving - Previously, only auto-saves were done on the server. It now also does manual saving, allowing the client to not know the whole world now.
Improved Prediction - The game should feel more responsive, especially in multiplayer.
Sprint / Sneak - Sprint and Sneak hotkeys have been swapped, with double tapping a movement direction or holding sprint to sprint forward.
Performance
Tick Rate Reduced - The game logic ran at 50hz, this is now 32hz as it divides better for pipe speeds as well as gives more performance overhead for factories without impacting gameplay.
Tick / Render Accelerators - Pipes, winders, and others now bypass some script events in favor of the engine directly handling them via accelerator functions.
Object Render Distance - To further improve pipe render performance, beyond a certain range the items of pipes are not rendered.
Simple Lighting - When lighting smoothness is set to 0, a simplified pass is used that improves performance and reduces visual artifacts compared to low lighting sample counts.
Fixed Texture Leak - Menus such as the modding upload no longer crash the game.
Fixes
You can no longer go through things if you're fast enough.
Chunks no longer visually corrupt after prolonged playtime.
Modding
Replaced Rhai with Hail - Needless to say, this has effectively broken everything, though the fixes needed are easy to apply. I'd still recommend starting from scratch.
Mimics - Voxels can now be marked as "mimics" that have some events relayed to the target voxel location stored in "Mimic" as a location in metadata.
Particle Rendering - Particles can be rendered either via the modding API or the voxel particle system, the later being more performant and easier to use.
Tag Expansion - If a given tag is present, it will add the provided tags to it.
Item Dropping - Voxels can now specify drops, so custom on_break events for item drops are no longer needed.
SimplyUI - Replaces direct EGUI UI with a simpler system.
Colored Text - ASCII codes can now be used in SimplyUI to color text.
Testing System - Mods can now be tested outside of the game by running test scripts via the CLI, useful for compilation / asset validation checks.
LSP Server - Combined with a VSCode extension (or custom editor integration via the --lsp launch option) this allows you to see instantly if something isn't right with your scripts.
