Jump to content

0ad stupidity


king reza the great
 Share

Recommended Posts

hi

there is something wrong in 0ad. idk whether its a bug or just a big weak spot?

when units are fighting they will follow passive units (like passive hero) and the opponent units will kill them easily.

or a player move a small part of his army then opponent units will follow them while the rest units will destroy them.

players like vinme and jc abuse these weak spots and call it micro. while its not micro its just 0ad stupidity.

to remove this weak spots i have 2 suggestions

1- remove passive mod from heroes (or even soldiors ). why heroes and soldiors should be passive? are they coward?

2- limit number units who follow the opponent units. or force units to attack nearby units.

 

  • Like 3
  • Thanks 1
Link to comment
Share on other sites

1* you don't need to be in passive mode to lure ennemy units

2* luring always been a tactic deployed by smart strategists on battlefields (napoleon and gengis khan)  .. opposite to tactical cosmic that sends all and cross fingers

3* nobody can come with a clear line between "dance" , "micro" and moving units .. if your hero lost him self on the front lines , would you sacrifice it ? What's dance , moving the same unit 2 times per second ?  Seems that moving back all the front melee is already too much dance for you

4* "dance" has been removed already some versions ago .. the 'dance' will get some damage no matter what whilst it was possible to have any unit moonwalking taking 0 damages 

5* micro units is the answer that address the problem of short distance units bumping in each other.  Slingers are still superior to skirmishers if the terrain is not total clear.

6* anti-"dancers" are those who are generally angry to see their op ranged units losing a battle ...  " meeh, let me auto-spam units from 20 cheap wood barracks" 

7* yes, "dance" is more clicks .. you can still play simcity if you think that 0ad should be nothing else that ecobotting the fastest, send all and win on auto-pilot

 

11 hours ago, king reza the great said:

limit number units who follow the opponent units. or force units to attack nearby units.

bad idea for 2 reasons

- you may want the AI to compute at each frame -  instead of each command -  the closest enemy unit and this for each unit ..

- you really want the AI to cancel each of your command so that your units will run after the enemy hero dancing behind your lines ?  

 

  • Like 1
Link to comment
Share on other sites

  • 6 months later...
27 minutes ago, wowgetoffyourcellphone said:

Dunno, I think a "MaxAttackers" component would be nice for templates. Honestly seems silly that 100 archers would auto-fire at 1 dude instead of all the other dudes with swords and bows 1 meter behind that dude.

With the spread, do you have an idea how many arrows would hit that dude 1m behind the target?

Link to comment
Share on other sites

1 minute ago, Gurken Khan said:

Glad for you and your point.

Still would be interested in an idea of how many arrows would hit that dude 1m apart. I'd guess several factors would go into it.

Sure, but the point is that with a MaxAttackers component, if a units have a MaxAttackers of, say, 20, then the 80 other attackers will search out the next closest 4 targets instead of wasting all 100 arrows per second on the dancer.

Link to comment
Share on other sites

On 18/04/2023 at 4:26 PM, wowgetoffyourcellphone said:

Sure, but the point is that with a MaxAttackers component, if a units have a MaxAttackers of, say, 20, then the 80 other attackers will search out the next closest 4 targets instead of wasting all 100 arrows per second on the dancer.

That's sounds like a generally good idea, but wouldn't people call that lag because their units do not obey them anymore?
 

In most RPG games, units have circles, that define whether they are allowed to attack you. A bit like covalence rings,  there can only be up to n enemies in each ring Battle Circle AI: Let Your Player Feel Like They're Fighting Lots of Enemies (tutsplus.com)


@Freagarach added a notion of attackers in Resistance.js 0ad/binaries at master · 0ad/0ad (github.com) It's mostly used to notifiy people that their target is dead or that they are already attacking it, but I suppose it could be extended, to deny units attacking an oversolicited unit.

Question is how many units per single, and whether one should take classes into account (10 archers, but no melee units attacking someone would be weird, wouldn't it)
 

  • Like 1
Link to comment
Share on other sites

On 18/04/2023 at 7:26 AM, wowgetoffyourcellphone said:

Sure, but the point is that with a MaxAttackers component, if a units have a MaxAttackers of, say, 20, then the 80 other attackers will search out the next closest 4 targets instead of wasting all 100 arrows per second on the dancer.

Hmm it might be nice, but I think only for unit behavior. It would be bad if I actually click all my archers to shoot 1 unit and some of my archers to shoot a different unit.

Even so, I think the unit ai should be simple and predictable, so that player inputs are more responsible for optimizing fights.

IMO dancing is really not a problem at the moment.

Edited by real_tabasco_sauce
  • Like 2
Link to comment
Share on other sites

6 hours ago, real_tabasco_sauce said:

IMO dancing is really not a problem at the moment.

Agree--it hasn't been for a couple of years now. 

 

6 hours ago, real_tabasco_sauce said:

Hmm it might be nice, but I think only for unit behavior. It would be bad if I actually click all my archers to shoot 1 unit and some of my archers to shoot a different unit.

Agree. This would only take away control from the player. At best, it runs the risk of automating the game. 

Seems like the better solution is to revisit an "attack area" feature that would provide all the same, and more, benefits to the player without automating the game. 

  • Like 2
Link to comment
Share on other sites

1 hour ago, wowgetoffyourcellphone said:

There's "automating the game" and then there's fixing bad unit behavior. But whatevs. :) 

