All Activity
- Past hour
-
Petra has some pretty obvious flaws. For example, if I take one of Petra towers, it's basically the beginning of the end for Petra. It doesn’t think like “There’s a tower here, I shouldn’t pass until I have enough units.” If there’s a tower (or fortress) in the way, their units will just walk right by it.. and die. Most of the new units it produces end up behaving suicidal because of that. Sometimes I even send all my resources just to keep Petra alive. Now plays better than the previous version, but what it really needs now isn’t stat boosts: it’s improvements in behavioral intelligence. Petra needs to be able to analyze the map and adapt to the situation. Also whenever I play against a random very hard Petra, it almost always launches an attack around the minute 10. This typical behavior doesn’t feel random to me at all, it seems like a very specific play style. Petra could behave in more diverse ways. Petra never harasses with cavalry or sneaks rams around for a surprise attack. Its predictability is, in my opinion, its biggest disadvantage, even in "random" mode. Btw I checked the replay and this is 1v1v2. Green and Yellow had already weakened each other before you attacked them. I’m sure you can handle a 1v3 as well. It’d be great if you shared the replay of it too.
-
Or better pathfinding, or larger bodies of water. So is depth somehow taken into account already? Maybe, haven't played many water scenarios.
-
An amazing piece of advice: recommending a blacksmith in phase 1. ChatGPT just scrapes a chaotic mess off the internet (95% from this forum) and regurgitates it like it’s been filtered through a drunken brain. It has zero real understanding of the game. Even if it somehow managed to play, it’d still be stuck at a singleplayer level. Multiplayer strategies, as mentioned in the topic, are a completely different thing. Real opponents can instantly ruin whatever plans you come up with. You’re racing both against other minds and the clock. You usually don’t even get to trade at all (depends on the map and your opponents). And if you’re playing against Petra, you don’t really need any serious strategy anyway. Just produce a solid number of units and it will do. When would you ever actually need a strategy with Petra? Only if you’re playing 1v2+ on very hard.
-
Careful. It's not the distribution that you are multiplying, it's each value. Otherwise, you would be changing the amplitude (height), not the standard deviation (width). And this works only because you are applying it to a normal distribution of mean 0 and standard deviation 1. On a side note, there are many "bell shapes": Cauchy, hyperbolic secant, etc, the normal distribution is a Gaussian, and before you mentioned "variance", keep in mind that's the square of the standard deviation. I counted 3 given the phrase I quoted. But now I went to the code and I understand what's going on. You calculate first values for normal distributions for x and y (mean 0, standard deviation 1), and then you multiplied them by the distance spread (which changes the standard deviation of the resulting Gaussian, as explained before). Well, this shouldn't give you a square (I thought you were integrating with wrong limits to get the probabilities, but I think that's the part you are doing with a CDF calculator). This is the relevant part of the code: const distanceModifiedSpread = ApplyValueModificationsToEntity("Attack/" + type + "/Projectile/Spread", +this.template[type].Projectile.Spread, this.entity) * predictedPosition.horizDistanceTo(selfPosition) / 100; const randNorm = randomNormal2D(); const offsetX = randNorm[0] * distanceModifiedSpread; const offsetZ = randNorm[1] * distanceModifiedSpread; data.position = new Vector3D(predictedPosition.x + offsetX, predictedHeight, predictedPosition.z + offsetZ); Which I'm going to simplify, in python, and fix distanceModifiedSpread = 60, for 100000 points: N = 100000 predictedPosition = {'x':10,'z':10} distanceModifiedSpread = 60 for _ in range(N): randNorm = (random.gauss(0,1), random.gauss(0,1)) offsetX = randNorm[0]*distanceModifiedSpread offsetZ = randNorm[1]*distanceModifiedSpread data_position = (predictedPosition['x'] + offsetX, predictedPosition['z'] + offsetZ) I get this density plot: So, not a square. That's acceptable enough, but bear in mind that your calculations are approximations. When you used the CDF calculator to integrate a Gaussian with mean 0, standard deviation 1.35, between -1.5 and 1.5, and got 73.35%, and multiplied by itself, you are indeed calculating the probability of hitting a square. Then you multiply that by a factor telling you how much smaller is the circle respect to the square, but that multiplication is having the hidden assumption that the probability distribution is the same in all points of that square (that's what multiplication really means, weighing all elements the same way, and that's why integrals and convolutions are more powerful). If you want to get the exact result, you have to multiply first and integrate later (or use the CDF calculator, but that's for the weak :P). The actual CDF can be found for example in https://en.wikipedia.org/wiki/Rayleigh_distribution, since it's related to the problem of having a "two-dimensional vector Y=(U,V) which has components that are bivariate normally distributed, centered at zero, with equal variances , and independent".
- Today
-
Video editor application - UnRick
AlexHerbert replied to UnRick's topic in Applications and Contributions
Why that title? -
Concerning the size of the ships and now the water depth. 1. I've had a number of situations where my "fleet" got tied up in knocks and I could not move them until I untangled them. "Smaller" ships may resolve this type of concern. 2. I've also built a dock where the water depth was too shallow for the larger boats, so I ended up with ships that could not go anywhere and had to be destroyed.
-
Further thinking about my 1D simplication case, I find that we can obtain the actual probability quite easily. Since x and y are independent, we can just take the square of the probability, which means probability of x being within +-1.5m of target times the probability of y being within +-1.5m of target. Next, since infantry is considered as a circle, we further multiply it with the area of circle divided by area of square. So, the exact probability of archer hitting target at 60m is 73.35% x 73.35% x pi x 1.5 x 1.5 / (3 x 3) = 42.26%. A spread upgrade would make it 54.77%. Pretty low! Would anyone perform experiment to prove it correct or prove it wrong?
-
Thanks for trying to understand my imprecise description. Random normal distribution is a bell shape of standard deviation of 1. If we multiply it by a spread of 2, it becomes a fatter bell shape, with standard deviation of 2. Spread is calculated like 2.25 x 60 / 100. It doesn't change like the way you relate with area. Consider it like a radius of a circle, centered on the landing point of projectile At 100m the circle is large, so shooting is inaccurate, at 50m the cirlce is smaller, more accurate. You are right that the area changes by 4 times, but spread is more like a radius, not area. This is a 1D value, not 2D. The random distribution is 2D. Multiply the 2D distribution with the 1D spread factor to make the distribution fatter, larger, more spread out. x y are not position of the landing point of projectile, but the random values to be added to the position of the landing point to make it spread out randomly. With spread, the landing position is no longer a point, but a 2D normal distribution centered on that landing point. You are right to point out that they "shouldn't" be independent. But as fact, the source code calculated them independently, probably to speed up computation. So the condition x^2 + y^2 = R^2 did not hold. x is just a random value with normal distribution, and y is just another random value with normal distribution. Together, x and y has no relationship. That's why the CDF is not circular. It is weird, but it is the current fact. Also seems you tried to understand "independent" as separate, and counted 3 spreads. When I mentioned independent, it is in the sense of random variables. Since it is 2D, there are only two independent random variables. Spread is a constant factor, like 2.25 for archer. At distance of 60m it is adjusted to 2.25 x 60 / 100. Multiplying the spread would make the random normal distribution larger, fatter, more spread out. And I guess your final intuitive interpretation is correct.
-
In 1D, but in 2D, with 2 spreads, at twice the distance inaccuracy should increase by 4 times (given how areas change with distance). What is super difficult is trying to understand what is that you are trying to say. A pair of independent spreads, then you multiply them by the spread? Do you have 3 spreads then? Not even counting target movement? What are x and y, exactly? Please, define things. In any case, assuming x and y are positions, of something in reference to a center, they shouldn't be independent, you should have the condition x2+y2=R2, with R being the displacement from that center, and this changes your integration limits and makes the CDF circular. If I understand correctly, that something is the arrow, so that circular CDF gives you landing point probabilities (this is a simplification, because the linear horizontal velocity, both longitudinal and transversal, and the quadratic vertical velocity of the parabolic movement will result in an elongated shape on the floor, which is also a simplification when not accounting for air drag, wind, etc). I guess then with some random generator you decide where the arrow fell, and evaluate proximity to nearby units.
-
Archaeological potpourri
Gurken Khan replied to Gurken Khan's topic in Introductions & Off-Topic Discussion
-
Spread of common infantry - Archer:2.25 Crossbowman:3 Javelineer:4 Slinger:3 Spread means how inaccurate the shooting becomes at 100m from target. The spread is less when closer than 100m. For example, it is half at 50m. Thus, archer and crossbowman are proportionally the same: 2.25 x 60 / 100 = 3 x 45 / 100 = 1.35 A projectile (arrow / stone / javelin) is considered to hit a infantry when it arrives at radius < 1.5m from target (indeed, a circle). A projectile is considered to hit a calvary when it arrives at the 3m x 6m rectangle of the target (indeed, a rectangle), which is a little larger than the size of two infantry. Dog is smaller, elephant is larger, charriot is larger. Now, at the beginning of a shoot, after waiting a short initial prepare time (once only), the future location of the target (because it may be walking) is very often precisely predicted, and the projectile is shot there, at a speed around 70m-100m per second, depending on unit. It should mathematically hit the target at the exact position when the projectile lands. Therefore, if the target changed direction during this time, the projectile might miss. Even if the target did not change direction, the projectile might also miss due to the spread. The exact spread is given by a pair of independent normal random variable at variance of 1m. It is then multiplied by the spread. The result is some sort of 2D normal distribution, but since x and y are independent random variables, the 2D CDF is not circular, but more like a square. It seems super difficult to mathematically calculate the exact probability of it hitting a target. Let's get a rough idea by assuming the 1D case. I don't know how much would it deviate from 2D case, would be great if some mathematician could help. (Edit: I solved the 2D case, see reply below) In the simplified 1D case, I just use some online normal CDF calculator, fixing lower bound at -1.5, upper bound at 1.5, mean at 0, standard deviation at 2.25 x 60 / 100 = 1.35. Archer hits an infantry at 60m with probability 73.35%. After an upgrade of spread (-20%), standard deviation = 2.25 x 0.8 x 60 / 100 = 1.08, the probability is 83.51%. Crossbowman and slinger hits infantry at 45m with probability 73.35%. At rank 2 spread -20%, the probability is 83.51%. Indeed, exactly same as archer at 60m, coincidentally. Javelineer hits infantry at 30m with probability 78.87%. At rank 2, the probability is 88.18%. The best unit would be rank 3 archer plus spread upgrade, at standard deviation = 2.25 x 0.8^3 x 60 / 100, hitting target at 60m with 97%. Last but not least, when a projectile misses a target, it is not wasted. It will hit some innocent person standing there. Reference: https://gitea.wildfiregames.com/0ad/0ad/src/branch/main/binaries/data/mods/public/simulation/components/Attack.js#L714
-
Archaeological potpourri
Thalatta replied to Gurken Khan's topic in Introductions & Off-Topic Discussion
Maybe worth mentioning, here they have the best preserved example in the world of a manuballista mechanism, from the 1st century AD. I always like to visit these weird unique items in museums, we are all familiar with the Roman semi-cylindrical shields, but not everyone knows there's only one remaining, the scutum from Dura-Europos, at the Yale University Art Gallery: https://artgallery.yale.edu/collections/objects/5959. -
Agreed, that's my point. Regarding oppida, I was having them in mind when proposing making more use of palisades (and walls for relevant civs, I seem to remember Gauls had them), this could be combined somehow with "specialised CC". Palisades don't have to enhance turtling too much, just delay some rushes and small attacks. I think the discussion was that, even when doing that, the player doing the capture would then turn around things instantly, giving too much advantage, and some proper conversion time was being proposed to avoid this. It seemed to me that things were getting unnecessarily complicated, and the base garrison concept would address all issues at once, on top of bringing some control (card ordering) and realism (siege-looking sieges). I'm just proposing it for if someone with modding skills finds the idea interesting and wants to test it, before anything else.
-
With this new paragraph you added, I realize I misinterpreted your first message. It seems like this is something that could be addressed by increasing the base capture resistance of buildings/ships. The dynamic you’re proposing sounds interesting for certain gameplay contexts, especially in single-player/campaigns, and perhaps even multiplayer matches on “thematic maps” (scenarios). I think this touches on something we haven’t explored much: the possibility of having different balances and mechanics depending on the game mode (single-player, campaigns, thematic maps, multiplayer). Of course, it’s important to keep in mind that this would increase both the amount and complexity of the work, and available manpower is limited.
-
Several civilisations had fortresses, notably the diadochi. The Greeks seem to practice the epiteichismos, which was about fortifying key settlements and outposts. In some cases, we can truly speak of fortresses, so much have the sites been modified by the process. However the Romans do not seem to have proper forteresses, with permanent structures, during the Punic Wars. Regarding the Celts, the boundary between fortresses and fortified settlements is rather blurred. Hillforts and oppida sometimes have relatively few civilian structures and seem to have specialized in a military function. The alternative I can imagine would be to have specialised CC. Some CC could be converted in a more military or defensive structure. The issue with the current system of walls and gates is that the IA is not using it really and it is quite a challenging project to improve the IA in this aspect. A single massive defensive building is far easier to handle. The Germanic faction currently lacks historical depth. It's actually an initiative that started as a mod and then spilled over into the game. Many buildings were designed without necessarily having an archaeological or historical basis to rely on.
-
UnRick started following Video editor application - UnRick
-
Position: Video editor Do you understand that Wildfire Games is a non-commercial project, work for 0 A.D. is volunteer, and work is done for free? Yes Do you agree to distribute all your work for Wildfire Games under Creative Commons Attribution Share-Alike license? Yes Are you sure you are not wanting to work on something programming related? (Then you don't need to send in an application form.) Yes Name: UnRick Email: rtbeeke@gmail.com Location: Amsterdam, Netherlands Availability: 2 - 4 hours a week Age: 35 Occupation: Work, family life, newborn baby Skills and Experience: I've been a motion designer/editor for about 12 years now. Started in game design and for work i create videos everyday Motivation: I just love videos and motion it gives me great joy and at work we actually all play 0 ad together when we have some free time on our hands so it would be great to edit videos for you and show them off to my collegaues :p Personality: Joyfull, positive, hardworking Short Essay: Years ago when we first started playing 0 ad, i just love the whole game and where it is headed. Interests and Hobbies: Games, movies, music. Im playing Age of Mythology while i am sending you this form haha Staff: no Community: reddit and ign only Favorite Game: currently it's the Dyson sphere program. My all time, the whole God of war series but mainly the new ones now. they are just so cinematic Work Examples: https://www.linkedin.com/in/rickterbeeke/ https://rtbeeke.wixsite.com/website my portfolio is not super up to date but gives you a glimpse of what i do. This involves 3D, 2D and everything in between
-
Well, if some small path appears, I agree, although not for a paved road, you could end with some weird street layout if where random units are walking is taken too seriously.
-
Indeed, but how historical seem to you many of these fortresses, and how much just a product of nostalgic AoE2 cloning? (something that I've seen discussed many times already). I don't think removing them from some civilisations, not only to make it more historically accurate, but to differentiate civilisations more, should necessarily mean to unbalance the game, but that balance should be found in their differences, otherwise it's just "similar vs similar" (agreed that it would take more work). On a somewhat different note: shouldn’t Germans not have stone walls? At least less so than Sparta (which eventually had, but late, and still this doesn't appear in the game). People are complaining already :P, and will even more when poorly garrisoned ships are stolen like a candy to a baby. Regarding damage distribution, I'd say leave it to the player to decide, by ordering the cards of the units garrisoned (and have some panel somewhere where you can set a default order, to greatly reduce micro). Calculations is something to test, surely in some mod first, and then decide, hard to know beforehand those details, but this is the only simple nice way I see to have siege engines do something that resembles actual siege, and use something more realistic and engaging than capture points (wasn't proposed by me, I just extended the idea to ships). EDIT: I misremembered, virtual combat was proposed for ships and normally garrisoned units, and I extended it to siege and proposed base garrisons in place of capture points:
-
I entirely agree. Capturing buildings should be difficult but rewarding. And the buildings should be tied to the territory. I find it absurd when someone loses his CC and he destroy every buildings before the capture. A fortress should be also able to create a new territory but smaller than the CC, to have a territorial anchor. True. We don't want a bland AoE clone. The difficulty behind virtual combat is how to make it good with only calculation because the player would not control which unit are getting the hits. People can get frustrated if the damage are distributed evenly and they would get frustrated as well if we give the damages preferentially to specific types of unit. There is also the issue of calculating the damaged of ranged and mounted units. People will complain.
- Yesterday
-
idle_b_1:
-
Millenium A.D. also very nice mod
-
Nice! I got it how to be black all games ü
-
That's why I still swear on having a non-controllable default garrison on buildings, ships and siege engines against which one has to enter in "virtual combat" that would act as capture resistance and turn around limiter, and would made boarding and siege make more sense
-
I do use them often, as my first line of defense until I can afford better walls. Also THANK YOU! I did not know you could connect Walls in this game and continue to work around corners!
-
Latest Topics
