• Register

Biome Defense is an RTS fought between the animals of earth's biomes. It's inspired by Age of Empires II, with an aim toward greater diversity, content, and moddability.

Post news Report RSS Updates - 2016-07-15

Over 20 new trees, better performance, and placeholder unit abilities.

Posted by on

Screenshots
==========


Picture

New FirePulse projectile and movement-lines.

Picture

New trees.

Picture

New Maps>General panel. (on right)

Picture

New object VDF options.

Picture

New Objects page options. (with new plants marked on left)

Picture

New Live>Info panel. (and new outlining used to show that unit is a prototype)

Picture

UI to set match starting-age.

Picture

New Profiler>[Last data-frame] options.

Picture

New Profiler>[All data-frames] run-counts and Clear button.

Picture

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.

Post comment Comments
izzyfiver
izzyfiver - - 18 comments

Cool update!

Reply Good karma Bad karma+1 vote
Angelpatron
Angelpatron - - 24 comments

сойдет

Reply Good karma Bad karma+1 vote
collisionjr
collisionjr - - 3 comments

coolio update

Reply Good karma Bad karma+1 vote
other
other - - 3 comments

cool

Reply Good karma Bad karma+1 vote
Mike_on_Linux
Mike_on_Linux - - 7 comments

nice update

Reply Good karma Bad karma+1 vote
asgorplay
asgorplay - - 8 comments

NICE BRO =D

Reply Good karma Bad karma+1 vote
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: