Okay, so this is an average-looking release, but it took a bit of work because a lot of the underlying systems had to be changed (especially for the names). The main thing in this release is that ranged units are now more balanced and make more sense (thanks to Antsan's suggestions), and that nation names are a lot more interesting.
Nation names are now composed of three main sections, the modifiers, the government type, and the places. Modifiers are words like "Grand", "Illustrious", "Federated", et cetera, that just describe the nation. While these were previously in the simulation, a nation only had one, but now the nation can have any number (including 0) modifiers. I added a couple more government types (Socialist State, Khanate, Hegemony, Sultanate, Principality, and Commonwealth), but there's still just one for each nation. Finally, the places. Each nation now starts out as a city state (so if its name was, for example, "The Grand Republic of Omkirna", then its starting city would be named "Omkirna"). When a nation founds a new city or captures one, it can add the new city's name to it's place name list, which can change its name to, for example, "The Grand Republic of Omkirna and Ueuaew". Nations are more likely to take other city's names if they are more tolerant (I think this makes sense).
Finally, nation's names can also change naturally over time, adding/removing modifiers as well as place names (although place names can only be lost if the city is no longer under the nation's control and the nation has at least one other name). Sometimes this leads to antiquated names referring to cities that the nation no longer controls, but I like to call that a feature, rather than a bug (and it was intended anyway).
Examples:
The Glorious Glorious Principality of Fuzpyuoc, Rayvxjshqii, and Fgqfohyayvfteesya (obviously its pretty glorious)
The People's Illustrious Federated Republic of Lyyn
Also note, these are exceptionally long names. Nations like "Democratic States of Zympeyiiiue" are still common, and much more likely to be seen.
As for the ranged units, they will now switch to melee when their target gets too close, and switch back to ranged once their target is far enough away. Additionally, ranged units only have half their strength when fighting in melee.
A ranged unit which just valiantly fought off a melee attack.
Download:
http://www.mediafire.com/download/fb9bpxje8gw5px5/History+Generator-2016-01-05.zipThe full changelog:
Major changes:
- Ranged troops now switch to melee when their target gets too close (and switch back once their target is far enough away, if applicable).
- Nations names are now composed of various modifiers, a government type, and several place names.
Minor changes:
- Ranged troops are now half as strong in melee.
- Removed some more light colors.
- Added a couple more government types.
- Added some more government name modifiers.
- Slightly optimized battles.
- Units will now switch their targets to the closest unit every few steps even if their previous target has not been fully killed.
- Under the hood stuff for events with nations (ids so we can keep track of nations even with changing names).
- Nation list in the control menu no longer shows the age of the nation.
- Slightly increased projectile movement speed (5 to 6).
Bug fixes:
- Fixed battle sizes (now troops are actually in the right proportions).
I think I have seen that there are different unit types (further divided than only ranged/close combat, based on unit size, attack/defense, movement speed…). It also seems that reinforcements always arrive in a certain order, that is, first comes one unit type and when those are all done for the next unit type appears and so on.
It seems strange.
Also it often enough happens that one army sends much more per skirmish than the other one despite having less reinforcements overall. The army sending more troops at once seems to be at an advantage.
Some fights can be pretty one-sided, completely independent of unit size. Some units just mop up opposing units. It almost seems as if one soldier there can kill hundreds of enemies before dying. Just now I observed a battle where close-combat units were doing moderate damage to ranged units. When the ranged units ran out of ammo and went to close combat themselves, they suddenly dominated the battlefield.
Another thing about battles: I have seen some ranged squads that were way more effective as soon as they ran out of ammo and started engaging in close combat. When they are attacked before running out of ammo they insist on continuing to use their ranged weapons, though.
I get why you'd want to use a ranged weapon instead of charging into battle. That one makes perfect sense, especially when you need to cross some distance in which you do no damage while receiving damage from enemy archers (or whatever they are).
It doesn't make sense to fire ineffectively into the guy who's charging at you and already at close distance when you could do way more damage (and thus prevent your demise) by using your close combat weapon.
It would be cool if every ranged unit had a close-combat distance. If an enemy squad gets closer than that, they should change to melee and charge to meet their attackers.
I prefer source distributions. I am on Linux, meaning that I cannot run python programs packed up in an *.exe when I could run them just fine if they were distributed in source form.
First off, thanks for all the feedback.
Yes you are correct, there are five properties that affect a unit in battle. Their strength, health, discipline, fatigue, and whether they are ranged or not. I'll update the OP with a more thorough explanation, but essentially it is as follows. The strength and base health of the unit are displayed (in that order) above the unit in a battle.
- Strength: Affects how likely a unit is to successfully attack or defend (from melee or projectile attacks), as well as projectile damage.
- Health: How many hits melee hits a unit can take before dying. Ranged is slightly different, with the projectiles damage being randomly determined from the shooter's strength.
- Discipline: Affects how quickly ranged units shoot, as well as how quickly units become fatigued.
- Fatigue: Will decrease attack/defense rolls as it grows.
- Ranged: Obviously whether the unit shoots projectiles or attacks in melee by default
Yes that is how the reinforcements work right now. I will probably fix that, but for now, I think it's alright. Yes you are right, that apparently had been a bug for a long time, but I have now fixed it. Thanks! The reason that some units seem to mop up the battlefield while other fights are much more even is that the attackers have a fully trained army, whereas the defenders are all levies drawn up from the general population. Armies in the defending city only actually participate in the battle if its the nation's last city, otherwise they run away to other cities owned by the nation.
Yeah it didn't make any sense to keep shooting even while in melee, but I changed it now.
Anyway, you can use python to exe program, to turn your code into executables and then people will not need to have python to run.
In addition to being more portable, I feel providing the source is better because then people can look through it and modify it or whatever else they want. I suppose I could do both, but nobody's complained about the lack of a .exe.