• 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.

There's a lot left to implement, but once it's stable (and fun), I plan to release it on Steam and begin a long-term, open-ended series of updates.



  • View media
  • View media
  • View media
  • View media
  • View media
  • View media
Post article RSS Articles

Updates - 2016-07-15

News 6 comments



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

* 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

* 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)

* 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

* 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)

* 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

* 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.

Updates - 2016-06-10

Updates - 2016-06-10


33 updates: data-frame-time reduced to ~20% of prior. (i.e. FPS greatly improved) Console/log panel has textbox to run arbitrary code on the active object...

Updates - 2016-05-15

Updates - 2016-05-15


18 updates: * Main menu map/scene exists (e.g. shows terrain, plants, walls, units, and game title) * Terrain>Flatten tool exists * Placing a building...

Updates - 2016-05-06

Updates - 2016-05-06


Updates: ​* New cascading ui system exists. (with keybindings) * Minimap displays full-screen, but only when space is held. * Object console panel exists...

Updates - 2016-04-18

Updates - 2016-04-18


Updates: * New General>Select tool exists, letting you select objects in a map. * New Map>Object panel exists, letting you modify properties of the selected...

vrejaandrei - - 1 comments

Looks great, gonna keep tracking the progress on the streams.

Reply Good karma Bad karma+2 votes
ContecGames - - 50 comments

What engine are you doing this in? Always had a dream to make a RTS but it's so difficult to do and not widely supported :/

Reply Good karma Bad karma+1 vote
Venryx Creator
Venryx - - 4 comments


(and yeah, RTS games are pretty big projects...)

Reply Good karma+1 vote
Oznat - - 41 comments

demo please ?

Reply Good karma Bad karma+1 vote
Venryx Creator
Venryx - - 4 comments

Hopefully in a few months! That's what I'm currently trying to work toward. (a pre-alpha with a simple "Defend the Hill" minigame)

Reply Good karma+1 vote
Marth8880 - - 1,778 comments

Concept sounds interesting enough, and it's good to know that you're keeping organized, but the visual quality is definitely going to need improvement somewhere down the road!

Reply Good karma Bad karma+1 vote
Venryx Creator
Venryx - - 4 comments

I definitely agree!

What is the worst point concerning visual quality at the moment? (they could all use updating, but it can help me know what to focus on)

The UI, terrain shading, terrain shape, plant models, building models, or unit models? (I'm guessing terrain shape, plants, and buildings)

The terrain shape is easy to fix, since the map editor already supports intrusion/extrusion, but the others could take more time. (especially if attempting to make them look consistent)

Thanks for the input, by the way! Game-dev is so much more fun with active feedback as the project develops.

Reply Good karma+1 vote
ContecGames - - 50 comments

Focus on the gameplay aspects first then the graphics after :)

Reply Good karma Bad karma+1 vote
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.


Latest posts from @biomedefense

Developing an RTS - Biome Defense - #107: Twitch.tv #gamedev #programming #indiedev #indiegame #videogames #twitch

Sep 22 2016

Developing an RTS - Biome Defense - #106: Twitch.tv #gamedev #programming #indiedev #indiegame #videogames #twitch

Sep 21 2016

Developing an RTS - Biome Defense - #105: Twitch.tv #gamedev #programming #indiedev #indiegame #videogames #twitch

Sep 20 2016

Developing an RTS - Biome Defense - #104: Twitch.tv #gamedev #programming #indiedev #indiegame #videogames #twitch

Sep 17 2016

Developing an RTS - Biome Defense - #103: Twitch.tv #gamedev #programming #indiedev #indiegame #videogames #twitch

Sep 16 2016

Developing an RTS - Biome Defense - #102: Twitch.tv #gamedev #programming #indiedev #indiegame #videogames #twitch

Sep 15 2016

Developing an RTS - Biome Defense - #101: Twitch.tv #gamedev #programming #indiedev #indiegame #videogames #twitch

Sep 14 2016