CHANGELOG
Voxel Survival – Changelog
Recent Development Summary
A comprehensive update to the voxel-survival Godot game featuring major improvements across audio, graphics, world generation, networking, and cross-platform export compatibility.
—
Latest Release (2026-07-21)
### ๐ Authentication & Accounts (New)<br />
– WordPress login required to play – Hosting or joining a game now requires signing in with a WordPress account (JWT auth against terravox.servegame.com); players without an account are directed to sign up on the site<br />
– "Stay logged in" option – Optional session persistence so returning players skip the login screen<br />
– Account-tied display names – In-game name is always the player's real WordPress username, resolved server-side from the validated token and never taken from the client, preserving the account's actual capitalization. Closes a real impersonation hole: the previous register_remote_player RPC accepted any_peer, so a modified client could previously rename/impersonate any connected player by calling it directly – it's now authority-only<br />
– Server-side token validation – Switched to WordPress's own wp/v2/users/me endpoint after discovering the JWT plugin's own /validate route 404s on this install; this also doubles as the source of truth for the account's real username/email<br />
– Auth diagnostics logging – Dedicated server now logs each join's validation outcome (token present, WordPress result, kick reason) instead of failing silently<br />
– Fix: signal-leak "already connected" error – Rejoining after a disconnect could fail validation with an engine error because a one-shot signal connection from the previous attempt was never cleaned up when it didn't fire
### ๐ง Linux Export Fixes (Round 2)<br />
– Fix: custom skins broken again on Linux – An earlier fix for a scene parse-error crash had accidentally deleted the [editable path="PlayerModel"] marker instead of correcting its (already-invalid) syntax, silently reintroducing the original Linux skin-dropping bug<br />
– Fix: recipe book empty / nothing craftable on Linux – DirAccess directory scanning of resources/recipes/ returned zero entries on the exported Linux build; recipes now load by an explicit deterministic filename list, the same working pattern ItemData already used for items<br />
– Fix: hard parse-error crash in player.tscn / remote_player.tscn – A stray invalid editable token was breaking scene parsing on every platform, not just Linux
### โก Performance<br />
– Cut a hot-path allocation in get_block()/set_block() – chunk_manager.gd's block lookup (the single most-called function in the game – every collision sweep, raycast step, and mob AI check) was allocating a throwaway Dictionary on every single call; now allocation-free on the miss path
### ๐ฎ UI & Quality of Life<br />
– GUI Scale slider – Added to the pause menu (75%-200%), applies live like Minecraft's GUI Scale option, persists to settings.cfg
### ๐ฆ Build & Release<br />
– GitHub Actions export pipeline – Windows Desktop, Linux Desktop, and Linux Dedicated Server now build automatically on every push to main (or on demand), replacing manual local exports<br />
– Tag-triggered GitHub Releases – Pushing a vX.Y.Z tag cuts a proper Release with raw, runnable binaries attached (not zipped) and auto-generated release notes<br />
– Fix: release step failing on tag re-runs – already_exists errors when re-triggering a release for the same tag are now handled by updating the existing release in place
### Commits in this release<br />
1. Attach raw binaries to releases instead of zip archives (b48940d)<br />
2. Fix release step failing with "tag already exists" on re-run (c9b70ec)<br />
3. Add GitHub Actions workflow to auto-export Windows/Linux builds (bcc2ad1)<br />
4. Fix "already connected" error on peer_id reuse during auth validation (e1f4201)<br />
5. Add GUI scale slider to the pause menu (bcc0c84)<br />
6. Fix recipe book empty on Linux: stop scanning res:// dir at runtime (f40d64c)<br />
7. Restore Linux editable-children marker; cut a per-call alloc in get_block (ca5556d)<br />
8. Fix token validation endpoint: use wp/v2/users/me, not plugin's /validate (3c23350)<br />
9. Add server-side logging for WordPress auth validation (f15c77d)<br />
10. Add WordPress-based login gating for host/join (af0b5f7)<br />
11. Fix custom player skins not showing on Linux builds (bab913c)
—
Previous Release (2026-07-19)
### Linux Export & Platform Fixes<br />
– Fix: CameraMount node recreation for Linux exports – Nodes added inside instanced sub-scenes without [editable] marker were being silently dropped by Linux's scene loader, causing invisible cameras. Now automatically reconstructed in code on first load.<br />
– Exclude tools/backups from exports – Prevent stale player scene UIDs from colliding during builds across Windows, Linux server, and Linux client exports.<br />
– Linux Desktop export preset – Added Steam Deck target with proper configuration.<br />
– Add .stackdump to gitignore – Filter Windows debug dumps from version control.
—
Major Features & Improvements
### ๐ต Audio System (Complete Overhaul)<br />
– Audio player pooling – Dramatic lag reduction through efficient audio resource management<br />
– GDScript warnings cleanup – Project-wide warning fixes for code quality<br />
– Directional footsteps – Authentic 3D audio positioning for player movement<br />
– Pig sounds – Full animal audio implementation with realistic sound effects<br />
– Animal/footstep sound range limiting – Performance optimization: sounds only audible within reasonable distance<br />
– Footstep recording improvements – Split long recordings into short, reusable clips for variety
### ๐ World Generation v2<br />
– Blended biome heights – Smooth terrain transitions between different biome types<br />
– Domain warp noise – Advanced terrain deformation for natural-looking landscapes<br />
– Spaghetti & cavern caves – Improved cave generation with entrance masking<br />
– Cave width expansion – Wider tunnels for improved walkability<br />
– Auto step-up terrain – Players automatically climb small obstacles (with feet-below-boundary handling)<br />
– Chunk streaming with velocity lookahead – Predict player movement for smoother world loading<br />
– Desert dune noise – Specialized noise for desert biome sand formations
### ๐ Movement & Controls<br />
– Sprint (Ctrl) and sneak (Shift) mechanics – Full movement mode system with dedicated keybindings<br />
– Movement/terrain probes – Accurate collision detection and terrain analysis<br />
– Auto step-up (with gotchas documented) – Automatic climbing of small terrain obstacles
### ๐งฑ Block System Improvements<br />
– Block metadata packing – Orientation bits packed above block ID with proper MASK operations for array reads<br />
– R-key block rotation – Interactive rotation with ghost block preview<br />
– Block placement visual improvements – Nearly instant placement (~1.3ms) using stand-in meshes<br />
– Falling item drops – Items properly ejected when mining suspended blocks<br />
– Leaf decay system – Natural decay of leaves with configurable timers<br />
– Solid leaves – Leaves as colliding blocks for tree structure<br />
– Invisible face mining fix – Resolved z-fighting and face visibility bugs at section boundaries<br />
– Ghost block preview – Visual feedback for block placement and rotation<br />
– Mined blocks fix – Resolved lingering block visuals by preventing unnecessary full lighting rebuilds
### ๐ Multiplayer & Networking<br />
– Towny plugin system – Full towns/nations/claims protection system<br />
– Dual protection hooks: host pre-edit verification + client RPC updates<br />
– Persistent towny.json with automatic saves<br />
– Concurrent-session drift detection and handling<br />
– Dedicated server support – Full server/–dedicated mode with ServerConfig<br />
– Server browser – UDP query protocol for finding servers<br />
– F3 debug overlay – Real-time debugging with chunk borders, ping display<br />
– Denial logging – Track and log protection denials for debugging<br />
– Pelican egg deployment – Automated server deployment from private GitHub repo (wkzdylan/terravox)<br />
– Git LFS tracking – TerraVox.exe and .pck files tracked via Git LFS for efficient storage
### ๐ฎ UI & Quality of Life<br />
– Scroll wheel hotbar – Quick inventory slot selection with scroll wheel<br />
– Window resolution setting – Configurable display resolution<br />
– Loading screen – Professional loading experience with progress feedback<br />
– Night fireflies – Atmospheric lighting effects during night<br />
– Quit to menu – Seamless return to main menu from gameplay<br />
– Towny documentation – Comprehensive guides for town/nation management<br />
– Test harnesses – Developer tools for testing game systems
### ๐ฆ Build & Release<br />
– TerraVox launcher – Dedicated game launcher application<br />
– GitHub release pipeline – Automated build and release publishing<br />
– Export presets – Windows, Linux (x86_64), and Linux server configurations
### ๐ Bug Fixes & Stability<br />
– Block-data race condition fix – Resolved concurrent access issues<br />
– Mob floating fix – Remote mobs/players were lerped from world origin on join (appeared flying); now snap on first update<br />
– Mob physics corrections – Fixed half_height/radius stat duplication across 3 files (mob.gd, remote_mob.gd, player_controller.gd)<br />
– Real sync defects – Dedicated server synchronization improvements observed in production (Pelican)<br />
– Mobile export preparation – Framework for future mobile platform support
### ๐ Project Infrastructure<br />
– Block highlight creation – Visual feedback for targeted blocks<br />
– Test rig (feature_probe) – Development testing infrastructure<br />
– TerraVox.exe re-export – Automated rebuild after worldgen fixes<br />
– Tools and backups system – Development scaffolding with proper exclusion from builds
—
Known Issues & Gotchas
- FP-harness camera setup – FP camera mount = POSITION only (full transform faces backward)
- Feet-below-boundary – Auto step-up requires special handling for feet positioned below terrain boundaries
- Linux-specific behavior – Instanced sub-scene nodes need
[editable]marker or will be dropped - UID collisions – Stale player scenes in tools/backups can cause export issues; now properly excluded
- Concurrent session drift – Towny system requires careful session synchronization
—
Development Workflow Notes
- Godot version: 4.8+
- Test binary path: TerraVox.exe (tracked via Git LFS)
- Headless testing: Supported with –headless and –import flags
- Warnings as errors: Project configured to treat warnings as build failures for code quality
- Linux testing: Use Windows-built exports to verify Linux bugs before deployment
- Export process: Always re-run TerraVox.exe compilation after worldgen changes
—
Commits Included (17 Latest)
- Fix Linux export camera mount + exclude backups from builds (674d951)
- Scroll wheel changes hotbar slot; add window resolution setting (3673338)
- Add Linux Desktop export preset (Steam Deck target) (4c2c3cf)
- Pool audio players (fixes lag) + fix GDScript warnings (4e71397)
- Split long walking recording into short footstep clips (d62dff3)
- Limit animal/footstep sounds to close range (3c8cd0f)
- Add pig sounds and directional player footsteps (55819aa)
- Fix real block-data race + widen caves (27bb015)
- Fix invisible face after mining + ghost z-fighting (39b0fb2)
- Track TerraVox.exe/.pck via Git LFS (35d27c4)
- Fix mined blocks lingering visual bug (8923d99)
- Block placement visual instant (~1.3ms) with stand-ins (601388c)
- Worldgen v2/movement v2 + streaming/mesh/mob fixes (8f920a1)
- Falling items, leaf decay, solid leaves, block rotation (5d6c164)
- TerraVox launcher + GitHub release pipeline (cf14276)
- Loading screen, fireflies, quit-to-menu, Towny docs (65fe290)
- F3 debug overlay, chunk borders, ping, Towny plugin (2211b13)
—
Next Steps / Future Work
- Mobile platform support (framework in place)
- Additional biome types and generation refinements
- Performance profiling and optimization passes
- Mod support system
- Advanced server administration tools
- Cross-play testing improvements
—
Last Updated: 2026-07-21<br />
Repository: https://github.com/wkzdylan/terravox