Nov 17, 2024
Voxel Turf - SnapperTheTwig
This patch is a minor patch that fixes some bugs and greatly improves crash logging. I've been having issues with the previous crashlogger (drmingw) creating blank logs meaning that I cannot fix issues as I cannot a) replicate them on my machines and b) debug them because I don't know where in the code they are happening. Now I've backported the crashlogger from Turf 2 into Voxel Turf and it works a lot better, particularly in multithreaded environments.


VERSION 1.9.4
===========
- [Bugfix] - Upgraded crash logging by porting Turf 2's crash logger into Voxel Turf. Fixed crash loggers not creating logs at all + not creating logs for crashes in child threads
- [Bugfix] - Fixed a bunch of compiler warnings


VERSION 1.9.3
===========
- [Misc] - Graphics Settings menu now displays system info, and can copy current system info + settings to the clipboard
- [Bugfix] - Fixed bug with fluid rendering (water/lava/sludge) that causes chunks to no longer be rendered
Voxel Turf - SnapperTheTwig
This small update adds some logging for mod loading to report errors that vtclient/vtserver encounter for ease of debugging mods. It also updates some libraries (Steamworks and SDL2) to their latest versions.

VERSION 1.9.2
===========
- [Bugfix] - vtclient: Fixed (harmless) heap overrun when drawing
- [Misc] - vtserver: Added /s as alias for /status, now displays 5 rows, entries with total tick time less than 2ms are ignored
- [Misc] - Both vtclient and vtserver create a log file for loading mods (logs/mod_load_(client/server).log). The log file has a summary of detected errors at the end. In addition, the client will show errors when started
- [Misc] - Updated steamworks from version 1.42 (Jan 2018) to 1.57 (April 2023)
- [Misc] - Updated SDL2 from 2.0.2 (linux)/2.0.9 (windows) to 2.28.1
- [Misc] - Added a progress bar to the steam loading screen
Voxel Turf - SnapperTheTwig
HOTFIX 1.9.1 - Fixes some issues, scroll down to see the changelog

Old Prison Control Point:
Finally a new big control point! The Old Prison:





The prison is about the same size as the Military base but can be attacked right from the game start (although its really not recommended). The reward for holding it is +5 Allure which will help you unlock perks faster. It starts at Level 3 and has a maximum level of 10.


Massive Performance Increase:
This patch uses a combination of rendering techniques to increase performance and also removes redundant rendering and uploading of meshes to the GPU. I was going to make these in Turf2 but I needed some scenes to see what kind of performance gain can be obtained. Rather than making a dummy scene in T2 I've decided to juice up VT's rendering engine and get some real world experience implementing them.

Voxel Turf has different rendering techniques for Near-Chunks and Far-Chunks. Near Chunks have 1 graphics mesh (VBO henceforth) per texture, and far chunks use a texture atlas and therefore use 1 VBO per rendering layer (typically 1-3 layers per chunk). The problem with this is that each time a VBO is bound to be rendered there is an overhead cost. Because of this overhead the GPU is not utilised as much as it could be and performance is less than what it should be.

For near chunks I now use Texture Arrays. Textures of the same size are batched together for each chunk, massively reducing the amount of VBOs created (and therefore reduces binding overhead).

For far chunks I now use Indirect Rendering. Chunks are bucketed into regions of 256x256 and all the geometry is sent to one big, fixed size VBO ("MegaVbos"). If this VBO gets filled up then excess geometry goes into the next one, etc. MegaVbos are created once and are reused, saving creation/destruction overhead and memory fragmentation. MegaVbos are drawn with one bind and one 'glMultiDrawElementsIndirect' draw command.

In older versions of VT a mesh was generated for Near and Far rendering modes for each chunk within the players draw distance. Now only chunks within the Near draw range (typically ~100-150m) have their near modes generated and uploaded to the GPU. This removes a lot of probably-unused VBOs from being created and uploaded. In addition sometimes when a chunk is updated or loaded in it can trigger a rerender event on adjacent chunks, causing their VBOs to be regenerated. Sometimes the regenerated VBO is identical to the old one. Now the game computes a hash as the VBO is being generated, if its the same as the previous VBO then the new one discarded and not uploaded to the GPU.

