Changelog

v1.0.1 – 05/03/2017: 

  • Fixed the selection collider for some buildings in the demo scene.
  • Added “faction type definition” in the Game Manager component: Each faction type is defined by a name, code and buildings that can only be placed by that faction.
  • Each map can have a list of possible faction types that can play in it.
  • Added the ability to pick a faction type in the single player and multiplayer menus.
  • Each building can have faction type specific tasks.
  • The faction name and type are now both displayed on the selection menu when a unit/building is selected.

v1.0.2 – 16/03/2017:

  • Added the “AttackBuilding” component which allows buildings to launch attacks at enemy units (allowing a building to behave like a “tower”).
  • Added a new building prefab in the demo scene: The Tower.
  • Fixed playing audio on building selection.
  • Fixed playing audio on multiple units selection and multiple units attack order.
  • Added many audio clips as sound effects for the demo scene.
  • Fixed the flashing enemy building texture when the player orders units to attack it.

v1.0.3 – 01/04/2017:

  • Small bug fixes.
  • Task Upgrades have been added: Unit Creation tasks can have an unlimited amount of upgrades. Each upgrade allows to the same task to produce another unit.
  • When a task upgrade is applied on one building, it will be applied to the all buildings, belonging to the same faction, of the same type.
  • Introduced a new Unit in the demo scene: The Robot unit which will serve as an upgrade for the Soldier unit.
  • Updated the NPC components in order to handle task upgrades.

v1.0.4 – 15/04/2017:

  • Code refactoring in order to improve the performance of the asset overall.
  • Custom Events introduced: 19 delegate events added (example: OnUnitCreated, OnBuildingDestroyed, OnTaskLaunched, etc..). These events allow for even more customization in the code.
  • Upgrade Tasks are introduced: Buildings can now have tasks that improve the units’ abilities (speed, damage against units and damage against buildings).
  • Audio clip can now be played when a task is completed.
  • Doubling clicking a unit selects all the units of the same type inside a certain range (the range can be defined from the inspector).Clicking the selected unit’s icon in the selection panel pans the camera to the position of that unit.

v1.0.5 – 27/04/2017:

  • Fixed the destroy building task.
  • Fixed the camera movement on screen edge.
  • You can assign a custom Capital Building to each faction type.
  • Child unit objects can now be enabled/disabling while collecting resources, dropping them off or constructing building.
  • Custom Task Panel added: Making use of the new custom delegate events, a custom task panel that can launch Unit Creation tasks in any building without having to select the building.
  • Added Treasures: Objects that can be collected by units (just by entering in collision with them) and that reward the unit’s faction with resources.

v1.0.6 – 14/05/2017:

  • Fixed shuffling factions when the map loads.
  • Fixed loosing the selection after clicking on the minimap.
  • The Unit’s radius must now be set from the “Unit.cs” inspector and not anymore from the “Nav Mesh Agent” component.
  • Fixed the unit’s movement when the target object is moving.
  • Added two new custom events: OnFactionEliminated, OnFactionWin
  • Added camera panning.
  • General camera movement improvements.
  • Added the option to put Units that do not belong to any faction in the map.
  • Added the feature to create “Flying Units”
  • Added the “Helicopter” unit as an example for a flying unit.

v1.0.7 – 02/06/2017:

  • Bug fixes.
  • Added the ability to destroy the unit’s object on death after a certain amount of time and not directly.
  • Added the option for free movement of the unit’s attack weapon (rotates and looks at the target).
  • Added “Take Damage” animation state, called whenever a unit gets damage.
  • Added the option to select target types for attack units and attack buildings (attack only walking units, flying units or both).
  • Added a building component that generates resources.
  • Two types of building resource generation: either directly add resources to the faction or collect resources till reaching a specific maximum amount and collecting it manually using a task from the building.
  • Added a new building for the demo scene: University. It’s a resource generation building that produces “Knowledge” required for research related tasks.

