Firstly, I like the idea of a distinction between what I guess are "Offensive Pacts" (ie Confederations) and "Mutual Defensive Pacts", but it's a further down the line idea.
Seondly, I think we're largely done on the original point of this post, regarding alliances, as we're now moving on to some unrelated issues (ie Siege mechanics). Please correct me if I'm wrong on this, but generally I'm taking my last proposition as what should happen with the changes.
HonoredMule wrote:
Regarding vault protection: You'd think being agreeable with so much that I say would make me happy. Well, I'm very happy, but there's still "one more thing." What about using a cache table that only sums vault levels per alliance once per few hours or day? Using a hard per-player value is ok, but not great...it infers extra protection to undeveloped masses and demerit to small, mature alliances. It's not a big deal, but I just can't see it putting that much strain on the event queue. The values could even be maintained as just a hash table in memory, or could be calculated only when theft of alliance property potentially occurs. I won't presume to know what kind of architectural constraints you're having to encounter (I'm a LAMP guy, personally), but if it could be managed, it would be nice. If there's another value more easily accessible, such as sum of player population (already maintained on the alliance score listing), that would also work.
Constants trouble me, because we
always
often end up with problems around factors of 0, 1, and arbitrarily large n. For example, for a static 1000 value one-man alliances still gain substantial protection for the one-time cost of alliance setup, possibly funded by a friend. This becomes a bigger problem if you ever want to allow alliance protection to cover equipment as well as gold. Alliances consisting of many sock-puppet accounts would become someone's personal Cayman Islands, and even real alliances may be tempted to stuff the roster a little. Trying to root out cheaters is a necessity no matter what, but rooting out motive to cheat is more thoroughly effective. Anyway, if you still disagree, I'll shut up...I've made my viewpoint sufficiently clear, and I'll know you've given me as much consideration as you can.
|
Well, I misspoke a bit.
It's really no real overhead at all (we're talking the difference between a tiny fraction of a ms and 2 tiny fractions of a ms).
Without going all techie, the general concept of the programming design is that the server doesn't know anything it doesn't need to know until it needs to know it. So with every server tick that goes past I'm afraid to say it doesn't recalculate how many hundredths of a decimal place your wood level has gone up by. It just knows what your wood was the last time it checked, and how much wood you produce. And so, when something 'initiating player active' happens (eg you refresh your screen), it does check to see whether your wood level has increased, or if something 'initating player passive' happens (eg some thieves arrive to steal your wood) then it similarly makes the calculation.
But generally the DB holds concepts of things, but doesn't calculate unknown-knowns unless they're demanded to become known-knowns, by the act of observation.
I'm not sure who would be more proud: Donald Rumsfeld or Schrodinger.
So, the overhead of this would be tiny, but we're equally determined to eke out every single piece of overhead saving we can. This server is designed to hold c. 110K active players with a concurrency of about 50K, and we'll throttle / release growth as necessary at various milestones we reach.
HonoredMule wrote:
Regarding conquering cities: Maybe I'm missing something. Every response so far has carried the implicit assumption that conquered cities must be severely damaged husks. Does that mean that they must be conquered via siege, or reduced to a certain population level? Or maybe the original population migrates out and some other factors force the rebuilding process to be slow? Because my concern is over a well developed-but non-defended city. For example, someone builds up a city to about 500 population but does not defend it, and an all-out attack by a handful of first-tier military units gains the city. Can someone clarify whether this is a possibility in any form?
|
It's a few questions at once, so I'll answer as best I can, and forgive me if I've posted this elsewhere (and am repeating myself).
A city cannot be conquered unless it is first sieged.
A Siege Encampment must be set up in a neighbouring square to the city under siege.
The Siege Encampment, once arrived, takes a minimum period to setup. Once setup, it starts Sieging at a very substantial penalty. During this period the Sieging party can choose to use Siege Weapons to attack but suffers massive penalties to doing so.
Over time, these penalties are reduced by x% per hour. The actual percentage they reduce per hour will depend on the size of the city being Sieged. The larger the city, the longer till the percentage reaches a tipping point. As a general guideline we're definitely talking hours and in the case of large population cities, days.
With every passing hour, the Siege camp gains strength and does more damage with the siege engines, as they bed in / find range etc. Equally, every passing hour means the defender has a chance to organise a defence of the besieged city (be that bringing in reinforcements or returning armies from abroad).
Once the Siege Penalty timer reaches a certain point, the city can be Stormed.
The Sieging party can choose not Storm the city at this point, in which case the Siege Penalty timer continues to tick upwards and ultimately into the positive, meaning that the Sieging party actually gains bonuses to their encampment's bombardment of the city, and indeed the ultimate attack.
The Sieging party does not need to Storum the city with the same army. Any allied army may, in fact, Storm the city coming from elsewhere if the attackers so choose.
If there are no defenders in the city at this point, the city will be taken.
If there are defenders in the city at this point, the city will be fought for, and the winner will hold the city.
One decision we haven't yet decided upon is whether:
a) Defending Siege Weaponry in the City should be able to used to target the Siege Engines of the Sieging Army
b) Defending Assassins should be able to attempt assassination on the besieging army, thereby killing the commanders and actually potentially forcing the siege to end (as you can't do anything with an army without commanders). Given that armies cannot (currently) use diplomatic units as reinforcements to defend, I am against this option.
The mechanics favour the defender enough as it already is (Terrain choice, city wall, etc), so I'm still trying to decide on the above 2 items, and would welcome some thoughts.
History favours the defender of a fortified and guarded city - so much so that armies of many, many multiples of the defensive strength have smashed against the walls of various strongholds and still failed. Illyriad is not quite so forgiving to the defender, but the defender still has a goodly advantage.
I haven't run too many iterations of the numbers, but think an attacker (or multiple attackers) with less than (a combined advantage of) 2.5-3x the force might actually not win against a properly defended city - which makes timing of the attack, feints, other strategic opportunities critical. Whittle them down, draw them out, choose your timing, etc will make the difference here.
To specifically answer your questions, HM:
Yes, an undefended city will be taken fairly swiftly after siege begins, and the time depends on the size of the city.
Even if the Sieging party has not used Siege weapons to destroy the city first, many of the citizens of the recently captured city will attempt to deny the invaders a very good proportion of their wealth and buildings, by setting fire to lots of things in their rush up into the hills to live as outlaws and bandits. ie, taking off the RP hat, regardless of the offensive tactics used the city buildings will self-destruct themselves to a certain extent, to help ensure that "domino-effect" growth by a single player is curtailed.
Edited by GM Stormcrow - 14 Mar 2010 at 22:35