Finally the game batches destruction of VBOs and temporary textures (for eg, minimap pieces). Instead individual assets being destroyed on object destruction, assets are added to a garbage list. This list is kept in a delay queue for 4 frames and then batch destroyed with 1 api call. This massively speeds up chunk-unloading on the client.

Texture Arrays and Indirect Rendering are enabled by default in the Graphics Settings menu. They require Shaders be turned on and OpenGL 4.3+.


Test Scene Results:
Performance preset: "Extreme 2", Shadows Ultra. AMD R9-3900X + Nvidia GTX 1080. Best case improvement = 88 FPS/49 FPS = +70%.


A more typical performance boost is in the order of ~+50% with both techniques enabled.

Test scene (screen resolution has changed from 1080p to 900p in these tests but do not effect results)


Full Changelog
VERSION 1.9.1 - 26/09/2022 =========== - [Bugfix] - vtserver: flagShutdown() now waits for currently saving files to flush to disc (not just orderly shutdown) - [Bugfix] - vtclient: Use manual mipmap generation for texture arrays rather than automatic (AMD drivers can crash on mipmap gen for texture arrays) - [Misc] - vtclient: If the game crashes when trying to create Texture Arrays then Texture Arrays will be automatically disabled on next startup - [Misc] - vtclient: Resized some non-power-of-2 block textures. Only power-of-2 block textures can now be made into texture arrays. - [Performance] - vtserver: When a player is in a dungeon, it will now only check ~150 chunks for dungeon updates every tick instead of every chunk loaded on the server (with 40k chunks loaded this could take 16ms a tick!). - [Performance] - vtserver: Made unloading chunks a bit faster VERSION 1.9.0 - 24/09/2022 =========== - [Feature] - Added the Old Prison control point. Gives +5 Allure to whomever captures it - [Misc] - MegaVbos now use a free list to reusue free memory - [Misc] - Planes now go ~12% faster VERSION 1.9.0-RC2 - 21/09/2022 =========== - [Bugfix] - Fixed world holes - [Bugfix] - Fixed minimap pieces not appearing - [Bugfix] - Fixed buildings not rendering correctly in preview window VERSION 1.9.0-RC1 - 17/09/2022 =========== - [Note] - Shaders are now enabled by default for intel iGPUs, providing that they support Opengl4.6. Drivers newer than 2019 should support this. - [Bugfix] - vtserver: Specualtive fix for save corruption - when requesting an orderly shutdown wait for the LotContainer saving thread to finish writing. - [Bugfix] - vtclient: Fixed some crash-on-exit issues - [Bugfix] - vtclient: Fixed some memory leaks - [Bugfix] - Fixed white text decals not being visible on distant chunks - [Performance] - vtclient: Implemented array-textures for near chunks. ~25% FPS increase - [Performance] - vtclient: Implemented indirect draw for far chunks & shadow maps. Far chunks are batched into groups of 256m x 256m. Another ~25% FPS increase at 600+ draw distance - [Performance] - vtclient: Only generate high quaility renders of chunks that are near the player (typically closest 100m). Up to 50% reduction in vbo usage/graphics memory consumption at long draw distances - [Performance] - vtclient: Now batches the destruction of OpenGL buffers and textures. Destruction is delayed by 4 frames to prevent OpenGL sync/stall. Makes unloading/unrendering chunks much faster - [Performance] - Both vtclient/vtserver - freshly discarded chunks are now stored in free-list to be reusued. Saves a abunch of big allocations/deletions. This pool will shrink over time to ~2048 chunks - [Performance] - vtclient: Up to 5% (additional) fps increase by removing reduntand OpenGl calls - [Performance] - vtclient: Stop processing network packets if we've spent 25ms already in a frame doing them (wait until next frame to continue) - [Misc] - Added a timeout for drawing the map (the one that appears when you press M). This is to prevent the game becoming unresponsive when zoomed out on massive maps - [Misc] - You can now choose how many render threads you have in the graphics settings menu. Default amount is square_root(num_cpu_threads), min 2.
Voxel Turf - SnapperTheTwig
I recently joined an MP game hosted where the players were complaining of poor performance, and I identified some issues and fixed them.

