RustForge Sign Painter · published · build 23483535

Transmission from RustForge 🎙️
This update is heavily focused on under-the-hood optimization and absolute input stability. I've completely ripped out and replaced the way RustForge handles settings during active painting, effectively eliminating disk-read bottlenecks to make the core engine run blazingly fast. Alongside massive performance gains, this patch introduces dynamic, multi-monitor DPI scaling and a brand-new Input Engine toggle, ensuring that your paint strokes land with pixel-perfect accuracy regardless of your hardware, monitor resolution, or Windows scaling settings.
Zero-I/O Settings Cache: Settings are now loaded directly into RAM, resulting in instant execution times during heavy painting loops.
Input Engine Toggle: Added a new setting allowing users to hot-swap between the high-speed "EvoEngine" and the highly compatible "Legacy" input method to combat unpainted specks, or horizontal/vertical banding issues.
Smart Display Tracking: The engine now actively listens for Windows display changes (plugging in monitors, changing resolutions) and instantly recalculates its screen metrics.
Seamless Timelapse Recovery: Timelapses will now perfectly resume and stitch together when loading from an Auto-Save or a manual Session Save.
The Disk I/O Bottleneck
The Challenge: Previously, the engine was reading the configuration file thousands of times per second during the active painting session to check for safe mode thresholds and delays. This constant hard drive access caused micro-stutters, which occasionally disrupted the flow of the mouse and caused input lag.
The Fix: Built a Configuration Cache. All settings are now loaded into high-speed RAM exactly once when the application starts or when you hit Save. By completely stripping hard drive reads out of the painting process, input actions now execute in fractions of a millisecond.
Coordinate Scaling & DPI Awareness
The Challenge: Users running high-resolution displays (2K/4K) with custom Windows scaling levels (e.g., 125% or 150%) were experiencing misaligned virtual screen coordinates, leading to off-target clicks. Additionally, changing monitor layouts while the app was running would permanently warp the coordinate math.
The Fix: Integrated the modern, native Windows DPI awareness, forcing the OS to stop lying to the application about screen dimensions and ensuring a perfect 1:1 pixel map. Furthermore, I implemented a background system event listener, if you change your display layout, the engine instantly detects it and flushes the screen metric cache so your canvas bounds remain perfectly calibrated.
Input Engine Architecture
The Challenge: On specific canvas sizes (like the XL Picture Frame) or high-end systems, packing absolute mouse movements and click states into a single batched data packet occasionally caused the game engine's input poller to drop the click, resulting in unpainted specks at the start of lines.
The Fix: Built a dedicated "Input Engine" toggle. Users can now choose to use the standard EvoEngine or fall back to the Legacy input method. The Legacy method forces a hardware sleep between the physical movement of the cursor and the click registration, ensuring Unity engine processes the exact coordinate before clicking.
Timelapse Session Recovery
The Challenge: Loading an auto-save or a manual session save previously wiped the current timelapse buffer in memory, meaning resumed paintings would lose their timelapse footage.
The Fix: Timelapse state tracking is now linked to the save system. When you resume a painting from a file, the engine automatically retrieves the previous snapshot sequence and seamlessly continues recording where you left off.
HD Canvas Scaling (Zooming): While the new Smart Brush Suggestion feature combats the Moiré effect, if you zoom in/out heavily while painting on canvases like the new Artist DLC Canvas' Large Banner on Pole or the XL Picture Frame, the engine's scaling will change and your paint strokes will misalign. Most large Canvas's require a higher brush size due to its inflated size on screen. Fix: Do not zoom in or out while mapping/painting. If you absolutely must zoom in or zoom out, manually increase/decrease your brush size slightly to bridge the newly created gaps.
Contour Tracing & Smart Pathing (Resume Limitations): With how Contour Tracing and Smart Pathing calculate the most efficient omnidirectional paths for curves and fills, it is mathematically impossible to resume a paused painting from the exact pixel you stopped at. Instead, the engine will resume from the currently painting color, and begin from the start of that specific color layer to ensure nothing is missed. This is an intended feature of these advanced methods. It may add a few minutes to your total paint time if paused and resumed, but this prevents missing structural chunks of your image.