v1.0.8 – 12/06/2017:

  • Fixed canceling pending building tasks.
  • Added unit and building categories.
  • Units and attack buildings can now either attack all types of enemies or only specific categories.
  • Added the ability to have multiple attack sources: Units can either attack from multiple sources in order (with the ability to add delay time in between) or randomly pick a source in each attack.
  • Added a custom inspector editor for the “Attack” component.
  • Helicopter unit in the demo now has two attack sources.
  • Added the “Tank” unit in the demo: slow vehicle but effective against buildings.
  • Updated NPC factions manager components.
  • Added the APC component: Component added to units that allow them to contain other units, transport and release them.
  • Releasing units from the APC can be done using tasks in the Task Panel. Releasing all units once or unit by unit are both possible.

v1.0.9 – 27/06/2017:

  • Added construction states for buildings.
  • Added building upgrades.
  • Added the ability of decision making regarding building upgrades for NPC factions.
  • NPC Army units’ selection has been improved: Each NPC faction decides based on different priorities which unit to create.

v1.1.0 – 14/07/2017: 

  • Added new custom events for building upgrades.
  • Navigation mesh agent movement improvement (more to come).
  • Added override controllers for unit animators.
  • Added the option to have different animation for different resource collection (using override controllers).
  • Task Panel separation: Added the feature to have multiple task panel categories and have different tasks on each panel. Task panel categories can be chosen for each single task from the inspector.
  • Improved the NPC manager scripts performance.
  • Fixed a bug in the multiplayer game.

v1.1.1 – 27/07/2017:

  • Added selection components for units (just like buildings and resources).
  • Improved navigation mesh movement.
  • Improved getting damage for units.
  • Buildings can now act as APC: Units can hide in buildings.
  • Added the Healer component for units which allows the healer to add health points to wounded units that belong to the same faction.
  • Added custom events for the Healer component.

v1.1.2 – 05/08/2017:

  • Fixed unit spawning in multiplayer.
  • Fixed units/buildings health syncing in multiplayer.
  • Fixed auto-search for attack units in multiplayer.
  • Added custom events for APC units/buildings.
  • Added the Converter component which allows units to convert enemy units to their faction.
  • Added new unit in demo scene: Converter, can be produced from the city center and allows to convert enemy units.
  • Improved the NPC attack manager.

v1.1.3 – 20/08/2017:

  • Added Free Buildings: these are buildings that do not belong to any faction.
  • Added the feature to make a building non attackable.
  • Added portals: allow units to travel from one place to another.
  • Added the feature to make APC call for units to get in.
  • Added the feature to allow or cancel ejecting one unit at a time from an APC.
  • Added new custom events for converter units, APC units and portals.

v1.1.4 – 04/09/2017: 

  • Added the feature to choose whether to spawn or to hide the border object.
  • Added ability to build outside the borders.
  • Most of the multiplayer code has been re-written in order to make it smoother and keep everything synced between all players.
  • Added area damage for units: damage units and buildings inside a defined range depending on their distance.
  • Added the feature to continue placing buildings while holding a specific key.

v1.1.5 – 12/09/2017: 

  • Improved registering input actions for units in multiplayer.
  • Added invisibility component: new ability that allows units to go invisible for a period of time (making enemy units not see them and avoid getting damage).
  • Added the feature to allow (or not) units to attack, heal, convert, collect or build while invisible.
  • Right clicking on a point in the minimap while selecting unit(s) will now move units to that point.
  • Added the ages feature: all buildings get upgraded starting from one upgrade
  • Improved NPC Building Placement performance (code improvement).

v1.1.6 – 08/10/2017:

  • Fixed portal buildings selection.
  • Healer and Converter new behavior: healers and converters can now search for units on their own within a certain range and heal/convert them.
  • Added a new custom event for the Converter component.
  • NPC armies can now take healers and converters with them to attack buildings.
  • Added a new NPC component: NPC Unit Spawner. It allows to spawn custom units like healers, converters and APC units depending on certain settings in the inspector.
  • You can now require to have buildings placed in order to launch another building upgrade: useful for age upgrade.