These performance upgrades mainly effect big MP maps, but because SP runs on an internal server SP get some small benefit.

The two issues were to do with unloading chunks and autosaving. The server was checking *every* chunk *every tick* for *every player*. With 10k+ chunks loaded and 5 players running around this server chunk unloading was taking 200+ms every ticks! I've since changed it so that the server only checks a max 200 chunks for unloading every tick, and this number goes down if there are more players on the server. This check is effectively instant now.

The second issue was with autosaving. For whatever reason it was taking 5 seconds to save lot data on their machine. On my test-big-map (16x16km) I was getting 500ms to save lot data. I have since multithreaded lot serialisation, reducing the save time to 100ms on my 24-thread machine, and moved the writing-to-disc stuff to a dedicated thread, knocking off another 50ms for a total speedup of 10x. Lot serialisation also occurs when a player logs into a server so this should also reduce/remove that lag spike.


VERSION 1.8.1 - 04/08/2022
===========
- [Performance] - vtserver: Lot serialisation is multithreaded. Reduces lag when autosaving, player log on and player log off.
- [Performance] - vtserver: Lot saving to disc is done in a dedicated thread. Removes ~50ms of lag when saving on an SSD.
- [Performance] - vtserver: Chunk unloading now only checks parts of the chunk array, rather than the whole array. Fixes constant lag in big MP maps.

Voxel Turf - SnapperTheTwig
Patch 1.8.0 adds an Observatory Control Point and Stat Monitoring Widgets along with minor bug fixes. In addition, Bandits will now occasionally attempt to retake captured bandit bases.



The Stat Windows can be spawned by pressing TAB, then navigating to Players and Diplomacy, then pressing the "Spawn Stats Window" button at the bottom of the window. Stats windows let you monitor Networth/Territory/Bases Owned/Bandit Bases Captured/Control Points Owned/Special Buildings Owned for each faction.

Full Changelog:

VERSION 1.8.0 - 10/07/2021
===========
- [Misc] - Bandits (owner == 0) in base attacks/control points no longer wear colours
- [Misc] - MTTH for bandits to retake a bandit base increased to 15 minutes


VERSION 1.8.0-RC1 - 04/07/2021
===========
- [Feature] - Added Stats windows! You can spawn one from the Players menu
- [Feature] - Added an Observatory as a control point!
- [Misc] - Bandits can recapture bandit bases if they hold at least one bandit base on the map (MTTH = once every 10 minutes). Bandits will repair the lot upon capture
- [Misc] - Control points spawning code modified so that they are very unlikey to spawn near each other and very unlikely to spawn near the centre or edge of the map
- [Bugfix] - Joining a faction now transfers any control points to the faction
- [Bugfix] - Fixed graphics settings menu setting borderless window to the opposite of what was requested
- [Bugfix] - Fixed some biome y=10 block rules for Control Points
- [Bugfix] - Hills bandit bases are no longer sunken if repaired (requires a new map to take effect)
Voxel Turf - SnapperTheTwig
New Patch: Revamp of outback biomes. The hills are now made of Red Stone, the plains now have patches of dry grass and salt lakes.

I've also added Tropical Biome, heightmaps and map generation is a LOT faster and multithreaded now. Dungeons now have Generator Rooms that must be captured before entering the King room. You can now use "/marks on" to enable easy construction with "/fill m" and "/replace m"

Full Video:


EDIT 1.7.3 Hotfix reduces chunk update packet spam in multiplayer

