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 LinuxDirAccess 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-runsalready_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)

  1. Fix Linux export camera mount + exclude backups from builds (674d951)
  2. Scroll wheel changes hotbar slot; add window resolution setting (3673338)
  3. Add Linux Desktop export preset (Steam Deck target) (4c2c3cf)
  4. Pool audio players (fixes lag) + fix GDScript warnings (4e71397)
  5. Split long walking recording into short footstep clips (d62dff3)
  6. Limit animal/footstep sounds to close range (3c8cd0f)
  7. Add pig sounds and directional player footsteps (55819aa)
  8. Fix real block-data race + widen caves (27bb015)
  9. Fix invisible face after mining + ghost z-fighting (39b0fb2)
  10. Track TerraVox.exe/.pck via Git LFS (35d27c4)
  11. Fix mined blocks lingering visual bug (8923d99)
  12. Block placement visual instant (~1.3ms) with stand-ins (601388c)
  13. Worldgen v2/movement v2 + streaming/mesh/mob fixes (8f920a1)
  14. Falling items, leaf decay, solid leaves, block rotation (5d6c164)
  15. TerraVox launcher + GitHub release pipeline (cf14276)
  16. Loading screen, fireflies, quit-to-menu, Towny docs (65fe290)
  17. 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