v1.2.0 – 21/11/2017:

  • Multiplayer:
    • Improved creating/joining LAN games using the UNET Discovery Component.
    • The multiplayer room now syncs correctly for players who join while already joined player have modified the room settings.
    • Object destruction (unit death, building destruction, etc..) is now handled differently in multiplayer.
    • Switching the unit’s attack type, toggling invisibility, interacting with APC units and converting units now successfully syncs in a multiplayer game.
    • Improved the current lockstep model of the multiplayer.
    • Improved the NPC building’s upgrade behavior.
    • Improved research tasks in order to sync all unit upgrades on spawn.
    • Improved spawning units, buildings and resources.
    • Added a transition menu from the main multiplayer menu to the LAN room.
    • Added the Network Prefab Manager component which makes easier to to update the spawnable prefabs in a multiplayer.
  • Resources:
    • Added the option to show/hide resource amount and/or resource collector’s amount in the UI.
    • Added the “Code” field for the Resource component: used to identify resources (two resource objects can share the same “Name” and have a different “Code” when they allow the player to collect the same resource type but have a different model or different settings like max amount, max collectors amount, etc..)
    • Added a new button in the Resource Manager component that creates a list of resources to spawn on the map: All resources in the scene must be children of one empty object, this object is assigned to the “Resource Parent” in the Resource Manager component. When the “Generate Resources” button is clicked, it will create an organised list of all resources that are present in the map and will spawn them correctly in single player and multiplayer games.
  • Treasures:
    • Treasures are now considered as resources.
    • Creating a treasure is exactly like creating a resource, expect that the main resource component has a “Treasure.cs” component.
    • Treasures must have their own resource type defined in the Resource Manager.
  • More new features:
    • Added multiple attacks for a single unit.
    • You can now switch between the unit’s multiple attacks using the task panel.
    • Added component tasks: Units can be ordered to build, gather resources, attack, heal or convert from the task panel.
    • Mouse texture can be changed to the pending component task.
    • Added an option to make units attack automatically when they are attacked (means they only defend themselves and don’t engage first in combat).
    • Improved the unit attack component to make it suitable for melee attacks.
    • Removed interaction size and max building/gather distance for buildings/resources. It is now set automatically.
    • Added automatic behavior for builders, they can now search for buildings that need construction within a certain range and go automatically build them.
    • Added automatic behavior for resource collectors, they can now search for resources within a certain range and go automatically gather them.
    • All buildings, units and resources prefabs must now be inside a folder called: “Resources/Prefabs”.
    • Clicking on the minimap camera does not deselect selected units and allows for quick navigation on the map.
    • Improved units rotation when moving.
    • You can now have different UI when playing with different faction types.
    • Added an effect when a unit is converted.
    • Added goto position for portals.
    • Added a couple of new custom events.
  • Main bug fixes:
    • Fixed a bug in the attack reload timer for direct attacks.
    • Fixed showing unit’s tasks while placing a building.
    • Fixed the bug where healers can heal themselves.
    • Fixed the animator from getting messed up when the invisibility ability is toggeled.
    • Fixed upgrading all buildings when having more than one town center.
    • Fixed following units with the main camera.
    • And a lot more bug fixes…

v1.2.1 – 31/12/2017:

  • Fixed a bug in building placement.
  • Added namespaces for all RTS Engine components.
  • Updated animators to include states for both healers and converters
  • Updated the Unit Attack component so that units can have different damage points depending on the target unit/building.
  • Added group selections: Assign group selections by pressing one of the num keys while selecting a group of units and use the same num keys to directly select that unit group each time.
  • Fixed a bug in playing resource collection audio clips.
  • Improved how sounds are played in general by limiting the components that can play audio clips.