VERSION 1.7.3 - 01/02/2021
===========
- [Misc] - vtclient now instantly discards chunk updates if the chunk does not exist on the client and it is out of draw distance
- [Misc] - vtserver now groups chunk updates together into packets of at least 500 bytes (before they were sending 1 packet for each chunk updated!)
- [Misc] - vtserver now tracks what chunks vtclient has ever received, and only sends chunk updates if vtclient has ever requested the chunk that they are in


EDIT 1.7.2 Hotfix despawns vehicles that are stuck in traffic jams, vtclient will now discard irrelevant chunk updates, helping reduce lag-accumulation-over-time.

VERSION 1.7.2 - 31/01/2021
===========
- [Misc] - AI vehicles despawn if they are stuck in traffic for 40 seconds. Moving slowly will pause the timer, moving at speed (as in there is no cars blocking it) will wind back the timer.
- [Misc] - AI vehicles fade out when they despawn now
- [Bugfix] - vtclient will now discard chunk updates if the chunk does not exist on the client and the update is over a minute old


EDIT: 1.7.1 Hotfix to add additional exp for defeating dungeons + removed spawner stealing exploit from control points

VERSION 1.7.1 - 30/01/2021
===========
- [Misc] - Dungeons now give (Lv^2 + Lv - 10)*25 exp for beating them. This means you get 800 exp for beating the level 6 dungeon, all the way up to 2500 exp for the level 10 dungeon
- [Bugfix] - Blocks cannot be removed from Control Points if game rule "Block Place" is not "ANYWHERE"

Full Changelog:

VERSION 1.7.0 - 26/01/2021
===========
- [Feature] - Revamped Outback biomes
- Outback now has dry grass areas and salt flats, and red rocky areas in the hills
- [Feature] - Added Red Stone blocks and Salt blocks
- [Feature] - You can now generate Tropical biome maps and Dryland biome maps via invoking vtserver via the command line.
- [Feature] - Added "Generator Rooms" to Dungeons. You must capture all of them in a dungeon in order to fight the Dungeon King. In level 6-8 dungeons there are 3 rooms. In level 9 there are 4, and in level 10 there are 5.
- [Feature] - Added a height map selector to vtclient.
- [Feature] - Added "Deployable Airstrip" lot in the Fortifications tab. This can be placed as a base
- [Feature] - Added a text filter for placing lots
- [Performance] - Map Generation is now massively multithreaded. Now 10 seconds on a 8km x 8km map (with a 24 thread processor) on Linux - down from 6 minutes 50 seconds. On windows its much faster, but not as fast. (Unallocating memory seems to take ages on windows.)
- [Performance] - Single threaded (as in Per Thread) performance for map gen is much faster
- [Misc] - Added /revealdungeons cheat
- [Misc] - Swapped x/z map size when using "vtserver --genmap" and using the gui in vtclient
- [Misc] - Generator Rooms and Boss Rooms in Dungeons are now have an icon on the map after being discovered
- [Misc] - Tank crosshairs now have a drop shadow to make them more visible
- [Misc] - Camera position for Light Planes has been moved back, you can now tilt the camera up to +/-80 degrees
- [Misc] - Hills lots now have more stone in them under the hills
- [Misc] - Hills now have cliffs
- [Misc] - Fortification lots, bandit bases, control points and ruins do not override the block at y=10 on placement/generation, unless the y=10 is empty, not a solid (cube) block or is a clay block
- [Misc] - Lot placement window is bigger, and will reposition itself if its overlapping the placing buttons
- [Misc] - /copy, /mirror, /rotate now use the /marks system
- [Bugfix] - Fixed a CTD on windows when generating large maps due to lua running out of memory
- [Bugfix] - Yet another speculative fix for "Exit To Main Menu" freeze
- [Bugfix] - Fixed canals putting up barriers if water is adjacent. Canals now check blocks row by row rather than just the Lot type
- [Bugfix] - Fixed player nameplates not being visible if the sky is in the background
Voxel Turf - SnapperTheTwig
Game has a minor update that increases performance by utilising more threads, and the multiplayer server has been reset. I now have a winter map for you guys to explore and build in!