Sure, but one of the insights from @real_tabasco_sauce is that this isn't necessarily "bad" behavior and the "problem" we are trying to solve doesn't really exist. I agree with him on both points. 

I'm just pointing out that there is potentially a better solution out there. 

Edited by chrstgtr
  • Like 2
Link to comment
Share on other sites

The hero lure can always happen because the hero unit has too much health so all players are confident that they won't lose it in the dance. If we massively decrease the health of heroes then the potential dancer would have to consider more about whether it's worth sacrificing hero for a slight advantage in one battle.

Too many people use heroes as meatshields and harassing farms / woodlines. They are almost immune to any tower or CC or fortress arrows. In my opinion, hero units should be "noble" and "respected". It's not very heroic to dance around a battlefield and running away all the time like a coward. Also it's even less honourable to sneak into enemy base alone and kill all of their unsuspecting women; Geneva Conventions fly straight out of the window.

Hero dancing can be countered by sniping or just clicking attack move again.

Link to comment
Share on other sites

15 hours ago, chrstgtr said:

Sure, but one of the insights from @real_tabasco_sauce is that this isn't necessarily "bad" behavior and the "problem" we are trying to solve doesn't really exist. I agree with him on both points. 

I'm just pointing out that there is potentially a better solution out there. 

I personally am not so hung up on the dancing thing. I agree, that particular issue has largely been mitigated. I just think /in general/ it would be a good thing for units, by default, to spread out their attacks and not all attack the nearest unit possible. A "MaxAttackers" component/element in the templates could be one way to do that. I agree that such a unitAI/template change should be overridable by the player if they wish to focus-fire on something. User input, to some extent, should override default behaviors. But also keep in mind, we don't allow players to set 100 gatherers onto a farm or 50 gatherers onto a tree either. They spread out. It's nearly the same concept and no one bats an eye at that. :) A MaxAttackers template component would work very similarly to the MaxGatherers component in that sense. It's not "automating the game" to have those things, IMHO, and generally leads to better default unit behavior. :) 

  • Like 2
Link to comment
Share on other sites

1 hour ago, wowgetoffyourcellphone said:

I personally am not so hung up on the dancing thing. I agree, that particular issue has largely been mitigated. I just think /in general/ it would be a good thing for units, by default, to spread out their attacks and not all attack the nearest unit possible. A "MaxAttackers" component/element in the templates could be one way to do that. I agree that such a unitAI/template change should be overridable by the player if they wish to focus-fire on something. User input, to some extent, should override default behaviors. But also keep in mind, we don't allow players to set 100 gatherers onto a farm or 50 gatherers onto a tree either. They spread out. It's nearly the same concept and no one bats an eye at that. :) A MaxAttackers template component would work very similarly to the MaxGatherers component in that sense. It's not "automating the game" to have those things, IMHO, and generally leads to better default unit behavior. :) 

Yeah, I'm not entirely opposed to it. I would like just something that gives more control to the player. I also wouldn't want the max number to be set so low that it effectively automates the games. But that automating effect begins to take pretty quickly if it is intended to do anything like avoid having an entire army focus on a dancing hero. 

Link to comment
Share on other sites

It would be interesting to be able to open tabs in the interface and indicate parameters such as which units to focus on and to be able to have options such as overkill or to keep the attacker distribution balanced.

 

That would be useful with the battalions so that they do not become disorganized.

Link to comment
Share on other sites

57 minutes ago, chrstgtr said:

Yeah, I'm not entirely opposed to it. I would like just something that gives more control to the player. I also wouldn't want the max number to be set so low that it effectively automates the games. But that automating effect begins to take pretty quickly if it is intended to do anything like avoid having an entire army focus on a dancing hero. 

We could probably set MaxAttackers as some kind of ratio to size of the target, so that larger units can have more attackers targeting them (makes sense I think). But a setting of 20 MaxAttackers for infantry and cavalry could be a good starting point. It's something I'd love to be able to play around with and see if I couldn't make battles flow better and look less like a mosh pit. I could even see such a thing make battles stretch out linearly, naturally recreating what a real battle would look like. 

  • Like 1
