Screenshots
==========
==========
New FirePulse projectile and movement-lines.
New trees.
New Maps>General panel. (on right)
New object VDF options.
New Objects page options. (with new plants marked on left)
New Live>Info panel. (and new outlining used to show that unit is a prototype)
UI to set match starting-age.
New Profiler>[Last data-frame] options.
New Profiler>[All data-frames] run-counts and Clear button.
New dev-settings.
79 updates
==========
General/Gameplay:
* Resources are collected from a plant by "attacking" it (i.e. knocking produce out)
* Proto units move at half-speed
* Deleted protos have a delay (10s) before being recreated
* Combat-types apply to object by default (rather than requiring defense-type entry)
* New combat type exists: energy (like pierce, but works on more things)
* Child clones again have slowdown applied
* Protos again have slowdown applied
* Health system is based on doubles (with armor being deflection percent)
* New ability exists: fire pulse [for now, all units have it]
* New global ability exists: AirStrike [for now, all biomes have it; fake one for testing]
* Proto units again default to NoAction stance
Content/Modding:
* New plants exist: Banana Tree, Banana Tree 2, Banana Tree 3, Banana Tree 4, Banana Tree 5, Cupuacu Tree 1, Jatoba Tree 1, Kapok Tree 1, Palm - Ground 1, Palm 2, Palm 3, Palm 4, Palm 5, Palm 6, Palm 7, Palm 8, Palm 9, Palm 10, Palm 11, Palm Bush 1, Palm Bush 2, Papaya Tree 1
* Building combat-type renamed "Impact"
* New "Create standard objects" Map setting exists, letting you disable the creation of the standard start structures/units
* New VObject>model>shaderOverride prop added
* Objects with UnitySource model can have vertex-colors auto-generated for AFS shader
* AFS shader can be set to double-sided (the new default)
* Object>General panel lets you set a "Height" prop, which scales the model during import
* New TreeCreator shader is added to shader-list for shader-override prop. (has better wind animation than AFS shader)
Fixes:
* Cloning proto no longer errors
* Towers no longer fire before being built
* ApplySoils (based on biome-at-start data) works again
* Cloning a map in a subfolder no longer puts clone in root folder
* Structures no longer fail to build.
* Projectiles no longer sometimes error on collision.
* Projectiles correctly stop moving after match-end.
* Projectiles whose target is destroyed while moving, get destroyed at target-pos anyway
* Objects are aligned to grid, even when the grid-size isn't 1
* Using the "FireProjectile_FirePulse" ability no longer errors
UI/Visuals:
* BottomBar>Info panel exists, showing object info (from both type and instance)
* Plant collect-health is shown in bar
* Proto units shown by white border around health-bar (rather than white outline around model) [outline dropped gpu fps too much]
* Biomes>Hotkeys>General renamed [Globals], and shows grid
* BottomBar>Globals panel exists (and its hotkey series works)
* Matches page lets you set the starting-age
* Arrow has fire effect at back, to make it easier to see
* Visualization for a path uses line-segments, rather than dots
* Data-frame-profiler lets you toggle profiling of outside-data-frame and inside-data-frame code
* Console>Profiler>[All Frames] panel has Clear button
* Maps>Maps panel has side-panel showing map info
* Objects>General panel has new "Show bounds" option
* New Objects>General>[Refresh Model] button exists
* UI exists for setting LOD values (making tweaking faster)
* New Objects>[Show Grid] option exists
* New Objects>[Show reference] option exists (shows translucent 5'11" man)
Framework:
* When error occurs in v-script, the call-path/vs-stack-trace is logged
* Stack trace is preserved better when called through Node.CallMethod
* VObject game-objects are categorized by type in scene
* VModelImporter has new UnitySource model-loading system. (letting model auto-processing occur, and letting vdf files reference differently-named models)
* VModelImporter transforms speed-tree models to be static-batchable
* VModelImporter transforms UnitySource models with AutomaticLOD comp to be static-batchable (swaps AutoLOD comp with native LODGroup, which works with static-batching)
* CacheL3 models are ignored if asset backing them is destroyed (i.e. cache item is invalid)
* LODs are automatically generated for objects, using method that works with static-batching (LODs can be configured in Main.vdf file)
* VObject class split into two classes: VObject (base type), and VObject_Type (holding the props that only type's have). (meaning: classes are smaller, and have clearer/narrower roles)
* "Proto build speed multiplier" setting exists
* "Attack speed multiplier" dev-setting exists
* NotTo[...] exclude-prop-from-serialization system cleaned up. (combined into one NotTo attribute class, and with better handling code)
* Profiler_AllFrame system also records and shows run-count
Performance:
* Data-frame-time reduced to ~80% of prior, by making-so:
* 1) Apply-transform-time reduced to ~12% of prior, by having Transform props be set directly (rather than through Change system)
* Data-frame-time reduced to ~80% of prior, by making-so:
* 1) CallJS-time reduced to ~50% of prior, by having the stack-trace only generated when capture-stack-trace is enabled in the Console>Calls panel.
* VDF deserializing run-time reduced to ~80% of prior, by making-so:
* 1) VDF.ParseTokens run-time reduce to ~72% of prior, mostly by using a switch statement instead of else-if's.
* VDF serialization run-time reduced to ~83% of prior, mostly by replacing some calls to Contains with a call to IndexOfAny
* Player serialize-time reduced to ~66% of prior, mostly by optimizing the VDFNodePath.ToString() method.
* Base VScript run-time (e.g. for two "every # seconds, run #" nodes) reduced to ~2% of prior, mostly by caching the GetNodesOfType results.
* VObject.Manifest run-time reduced to ~33% of prior, by having objects created during post-core-map-init run-path not refresh the blob-slices.
* VDF serialization-time reduced to ~66% of prior, by caching the pre-serialize/serialize/etc. method-lists.
* VObject.health and VObject.hasProduce.health are now traditional properties, rather than using the Node/Change system.
* Object health-bars are only repositioned if the unit's pos-on-screen changed.
* Calling VConvert.FinalizeVDFOptions no longer GC-heavily clones VDF alias Dictionaries.
* Static batching works for plants and structures
* Object cloning/instancing (e.g. during plant-generation) run-time reduced to ~33% of prior (map launch-time reduce to ~40% of prior), by making-so:
* 1) VObject_Type cloning saves to a VDFNode, caches it, then loads from that. (rather than doing a full to-string serialization cycle each time)
* 2) Less data is copied into instances from type; instead, instances just reference the type's data. (basically, any data in the type that stays the same, is just referenced)
* Object cloning/instancing (e.g. during plant-generation) run-time reduced to ~33% of prior (map launch-time reduce to ~40% of prior), by making-so:
* 1) Path-finder-cache is only calculated once at end of core-map-init.
* 2) Unnecessary Change calls are not occuring during VObject add-to-map.
==========
General/Gameplay:
* Resources are collected from a plant by "attacking" it (i.e. knocking produce out)
* Proto units move at half-speed
* Deleted protos have a delay (10s) before being recreated
* Combat-types apply to object by default (rather than requiring defense-type entry)
* New combat type exists: energy (like pierce, but works on more things)
* Child clones again have slowdown applied
* Protos again have slowdown applied
* Health system is based on doubles (with armor being deflection percent)
* New ability exists: fire pulse [for now, all units have it]
* New global ability exists: AirStrike [for now, all biomes have it; fake one for testing]
* Proto units again default to NoAction stance
Content/Modding:
* New plants exist: Banana Tree, Banana Tree 2, Banana Tree 3, Banana Tree 4, Banana Tree 5, Cupuacu Tree 1, Jatoba Tree 1, Kapok Tree 1, Palm - Ground 1, Palm 2, Palm 3, Palm 4, Palm 5, Palm 6, Palm 7, Palm 8, Palm 9, Palm 10, Palm 11, Palm Bush 1, Palm Bush 2, Papaya Tree 1
* Building combat-type renamed "Impact"
* New "Create standard objects" Map setting exists, letting you disable the creation of the standard start structures/units
* New VObject>model>shaderOverride prop added
* Objects with UnitySource model can have vertex-colors auto-generated for AFS shader
* AFS shader can be set to double-sided (the new default)
* Object>General panel lets you set a "Height" prop, which scales the model during import
* New TreeCreator shader is added to shader-list for shader-override prop. (has better wind animation than AFS shader)
Fixes:
* Cloning proto no longer errors
* Towers no longer fire before being built
* ApplySoils (based on biome-at-start data) works again
* Cloning a map in a subfolder no longer puts clone in root folder
* Structures no longer fail to build.
* Projectiles no longer sometimes error on collision.
* Projectiles correctly stop moving after match-end.
* Projectiles whose target is destroyed while moving, get destroyed at target-pos anyway
* Objects are aligned to grid, even when the grid-size isn't 1
* Using the "FireProjectile_FirePulse" ability no longer errors
UI/Visuals:
* BottomBar>Info panel exists, showing object info (from both type and instance)
* Plant collect-health is shown in bar
* Proto units shown by white border around health-bar (rather than white outline around model) [outline dropped gpu fps too much]
* Biomes>Hotkeys>General renamed [Globals], and shows grid
* BottomBar>Globals panel exists (and its hotkey series works)
* Matches page lets you set the starting-age
* Arrow has fire effect at back, to make it easier to see
* Visualization for a path uses line-segments, rather than dots
* Data-frame-profiler lets you toggle profiling of outside-data-frame and inside-data-frame code
* Console>Profiler>[All Frames] panel has Clear button
* Maps>Maps panel has side-panel showing map info
* Objects>General panel has new "Show bounds" option
* New Objects>General>[Refresh Model] button exists
* UI exists for setting LOD values (making tweaking faster)
* New Objects>[Show Grid] option exists
* New Objects>[Show reference] option exists (shows translucent 5'11" man)
Framework:
* When error occurs in v-script, the call-path/vs-stack-trace is logged
* Stack trace is preserved better when called through Node.CallMethod
* VObject game-objects are categorized by type in scene
* VModelImporter has new UnitySource model-loading system. (letting model auto-processing occur, and letting vdf files reference differently-named models)
* VModelImporter transforms speed-tree models to be static-batchable
* VModelImporter transforms UnitySource models with AutomaticLOD comp to be static-batchable (swaps AutoLOD comp with native LODGroup, which works with static-batching)
* CacheL3 models are ignored if asset backing them is destroyed (i.e. cache item is invalid)
* LODs are automatically generated for objects, using method that works with static-batching (LODs can be configured in Main.vdf file)
* VObject class split into two classes: VObject (base type), and VObject_Type (holding the props that only type's have). (meaning: classes are smaller, and have clearer/narrower roles)
* "Proto build speed multiplier" setting exists
* "Attack speed multiplier" dev-setting exists
* NotTo[...] exclude-prop-from-serialization system cleaned up. (combined into one NotTo attribute class, and with better handling code)
* Profiler_AllFrame system also records and shows run-count
Performance:
* Data-frame-time reduced to ~80% of prior, by making-so:
* 1) Apply-transform-time reduced to ~12% of prior, by having Transform props be set directly (rather than through Change system)
* Data-frame-time reduced to ~80% of prior, by making-so:
* 1) CallJS-time reduced to ~50% of prior, by having the stack-trace only generated when capture-stack-trace is enabled in the Console>Calls panel.
* VDF deserializing run-time reduced to ~80% of prior, by making-so:
* 1) VDF.ParseTokens run-time reduce to ~72% of prior, mostly by using a switch statement instead of else-if's.
* VDF serialization run-time reduced to ~83% of prior, mostly by replacing some calls to Contains with a call to IndexOfAny
* Player serialize-time reduced to ~66% of prior, mostly by optimizing the VDFNodePath.ToString() method.
* Base VScript run-time (e.g. for two "every # seconds, run #" nodes) reduced to ~2% of prior, mostly by caching the GetNodesOfType results.
* VObject.Manifest run-time reduced to ~33% of prior, by having objects created during post-core-map-init run-path not refresh the blob-slices.
* VDF serialization-time reduced to ~66% of prior, by caching the pre-serialize/serialize/etc. method-lists.
* VObject.health and VObject.hasProduce.health are now traditional properties, rather than using the Node/Change system.
* Object health-bars are only repositioned if the unit's pos-on-screen changed.
* Calling VConvert.FinalizeVDFOptions no longer GC-heavily clones VDF alias Dictionaries.
* Static batching works for plants and structures
* Object cloning/instancing (e.g. during plant-generation) run-time reduced to ~33% of prior (map launch-time reduce to ~40% of prior), by making-so:
* 1) VObject_Type cloning saves to a VDFNode, caches it, then loads from that. (rather than doing a full to-string serialization cycle each time)
* 2) Less data is copied into instances from type; instead, instances just reference the type's data. (basically, any data in the type that stays the same, is just referenced)
* Object cloning/instancing (e.g. during plant-generation) run-time reduced to ~33% of prior (map launch-time reduce to ~40% of prior), by making-so:
* 1) Path-finder-cache is only calculated once at end of core-map-init.
* 2) Unnecessary Change calls are not occuring during VObject add-to-map.