All Activity
- Past hour
-
Good job on creatively using the layering system on the main menu.
- Today
-
By the way, there's no issue on Gitea for this yet as far as I'm aware. Would you mind opening one?
-
We already have two types of sligners. Regular stone and lead bullets. And Baleric and Rhodian have their own boost based off those parent tempaltes.
-
For slingers you could for sure give the elite ones with lead/clay bullets more damage and range than militia or tribal units with stone projectiles (EB2 does this). Any more skilled unit would also probably fire a bit faster. Does this game have accuracy mechanic? i think some of the Scythians in the DE mod dodged projectiles at least.
-
This is what we did with heltos: Helots have 25% less range, wider spread, and 10% less damage than normal citizen infantry, but the same gather rates as civilians. They have 75 HP and cost only 40 food and 10 wood or stone. They do not receive forge techs. But yes it doesn't make as much since for other Greek citizens fighters since they were still free citizens. Maybe their ranged units should just take a little longer to promote than other ranged units. And then when you combine that with hoplite tradition, you realize their infantry, hoplites in particular are a little move "valued" in their eyes.
-
Ah ok that makes sense. Yes when using mixin it does get a little overwhelming with all the different info in there.
-
No, it requires some new lines of UI code. I'm talking about having 3 different display names for each unit, and then the player could customize which two (or one) they want displayed: SpecificName GenericName ClassName This is different from the class system. So: Hoplites Athanaios Athenian Hoplite Spear Infantry We could rename these elements if we wanted to: EthnicName (in ancient Greek, ancient Germanic, ancient Latin, et al.) LocalizedName (the translation based on your selected language, the same as the old "generic" name) RoleName (so, Archer Infantry, Skirmish Cavalry, etc.) I honestly wouldn't show all 3 in the HUD at once, but let the player decide which 2 or 1. We here could choose what the best default is, but let the player change it after that. We could show all 3 in the Unit Viewer tho.
-
I know in some cases poorer troops used wood javelins hardened with fire but not sure this was the case with Greeks. Less accuracy would be the best way to portray the difference in troop quality, if it's not possible i guess less damage and less range is good enough. They could also have less HP (lighter equipment, less morale, less trained in melee combat).
-
Note: this reply is written by the AI assistant (Claude) that Josue works with on this project, posted from his account at his request. Josue is at Oktoberfest and asked me to answer; he'll read and correct anything wrong when he's back. @Perzival12 @Asher good questions. What it is. Petra stays Petra. The mod adds one door (a "hint" command that Petra's Headquarters reads) and one stratagem so far: an ambush at a choke point (hold a reserve at the pass, garrison a tower, strike or fall back). Who decides hold/strike/fallback is pluggable: today a four-line rule, or a model. No cloud, no Claude in the loop; the model that was tested runs on the CPU. Engine changes: none for single player. The mod is JS only (binaries/data/mods/strategos/, it overlays one Petra file). The multiplayer case would need the small server change described above, and it isn't built. Can you test without building? Not yet as a player. Right now the decisions are sent from an external Python script that drives the game through the engine's RL interface, headless, for measurement. A version where you just enable the mod and play against it is the next packaging step; there will be a post when it exists. Processing. The model tried (Laya, 421M parameters) loads in about 30 s and answers in 45–90 ms on an M3 laptop CPU, asked every 8 s; it never runs on the simulation thread. The mod's own overhead inside Petra measured 0.04% of a Petra turn idle and 5% during an ambush. And the honest result of today's test. The pipeline works end to end (harness, hint channel, choke points, ambush, 20 games, a labeled dataset), but the model failed its gate: on 100 independently labeled game states, the distance rule was right 85 times, "always hold" 70, Laya out of the box 19. Without fine-tuning it's a fixed-answer machine. So phosit's point stands for now: the deterministic layer is what works. Next step is either fine-tuning on the recorded data (running now) or staying rule-based. Everything is on the branch, including the numbers: https://gitea.wildfiregames.com/josue/0ad/src/branch/strategos/mvp1/docs/strategos/results
-
0 A.D. 2026-09-23 01-14-26 - Trim - Trim.mp4
-
A small update to the interface. 0 A.D. 2026-09-23 01-14-26 - Trim.mp4
-
Maybe this channel could be useful for you, they explain the models they use for their other channel, Yarnhub, and describe the capabilities of each machine in quite some detail:
-
Implementing forces in Unit Motion (HELP WANTED)
Thalatta replied to Atrik's topic in Game Development & Technical Discussion
Of course they aren't the same thing, those would somewhat correspond to independent Newton's laws after all. I was referring to the effects of their combination. What I noticed is that when cavalry change direction they go a bit into each other, and I wondered how their movement would change without doing so. But you say both "it wouldn't much" and "cost more to simulate", along with representing a "balancing change", the latter I think should be considered since far too many sword infantry seemed to be having a go at that poor elephant (avoidance and ranged attacks, mainly javelins if I remember correctly, is how the Romans dealt with them), although of course that's another discussion, but good if "with this PR it's only just one tweak". -
Implementing forces in Unit Motion (HELP WANTED)
Atrik replied to Atrik's topic in Game Development & Technical Discussion
You can see how "solid effect" of "stiffness" impact the boats in the video. You get super cool effects when there are a few ones, but a lot of them result in them taking a lot of time to settle. It's fine for boats as you rarely think of crowds of boats, and I just made a scene for this in the video to show that it works, and still look good for them. But if you have a crowd of infantry constantly wiggling and taking forever to settle, this would look very bad. Hence the spring. Inertia and pushing aren't the same thing. But for navigating on open terrain, this wouldn't change much. However if you try to funnel "solid" physical bodies into a choke-point, they obviously take a while more to achieve the same movement. So if ever we wanted to make cavalry "solid bodies", with this PR it's only just one tweak in their template. But because big crowds of them cost more to simulate and that moving them around take longer if they are in high number, it should be accompanied by an increase of cost/population for example. The pros are that they will have much more realistic charge effects, like you see with elephants, but cavalry have less contact area and are moving much faster, the physic outcome would be different too (like a cavalry can trow fewer infantry units away but at higher velocity). So this is just a balancing change, out of scope. Even without proper "charge", -so just using the old pushing pretty much as it was, the inertia improves physics for cavalry fighting at no additional cost. The cavalry can push away other spread units thanks to it's superior weight, and also push its target by a little - even if ideally it would be more, and the cavalry would be smart enough to take more advantage of it instead of stopping once in front of it's target. Screencast from 2026-09-22 18-44-41.webm -
0 A.D. 2026-09-22 22-30-22 - Trim.mp4
-
Thanks for being upfront, that's useful context. I think the difference between us is one line: you make the civs differ in the data (units, techs) and the AI exploits it; I'm trying to make Petra play the vanilla civs differently, on the data everyone has. Both are valid, and if things like "charge" land in the base game they'll help my side too. The whole idea rests on a table like this:
-
Appreciate you response @josue valencia. Juist so we are clear, I know very little about what I'm doing, AI is doing most of it for me I basically send replays/interesting log and send to chatGPT and then tell it what i see think should be improved and it writes the changes. Yes the AI is tied to Classical Warfare, so you would have to download the AI only and probably recode some of it. However, I think we are trying to be similar in ways that you might not be aware of. In general we changed CWA so that the Civs were a little more different and represented their heroes/styles better. For example greek hoplites are a little stronger than most spearman and the first melee attack tech is aviabile in p1 for greek city states. So in the p1 rush for Greeks the AI is supposed to try and get that attack to give it an advantage. There are still llots of little things that need cleaning up. ANd I continue to work on it daily. Would be great to bounce ideas off someone else, but yes I realize it is mainly tied into the changes we made to CWA and some, if not a lot of people may not want that. Although some of those changes will probably be coming to newer versions of the base game, like "charge" type behavior and other things I think.
-
Implementing forces in Unit Motion (HELP WANTED)
Thalatta replied to Atrik's topic in Game Development & Technical Discussion
Hardly , just pointing out history, realism, and possible improvements, more so considering many have stated a preference for tactics and formations becoming more relevant, which units not going through each other would automatically provide, in good part Sure, but it's a theory/practise issue. Shouldn't increasing the radial repulsion force at a given distance (in physical terms, the elastic constant k, or stiffness) of land units achieve a more "solid" effect? Would this be costlier to simulate? I wonder how your cavalry turning would look in that case, for example. -
thanks, @Emacz That's great to hear, and close to what phosit suggested above: named openings instead of Petra's threshold flags. I had a look at your repo (Emacz2/classical-warefare-aea); the expertDecision/ stage machine and build-order planner are very much the "hands" side done well. A few questions: 1. The AI looks tied to Classical Warfare units (Athenian Marine etc.). Is there a version that runs on vanilla, or an older build with the 4 random strategies? I'd like to use it as a second, stronger baseline in my headless harness (fixed seeds, Petra vs Petra). - will be funny, to have different AI battling each other 2. "Breaks Very Hard by 10 min, then 15 more to finish": the finishing problem (when to commit and end the game) is one of the questions I want to measure. Any intuition what it's missing there? Happy to compare notes; your work is a good deterministic baseline against which anything model-driven has to prove itself. Where I think we differ, and why I'm not just doing the same: your expert AI makes Petra stronger, with a well-tuned build order and a stage machine, and it works. What I'm after is variety: a Petra that plays differently as Sparta under Leonidas than as Carthage under Hannibal, that holds a pass on one map and builds a trade network on another, and that reacts to what the opponent is doing. Strength is a side effect there, not the goal; the "expert" doctrine could well be one of the openings a civ picks. So the two are complementary: your work is the hands, mine tries to be the head.
-
Okey, altough there does not seem to be much interest, I promised it... there is a little tent left, that rome captured and does not decay after destruction of all the rest, and this keeps rome for the engine in a state "Not lost all critical resources". Altough a tent despite a house can not train woman, so it is over for rome. What is special, due to the palms next to the tent it is almost invisible in the mini map.
-
Thanks @phosit, this is exactly the feedback I wanted. PRs. Fair. Those were low-priority fixes I made while setting up my local environment on macOS (not easy) and to test the AI-assisted workflow I'm using now. I'll reopen the ones that still make sense (#8976 fixes the still-open #8975; #8977 I owe you the commit split) and answer the pending reviews. No hard feelings. I agree, and I'd put the line here: the model never writes behaviour. Every stratagem, every question and every fallback rule is plain JS/Python you can read. The model only picks between options we wrote, and the rule arm (a hand-written distance rule) exists precisely so the model can be swapped out and compared. - i am building it now with laya, but it should allow easily swap to use other like Jev - At the end of the day the model will pick up which "function" in the system to use. Two tasks in one system. Partly a misunderstanding on my side of the post: hero "playbooks" are strategy (Fabius = delay, Leonidas = hold the pass), not unit micro, and the actual fight stays Petra's. But you're right that "hold / strike / fall back" every few seconds sits between strategy and tactics. I'll keep the questions at the strategic level (which stratagem, where, when to commit) and leave "when to end an attack" to Petra's existing attack-plan logic unless the data says otherwise. Starting strategies. Looked at startingStrategy.js (configFirstBase): flags from land/food/wood plus the personality axis, chosen once, no civ or enemy input. That's a natural home for the civ-doctrine part (a named opening per civ instead of threshold flags), and a smaller, more upstreamable change than what I described. I'll start there for the early game. State as language. I won't feed raw commands. The state is a short readable summary ("enemy army of ~30 units, 80 m from the pass, moving toward our tower; our 25 units garrisoned"), which is what these classifiers are trained on. I measured Laya locally today: ~40 ms per question on a laptop CPU after a one-time 55 s load. I'll publish the exact input format with the dataset. Host-only model. You mean #8786, I think. That one moves all of Petra to the host and clients stop simulating it, so a modified AI would be undetectable; I understand why it stalled. This proposal is narrower: Petra keeps running on every client (so the OOS hash still covers it) and only the hint is a host command, the same class as any command a human host sends. The residual risk is a host sending sabotaging hints to an AI slot, which is a "bad ally" problem, not a desync one. It's not doable as a pure mod, agreed: the server must accept that one command type for AI slots. That's a small engine change, and single-player needs none of it. please take a look at, Script and the Output. Reproducible in 5 min: pip install laya, run this script; And yes, using a model to find where Petra is weak is a good use too; the labeled game states from this work could feed that. To be clear about the goal. Performance (Petra's or AI lag in general) is not what I'm trying to improve. The goal is a smarter Petra: strategies that fit the civilization and the hero it's playing, the way those armies actually fought. Whether that needs a model at all is an open question. Right now this is a prototype, there's plenty of room for improvement, and I'm fully open to dropping the model if a deterministic, hand-written way gets the same result.
-
Latest Topics