v1.2.2 – 29/01/2018:

  • Bug fixes:
    • Fixed a bug that affected NPC Factions when a resource is destroyed.
  •  New features:
    • Place buildings only within a certain range from a resource type.
    • Resource drop off buildings can now accept either all resources or a list of resource types.
    • Resources can now force collectors to drop off at a certain range from the resource position (meaning that a drop off building must be placed in that range in order to gather that resource).
    • If a resource requires a drop off building within a certain range from it, then the NPC Faction will provide this building in order to start gathering that resource.
    • Each time a faction attempts to collect a resource type, it first makes sure that there’s a suitable drop off building for the resource gatherers.
    • NPC Factions can now send units that can construct buildings and who are collecting a resource in case there’s saturation in the population or no resources to create new builders, to construct buildings. Then the same units will resume their resource collection jobs after the building is built.
    • NPC Factions can now send some units that are already collecting resources in order to collect another resource that the faction urgently need to create other units/place buildings.
    • A new resource list called “Destroy Award” has been added to both Units/Buildings: This represents the resource that the faction who destroyed a unit/building will receive as a reward.
    • Turrets in buildings and units can now be smoothly rotated to face the target instead of instantly facing them.
    • Units can now have custom damage points against certain types of Units and Buildings (enabling a unit to perform better against some units and worst against some others).

v1.2.3 – 01/03/2018:

  • Merged the “AttackBuilding.cs” (for buildings) and the “Attack.cs” component (for units) into one “Attack.cs” component (for both buildings and units).
  • Refactorted the code in the “Attack.cs” component for better performance.
  • Fixed a bug in NPC behavior when creating drop off buildings.
  • Fixed the smooth rotation of the attack weapons (turrets).
  • Added an idle rotation for the attack weapon that the unit/building reverts to when not having a target to attack.
  • Added two new attack-related delegate events: one is called when the attacker locks a target and the other is called when the attacker performs an attack (either applies direct damage or send the attack object).
  • Added Attack Delay: it can either be a timer or a trigger that you toggle by code from another component.
  • Added Damage over Time attacks: attacks can now cause damage over time, options for this attack type include the lifetime, cycles and the option to make infinite (with access via code to stop it).
  • Added the option to disable/enable the take damage animation for units.
  • Added the option to force stop the movement of a unit when it takes damage for some time that can defined in the inspector.
  • Added the option to disable attackings either all units or all buildings for units/buildings that have the Attack component.
  • Merged effect objects pooling and attack objects pooling into one component.
  • Added the Attack Manager component which handles everything attack related instead of the Unit Manager.
  • Added an option to ignore/consider the UI when moving the camera on the screen edges.
  • Slight NPC behavior improvements.
  • Fixed the end game conditions.

v1.2.3.5 – 26/04/2018:

  • Fixed attack reload bug.
  • Updated map configuration prefab.
  • Fixed box selection for Unity 2017.4.
  • Fixed Game Manager inspector editor.

