The RTS Sample showcases the usage of Quantum in real-time strategy games, leveraging the FlowFields addon for mass unit pathfinding requirements.
The game features mechanics similar to Age of Empires 2, played from a 3D isometric view. Players control a group of units to gather resources, construct structures, train soldiers, explore the map, and engage in battles with other players.
The goal of the game is to build a strong base, gather resources, and train an army to defeat your opponents. There are several resources available in the game, including food, wood, and crystals, which can be obtained by gathering from the environment.
Players can train a variety of military units, such as soldiers, arcane units, animals, and machines, each with their own strengths and weaknesses. Players must carefully manage their resources and choose the right units for each situation to succeed.
In addition to military units, players can also build defensive structures to protect their base, such as walls, towers, and castles. Players can also research new technologies to improve their units and structures, and gain access to new abilities, units and upgrades.
|2.1.5||May 25, 2023||Quantum RTS 2.1.5 Build 233|
Based on Quantum version 2.1.5 Stable 1144
- Release Notes
- Technical Info
- Project Structure
- Quantum Systems
- Unity Setup
- 3rd Party Assets
- Unity: 2021.3.14f1;
- Platforms: PC / Mac;
- FlowFields for mass unit pathfinding
- Buildings - construction, repair, and defensive structures
- Units with a task queue system, supporting various behaviors such as harvesting, attacking, collecting, and building
- Combat - melee and ranged attacks, explosions, combat stances, and targeting
- Production and upgrade system
- Cursor actions system - handling player input
- Console commands (cheats)
- Unit AI - targeting behaviors
- Fog of War
- Harvesting - resource gathering
- Garrisoning - units can hide inside buildings and potentially boost the building's attack capabilities
- Procedural map generation
- Map editor
Players can construct buildings, repair them, and build defensive structures to protect their units and resources. Buildings can have various tile sizes, allowing designers to create a diverse range of structures for different purposes. Once a building is completed, the population limit increases, allowing players to train and control more units.
Players can engage in both melee and ranged combat, utilizing various types of projectiles and explosions. A HealthSystem is implemented to handle the health of units during combat, ensuring that they take damage and potentially die when attacked by enemy units.
The game provides various cheats that can be accessed through the console view, which can be opened by pressing the ~ key. These cheats can be used to spawn units, add or remove resources, reveal the map, set the player's age, or set the population limit. All possible cheats can be found in the ConsoleCommand.cs file, and unit shortcuts are defined in the ConsoleSettings asset.
FlowFields is an addon utilized in this RTS sample for mass units pathfinding. This allows for more efficient and effective movement of units across the map.
VisibilityManager is used to handle visibility data, which tells players how many units are seeing a certain tile. Based on this information, FOW entities (dummy versions of real entities) are spawned, marked with the VisibleInFOW component.
Units can harvest resources by interacting with HarvestNode. Harvest nodes can hold resources of different types, such as wood, food, or crystals. When a unit has a certain amount of resources, it goes to the HarvestCollector where resources are dropped off and attributed to the player.
Garrisoning allows units to hide inside Garrison entities to protect them from harm. Garrisoning can also increase the projectile count of certain units, such as defensive buildings like castles, making them more powerful.
RTS Sample has various types of interactions, including building, repairing, attacking, harvesting, garrisoning, and gathering units for garrisoning.
The game world in RTS Sample consists of a grid of tiles. Each tile has a ground and can have a structure and an entity (e.g. building).
RTS sample uses Voronoi for general map design and Perlin noise for specific tile distribution, allowing for a diverse and randomized game environment.
MapScout is used to populate visibility data, allowing players to explore the map and see enemy units and structures.
Reads data from FlowFields and applies it to the entity's position and rotation.
The Player component holds data on population, score, and current age. It also tracks current resources, selection, control groups, technologies, and product replacement.
In RTS Sample, every unit (agent or building) and upgrade is considered a product. A product holds a price value (cost) and can be produced by other Producers. Production of products can be conditioned by owning certain technologies. Producers have a production queue, and a typical Producer is a building that can produce other products (units, upgrades).
In the game, each player has their own team, which defines which units are allied and which are not.
UnitAI is responsible for detection of enemy units. Unit can have various combat stances (aggressive, defensive, hold ground, no attack) that alter how the unit responds to threats.
In this game, every agent and building is considered a unit. Each unit contains a task queue which allows the unit to have multiple tasks scheduled and executed in sequence. These tasks can have different behaviors, such as attacking enemy units, repairing damaged buildings, or harvesting resources. The ability to schedule multiple tasks for a unit allows for efficient management and optimization of gameplay.
Upgrades are entities that can modify the stats of units. They are spawned during gameplay and can either directly modify unit stats or define a product replacement. The product replacement is a recipe that allows for lower-quality products to be replaced with better ones (for example, upgrading axemen units to swordsman units).
GameSettings holds the main Unity-related settings, while GameConfig is used in simulation and holds global gameplay values.
Cursor Actions refer to the actions that a player can perform using the mouse cursor, such as building structures, moving units, harvesting resources, or repairing damaged structures. The actions can be triggered using different input buttons - for example when the build action is active, the player confirms the build action by clicking the left mouse button.
Execute Actions refer to the actions that players can trigger in the game. This includes producing units or upgrades, as well as performing game-specific actions such as opening or closing gates. These actions can be initiated by the player using various input buttons or through other means of interaction with the game interface.
Basic Unity-related setup of all units.
The TechnologySettings define the technologies used in the game. Each technology is represented by a hash, which is created using the technology ID from the settings. Players can gain technology by finishing certain products. Other products can have some technologies as a requirement. This is how upgrades are linked together - for example, the Crystal Age upgrade adds the CrystalAge technology, which unlocks new units and upgrades, however the Crystal Age upgrade itself requires the IronAge technology (previous age) as a prerequisite.
3rd Party Assets
The RTS Sample includes several assets provided courtesy of their respective creators. The full packages can be acquired for your own projects at their respective site:
- Pro Sound Collection by GameMaster Audio
IMPORTANT: To use them in a commercial project, it is required to purchase a license from the respective creators.