Create your dream RTS game!The Unity RTS Engine is a framework that includes essential tools and systems necessary to create a Real Time Strategy game. It manages maps, units, buildings, resources, building placement, movement, UI, tasks, AI, combat, singleplayer, multiplayer and much more! Create your RTS game easily from the editor, making your models come to life by dragging and dropping components and configuring properties on the inspector.The RTS Engine comes with an API that allows you to customize the behavior of the asset even further as well as create your own modules on top of the base asset, use them among different projects and share them with other creators!Documentation | Discord | ChangelogDemoStandalone Demo (Windows): Includes multiplayer and single player game modes for a simple RTS game where the goal of each faction is eliminate other factions in a game.Create and Customize MapsConfigure various map scenes with different setups and connect them to the same single player, multiplayer or custom menu!Create and customize maps using Unity terrains and/or custom meshes and manage each map by defining areas (ground, water, air, etc..) that influence the behavior of entities.Create faction slots and faction types that affect what advantages and limitations each player gets when playing with one faction type.Entities and Entity ComponentsCreate Units, Buildings, Resources and Building Resources with the editor easily, define their basic defining, health and selection properties then drag and drop components that define the behavior of each entity.Assign limitations on unit and building creation for factions that include resources, faction entity requirements, limitations on the amount of instances per unit/building type.Components that can be attached to buildings allow to: attack enemy faction entities, upgrade faction entity properties or upgrade their types completely, generate resources, create units, carry units, heal units, convert units to local factions, have a rallypoint and act as resource drop off point.Components that can be attached to units allow to do all tasks that buildings do in addition to: movement, placing buildings, constructing buildings, collecting resources and dropping off resources.More entity components are available in addon packages and from community members!Create components that deliver your custom tasks for one or many entity types by implementing a simple interface that handles access to the entity, its other components and other entities it can interact with as well as UI, upgrades, setting targets and more.Add entity tasks to a tasks queue and have them execute consecutively in the order they were added at.Building PlacementRotate buildings when placing them and hold a key to spawn multiple instances of the same building type.Configure builder units to define which buildings they can place and construct.Customize a building's construction phase using visual effects by tracking its health until it is fully constructed.Create buildings that define a territory in the map occupied by the faction that owns the building to stop other factions from collecting resources or placing buildings in that territory.Unit MovementUse Unity's navigation mesh or other supported pathfinding solutions.Create and customize movement formations or use the default movement formation types on simple movement or when setting attack positions.Create units that move on different terrain areas such as flying units, ground units and water units or have units that can move over a combination of terrain areas.Simulate movement to allow for humanoid units, vehicles or any creatures as movement easily hooks up with the animations.HealthEntity health components allow for handling hover health bars, damage or healing received from enemy or friendly entities, destroying the entity on zero health, awards and effects post-destruction, health states that track the entity's health points and reflect that by enabling or disabling visual aspects of the entity, among other options.Entity type specific health features include affecting the unit movement on receiving damage, handling the construction phase for health states independently for buildings and handling the collected and uncollected phases of a resource with different health state configurations.SelectionSelect single or multiple entities and display information on the selected entities such as health points, name, description, pending tasks and tasks that can launched.Define selection configurations that determine whether entity types can be selected in combination with one another.Advanced selection features such as a selection box are available with addon modules.Resource CollectionCreate unique resource types and use them on different maps.Enable the capacity option on a resource type to limit the amount each faction can have of that resource. This allows to create unit population slots as a resource type for example!Configure resource or building resource entities that resource collector units can gather resources from for their factions.Force resource collectors to find a drop off point for their collected resources when they reach their maximum carrying capacity to add the resources to their faction.Resources can be used for various tasks and interactions such as unit creation, building placement, launching upgrades, rewards for eliminating enemy entities and much more.CombatEnable attacking abilities for units and buildings that can damage enemy units and buildings.Configure unit attack stopping distance allowing to create close-range or far-range attacks and assign a movement formation for each unit attack type that determines how the unit attacks when in a group.Define combat engagement options, enable cooldowns, customize the damage that each target receives, enable area of effect attacks, enable damage over time attacks, control the weapon object's rotation independently, define limitations based on line of sight and obstacles.Units and buildings are allowed to have multiple attack components, each with their unique properties, that they can switch between using tasks.Allow entities to attack empty positions on terrain (terrain attack, which can deal damage to entities in range) and enable move-attack to allow units to move towards a destination while stopping for any enemy in sight on their path to eliminate them.Attacks can either be direct or use a projectile (attack object) that would eventually damage the target it was launched at. Customize each attack object's movement, interaction with target entities and obstacles.TasksDefine tasks as scriptable objects, assign them to entity components and launch them when the entities holding the components are selected.Share the same task among different entity components and entity types.Enable tasks to be pending tasks so that they take time to complete after they are launched. By default these are used for unit creation and upgrades tasks.Enable multiple task panel categories, tooltips and locking tasks.Enable awaiting tasks that change the cursor of the player's mouse, allowing to pick a target entity after clicking on the task.EditorRich and user-friendly editor experience with custom property drawers on inspectors and the RTS Engine Editor window where you can create and manage entities and scriptable objects.ScriptingBuilt with customization through code in mind, the asset comes with a full API allows you to access all of the systems and features of the RTS Engine safely.Subscrribe to hundreds of events to hook up your custom logic in your own components. The ability to create custom entity components and systems that can be hooked up to any project using the RTS Engine makes it modular and allows community members to create and share their creations.ModulesSingleplayer*: Offers a sample for a singleplayer lobby.Basic NPC*: Determine the behavior of NPC factions by customizing a series of fields on the inspector of NPC components that track the faction's progress during a game and regulate the creation of entities, resource collection, attacking, defending, expanding territory and much more.Basic UI*: Includes components that subscribe to the RTS Engine events and draw the UI elements accordingly to the actions that the local player is executing. The UI components can be extended, modified, customized or even deleted and replaced by a UI system of your creation that just needs to connect to the RTS Engine events.Advanced Selection*: Enables advanced selection options such as box selector, selection camera follower and entity group selections (assigning, appending and substracting from groups).Minimap*: Adds a minimap to your RTS Engine game and enables interactions between the player, game events and the minimap.Mirror Multiplayer**: Using Mirror Networking, this module allows to setup multiplayer lobbies and games with the RTS Engine.A* Pathfinding Project Integration**: Enables unit pathfinding to use the A* Pathfinding Project asset and all of its features.Fog Of War Integration**: Integration of the Fog Of War asset.Save System***: Allows to save and load the progress of a RTS Engine game.Advanced Building Placement***: Provides advanced systems for building placement such as grid placement and segmentation placement (allowing for placing walls).Mobile Controls***: Provides touch controls for mobile devices.* Fremium Addon, available in the Core installation of the RTS Engine** Fremium Addon, requires an external asset*** Premium AddonOther FeaturesEfficient grid search that allows for frequent and localized search queries that do not hit performance.Launch upgrades on whole entity types or individual entity components.Object pooling for effect, attack objects, and more.Classic RTS camera movement: panning, zooming, following entities, assigning limitations on movement and rotation.A time handler and modifier, independent from Unity's Time that allows for speeding up/down or pausing the RTS simulation while keeping the Unity Time unmodified.Logging messages specific to RTS Engine components that allow to detect issues with RTS Engine specific component field assignments and false initial configurations for entities.Handling audio to allow for playing music, global and local SFX separation, looping and cooldowns.