v1.3.0 – 12/05/2018:

  • Unit Movement:
    • Added OnMovementAttempt custom event.
    • Added Unit Target Collider: a child collider of each unit object that marks the unit’s target position in order to avoid units colliding with each other.
    • All unit movement is now managed by a new component: Movement Manager.
    • Unit groups now move in circle formations (more formations will be added in future updates).
    • Added a “Radius” field in both the Building and the Resource components: the radius of a defines the interaction positions that units will take when interacting with buildings/resources.
  • Unit/Building Faction Limits:
    • Added building/unit limits: You can now limit the amount of a builing or a unit type that a faction has spawned at the same time.
    • When attempting to create a unit/building that has reached its spawn limit, it will appear covered in red in the task panel.
  • Faction Border component:
    • You can assign the border’s object color transparency from the inspector.
    • You can assign the border’s object height from the inspector.
    • Required amount and maximum amount are now separated in the buildings list in the inspector:
      • Maximum Amount: it’s the maximum amount that the faction can have from the building type inside a border.
      • Required Amount: it’s the amount that a NPC faction must build from the building type inside each building center (a building with the Border component is considerd a building center).
  • Attack Warning Manager:
    • Show flashing attack warning icons in the minimap when player units/buildings are getting attacked.
    • Use custom art as the attack warning icon.
    • Pick how long these icons will stay in the minimap and the minimum distance from already existing warning icons required to draw a new icon.
    • Object pooling for attack warning icons.
  • Minimap Icons:
    • Icons for units, buildings and resources to be displayed on the minimap.
    • Faction units/buildings use the faction color and free units/building use a color for free factions only.
    • Each resource type can use a different color.
    • Object pooling for minimap icons.
  • Hover health bar:
    • Added hover health bars for units and buildings.
    • Enable/disable hover health bars from the UI manager.
    • Option to enable for all factions or for the player’s faction only.
    • The height of the health bar can be chosen individually for each unit/building type.
  • Treasures:
    • Treasures can be collected by units even if the treasure is outside the faction’s territory.
    • Treasures in the demo scene are now guarded by orcs (free units).
  • NPC Army Manager:
    • Added a field in the inspector to define the maximum amount of non attack units (civilians) ratio in relation to the population slots of a NPC faction.
    • Added a field in the inspector to define the maximum amount of non attack units amount that can’t be exceeded even if the above ratio has not been reached.
  • Camera:
    • Added panning.
    • Added UI Camera: A camera with a higher depth than the main camera that displays UI objects (hover health bars, unit target position markers, etc..).
  • Terrain Manager:
    • Added the Terrain Manager component.
    • You can now have multiple terrain tiles with different heights (hills & mountains) or simply use Unity’s terrain for the map.
    • Placing buildings on different heights of the map has been improved.
  • God Mode:
    • God mode allows to launch and finish tasks instantly and place buildings instantly without having to construct them + not lose resources, very useful for quick testing.
  • Multiplayer:
    • Added Input Manager: this component receives player input, collects them and send them to the host/server then collects all receiving commands from the server and executes them on each client’s game.
    • Improved custom input commands and seperated the pre-defined ones.
    • Added an Input Manager component which handles collecting input commands from the local player, receiving commands from the server/host and executing them. This component is separated from the UNET-related components which makes it extremely easy to add your own networking service without digging into the other components.
    • The Input Manager handles spawning factions, units, buildings and destroying them. Everything is now created locally and the Input Manager keeps track of each synced object and manages it.
    • Resources do not get destroyed and re-spawned at the start of a multiplayer game as the Input Manager now handles identifying and syncing them for all clients without having to re-create them.
    • Main components such as the Unit & Building components are no longer derived from the NetworkBehavior but rather the MonoBehavior, all RPC and Command calls in all components than the UNET-related components have been removed in order to separate completely the networking components and other components making it even easier to implement your own networking service for multiplayer.
    • Free units and free buildings can now be used in multiplayer games (as the server/host takes responsibility in administrating them and syncing them for all other clients).
    • The UNET multiplayer components (from the components that handle the multiplayer menu and the components that manage the game) have been refactored (some completely re-written) in order to improve performance.
    • Improved the UNET lockstep model that is being used for multiplayer.
    • A Sync Test feature has been added to the lockstep model: this allows the server/host to check if clients are now on the same lockstep turn to avoid any sync issues. As soon as a client syncs out, the game freezes and that client is given a specific time (can be chosen from the inspector) to catch up before getting kicked for timing out.
    • Clients will receive different messages when they disconnect, get kicked or time out from a multiplayer game.
    • Added a Game Version attribute for the UNET Network Manager component: In order to play together, two players must have the same game version in order to avoid two players getting into sync issues when playing with different versions of the game.
  •  Resources will no longer be re-spawned at the beginning of a game in order to register them, a button in the Resource Manager component’s inspector has been added to register them.
  • Added a new field in the Unit component to make units non-convertable by other factions.
  • Escape on Attack:
    • Added Escape on Attack behavior for units:
    • When enabled, units will escape when getting attacked.
    • You can define both the escape range and speed from the inspector.
    • You can set an Animator Override Controller to have a different movement animation when escaping.
  • Wandering:
    • Added wandering behavior for units.
    • Toggle wandering behavior for units (using tasks in the task panel).
    • You can define the wandering settings from the Unit inspector: range, reload time, wandering center (and whether it’s fixed or not).
  • Attack component:
    • All attack behavior code has been refactorated for better performance.
    • Both units and buildings now use the same Attack component.
    • Added option to not deal damage directly from the attack component but rather trigger the custom delegate event only with reference to the victim that should receive the damage.
    • Added Basic Attack toggle filed in the Attack Component: When having more than one Attack component this represents the basic attack that the unit will use by default.
    • Updated the Multiple Attacks component and refactorated it for better performance.
    • Added attack cooldown: make the unit wait a certain amount of time before launching the attack one more time.
    • Added a field to enable/disable the player from switching a unit’s attack type.
    • Removed Attack Categories from the Attack component and replaced them with Attack Exceptions: You now have to fill the exceptions list with unit codes that the unit can’t attack if attacking all types is disabled.
    • Added new custom delgeate event that is triggered as soon as the attack target is inside the attacker’s range.
  • UI Manager:
    • Tooltip Manager: Easily added tooltips for any UI element so that when you hover on them a tooltip menu appear with the text that you want.
    • Added new game menus: Winning, Losing, Freeze and Pause menus.
  • Worker Manager:
    • Buildings/resources are now required to have the Worker Manager component so that units are able to construct/collect them.
    • Worker Manager allows to define static positions for construction/collection that the units will occupy when interacting with buildings/resources.
    • Assigning static interaction positions is not required. When not assigned, units will simply pick the closest position to the building/resource.
    • Buildings can now have a pre-defined resource drop off position. When not assigned, units will simply pick the closest position to the building for resource drop off.
  • APC:
    • Added Interaction Pos field in the APC inspector: a position that units need to reach in order to get in the APC.
    • APC component code has been refactorated and APC inspector has been improved.
  • New demo scene with new level design, UI, units and buildings.

