Decouple Assisting from repairing
Moderator: Moderators
- Forboding Angel
- Evolution RTS Developer
- Posts: 14673
- Joined: 17 Nov 2005, 02:43
Decouple Assisting from repairing
At the moment, the engine sees them as one and the same.
canAssist is almost a redundant tag because of this.
Assistance should work if the unit being built was spawned from a nanoframe on that particular build.
There are ugly workarounds (one of which evo is using atm), but repairing and assisting should not be considered to be the same thing.
canAssist is almost a redundant tag because of this.
Assistance should work if the unit being built was spawned from a nanoframe on that particular build.
There are ugly workarounds (one of which evo is using atm), but repairing and assisting should not be considered to be the same thing.
Re: Decouple Assisting from repairing
???
you said yourself there are tags for that already, so: what?
you said yourself there are tags for that already, so: what?
- Forboding Angel
- Evolution RTS Developer
- Posts: 14673
- Joined: 17 Nov 2005, 02:43
Re: Decouple Assisting from repairing
A unit cannot have repairing removed from it (canRepair = false) and still assist.
Removing repairing removes the ability to assist new construction projects. Assisting and repairing are linked, and they shouldn't be.
Removing repairing removes the ability to assist new construction projects. Assisting and repairing are linked, and they shouldn't be.
Re: Decouple Assisting from repairing
What does assist mean? Same as guard? Would be nice if someone defined these once and for all.
I take it that guard := stalk, because that's all what it seems to do. You cannot set a cannon to guard a unit, it doesn't even work with canGuard = true.
In OTA that was possible. If the unit was under attack the cannon would shoot at whatever was attacking it. Something like this would be nice.
Also one issue following from what FA writes is that you can't have farks to just patrol to repair stuff, as they will automatically just clump to the nearest factory and stall its production. So yes, +1. Make us feel like running a factory again.
I take it that guard := stalk, because that's all what it seems to do. You cannot set a cannon to guard a unit, it doesn't even work with canGuard = true.
In OTA that was possible. If the unit was under attack the cannon would shoot at whatever was attacking it. Something like this would be nice.
Also one issue following from what FA writes is that you can't have farks to just patrol to repair stuff, as they will automatically just clump to the nearest factory and stall its production. So yes, +1. Make us feel like running a factory again.
Re: Decouple Assisting from repairing
i think you can use arearepair + repeat to achieve the same effect.Jools wrote:What does assist mean? Same as guard? Would be nice if someone defined these once and for all.
I take it that guard := stalk, because that's all what it seems to do. You cannot set a cannon to guard a unit, it doesn't even work with canGuard = true.
In OTA that was possible. If the unit was under attack the cannon would shoot at whatever was attacking it. Something like this would be nice.
Also one issue following from what FA writes is that you can't have farks to just patrol to repair stuff, as they will automatically just clump to the nearest factory and stall its production. So yes, +1. Make us feel like running a factory again.
Re: Decouple Assisting from repairing
Area repair will also tell units to "repair" any incomplete nanoframes.
Using buildpower to help build nanoframes not started by this constructor = assisting.
Area repairing around factory will still cause a constructor blob ganging up in the factory.
Using buildpower to help build nanoframes not started by this constructor = assisting.
Area repairing around factory will still cause a constructor blob ganging up in the factory.
Re: Decouple Assisting from repairing
I would like to revisit this request:
The problem with repair and assist is that of you try to automate this, eventually all units end up assisting, ie helping building, whereas in some cases repairing has priority to the user.
Would it be possible for example to have each builder with an odd unitnumber to only assist, and the ones with even unitnumber, just repair? Like the way parking is managed on congested streets.
The problem with repair and assist is that of you try to automate this, eventually all units end up assisting, ie helping building, whereas in some cases repairing has priority to the user.
Would it be possible for example to have each builder with an odd unitnumber to only assist, and the ones with even unitnumber, just repair? Like the way parking is managed on congested streets.
- Forboding Angel
- Evolution RTS Developer
- Posts: 14673
- Joined: 17 Nov 2005, 02:43
Re: Decouple Assisting from repairing
First of all repairing needs to be completely separated from assisting, then we can proceed further.
-
- Moderator
- Posts: 2464
- Joined: 12 Oct 2007, 09:24
Re: Decouple Assisting from repairing
Define "completely separated". Do you mean you want the tags to be able to control when they are allowed independent of when they other is allowed?
- Forboding Angel
- Evolution RTS Developer
- Posts: 14673
- Joined: 17 Nov 2005, 02:43
Re: Decouple Assisting from repairing
Repairing is repairing something that has already been built.
Assisting is assisting building something but not necessarily having the ability to start the building itself.
Unit A has been built. Takes 50 points of damage. Unit B can repair but not assist. Unit B goes over to unit A, patches things up. Unit c is a builder and starts a construction project nearby. Unit b can repair but cannot assist so therefore it cannot assist in building the project that unit c started.
Unit D can assist but cannot repair. Unit D runs over and helps unit c with it's construction project. Unit E can assist and Repair, so it runs over and repairs unit A along with unit B then turns around and helps unit C finish the construction project.
Assisting is assisting building something but not necessarily having the ability to start the building itself.
Unit A has been built. Takes 50 points of damage. Unit B can repair but not assist. Unit B goes over to unit A, patches things up. Unit c is a builder and starts a construction project nearby. Unit b can repair but cannot assist so therefore it cannot assist in building the project that unit c started.
Unit D can assist but cannot repair. Unit D runs over and helps unit c with it's construction project. Unit E can assist and Repair, so it runs over and repairs unit A along with unit B then turns around and helps unit C finish the construction project.
-
- Moderator
- Posts: 2464
- Joined: 12 Oct 2007, 09:24
Re: Decouple Assisting from repairing
That did not entirely answer my question. You gave a set of interactions instead of the mechanics behind the interactions. There are many possible implementations which fulfill a single given example.
Does "completely separated" include three new tags; repairCostEnergy, repairCostMetal and repairTime? These tags would control how much metal, energy and workerTime is required to bring a unit from 0 to full health. In fact this can already be implemented in lua with Spring.SetUnitCosts in UnitFinished. Although, you do not seem to be talking about repair time. But "completely separated" would seem to include tags which let you decouple build time and repair time.
Does "completely separated" include three new tags; repairCostEnergy, repairCostMetal and repairTime? These tags would control how much metal, energy and workerTime is required to bring a unit from 0 to full health. In fact this can already be implemented in lua with Spring.SetUnitCosts in UnitFinished. Although, you do not seem to be talking about repair time. But "completely separated" would seem to include tags which let you decouple build time and repair time.
Re: Decouple Assisting from repairing
Extant.
float energyCostFactor Default: 0.0
How much of the original energy cost it requires to repair something.
-
- Moderator
- Posts: 2464
- Joined: 12 Oct 2007, 09:24
Re: Decouple Assisting from repairing
No, energyCostFactor is a modrule.Jools wrote:Extant.float energyCostFactor Default: 0.0
How much of the original energy cost it requires to repair something.
Re: Decouple Assisting from repairing
how about adding a boolean repairPriority unitDef, if true, prioritize fully built units that have been damaged over nano frames.
- Forboding Angel
- Evolution RTS Developer
- Posts: 14673
- Joined: 17 Nov 2005, 02:43
Re: Decouple Assisting from repairing
YesGoogle_Frog wrote:
Does "completely separated" include three new tags; repairCostEnergy, repairCostMetal and repairTime? These tags would control how much metal, energy and workerTime is required to bring a unit from 0 to full health.
- Silentwings
- Posts: 3720
- Joined: 25 Oct 2008, 00:23
Re: Decouple Assisting from repairing
What happens when a builder helps with construction of a unit that becomes damaged before being finished?
Re: Decouple Assisting from repairing
There is already tag(i dont know the name straight from the head) that allows only units at full health to be considered finished, in which case if it is activated the constructor would continue.Silentwings wrote:What happens when a builder helps with construction of a unit that becomes damaged before being finished?
Re: Decouple Assisting from repairing
Assisting increases build progress
Repairing increases HP
For example in Starcraft, a Medivac can heal marines, it repairs them, but it cannot speed up construction of a building, construction and repair aren't the same thing
Something to note, if 2 units are given 2 identical build orders, they will both carry out said order, and the result is 2 units building 1 thing. Thus, assisting and repairing are already broken apart, the problem is:
- It's not possible for a unit to assist with a unit that it cannot build on its own
- The GUI issues repair commands when you right click with a builder on a unit under construction
We may also want to keep in mind that more flexibility would be good. E.g. in starcraft an SCV can repair a battlecruiser, but not a marine, and a medivac can heal a marine, but not a command centre, and protoss units can't be healed, but their shields can be recharged, and that's just Starcraft
Repairing increases HP
For example in Starcraft, a Medivac can heal marines, it repairs them, but it cannot speed up construction of a building, construction and repair aren't the same thing
Something to note, if 2 units are given 2 identical build orders, they will both carry out said order, and the result is 2 units building 1 thing. Thus, assisting and repairing are already broken apart, the problem is:
- It's not possible for a unit to assist with a unit that it cannot build on its own
- The GUI issues repair commands when you right click with a builder on a unit under construction
We may also want to keep in mind that more flexibility would be good. E.g. in starcraft an SCV can repair a battlecruiser, but not a marine, and a medivac can heal a marine, but not a command centre, and protoss units can't be healed, but their shields can be recharged, and that's just Starcraft
-
- Moderator
- Posts: 2464
- Joined: 12 Oct 2007, 09:24
Re: Decouple Assisting from repairing
What about the case where you want the build progress and HP to increase at the same time (as they currently do).Assisting increases build progress
Repairing increases HP
I don't think the current build/assist system should be extended with the intention to cover cases such as Starcraft. The current system is so inflexible that I cannot see a reasonable way to extend it beyond its current OTA-like system. Would you have repair classes? Where would they go? What about shields etc..?We may also want to keep in mind that more flexibility would be good. E.g. in starcraft an SCV can repair a battlecruiser, but not a marine, and a medivac can heal a marine, but not a command centre, and protoss units can't be healed, but their shields can be recharged, and that's just Starcraft
Spring already has a system which can handle many target classes: weapons. To make a very flexible repair system I would just make repair another type of weapon. It can probably even be done now with some gadget help. To make repair you would need:
- The ability to control whether a weapon can target nanoframes (or more generally, the ability to change unit categories on the fly).
- An instant-hit weapon type that only collides with its target.
- The ability to give a weapon negative damage (I have not checked if this works currently, it does not sound intentionally supported).
- Make an instant hit weapon that can only target friendly, non-nanoframes.
- Further set up the categories so it can only target mechanical units (for the SCV case).
- Give the weapon a resource cost.
- Set a whole bunch of armour types to make each unit heal at the correct rate for its resource cost.
Can units acquire allied targets if they have weapons which can fire at allies? If not this could be added and then we have Starcraft auto-heal and auto-repair as well.
A similar system could be used for assist with a weapon which adds to build progress.. The current assist system has many benefits though, for example you can place two construction orders on the same location and have one worker assist the other. The current construction system would be even harder to replace, especially the UI. Construction units could automatically target the nanoframes but by this point the system becomes messy.
Replacing the current systems is not worthwhile but I think it would be worthwhile to generalize weapons to the extent that they can work well as an implementation of Starcraft repair.
Re: Decouple Assisting from repairing
but they are called weapons..