EDIT1: Patch 1.6.9 hotfixes some lag that was added in 1.6.8
EDIT2: Patch 1.6.10 hotfixes some bugs from yesterday + has some more performance tweaking.
EDIT3: Patch 1.6.11 hotfixes another bug + does a lot more work to remove lag spikes from the client
EDIT3: Patch 1.6.11a - adds the /marks server command to make using /fill and /replace easier



VERSION 1.6.11a - 30/12/2020
==========
- [Feature] - Added the "marks" system for construction with server commands
- Enable with "/marks on"
- Disable with "/marks off"
- While active, when you place a block the position will be Marked as will the block you placed
- When you use "/fill m" it will fill from Mark1 to Mark2 with the second block placed
- When you use "/replace m" it will replace the first block placed with the second block placed from Mark1 to Mark2
- [Bugfix] - Added a threshold for gpu vbo unloading to prevent constant loading/unloading of vbos to the gpu.


VERSION 1.6.11 - 30/12/2020
==========
- [Bugfix] - Another world-hole fix
- [Misc] - /fly speed has been increased 50%
- [Misc] - ChunkRender thread pool now uses only 2 threads while the game is running. While the game is *loading* it'll still use the full pool. The game was rendering chunks too quickly causing frame drops as they were being uploaded to the GPU.
- [Misc] - When the client is approaching full GPU memory utilisation, it will more aggressively unloads vbos at a slightly lower threshold than before, but does not cut the draw distance in half until a later threshold is reached.
- [Misc] - Draw distance increase skydome radius increase animation made more smooth. Makes the yo-yoing of the skydome a lot more comfortable when flying
- [Misc] - Changed chunk unloading again. Vtclient will unload chunks when a chunk count threshold is reached. Only chunks outside of your draw distance are unloaded. This results in smoother performance than if chunks are checked every frame
- If you have less than 7GB of system memory vtclient will unload out-of-draw-distance chunks if there is more than 800, and will stop unloading when the count is less than 100
- If you have less than 7GB - 15GB, unloading starts at 4000 and stops at 400
- If you have less than 15GB - 30GB, unloading starts at 16000 and stops at 4000
- If you have more than 30GB, unloading starts at 25000 and stops at 4000
- [Misc] - The client will only request chunks from the server within 160m of the player while it is unloading the above chunks.
- [Misc] - If the client has its draw distance reduced due to frametimes being too high it will lower the chunk request radius accordingly
- [Misc] - If the client receives a chunk from the server and the chunk is out of the player's draw distance (because, eg the player has moved significantly between requesting and receiving), the client will store the chunk outside of the main chunk store (thus preventing main thread water/lighting calcs for out of range chunks).
- [Misc] - Server now reports system mem when you use /status command. Note that this may or may not include pagefile usage depending on platform
- [Misc] - Slight optimisation of client chunk download from server + netcode optimisation to stop the client getting more laggy over time as more messages are received


VERSION 1.6.10 - 27/12/2020
==========
- [Bugfix] - Fixed clientside world holes introduced in previous hotfix
- [Bugfix] - Fixed CTD on "Return to Main Menu"
- [Bugfix] - Fixed "No Road Access" when using MARK_AS_ROAD lotpack lots


VERSION 1.6.9 - 27/12/2020
==========
- [Performance] - Client now handles chunk counts better - this greatly reduces lag spikes due to too many chunks being loaded
- [Performance] - Client unloading of VBOs and chunks is now staggered to prevent an iteration over 10k chunks.
- [Performance] - Client unloading of VBOs and chunks has been further tuned.

