Yet another Revolution Idea

Is this a good Idea

  • Yes, this a brilliant idea

    Votes: 14 73.7%
  • The concept is good but...

    Votes: 5 26.3%
  • No, this is an aweful idea

    Votes: 0 0.0%
  • Other

    Votes: 0 0.0%

  • Total voters
    19

Olleus

Deity
Joined
Oct 30, 2005
Messages
7,073
Location
Inside a Heighliner
Yes, this is just another idea on how to implement revolutions in civ, but I think that this one is simple enough for the user to understand it, and complex enough to make it interesting.

Every city generates culture, as normal, but it also generates 'Rebel' culture. This 'Rebel' culture is hidden for most of the game and the player is unaware of its existence. The amount of 'Rebel' culture made is depends on the culture of the city, distance from capitol, happiness to unhappiness ratio and the number of :mad: citizens.

When you have a revolution to change civics/religion every city undergoes a check. If the amount of 'Rebel' culture is greater then the amount of 'Normal' culture then the city will revolt and start a new civ, called 'Rebel [Name of old civ]. While the rebel version of your civ exists then the 'Rebel' culture in all of your cities is shown and exists for game purposes (unhappiness for being at war with native civ, culture flipping, ect...). As soon as you kill the 'Rebel' civ all of the 'Rebel' culture becomes hidden again.


What does this mean?

Firstly, the game becomes a lot more realistic.

Secondly, there is a whole new dimension to the game. "Is that civic really worth loosing some cities?", new descisons are always good.

thirdly, having a big empire makes changing civics dangerous. If a revolution starts a large number of cities might join it, which could cripple you. This means that large civs are less likely to change, which accurately represents history where large empires became unwilling/unable to change with there times. Bigger will no longer always be better.
 
It is a great idea! I hope it sees the light of day...
 
What about cities that rebel from rebel civs? If you had some English colonies rebel, you might have a civ called Rebel English (America). If some cities rebelled from the rebel empire, would you have a civ out there called Rebel Rebel English (Confederacy)? And what about the second rebel civ from the same origin? Would it be Second Rebel English (South Africa)?
I think a list of rebel civ names would be better, similar to the city lists. Rebel nomenclature should be reserved for when the list runs out. Other than that, it would be absolutely fun and is plausibly justifiable. However, invisible stuff you can't do anything about is never THAT fun, so as long as you are doing this, why not put in a capability, say a Building called Polling Institution, that reveals rebel culture.
 
I like this idea a lot. There are a few variations I can think of:

1. The rebel cities just become Barbarians.
2. The citites don't rebel, but they lose culture making them more suseptible to culture takeover by neigbouring civilizations.
3. Investment in certain buildings, technologies, or home guard units negate the rebel effect.
4. Maybe the cause of the rebelions could vary: religious, economic, independence (depending on local resources etc.) so may need different buildings or techs to solve.
 
This is great, I am praying that someone picks it up. It would work great in AoC.
 
Right, as a proof of concept I've used the SDK to get a city to change to Barbarian. Adding a new player as "Rebel_YourCiv" is currently beyond my knowledge. The "easy" bit is now the maintenance of the rebel culture value. I'll start putting in things based on what Lord Olleus suggests. Though I won't do any interface changes to show the rebel culture - other than maybe highlighting dangerously high rebel culture in the log.
 
I think the hard part is going to be hiding this rebel culture, it would seem to me to be easier at the source level to simply create a new datamember for Cities m_irebeliusness and store the data their and at the time of the Rebelion half the culture of each culture thats present in the City and add an equal amount of Barbarian culture thus giving the City atleast 50% Barb culture and resulting in a perminent loss of culture for player even after the city is recaptured.

You could also create int CvCity::getRebelionProbability() which uses the rebeliousness value and other varius bits of data it pulls in (most important of which is the Empire Size, Distance to capital and Religions present in the City vs State Religion) to calculate the chance of a rebelion occuring durring the revolution (I recomend we NOT differentiate between Civic and State Religion as people will inevitable get confused). This could then be exported to Python ware it appears as a color coded display on the City screen so you get some good feedback.
 