v1.3.1 – 27/05/2018:

  • Bug Fixes:
    • Fixed a bug when double clicking on units.
    • Fixed a bug that registers a pre-placed building in the map twice.
    • Fixed a bug that deselects selected units after placing a building.
    • Fixed a bug in the Input Manager that makes the Input Manager fail to recongize dead units/buildings.
    • Fixed a bug that stops the unit from triggering the attack animation when the unit has more than one Attack component attached to it.
    • Fixed a bug in area range attacks in multiplayer.
    • Fixed a bug that blocks builders from moving towards the buildings to construct them.
    • Fixed units’ rotation on movement.
    • Fixed creating new maps from the RTS Engine menu editor.
  • New Features:
    • Added Destroy Time for buildings.
    • Free Buildings in the map now must have Placed By Ddefault enabled in order to spawn fully built, otherwise they will only spawn in construction mode.
    • Added an option in the Builder component to allow builders to construct free buildings.
    • Minimap cursor now changes its position after doubling click on a teleport to highlight the camera position change.
    • Added a field in the Selection Obj component for units and buildings only that, when enabled, allows only the unit/building owner to select that unit/building.
    • APC:
      • Instead of a listing the units that aren’t allowed to enter an APC, it’s now possible list unit codes and choose either to accept those units only or to accept units except the listed ones.
      • Added the options to allow the APC to eject all units with one task, eject one unit only each or have both options enabled at the same time.
    • Instead of a listing the units and buildings that can’t attacked by a unit/building, it’s now possible to list unit/building codes and choose either to allow the attacker to attack those units/buildings only or to attack all units /buildings except the listed ones.
    • Added a field in the Unit component that, when enabled, makes the unit invincible and allows it to avoid damage.
    • Added an audio clip trigger that is played when the unit is moving.
    • Added the ability to set the a building rally flag over a resource/building (thus making the workers automatically go and collect the resource/construct the building).