Jump to content
  • The Seasons Update (v1.13-pre.1)


    Tyron
     Share

    Dear Seasonal Community
    v1.13-pre.1 can now be downloaded through the account manager

    Many of you requested it in the last poll, and we'll deliver. Here is the very first public (preview) release of the seasons update! Turns it its not that easy to build good season simulation 😄 - this is the end result of the cumulative work that spanned several updates - all the way back to version 1.9 where we added realistic climate bands, food preservation in 1.10 and snow and rainfall in v1.12.

    Please notice
    1. This is a bug-ridden preview release, mostly intended for modders and very adventurous players. You will encounter major bugs, incomplete features, performance issues and crashes.
    2. New "pre" updates will only be posted in discord #news and not on the blog. A new v1.13 blog post will come when the first release candidate is ready.
     

    Screenshots, Gifs, Videos

    Seasons! Seasonal foliage and temperature dependent plant growth
    seasonalfoliage2.gif.75dc988481aee8068c44e7339ce52906.gif


    Snow accumulates in winter and melts during summer (WIP)
    snowaccum.thumb.gif.9531d196158687bad861d3c5178960cd.gif


    Fine detail ambient occlusion with SSAO, for high end usersssao-fences.thumb.gif.e38706114a630d5377b661447a58d5f1.gif

    Specular sunlight reflections on water surfaces, more foamy water
    sunspecular.gif.5d714e98173339b70c60f70b684c4986.gif

    New Mechanical power blocks - the large gear and a clutch
    mechpower.gif.d35e7a4e0d4714ea78d753f0ba500391.gif

    Flowerpot and Planter rework, the planted flowers and plants now have new models and different models depending on the size of the pot.
    0-pots.thumb.png.3914a2adf849d35db47c53666dbcbc1a.png


    Chute rework. Added many more chute block variants, including an archimedes screw
    0-chutes.thumb.jpg.62669778389f85d945aa87d024e24bbd.jpg  archimedesscrew3.gif.c865477761a2827c3ff68dd3c41e6524.gif


    Experimental immersive first person mode


    The world map is now persistent, as in, it will no longer unload previously discovered areas
    0-pers-worldmap.thumb.jpg.105a6d8f94d939b60f7339a90289fe30.jpg

    Lots of new flora for hot and wet climates: Fern trees, crotons and rafflesias
    2020-07-06_18-47-15.thumb.jpg.9bc209a4bac8cf2cc850cc26b2e32f27.jpg

    Modders are no longer limited to cubic shapes, here's some pumpkins modded in by Novocain, which he modeled in Blender
    pumpkinobj.png.160ccbabc837bfd6c22204f2963693e4.png


    Game updates

    • Feature: Seasons
      • Seasonal foliage - pines will have different shades of green, blueberries will turn bright red and maples will have fancy yellow leaves during fall
      • Snow accumulation - many blocks can now be covered in snow, such as loose stones, tall grass, saplings, flowers, slabs, stairs and fences - even in unloaded chunks (WIP)
      • Realistic, season-, latitude- and season-aware day/night cycles
      • Correct hemisphere simulation. If you travel far enough south, the seasons will be flipped, i.e. Winter in July
      • Latitude and day/night-aware temperature simulation. Temperature now affects crop growth and the precipitation system. Reeds, Papyrus, Mushrooms and berry bushes will also stop growing during freezing temperatures
    • Feature: Increased graphical fidelty
      • SSAO Shader - greatly improves the shading of blocks and creatures when enabled
      • Specular sunlight reflections on water surfaces
      • New models for knife, spear, axe, hoe, shovel and arrows
      • Trader Outfit bonanza: They now wear a wide range of accessories
      • Water is now more foamy
      • Bamboo is now also randomly rotated
    • Feature: Experimental immersive first person mode. Makes it so you can see your own body also in the first person camera mode
    • Feature: Mechanical Power updates
      • Many bugs related to it were fixed
      • New block: The clutch to disengage parts from a powertrain
      • New block: A large gear that translates torque<=>speed and has multiple connectors for small gears (WIP)
    • Feature: Map persistence. Clients now store already visited map pieces locally
    • Feature: Flowerpot/planter rework. You can now plant bamboo, reeds, papyrus, crotons in them. Also several planted models received some updates. The pot and planter is now also ready to receive new plant-in-pot growing mechanics in the future.
    • Feature: Wide ranging performance optimizations. As usual we always try to counter the additional performance cost of new features by squeezing out ever more extra frames from the game engine:
      • Greatly reduced block update lag when building with hundreds of chiseled blocks. Reading block entities were a bottleneck, they can now be accessed much more quickly by the game engine (technical info: moved from an array to a dict)
      • Major entity optimization - signifcantly reduced the cost of having many entities loaded at the same time. (technical info: Player, Entity and Item Physics simulation should now run independently from the physics simulation tps (GlobalConstants.PhysicsFrameTime). This allows us to reduce the physics sim tps from 60 to 30, effectively doubling physics sim capacity. The physics simulation is one of the most costly cpu side operations for the client and server, so this should give a nice performance boost. Probably introduces some new physics oddities though.)
      • Several performance leaks fixed for long running worlds. A server with many players that runs for several days eventually ended up very laggy. (technical info: 1. farmland and berry bushes were not properly unloaded, causing creatures searching for food looking through an every increasing list of potential food sources, 2. the entity partitioning system did not seem to properly unload entities, again increasing search costs)
    • Feature: New ram optimization mode: "Aggressively optimize". Should theoretically save about 200 MB ram. In this mode the game
      • No longer preloads all sound files, but only loads them on-demand
      • No longer keeps shape files in memory, but unloads them after initial tesselation and loads them back in on-demand
      • Reduces max particles by half
      • Reduces actively held chunk data
      • Unused music files get unloaded
    • Feature: Survival handbook improvements
      • Tries to yield more intelligent results when searching
      • Added category tabs
      • Added ".reload handbook" command to more efficiently trial&error handbook entries for modders
      • Added Survival Guide, Progression guide and Mining guide
      • Removed some items that do not belong in the handbook
      • Added survival guide button to the escape menu
    • Feature: More item transport blocks
      • Added Archimedes screw for vertical item transport.
      • New 3way, T, straight and cross chutes for horizontal and splitting item transport
    • Feature: Jungle flora updates
      • Added fern trees
      • Added rafflessia flowers
      • Added croton plants
      • Jungles should now be more forested and grassier
    • Feature: New world customization options
      • Added Polar-equator distance: Lets you define how far you have to travel north or south to reach the pole or the equator
      • Added starting climate: At long last, you can now now select in which climate band you want to spawn
      • Added season switch: Lets you disable the passing of seasons
      • Added global forestation modifier: Change the amount of forest your world has
      • Microblock chiseling is now enabled by default, but only for wood and stone material blocks. Added new config option to enable it for most cubic blocks.
    • Feature: Added new rain sound when in forests
    • Feature: Beds are now bouncy
    • Feature: Discovery of lore items now more epic with a gong and announcement message
    • Feature: Added toggle sprint setting. Lets you press down the sprint button only once to activate instead of needing to hold it down continuously
    • Feature: Improved remapper assistant. The tool that helps you upgrade your world to a new version just got easier to use. It now also offers to back up your world and after the remapping is completed, single player worlds will automatically reload
    • Feature: Rotatable anvils
    • Tweak: World Edit Gui Import Tool: Added 2 buttons to rotate the selection CW or CCW
    • Tweak: Updated language files. Added dutch translations \o/
    • Tweak: Made the slope test block rotatable just because.
    • Tweak: Added "Open Logs Folder" to the launching/connecting server screen
    • Tweak: /serverconfig setspawnhere now prints the coordinates in the correct notation
    • Tweak: Lowered the sun a bit, makes sunsets and sunrises look less awkward with the sun still up but everything dark already
    • Tweak: The Handbook browse history now also remembers the scroll position
    • Tweak: Disabled save game setting "AllowCreativeMode" because its confusing, and cannot be enabled again, so it trips up people. Creative mode is now always allowed given the right privileges
    • Tweak: Increased the flee detection range for most animals, therefore when sneaking this range is reduced by 40%
    • Tweak: allowCoordinateHud worldconfig now also affects the coordinates in the debug screen
    • Tweak: Journal Entries are now translatable
    • Tweak: Updated /time command
      • Now displays the date in a day.month.year format
      • Added subcommand /time setmonth [1..12] or /time setmonth [jan..dec]
    • Tweak: Updated weather related commands
      • Can now do /weather setprecip [0..1 or auto] to set set a permanent override precipitation level
      • Can now do /snowaccum [on|off] do toggle snow accumulation
      • Can now do /snowaccum here [0..4] to test snow accumulation for the current chunk
    • Tweak: Farmland now internally works with a moisture level instead of a watered yes/no value. This will allow future updates to the crop growth mechanic.
    • Tweak: Changed how precipitation works. It is no longer a separate weather pattern, but a function of time that is overlaid onto cloud patterns. This was necessary to simulate snow accumulation efficiently, but also would allow for precise weather forecasts in the future or for modders.
    • Fixed: Scrollbar issues in the mods manager at non-8 gui scales
    • Fixed: Vertical jitter when sprinting
    • Fixed: Elusive orange lupine not being generated
    • Fixed: Should fix the game crashing when using a completely empty json block model
    • Fixed: Satiety draining while in creative mode
    • Fixed: Plank stairs and slabs texture not aligning correctly with one another
    • Fixed: Water was no longer having any wavy motion
    • Fixed: Should fix a crashing issue when placing troughs in rare cases
    • Fixed: Curable/Perishable info texts were not translatable
    • Fixed: Disabling the survival mod made a creative world not start
    • Fixed: "Ready to mate" info on dead animals
    • Fixed: Flowing water deleting torch holder blocks
    • Fixed: Throwing spears pulled other spears from distant chest inventories
    • Fixed: /admin landfree removed the admins claims instead of claims of the supplied player name
    • Fixed: Various typos fixed in-game and in code
    • Fixed: Constructing pile of boards dupe bug
    • Fixed: Rare crash related to the particle system (by making chisel blocks a bit more thread safe)
    • Fixed: .reload shapes broke all creature animations (no animations were playing anymore)
    • Fixed: Server throwing exception when typing "{test}" into the console
    • Fixed: A charcoal lit text was not translatable
    • Fixed: Hoppers no longer push items into the quern output slot
    • Fixed: /time calendarspeedmul not sent to client causing sun jitter. Also was not saved to the savegame.    
    • Fixed: Various open file/folder buttons crashing on linux
    • Fixed: Scythe showing as a usable tool instead of knifes on several blocks
    • Fixed: Admin survival players non able to break their own reinforced blocks
    • Fixed: Should fixed chiseled blocks not supporting non 32x32 textures
    • Fixed: Reinforced lanterns broke on first attempt
    • Fixed: Windows Font DPI Setting no longer messes with the in-game fonts

     

    API Updates

    • Feature: Completed implementation of .obj and .gltf loader. Blocks and Items can now also use .obj or .gltf files for their models
    • Feature: Added harmony lib to improve mod support - you can use it to patch native code, see also official docs
    • Feature: Added api.Event.OnGetClimate event. Used by the survival mod to adjust the already existing worldgen based temperature value to the current season, latitude and daytime dependencies        
    • Feature: New event IngameDiscovery displays large centered text in a fancy font
    • Feature: Added a side independent network api. Added a .GetChannel() method. This simplifies network setup and reduces code repetition. See Example code below
    • Feature: Added GameMath.CyclicValueDistance()
    • Feature: Added zOffset per shape element capability (not yet editable in VSMC)
    • Tweak: Dropped obfuscation on 35k client code
    • Tweak: Add RequiredOnServer property to ModInfo
    • Tweak: Allow code mods without ModSystems to be loaded as long as they have a ModInfo attribute
    • Tweak: New animation meta data property "holdEyePosAfterEasein". Can be used to freeze the camera in place in the immersive fp mode. Added that for smithing and knapping so far.
    • Tweak: Added a globally unique identifier for savegames. (savegame.SavegameIdentifier)
    • Tweak: Added 'SQLiteDB' to the api, a basic helper class to set up a sqlite database, check out MapDB in the essentials mod for an example use case
    • Tweak: Renamed IBlockTextureLocationDictionary to ITextureLocationDictionary
    • Refactor: Renamed IntMap to IntDataMap2D
    • Refactor: IGameCalendar.Season is now GetSeason(), as the season now depends on the hemisphere at given location
    • Refactor: Some renaming of the EnumServerRunPhase values, but left old ones in as [Obsolete] for now. Added one new server runphase thats just before loading the first spawn chunks
    • Refactor: Removed Api.World.Calendar.DayLightStrength on the server side. Instead, retrieve the daylight strength with .GetDayLightStrength(double x, double z). The day light strength propery on the client side still exists, but now is the day light strength at the players position.
    • Refactor: IBlockAccessor.GetClimateAt() now has a new arg "EnumGetClimateMode mode" to retrieve the current temperature values
    • Refactor: GameMath.FastSqrt is now obsolete. Apparently it is slower than plain Math.Sqrt *facepalm*
    • Refactor: world.RayTraceForSelection() now has an additional arg take accept an optional entity filter. If you use this method, you might want to add (e) => e.IsInteractable as entity filter, as this was the previous behavior
    • Refactor: entity.EyeHeight is now entity.LocalEyePos
    • Refactor: entity.LocalPos is now called entity.SidedPos
    • Refactor: sapi.WorldManager.LoadChunkColumnFast is now called sapi.WorldManager.LoadChunkColumnPriority
    • Refactor: Renamed BlockMPBase.HasConnectorAt to HasMechPowerConnectorAt (only relevant for modded in mechanical power blocks)
    • Refactor: Cleaned up paths and naming on a lot of block shape files
    • Major Client-Side Refactor: meshdata.Rgba2 is no more. No longer needed as climate tint is now sampled by the shader instead of baked into the vertices. Consequently:
      • new MeshData() now takes one argument less.
      • The standard shader no longer has the prog.RgbaBlockIn property
      • Block.TintIndex is gone, replaced by Block.ClimateColorMap and Block.SeasonColorMap
      • The VS ModelCreator no longer has a tint index field, replaced by 2 text fields for the climate color map and season map. Be sure to open the new shape files with the new editor.
      • capi.ApplyColorTintOnRgba(tintIndex, ...) is now capi.World.ApplyColorMapOnRgba(ClimateColorMap, SeasonColorMap, ...)
      • Any meshes that get added to a chunk mesh (e.g. by block entities) require meshdata.SeasonColorMapIds and meshdata.ClimateColorMapIds to be non-null (initialize with verticescount/4 zeros if no color mapping is needed)
      • capi.Tesselator.TesselateShape() no longer takes 1 tint index, but 2 ints a seasonColorMapId and climateColorMapId
      • capi.Render.PreparedStandardShader() now accepts a Vec3f to pass on a color multiplier
      • capi.Render.AllocateEmptyMesh() no longer accepts "int rgba2Size"
      • meshData.XyzFaces is now a byte array instead of an int array to save ram
      • meshData.Renderpasses is now a short array instead of an int array to save ram
      • meshData.XyzFaces now need to hold the face index plus 1 (0 for no face, 1 for north, 2 for east, etc...)
      • Added api.RegisterColorMap() to register a color map that is (optionally) inserted into the block texture atlas, added config/colormaps.json for json loading of color maps.
      • The shaders explicits attrib locations for several shaders shifted by -1 (since we no longer upload Rgba2 data)
         
    • Fixed: The Array Extension .RemoveEntry<T>() garbled the resulting array when removal index was 0
    • Fixed: Using <font> in Richtext caused the text to loose its orientation
    • Fixed: Renamed Block.OnNeighourBlockChange() to Block.OnNeighbourBlockChange(), and this method is now also called client-side
    • Fixed: block type property RandomizeRotations ignoring the RandomizeAxes property
    • Fixed: Crafting recipes that referenced blocks/items that existed but were remapped did not log an error



    New simplified Network api sample code, in this case sending custom data to any connecting player:

            public override void Start(ICoreAPI api)
            {
                api.Network.RegisterChannel("latitudedata").RegisterMessageType(typeof(LatitudeData));
            }
    
            public override void StartClientSide(ICoreClientAPI api)
            {
                api.Network.GetChannel("latitudedata").SetMessageHandler<LatitudeData>(onLatitudeDataReceived);
            }
    
            public override void StartServerSide(ICoreServerAPI api)
            {
                api.Event.PlayerJoin += (plr) =>
                {
                    api.Network.GetChannel("latitudedata").SendPacket(latdata, plr);
                };
            }

     

    Edited by Tyron

     Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.