Nice to see that so many people are interested in this idea.

About the hard bit, actually codding it. I was thinking of doing it in pretty much the same way as Impaler, which shouldn't be too hard. The only one problem which I can think of is the 18 civ limit. If you need to create a rebel civ for every real civ (and potentialy for every rebel civ as Tholish pointed out), then you would not be able to start with more than 9 civs, which I, personaly, think is far to low. One possibility is to make the cities rebel into barbarians but I would rather not do this. Another possibility is to create another civ called 'Rebels', and all rebelling cities from all civs join it.

Does anyone know if the 18 civ limit will be lifted with Warlords.
 
I don't know why there is an 18 civ limit other than MAX_CIV_PLAYERS in CvDefines.h is set to 18.

I'm going to start with the Barbarian conversion and the calculation logic as a start to the City. This will give us something to play test. If someone can check into dynamically creating new civs and 18 player then that would be great.
 
So is the 18 hard-coded in places other than CvDefines.h? Or would just changing CvDefines.h and rebuilding be enough?
 
You should check out jdog500's Revolution mod. Barbarians become full fledged civs and fractions split from civs if they are very unhappy. There is so much more than just this though. Check it out.
 
On further anaylis I would like to modify my recomendations.

Attatch the m_iRebeliousness datamember to CvCity and add get/set/change functions for it and export to python
Attach a m_iRebeliousnessModifier datamember to CvPlayer and CvCity along with a get/set/change function for each also exported to python

Then perform the Rebelion probability calculation and resulting effects being fired at the Python level, its something that people will probably want to Mod a lot and it can easily be handled their once the the hooks are in place. Revolutions are an infrequent event and doing a simple calculation on each city even one that pulls in several varaiables is compuationaly very light. Its best to keep the core logic out of the SourceCode.

If it proves fun I could see additional support for <RebelionModifier> in Civics, Leader Traits and Buildings both Local and Global
(can you say RedSquare Wonder of the World!)

For now I would go with just Barbarizing the City (hey that could be a nice function name CyCity::Barbarize()) as theirs no way around the 18 cap, it might be possible using that code that can "reserect" dead civs and change an existing players Civ. The problem is that their may not be a deadplayer slot you can use and having the Rebels be some random Civ would be kind of Silly. I am not shure if its possible to have them belong to the same Civ they rebeled from as that would create 2 players with the same Civ (is that legal?) and will it complety screw things up if it is legal?
 
Justinian519 said:
You should check out jdog500's Revolution mod. Barbarians become full fledged civs and fractions split from civs if they are very unhappy. There is so much more than just this though. Check it out.

That mod looks great. Shame though, I was really getting into this modding lark.
 
I am still working on this, but this is turning into a can of worms for determining when a city revolts. It's simple to make a decision at a given turn based on the snapshot of the model at that time. However, I think that would be easy to "cheat" the system into making a city not revolt.

Things I am thinking of is taking into account unhappiness levels, affects of buildings, religion, the economic contribution etc. over a period of time. That way you can't just build a new building (or whatever) and stop the rebellion.

What criteria are other mods using to determine if a city would revolt?
 
I voted yes, but... I think this should definitely be combined with some version of the Cultural Influences Mod Component...

As well as some kind of interaction with happiness. Whether that's unhappiness is a direct factor for rebellion (e.g.: rival culture + unhappiness = rebellion) or unhappiness is an indirect factor for rebellion (e.g.: unhappiness affects cultural production in some way, and culture is the main factor for rebellion).

Depending on its implementation, it might not need to be invisible at all. I know that if rebel culture is the only factor, making it visible would be too easy. But if there's multiple factors interacting, then making it visible might not be a bad thing at all.
 
Top Bottom