VERSION 1.6.8 - 25/12/2020
==========
- [Performance] - Chunk polygonisation is now VERY multithreaded. This is the "Rendering Chunks" stage of the loading screen + happens when you move to a new area to load the chunks onto the screen. Expect roughly (nThreads/2)x speedup (for 24 threads a 12x speedup).
This also seems to help the game maintain peak framerates when rendering long draw distances. The game still does stutter when moving quickly when high draw distances are enabled, but it is better now.
- [Misc] - Added an "Extreme 2" graphics preset that sets the draw distance to 1,000m.
- [Misc] - The hardcoded max draw distance has been increased to 3,000m. To reach this you have to manually type this in the graphics settings menu
- [Misc] - Building canals over water will now no longer raise the depth of existing water, only lower it.
Voxel Turf - SnapperTheTwig
This small patch lets you save basements with template lots and helps prevent disconnects between vtserver and vtclient when doing stuff with big maps.

VERSION 1.6.7 - 28/04/2020
==========
- [Misc] - Fixed yOffset not being saved when server is shut down, causing basements to be lost on load and buildings to be elevated. To fix this you must re-save the lot.

VERSION 1.6.6 - 17/04/2020
==========
- [Misc] - Template lots now save basements
- [Misc] - Added a new, topical, faction name
- [Misc] - Added bigger map generation options (10km, 12km and 16km)
- [Misc] - Added a warning for generating maps greater than 4km x 4km, and a more aggressive warning for generating maps greater than 8km x 8km.


VERSION 1.6.5
==========
- [Misc] - vtserver will now send heartbeat packets every second to each player while said player is connected (prevent timeout during map gen with mods)
- [Misc] - vtserver now has a few more checks to unnecessary timeouts
Voxel Turf - SnapperTheTwig
This is a small patch that adds a warning dialog before repairing a lot that has been built upon since being insured, and adds ranged pickup of item drops. Items within 3m of you will be drawn towards you and make a pop sound upon being picked up.

VERSION 1.6.4 - 26/01/2020
==========
- [Misc] - Repairing a lot with blocks manually placed or removed after insuring will spawn a warning
- [Misc] - Repairing a lot with blocks manually placed or removed via the macro-repair will generate a tooltip saying that it won't repair those lots and will not repair those lots
- [Misc] - If a chest is to be removed by repairing a lot its contents will be ejected
- [Feature] - Items drops within 3 meters of you will now be gravitationally attracted to you after 2 seconds of spawning
- [Feature] - Added a sound effect for picking up items
Voxel Turf - SnapperTheTwig
This is a small patch that fixes spikey performance in multiplayer, reworks walking sound effects (both the effects and the logic) and fixed some various exploits


VERSION 1.6.2
==========
- [Bugfix/Exploit] - Fixed exploit in Greiver/Schemer missions where you can drop the quest item before handing it in. The item will be consumed from any players holding them, with the items being consumed from the player talking to the the relevent NPC first
- [Bugfix/Exploit] - Fixed exp and reputation from making custom buildings not being scaled by networth. This now follows the same calculation as building a normal building
- [Bugfix/Exploit] - Disabled custom building missions, as they can be easily cheesed by importing template lots and converting them.
- [Bugfix] - Fixed the Military Base not granting Base Attack bonuses if owned by a faction
- [Misc] - Changed Walking sound effect, it now also changes based on what surface you are on. Also added landing effects
- [Misc] - Tweaked walk/run/sprint sound effect code
- [Misc] - Added a rear-cinematic camera view, cinematic camera in vehicles has been now disabled.
- [Misc] - Tweaked run and sprint animations


VERSION 1.6.1 - 24/10/2019
==========
- [Performance] - Smoother framerates in multiplayer - the game now only does clientside physics updates on very close entities to the player (with in 12m), significantly reducing stuttering in cases where there are many bandits/entites around. This typically results in a 1.5ms or greater reduction in frametime (on frames where there is a clientside physics update).
...

Search news
Archive
2025
Apr   Mar   Feb   Jan  
Archives By Year
2025   2024   2023   2022   2021  
2020   2019   2018   2017   2016  
2015   2014   2013   2012   2011  
2010   2009   2008   2007   2006  
2005   2004   2003   2002