Dear Extraordinary Survivalists
v1.19.0-pre.1, a preview release, can now be downloaded through the account manager (section "Other Goodies").
We are proud to present, our next major update to Vintage Story! The working title for this update was "Dejank Redux" - polishing of existing game mechanics. In fact, it started out with a gigantic list of items from each team member on what they individually felt could need addressing, we then narrowed it down to just a small handful. Those plans included a revisit to the death and reviving mechanics, but that became displaced in favour of a cleanup/upgrades on the game engine itself, as well as many other tweaks that also felt befitting to the title of "Dejank". As usual, some new features always manage to sneakily sneak into our updates
As with our previous updates, we continue our tradition of challenging the status quo of what this game engine can do - this time primarily by introducing a new concept we call Mini Dimensions. It is our hope that once this tech has matured, it will enable all kinds of movable multiblock shenanigans. We are excited to explore this new frontier with you, dear Community!
Juicy Engine Tech a-plenty
This update contains a lot of new and improved engine tech that will enable new types of game play while also ensuring that the engine still has plenty of room for the game to grow.
- Mini Dimension System: There is now rudimentary support for world chunks to be rendered into the game world independent of their position in the standard map system. In the long term, this should allow for multiblock vehicles and other wicked mechanical shenanigans. As a first proof of concept, when importing schematics (or copying from the clipboard) through World Edit, you can now see a live preview of all blocks, positioned using this system. For technical info, see our documentation file: movchunks public notes.txt
- Unlimited textures: The textures for blocks, items and entities are no longer limited to a single texture atlas. Therefore, mods which add a lot of new textures should never run out of texture atlas space again! This multi-atlas system was partially included since the game's early days and is now finally complete.
- New First-person mode: Took a lot of tuning, but visible hands are finally a thing now
- Wearable animation support: Items that the player wears can now be animated. This is important for some clothing types such as skirts.
- Animation system v2: A new data format, more compatible to other animation formats, such as the one made with Blender (use with Blender still relies on a community made converter, however)
- Connected textures: Rudimentary support for this now exists, to allow e.g. a 64x64 texture be mapped onto 2x2x2 blocks
- Chat commands code rewrite: In v1.18 we introduced a new API for commands - one that would allow for automatic documentation and future capability for a command auto-complete feature. In v1.19 the monumental effort of migrating hundreds of existing commands to this new API is now complete!
- World Edit commands consistency overhaul: The World Edit system grew organically over time, and it was a prime candidate for a revisit. We introduced a new, consistent command naming scheme and also filled in some gaps in its feature set. More de-jank to come still.
- Chiseling system upgrades: We continue our efforts towards ever tighter integration of chiseled blocks as a "first class citizen". Chiseled blocks now support decor layers, naturally integrate into the terrain when they are part of a ruin, and can become submerged in soil.
Please note
1. This first preview release is an unfinished update, mostly intended for modders and very adventurous players. You will encounter major bugs, incomplete features, possible performance issues and crashes.
2. Further preview releases (including fixes for bugs in pre.1) will only be posted in Discord #news and on info.vintagestory.at and not on this blog. As usual, a new v1.19 blog post will then come when the first full release candidate (rc.1) is ready
3. If testing 1.19 on an old world from 1.18 or earlier, we strongly recommend making a backup copy before loading the world in 1.19.
Still planned for rc.1
Many of the new mechanics and game content in this preview are in a rough state, especially the new deer, ruins and new First-person mode. They will require a lot of tuning and tweaking before we can go stable. Also wild animal catching is still unfinished.
Screenshots / Gifs
Overhauled First-person mode: Now with hands! WIP
Cave-in system: Build support beams to prevent getting buried alive (only on by default in the Wilderness Survival mode)
Added 11 species of deer and more! WIP (Antlers still missing)
Animal catching: Domesticated animals can be picked up with a basket
Fully reworked ruins. Very much still a work in progress (WIP), they don't all fully spawn yet.
Added Command Handbook (in Creative mode)
Added Scroll racks, also lets you store Tuning cylinders
World map tweaks: No longer super revealing by default, but instead it displays your prospecting results. (WIP)
Character selector tweaks: More canon hair colors, better randomizer and the ability to use your last selection from another world / server
More chisel power: Now supports decors and topsoil
Overhauled/New 3D models for troughs, buckets and seeds
Added live preview during schematic import
Game updates
- Feature: Overhauled First-person mode (WIP): Now a hybrid between the old standard fp mode and the Immersive fp mode. We only render the player's hands and arms, their position depends on current actions and items held
- Feature: Added moose, elk, and 11 species of deer, each has several antler variants. (based on the assets from the Capreolinae mod, with permission. Thanks Tentharchitect!)
- Feature: Cave-in system in the Wilderness Survival playstyle. Solid rock and cracked rock now collapses if not supported while it is being broken/placed. Enabled via world config. Use wooden beams to stabilize mines and tunnels!
-
Feature: Added Accessibility tab. Moved View Bobbing and Toggle Sprint settings there. Added 2 new accessibility settings: Camera shake strength and Wireframe thickness.
- Tweak: Added ability to adjust temporal instability waviness in the new Accessibility tab
- Tweak: Added experimental minbrightness client config, potential use for YouTubers/streamers to prevent pitch-black areas.
- Feature: Added Command Handbook. Available in Creative mode through the game pause menu, or type command .chb to open
-
Feature: Visual fine tuning
- Improved frost overlay visuals on creatures/traders - frost now only applies during precipitation or shortly thereafter, improved visual quality and some body parts are no longer completely frosted over, such as the trader's head
- Re-worked large trough, small trough and bucket models
- Crop seeds and grain items now have 3D models
- Improved SSAO quality - no longer has odd artifacts (thanks to @nug on Discord)
- Added more depth to Dry stone wall textures. Visual tweaks
- Redwood beams: wood grain was in the wrong direction
- Fixed Aged fancy bed having bright green bed cover. The bed cover is now faded, aged green
- Replaced Resonance Archives clutter bed with updated model. Added colorful linen textures for mattress sides and pillow. Added shading texture overlay for mattress sides and pillow. Fixed bed-fency-open clutter block missing textures
- Faster storm dust particles
- Improved seraph idle animation
- Feature: Added scroll racks. Storage space for scrolls, papers and tuning cylinders
- Feature: Added cracked ashlar blocks, deadfungi and spotty mold decor layer blocks and some book clutter blocks
- Feature: Prospecting pick heatmap: added tabs to the world map
- Feature: New more medieval looking world map visuals, using the color palette from the Medieval Map mod (by permission from Rangelost, with many thanks). Classic world map visuals can be restored using the commands "/worldconfigcreate bool colorAccurateWorldmap true" server-wide or "/player [playername] grant colorAccurateWorldmap" for each player
-
Feature: Chiseling system upgrades
- Decor overlay support as well as support for grass covered topsoil block. Can use knife to remove decor layers again.
- Can now properly add more material to a chiseled block, useful when wanting to create a full block from 2 slabs
- When using slabs as input material the game did not correctly count already used material
- Chiseled blocks no longer have their name fixed to the block name first used during creation. If no custom name is set by the player, the chiseled block will now take on the name of the majority material
- World generation now fully supports chiseled blocks when part of a surface or underground ruin, i.e. chiseled block materials can adapt to local rock types and can get submerged into soil
- Feature: Ability to catch small tamed animals (generation 5+) with an empty reed chest. Requires one free backpack slot
- Feature: Raccoon and Fox pups now spawn in the world
-
Feature: Improved character selector
- Players can now select their previously selected skin preferences, in the Create Character dialog via new 'Last selection' button
- Greatly reduced strange hair combinations when using the Randomize button
- Updated hair colors. Replaced all purple and pink shades.
- The selector no longer plays the seraph voice when the Create Character dialog first appears (too laggy in the first few frames to do so, can heavily skew sounds)
-
Feature: Gameplay balancing tweaks and fixes
- Tweak: Double-headed drifters and Bells now have a chance to drop Jonas parts/sub-assemblies.
- Tweak: Double-headed drifters have a little more health now.
- Tweak: Made arid areas more arid (by further filling up lakes with blocks)
- Tweak: Being wet debuffs your warmth 50% more strongly, but players now get wet from snowfall 4 times more slowly than from rain
- Tweak: Nerfed fur clothing set warmth values, it was circumventing the need for clothing repair
- Tweak: Polar bears now cannot climb, but can swim faster than other bears
- Tweak: Wooden paths can now be made with any type of board
- Tweak: Plank path recipe now outputs 1 path per 2 boards (25% of previous output)
- Tweak: Archimedes Screw now only accepts plates of tool metals in its recipe
- Tweak: No fall damage when doing a gliding land while aiming less than 45° downwards, i.e. looking horizontal or upwards will negate all fall damage
-
Tweak: Adjusted prices for a couple of trader goods.
- Linen now much more expensive, also raised Gambeson armor cost to match.
- Most tools slightly more expensive
- Antique armor cost now matches the value of the armor slot. Head armor cheapest, leg armor medium cost, chest armor most expensive
- Fixed: Players not receiving fall damage when touching a wall during the fall
- Fixed: Ingot piles were combustible
- Fixed: Tree seeds were not combustible
- Fixed: Fuel duration of Night vision goggles was not properly calculated (was only client side)
- Fixed: Damaged flax crop still giving a full yield of flax fibres
- Fixed: An upside half slab over a 1-deep hole is now no longer recognized as a cellar
- Fixed: Sleeping did not accelerate healing. Health and Hunger are now calculated based on in-game time instead of real world time. (Can adjust the heal regeneration speed and the hunger speed using commands /worldconfig playerHealthRegenSpeed 1 and /worldconfig playerHungerSpeed 1)
- Feature: Added a worldconfig option to change the health regeneration speed: "/worldconfig playerHealthRegenSpeed 1". Also available on world creation
- Feature: Can now ignite extinct torches on lit torches, firepits, forges, pit kilns, etc.
-
Feature: World Edit upgrades
- Schematic import (and copying from clipboard) now previews a live version instead of half-transparent blue cubes
- Major World Edit command rework based on Elvas' suggestions. Air brush placement quantity is now a % value instead of fixed value.
- New option for Paint brush: Placement %
- Move, Selection and Repeat tool can now also be operated by "Look direction" instead of N/E/S/W/U/D only
- New constraint system. "/we constrain selection" constrains all World Edit operations to the current selection only. "/we constrain none" to return to default behavior
- New flip system: "/we flip (n|e|s|w|u|d|l|x|y|z)" flips selected area in-place in given direction (cardinal, look direction or axis)
- Fixed chisel brush icon black instead of white
- Fixed major derps happening on block entities when using undo/redo after certain operations
- Fixed schematic rotation: don't abort with exception if a block returns an invalid rotation, instead log an error and use unrotated variant
- Added a couple of aliases to /we marked commands
-
Feature: Added capability for server owners to compact savegames
- /db vacuum: Recreate savegame to minimize disk space
- /db prune [threshold] confirm: Deletes chunk columns where there are less than [threshold] player edits (direct block placements/breakings by a player) since 1.18.0 - note that this also allows the game engine to refresh (re-generate) the world with latest version worldgen in all these areas
-
A full compact process looks like this:
- /wgen autogen 0 (disable generation of chunks)
- /db prune 5 confirm (delete all chunks with less than 5 edits)
- /db vacuum (compact database)
- Feature: All Treasure chests have now more valuable loot in them
- Feature: More streamlined introduction into the game's mechanics (WIP). Instead of a dialog about the Handbook overlaid when the game first starts, now when launching the game for the first time, the player can select their character and 15 seconds after selection a small HUD element will appear on the left side offering help - this will open an Introduction dialog with links to the Handbook and the tutorial.
- Feature: Added a stack randomizer for all Jonas items
- Tweak: Can now shift+left click armor and wearables into the character inventory
- Tweak: Show appreciation where it's due: new petseraph animation (untested)
- Tweak: Entities standing on a rotating Quern now rotate as well
- Tweak: Added tarnished steel beams
- Tweak: Added visual hints that the Library resonator (in the Resonance Archives) is interactable
- Tweak: World info hover box now only shows the differences from the default configuration
-
Tweak: Game text fine tuning
- Fixed: Liquid containers showing only first decimal place and thus rounding the value
- Tweak: Removed the '(Experimental)' suffix to large world sizes. The game engine is now stable enough for large sizes.
- Tweak: More immersive "claimed by" error messaging, especially when in the Resonance Archives (simply reworded)
- Tweak: Renamed 3 blocks: Crimson King maple=>Crimson maple, Green Spire cypress=>Mediterranean cypress, Stone bricks =>Ashlar blocks
- Tweak: Oiled hides mention a bit more on how curing them works
- Tweak: When the main menu offers to download a new update, the Confirm Update screen now has a link to the devlog entry
- Tweak: Multiplayer server screens: don't show the server password in clear text
- Fixed: A 'claimed' error message appearing when igniting the coal pile in the Resonance Archives generator room
-
Tweak: Audio fine tuning
- Improved soundscape for glider gliding and Creative-mode flying
- Over 200 sound files have been fine tuned for quality by reducing noise, eliminating popping sounds and more
- The Resonator Music is now affected by the music slider, instead of the ambient slider
- New eating sound for large animals
-
Handbook tweaks
- Tweak: Handbook search now ignores diacritics in the search text (and the same change for searching the Creative inventory)
- Tweak: Now also displays if an item can be obtained by harvesting a creature
- Tweak: Handbook entry for alum gives some details of where to find it
- Tweak: Jonas generator room equipment, and Gasifier, removed from the Handbook
- Tweak: Lamellar armor has the word 'armor' added to the name, so that it shows up in a search for "armor"
- Tweak: Added "Mechanical power part" description to mechanical power blocks to make them more easily findable in the Creative inventory and the Handbook
-
Tweak: Improved command help
- Add client-side .help command
- Improved formatting of the help output in chat
-
Additional command tweaks:
- Added ability to individually enable world maps (in games where the map is normally disabled) using /player playername grant allowMap
- Added commands .debug plrattr [path] and /entity cmd [selector] attr [path] to read player/entity attributes. Might help us narrow down the cause of "Dave" running during broad daylight and blood rain seen outside times of temporal instability
- In the /entity command, added a new "id" entity selector, e.g. /entity remove e[id=1234]
- Tweak: Log login failure messages to client-debug.txt (rarely, a player cannot connect to the auth servers at all), improve the feedback messages in-game
- Tweak: Reduced default SpawnCapPlayerScaling from 0.75 to 0.5, as multiplayer servers with a large player count got completely flooded with drifters
- Tweak: When privilege allowcharselonce was not granted, show the player an error message instead of opening the dialog to reduce confusion
- Tweak: Removed unused workbench block from game
- Tweak: Don't show < > buttons on books with only 1 page
- Fixed: Pixelated background on the Download Mods screen
- Tweak: Can no longer remove bot gear in Survival mode, now requires Creative mode
- Tweak: Allow corrupted savegames to repair broken MapRegions in repair mode
- Tweak: Added experimental feature to slightly speed up world startup, available only in the Developer settings tab
- Tweak: Added "Macro Editor" button to the Controls settings tab
- Tweak: Added --withConfig server startup arg. Allows one to override any serverconfig.json values at runtime
- Fixed: Butterflies now manage to fly away eventually after getting stuck in water
- Fixed: Reduce cases of endlessly jumpy dropped items
- Fixed: Should now properly sync edge sitting animations on players
- Fixed: Player body pitched awkwardly after landing with a glider
- Fixed: Unable to complete the Resonance Archives while in immersive first person mode
- Fixed: When a candle is placed on top of a fence it will only spawn one candle in the center
- Fixed: Gates sometimes missing collision and selection box [detail: when a gate was placed and a second one was added to the left the right one was missing the multiblock parts and had no collision except for the bottom right block]
- Fixed: Glider also functioning if inside a backpack (thanks korobya)
- Fixed: Some trader carts did not fully generate
- Fixed: Should fix watered farmland not updating for other players
- Fixed: Multiple issues with block breaking overlay in tallgrass, leaves and vines
- Fixed: GUI alignment issues when references to hotkeys are mixed in with other text
- Fixed: Folders with spaces could not be opened (e.g. via "Open Mods Folder" button)
- Fixed: The Controls settings tab and the Macro Manager now show the key for the currently set keyboard layout, instead of always assuming a US keyboard
- Fixed: /moddb search also returned non mods, and if no version is specified now installs the latest version instead of the oldest
- Fixed: .charsel command leaving changed class on the client side if the player did not have permission to change it in the first place
- Fixed: Some lore discoveries activating the gong and discovery center screen text, although they were already discovered
- Fixed: Incorrect position matching in the /entity command selector (e.g. in /entity remove e[minX=3, minY=0, minZ=3, maxX=4, maxY=2, maxZ=4])
- Fixed: Running server with --standby argument crashes if serverconfig.json does not exist
- Fixed: --port arg not applying to master server advertising
- Fixed: On some systems (MacOS) the sky would load color inverted (red) [Technical detail: this now ensures we load all images as Bgra8888 since that's what we send our texture pixels as to the GPU]
- Fixed: Linux Wayland freezing on start up issue
Vintagehosting
- Feature: Added ability to delete the complete hosting setup, improved logging
- Feature: Show the server logs from your Vintagehosting server (last 200 lines of server-main.txt)
- Fixed: Timeout issues when changing server version
- Fixed: Made it easier for players to test world seeds locally first before using them on Vintagehosting (add 384k world size option and VS hosting servers will now default to 384k x 384k world size)
- (Internal: Significant progress towards Vintagehosting mod support)
Mod API
- Feature: Mini Dimensions initial support. For technical details see movchunks public notes.txt
- Feature: Support for connected textures for drawType: "Cube" blocks (see "tiling cobblestone test" block in creative mode, and blocktypes/meta/tilingcobble.json)
- Feature: Eliminated all texture atlas limitations, i.e. mods that add a lot of blocks no longer have glitched graphics
- Feature: Added Block randomizer. Creative mode configurable block that, when created during worldgen as part of a schematic can randomly turn into one of 10 blocks. Using meta-filler block as input for the randomizer block now forces air blocks at that location
- Feature: Chiseled blocks should now support worldgen blocklayer replacement when using the new meta-blocklayer block as placeholder material
- Feature: Wearable gear animations support. Models configured with a step parent and backdrop shape can now be animated in VSMC
- Feature: Added a somewhat more Blender-compatible animations mode (via version:1 attribute for each animation)
- Feature: Randomizer block and microblocks now respect worldgen schematic replace block properties to conform to local rock types if they are made of granite
- Tweak: Loot vessel drops no longer hardcoded but configurable in the block type json file
- Tweak: Can use stack randomizers to get resolved when used as a mob drop
- Tweak: Allow shipping of .dll files inside a mod's native/ folder
- Tweak: Game now logs a warning if the obsolete Collectible GrindedStack property is set
- Tweak: Added api.Event.OnEntityLoaded event
- Tweak: Disallow registering of recipes in-code at a launch phase that would cause random crashes
- Tweak: Added Δx/y/z fields to the block selection editor (.bsedit) to move selections around
- Tweak: Game will now print a warning on duplicate animation codes
- Tweak: Avoid game crashing from improperly configured liquid containers
-
Tweak: Can now define player bot inventory via inventory:{} object in the entity type json file:
[....] eyeHeight: 1.7, attributes: { inventory: [ { type: "item", code: "blade-blackguard-iron" }, { type: "item", code: "armor-body-improvised-wood" } ], [...]
- Tweak: Added "ServerIdentifier" GUID to serverconfig.json
- Tweak: BlockPos now includes a dimension field as well as x, y, z values, see documentation for Mini Dimensions
- Tweak: In IBlockAccessor, position-based methods with BlockPos parameters should be used where possible in place of x, y, z parameters, for future dimension compatibility
- Tweak: Include OpenTK.Audio.OpenAL.dll and OpenTK.Mathematics.dll in server builds since native libs are already there
- Refactor: Collectible.OnBeforeRender(): The passed ItemRenderInfo.ModelRef property has a changed type MeshRef=>MultiTextureMeshRef. Instead of calling api.Render.UploadMesh() you now need to call api.Render.UploadMultiTextureMesh() to acquire this new type. To manually render such meshref, use api.Render.RenderMultiTextureMesh()
- Refactor: Renamed Block.PriorityInteract to PlacedPriorityInteract. Added Collectible.HeldPriorityInteract
- Refactor: IRenderAPI.GetItemStackRenderInfo new argument: dt
- Refactor: Method BlockEntity.OnPlacementBySchematic() has now 2 more arguments for the rocktype info
- Refactor: Fox entity types now in one file instead of six.
- Refactor: entity.AnimManager.HeadController and entity.AnimManager.Animator might now be null for a few frames during startup. You might need to null check these
- Refactor: InventoryBase.GetBestSuitedSlot() has a new argument ItemStackMoveOperation op = null
- Refactor: Split method CollectibleBehaviorHandbookTextAndExtraInfo.GetHandbookInfo() into multiple smaller ones
- Removed: Disabled gltf test object, gltf loading broken due to multi-atlas change (scream in #gamedev if you need this, lel)
- Fixed: IServerAPI.ServerIp property crashing on dedicated servers
- Fixed: tree.GetAsBool() return wrong value for bool attributes :facepalm:
- Fixed: Call to unload chunks did not trigger UnloadChunk event
- Fixed: GetPlayersAround() horizontal range search only searched in a range of sqrt(range)
- Fixed: MaxAnimatedElements setting not set to 46 (was 36)
- Fixed: Modded sky.png not getting loaded
- Fixed: Clutter block crashing game if a texture was missing, now prints an error
- Fixed: "Companions" section of entity spawning not behaving as one would expect. Originally had only and 80% chance of spawning the main entity and then 80% chance of spawning one of the companion codes. Now the main entity is always spawned first, and every subsequent entity is selected from the companions list. Also the spawner had an hidden bias towards preferring spawning baby creatures due to their smaller hitbox
- Fixed: When on IServerPlayer.Disconnect() is called it would crash the client
- Fixed: Multiple instance detection by using a named mutex (since net7)
- Fixed: CollectibleBehavior.OnHeldAttack* methods where not getting called
- 40
- 3
- 1
- 12
- 12
- 3
- 5