Realism Mod Wishlist

Moderator: Pocus

Post Reply
mejobo
Lance Corporal - Panzer IA
Lance Corporal - Panzer IA
Posts: 16
Joined: Sat Aug 22, 2020 10:38 pm

Realism Mod Wishlist

Post by mejobo »

I haven't yet learned anything about how to mod FOGE, but after several (very enjoyable!) campaigns some of the 'concessions to gameplay' have lost my interest; I play grand strategy games with my "historical modeling and analysis" hat on more than my "balanced gameplay" hat on.

Now, I don't have much time to mod at the moment, and I am not sure exactly what the limits of modding in FOGE might be. So I figure a good starting place might be to make a "wishlist" of features - accumulating as people make suggestions and as I come upon ideas. I'll be trying to give (easy reading) citations for ideas, and others' ideas with some citation will be easier to research and follow up on as well. Hopefully we can get some sense of what is feasible within FOGE, as well. I'll be editing the OP here (and on the Slitherine Forum) periodically to include new ideas (or exclude failed old ones). Perhaps in a few months I will have the time to take this up, or perhaps not - hopefully it results in some interesting discussion about history either way!

To kick things off:

Ideas on logistics:

- Make food stockpiles/supplies/population growth (and decline) more of a variable, year-to-year affair.

- Food stockpile/supplies should more severely limit army sizes in many cases (giving reasons to divide armies on the march and assemble them at the planned battlefield, allowing large armies to almost immediately cause famine, making filling frontage less of a sure thing)

Some logistics easy-reading inspiring these ideas:
https://acoup.blog/2019/10/04/collectio ... ones-s7e4/
https://acoup.blog/2019/05/28/new-acqui ... es-part-i/
https://acoup.blog/2019/05/10/collectio ... of-gondor/
https://600transformer.blogspot.com/201 ... ation.html

Thoughts on 'civilian' economics:

-redefine Trade Range to incorporate movement cost for different regions, so that roads help trade along the entire route rather than in the hosting region (and bad terrain/landlocked areas generally are harder to reach)

-Try to incorporate trade along large, navigable rivers to ease the above.

-tradeable food resources should have a much stronger impact on being able to support a large population - Rome cannot reach the population it did with region-level or italia superior-level farming alone! This means things like "large mill" and granary bonuses should be nearly a requirement for continuing population growth past some point.