Link to comment
Share on other sites

24 minutes ago, wowgetoffyourcellphone said:

We could probably set MaxAttackers as some kind of ratio to size of the target, so that larger units can have more attackers targeting them (makes sense I think). But a setting of 20 MaxAttackers for infantry and cavalry could be a good starting point. It's something I'd love to be able to play around with and see if I couldn't make battles flow better and look less like a mosh pit. I could even see such a thing make battles stretch out linearly, naturally recreating what a real battle would look like. 

It would be excellent to assign to the melee units 3-4 units maximum, especially in battalions to this add some stay not to disorganize the formation in battle is as if the battalion was a collective unit.

At least that would give a good simulation of battalions and infantry and sometimes cavalry, which can have more freedom with the formation.

 

The sil units would be the opposite and be dispersed.

 

Link to comment
Share on other sites

On 21/04/2023 at 10:17 PM, wowgetoffyourcellphone said:

We could probably set MaxAttackers as some kind of ratio to size of the target, so that larger units can have more attackers targeting them (makes sense I think). But a setting of 20 MaxAttackers for infantry and cavalry could be a good starting point. It's something I'd love to be able to play around with and see if I couldn't make battles flow better and look less like a mosh pit. I could even see such a thing make battles stretch out linearly, naturally recreating what a real battle would look like. 

You could try this:

Replace in Resistance.js

Resistance.prototype.Schema =
	"<a:help>Controls the damage resistance of the unit.</a:help>" +
	"<a:example>" +
		"<Foundation>" +
			"<Damage>" +
				"<Hack>10.0</Hack>" +
				"<Pierce>0.0</Pierce>" +
				"<Crush>5.0</Crush>" +
			"</Damage>" +
			"<Capture>10</Capture>" +
		"</Foundation>" +
		"<Entity>" +
			"<Damage>" +
				"<Poison>5</Poison>" +
			"</Damage>" +
		"</Entity>" +
	"</a:example>" +
	"<zeroOrMore>" +
		"<choice>" +
			"<element name='Foundation' a:help='Resistance of an unfinished structure (i.e. a foundation).'>" +
				Resistance.prototype.BuildResistanceSchema() +
			"</element>" +
			"<element name='Entity' a:help='Resistance of an entity.'>" +
				Resistance.prototype.BuildResistanceSchema() +
			"</element>" +
		"</choice>" +
	"</zeroOrMore>";

By

Resistance.prototype.Schema =
	"<a:help>Controls the damage resistance of the unit.</a:help>" +
	"<a:example>" +
		"<Foundation>" +
			"<Damage>" +
				"<Hack>10.0</Hack>" +
				"<Pierce>0.0</Pierce>" +
				"<Crush>5.0</Crush>" +
			"</Damage>" +
			"<Capture>10</Capture>" +
		"</Foundation>" +
		"<Entity>" +
			"<Damage>" +
				"<Poison>5</Poison>" +
			"</Damage>" +
		"</Entity>" +
		"<MaxAttackers>2</MaxAttackers>" +
	"</a:example>" +
	"<zeroOrMore>" +
		"<choice>" +
			"<element name='Foundation' a:help='Resistance of an unfinished structure (i.e. a foundation).'>" +
				Resistance.prototype.BuildResistanceSchema() +
			"</element>" +
			"<element name='Entity' a:help='Resistance of an entity.'>" +
				Resistance.prototype.BuildResistanceSchema() +
			"</element>" +
		"</choice>" +
	"</zeroOrMore>"
	"<optional>" +
		"<element name='MaxAttackers' a:help='The max number of attackers the units can have at a given time.'>" +
			"<ref name='nonNegativeDecimal'/>" +
		"</element>" +
	"</optional>" +;

And

/**
 * @param {number} attacker - The entity ID of the attacker to add.
 * @return {boolean} - Whether the attacker was added sucessfully.
 */
Resistance.prototype.AddAttacker = function(attacker)
{
	if (this.attackers.has(attacker))
		return false;

	this.attackers.add(attacker);
	return true;
};

by

/**
 * @param {number} attacker - The entity ID of the attacker to add.
 * @return {boolean} - Whether the attacker was added sucessfully.
 */
Resistance.prototype.AddAttacker = function(attacker)
{
	if (this.attackers.has(attacker) || (this.template.MaxAttackers && (this.attackers.length >= (+this.template.MaxAttackers))))
		return false;

	this.attackers.add(attacker);
	return true;
};

The a:example, shows you how to use it. Basically add MaxAttackers at the end of the Resistance component.

  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...