-random, regional disruptions in availability of trade goods (as well as raw food) should be a reason for having redundant supply (for instance, you want to be able to ship grain to Rome from both Africa and Egypt in case of a bad harvest in one region that doesn't affect the other). These disruptions should create 'equilibrium' populations with higher populations supported by better farm land (and more farming infrastructure) or by robust, redundant access to food through trade.

-Broadly make it harder to reach a point where money, metal, and manpower are no object, making fully developed field armies and large battles rarer and more decisive (closer to how they are at the start of the game, but throughout the game). Large and well-developed empires will have more field armies, of course, but compare the size of the army available to Athens in the early classical period to various estimates of the Roman Empire's military size, and it is clear there should not be easy access to dozens of full-frontage forces across the empire!

-Supposing that population growth is also about urbanization in this game, and noting that many ancient cities were population sinks (that is they were sustained by immigration even as more people died than were born), having some non-food stockpile based pull factors might be nice - perhaps culture or trade based population importation on occasion?

- Hopefully the aforementioned changes make marginal lands less attractive to empires, allowing smaller 'barbarian' powers to survive on these lands without developing into 20 pop+ cities - thus maintaining a desire to move away from the marginal land and seize the cities!

- Warfare and particularly extended sieges should be more likely to cause significant damage to population level and/or structures.

Easy reading citations for these ideas:
https://www.reddit.com/r/AskHistorians/ ... re_system/
https://acoup.blog/2020/07/24/collectio ... -i-farmers
https://www.reddit.com/r/AskHistorians/ ... opulation/
https://acoup.blog/2020/01/17/collectio ... ilization/

Thoughts on citizenry and so on:

- Citizenry right now is loosely modeled by in-game ethnicity (+being free/not enslaved) and so some factions (like Rome) are better able to convert ethnicities to represent easier access to citizenship. I think more could be done to distinguish more open models of citizenship than equating that with ethnicity, but I'm unsure exactly how to approach that.

- In some cases at least population cubes and their ethnicity might play into manpower or available units? (I'm actually unsure as it is very easy to have excessive manpower whether or not having 'negative' manpower results in losing population cubes, but if it doesn't that might make for a good mod mechanic). Similarly disbanding units might create an influx of population cubes.

- enslaving populations should be more likely to draw from the existing population of the battlefield.

https://acoup.blog/2019/08/23/collectio ... -equality/
https://600transformer.blogspot.com/201 ... nness.html
https://acoup.blog/2021/06/25/collectio ... nd-allies/

Link to the Steam thread:
https://steamcommunity.com/app/1011390/ ... 460276946/
elxaime
Corporal - 5 cm Pak 38
Corporal - 5 cm Pak 38
Posts: 48
Joined: Sun Feb 22, 2015 7:35 am

Re: Realism Mod Wishlist

Post by elxaime »

Great ideas. One of my issues with an otherwise wonderful game system is how the curbs on army size and expansion don't seem strong enough. It is too easy, even at high levels of difficulty, to turn the game into a "paint the map" exercise where at a certain point your nation is "too big to fail," with vast stocks of food and money you can never exhaust, and massive armies bestriding the map (armies by the way, that once they attain high experience levels, keep them through the ages even if they have been sitting without fighting for 100 years).
mejobo
Lance Corporal - Panzer IA
Lance Corporal - Panzer IA
Posts: 16
Joined: Sat Aug 22, 2020 10:38 pm

Re: Realism Mod Wishlist

Post by mejobo »

Experience decaying should probably be added to the list— perhaps it can be counteracted by regional military structures.
Pocus
Ageod
Ageod
Posts: 5510
Joined: Tue Oct 02, 2012 3:05 pm

Re: Realism Mod Wishlist

Post by Pocus »

About realism/historicity vs fun/game balance. We all know that's an endless debate. But I would like to point out another factor to consider when adding game rules: It can slow down turn processing, from extra calculations. For example trade range refinements. That's probably a parameter few players ever consider when they wonder why a game rules is done in a certain way.
Also, tied to that, more complex game rules are less approachable or 'implicitly understood'. So your game tends to go toward elitism. This is one of the drift we suffered from at AGEOD, back when we were an independent french company circa 2010 :D

That said, a mod can do anything his author wants :wink:
AGEOD Team - Makers of Kingdoms, Empires, ACW2, WON, EAW, PON, AJE, RUS, ROP, WIA.
SuitedQueens
Senior Corporal - Destroyer
Senior Corporal - Destroyer
Posts: 120
Joined: Fri Mar 12, 2021 3:09 pm

Re: Realism Mod Wishlist

Post by SuitedQueens »

Yes. In Master of Orion 3 ground units experience gain/decay make the turn processing in the endgame last about 20-30 seconds more than in midgame even on new systems.
kronenblatt
General - Elite King Tiger
General - Elite King Tiger
Posts: 4333
Joined: Mon Jun 03, 2019 4:17 pm
Location: Stockholm, SWEDEN

Re: Realism Mod Wishlist

Post by kronenblatt »

Pocus wrote: Mon Aug 16, 2021 7:41 am About realism/historicity vs fun/game balance. We all know that's an endless debate. But I would like to point out another factor to consider when adding game rules: It can slow down turn processing, from extra calculations. For example trade range refinements. That's probably a parameter few players ever consider when they wonder why a game rules is done in a certain way.
Also, tied to that, more complex game rules are less approachable or 'implicitly understood'. So your game tends to go toward elitism. This is one of the drift we suffered from at AGEOD, back when we were an independent french company circa 2010 :D

That said, a mod can do anything his author wants :wink:
If we were to want to mod experience decay (i.e., experience reducing over time), how should we go about it?
kronenblatt's campaign and tournament thread hub:

https://www.slitherine.com/forum/viewtopic.php?t=108643
elxaime
Corporal - 5 cm Pak 38
Corporal - 5 cm Pak 38
Posts: 48
Joined: Sun Feb 22, 2015 7:35 am

Re: Realism Mod Wishlist

Post by elxaime »

I don't think it need be done turn by turn, or with scientific precision. You could simply have a check once every ten years for all units, reducing by one star. This would roughly simulate soldiers aging, retiring, dying of other causes, being replaced by younger recruits. Or you could make it a periodic, random, pop-up event, with modifiers for decadence, since military effectiveness is closely related to willingness to fight for the current political leadership. I think greater realism can be handled in creative ways that don't necessarily mean creating a Gary Grigsby style man-by-man constant calculation.

Pocus has pointed out correctly there are cost-benefits analysis. Another is player enjoyment. I remember AGEOD had these realistic troop attrition settings for its games, where unless armies were well-supplied in a garrison, they would constantly melt away. Realistic? Yes. But I suspect many disliked using these settings. Gamers like freedom and they have a mindset that is ill-suited to acceptance of such things like plagues and famines and spoiled food interfering with their grand schemes. But FOG/E, with its massive food stocks and permanent four-star armies, needs some tweaking.
Pocus
Ageod
Ageod
Posts: 5510
Joined: Tue Oct 02, 2012 3:05 pm

Re: Realism Mod Wishlist

Post by Pocus »

You can add a function in Events.bsf that iterate through each unit every x turns (to reduce load, as suggested), smth like that

Code: Select all

	
	if (GetTurn() % 5 == 0)
	{
		facCount = GetNumFactions();
		for (fac = 0; fac < facCount; fac++)
		{
			factionID = GetFactionID(fac);
			groupCount = GetNumGroups(factionID);				
			for (grp = 0; grp < groupCount; grp++)
			{		
				groupID = GetGroupID(factionID, grp);
				unitCount = GetNumUnits(groupID);
				for (unt = 0; unt < unitCount; unt++)
				{	
					unitID = GetUnitID(groupID, unt);
					Unit_ChgXP(unitID, DivideAndRound(Unit_GetXP(unitID) * 90, 100))
				}
			}
		}
	}
AGEOD Team - Makers of Kingdoms, Empires, ACW2, WON, EAW, PON, AJE, RUS, ROP, WIA.
kronenblatt
General - Elite King Tiger
General - Elite King Tiger
Posts: 4333
Joined: Mon Jun 03, 2019 4:17 pm
Location: Stockholm, SWEDEN

Re: Realism Mod Wishlist

Post by kronenblatt »

Pocus wrote: Mon Aug 23, 2021 2:04 pm You can add a function in Events.bsf that iterate through each unit every x turns (to reduce load, as suggested), smth like that

Code: Select all

	
	if (GetTurn() % 5 == 0)
	{
		facCount = GetNumFactions();
		for (fac = 0; fac < facCount; fac++)
		{
			factionID = GetFactionID(fac);
			groupCount = GetNumGroups(factionID);				
			for (grp = 0; grp < groupCount; grp++)
			{		
				groupID = GetGroupID(factionID, grp);
				unitCount = GetNumUnits(groupID);
				for (unt = 0; unt < unitCount; unt++)
				{	
					unitID = GetUnitID(groupID, unt);
					Unit_ChgXP(unitID, DivideAndRound(Unit_GetXP(unitID) * 90, 100))
				}
			}
		}
	}
Thanks, Pocus!

And in your example: every fifth turn? (if (GetTurn() % 5 == 0))
kronenblatt's campaign and tournament thread hub:

https://www.slitherine.com/forum/viewtopic.php?t=108643
Pocus
Ageod
Ageod
Posts: 5510
Joined: Tue Oct 02, 2012 3:05 pm

Re: Realism Mod Wishlist

Post by Pocus »

indeed!
AGEOD Team - Makers of Kingdoms, Empires, ACW2, WON, EAW, PON, AJE, RUS, ROP, WIA.
kronenblatt
General - Elite King Tiger
General - Elite King Tiger
Posts: 4333
Joined: Mon Jun 03, 2019 4:17 pm
Location: Stockholm, SWEDEN

Re: Realism Mod Wishlist

Post by kronenblatt »

I’d also like to remove the opportunity to buy regions and provinces as part of transactions (in peace time). Maybe even disable absorbing nations and making nations client states in peace time.
kronenblatt's campaign and tournament thread hub:

https://www.slitherine.com/forum/viewtopic.php?t=108643
kronenblatt
General - Elite King Tiger
General - Elite King Tiger
Posts: 4333
Joined: Mon Jun 03, 2019 4:17 pm
Location: Stockholm, SWEDEN

Re: Realism Mod Wishlist

Post by kronenblatt »

Pocus wrote: Mon Aug 23, 2021 2:04 pm You can add a function in Events.bsf that iterate through each unit every x turns (to reduce load, as suggested), smth like that

Code: Select all

	
	if (GetTurn() % 5 == 0)
	{
		facCount = GetNumFactions();
		for (fac = 0; fac < facCount; fac++)
		{
			factionID = GetFactionID(fac);
			groupCount = GetNumGroups(factionID);				
			for (grp = 0; grp < groupCount; grp++)
			{		
				groupID = GetGroupID(factionID, grp);
				unitCount = GetNumUnits(groupID);
				for (unt = 0; unt < unitCount; unt++)
				{	
					unitID = GetUnitID(groupID, unt);
					Unit_ChgXP(unitID, DivideAndRound(Unit_GetXP(unitID) * 90, 100))
				}
			}
		}
	}
Two questions on this one, Pocus:

1. Isn't it better to put in Events_Plugin.BSF instead? In order to not have to modify the much larger Events.BSF file.

2. Doesn't your suggested script actually increase the unit's experience points? Since the unit's XP is changed by DivideAndRound(Unit_GetXP(unitID) * 90, 100), i.e., as I understand it, the unit's current experience points * 0.9, so actually almost doubles it?

Unit_ChgXP(unitID, DivideAndRound(Unit_GetXP(unitID) * 90, 100))

Shouldn't it instead read:

Unit_ChgXP(unitID, -DivideAndRound(Unit_GetXP(unitID) * 10, 100))

in order to reduce it by 10%?


Since the Unit_ChgXP function looks like this, adding value to the current xp, it seems:

FUNCTION Unit_ChgXP(unitID, value)
{
int xp;

if (Unit_ProgRate(unitID) <= 0) // can't progress
{
return
}

xp = GetUnitInt(unitID, $UNIT_XP);
Unit_SetXP(unitID, value + xp);
}
kronenblatt's campaign and tournament thread hub:

https://www.slitherine.com/forum/viewtopic.php?t=108643
Post Reply

Return to “MOD”