Feedback and Suggestions

OK, I guess that seems reasonable. What threw me off was that I looked at the diplomatic screen and Clovis' pope didn't appear on it at all. I expected a sign there that Clovis was at war.

And the reason you didn't see his Pope is because you haven't met him yet in that game ;)
 
I pushed the two row change.

Also I investigated removing the ordered enum for YieldTypes from DLL, making XML control it. That's not possible. It turns out that the code to handle python code like YieldTypes.YIELD_HAMMERS is set at compile time in C++ meaning there is no way to make it depend on XML. I'm now investigating a plan B where the game asserts if XML and enum have a mismatch. That way at least we will not have undetected bugs due to this issue.

I tested this out and can see the potential but I'd say for the moment we should revert back to the old style as we don't have the reasons to have two rows just yet. When we have more yields or when we rearrange the yields so they can stack relevantly over each other.
 
I tested this out and can see the potential but I'd say for the moment we should revert back to the old style as we don't have the reasons to have two rows just yet. When we have more yields or when we rearrange the yields so they can stack relevantly over each other.
I wonder if it can be modified to have an on/off switch. That might be easier to do now than to revert and then re-implement it again later. After all it did clash a bit with M:C code meaning it wasn't a copy paste job. Also with an on/off switch we can easily test if "now" is the right time to enable it whenever we add more yields.
 
I wonder if it can be modified to have an on/off switch. That might be easier to do now than to revert and then re-implement it again later. After all it did clash a bit with M:C code meaning it wasn't a copy paste job. Also with an on/off switch we can easily test if "now" is the right time to enable it whenever we add more yields.

Well, you can always add a new attribute to the GlobalDefinesAlt like TwoRowsOff but then you'd have to code in both versions. As long as we don't make any changes to CvMainInterface.py we can just swap the files right as it looks like that is the only file you changed?
 
I'm finding Nightinggale's version of the FA list hard to work with. For one thing, I'd like to see the full width of the table. Another thing is, I'd the version column at the left, just after the line and module number. And I'd like for Kailric and me to be able to add information.

I'm wondering whether we should make this an Excel 2007 file. Would you (Kailric and Nightinggale) be able to work with that? (An earlier version of Excel would be fine too. I don't have Excel 2010.)

What do you think?

We could host this file on Google docs if you have that; I have it. Or we could just download the current version from this forum? We could use Excel features to track changes. We could e-mail it to each other.
 
I'm finding Nightinggale's version of the FA list hard to work with. For one thing, I'd like to see the full width of the table. Another thing is, I'd the version column at the left, just after the line and module number. And I'd like for Kailric and me to be able to add information.
Kailric should have permission to edit the wiki. I think it is set to use the same write permissions as git.
I agree that the width is an issue. When I managed to get the table working I noticed the width issue right away and thought the wiki might be a dead end for this task. Still it is better than the forum.

I'm wondering whether we should make this an Excel 2007 file. Would you (Kailric and Nightinggale) be able to work with that? (An earlier version of Excel would be fine too. I don't have Excel 2010.)

What do you think?
Bad idea. It should be something which can be displayed in a browser. I think the issue tracker would be our best bet on keeping track of asserts. Try this link: https://github.com/Nightinggale/Medieval_Tech/issues?labels=Assert&page=1&state=open

If I understand the documentation correctly, once the list is too long to fit on a single screen, a search field will appear where you can search for say the line number of the assert. The list is sortable, but for some reason I can't get it to search on title. That would be ideal as it would provide a list of asserts sorted by line number if the titles keep to the layout I made.
 
I tried using the Faireweather map for MC 2.0h. The northern access to the Silk Road seems to be blocked. All land with access is actually in the transit zone. Forgive me if I don't have this quite right, but I think you need to have a settlement to transfer cargo to a land transport which can go to the Silk Road. I can't build a settlement in the Silk Road access zone, and there is no other land up there. The only thing I could think of is this: There is access to the Silk Road from a water tile. Maybe I can sail there. I'd actually prefer this to land access, since I wouldn't have to build a settlement up there, and defend it. But that's not allowed at this time.

[EDIT] The same seems to have happened at the south polar region, though I haven't fully explored it yet. Attaching a samefile.

I notice that the transit zone bends around the land. In some cases (in the center of the map) there are no transit sea tiles. At the edges there are.

I would like to have sea access to the Silk Road.
 

Attachments

I tried using the Faireweather map for MC 2.0h. The northern access to the Silk Road seems to be blocked. All land with access is actually in the transit zone. Forgive me if I don't have this quite right, but I think you need to have a settlement to transfer cargo to a land transport which can go to the Silk Road. I can't build a settlement in the Silk Road access zone, and there is no other land up there. The only thing I could think of is this: There is access to the Silk Road from a water tile. Maybe I can sail there. I'd actually prefer this to land access, since I wouldn't have to build a settlement up there, and defend it. But that's not allowed at this time.

[EDIT] The same seems to have happened at the south polar region, though I haven't fully explored it yet. Attaching a samefile.

I notice that the transit zone bends around the land. In some cases (in the center of the map) there are no transit sea tiles. At the edges there are.

I would like to have sea access to the Silk Road.

I tried loading the save but it want load for some reason. You are using the map named "Medieval_FaireWeather" script right? You don't have to have a settlement built on an "access to Silk Road" tile, you just need to move your unit to the access point. Each map will be different somewhat as far as how you can reach the Northern and Southern Silk Road routes. In the screen shot each north and south Silk Road regions have a "land bridge" that connects them, this is ideal in that players will have to explore, make negotiations, purchase land perhaps, and build roads in order to access the Route. Some maps may not have the land bridge in that case you'll have to build a port colony just to load and unload goods. We may can add in the ability to build just "trading post" colonies that can be dismantled in need be, to keep them from being captured. However, the whole purpose of the Silk Road was to have a "land based" route and add in a new kind of strategy. If we make it a Sea Route then there is no such strategy.
 

Attachments

  • mcfairweather.jpg
    mcfairweather.jpg
    262.9 KB · Views: 134
I tried loading the save but it want load for some reason. You are using the map named "Medieval_FaireWeather" script right? You don't have to have a settlement built on an "access to Silk Road" tile, you just need to move your unit to the access point. Each map will be different somewhat as far as how you can reach the Northern and Southern Silk Road routes. In the screen shot each north and south Silk Road regions have a "land bridge" that connects them, this is ideal in that players will have to explore, make negotiations, purchase land perhaps, and build roads in order to access the Route. Some maps may not have the land bridge in that case you'll have to build a port colony just to load and unload goods. We may can add in the ability to build just "trading post" colonies that can be dismantled in need be, to keep them from being captured. However, the whole purpose of the Silk Road was to have a "land based" route and add in a new kind of strategy. If we make it a Sea Route then there is no such strategy.

I wasn't able to get to the southwest corner of the map, but I didn't see any land bridge. I must be misunderstanding you, but it seems as though you're saying it connects the northern and southern zones.

Just to be painfully clear, you can only access the regions through sea transport. On this map they are not part of the regular large islands. You can only ship goods on the Silk Road by land transport. You can only transfer goods from sea to land transport in one of your own settlements. Therefore you need a settlement that belongs to you, adjacent to the Silk Road, but which is not inside it. There was no land I found that wasn't in the zone that was adjacent to any tile that was in the zone. If the zone was a little shallower, say 3 tiles, there would have been.

Yes I was using the right map and it worked fine except for access to the Silk Road. I liked the map, although Spice Route access was very far from the equator. There seemed to be Silk Road tiles at the top of the map but I couldn't use them. I'll take a look at the saved game.

[EDIT:] I'm not able to load the saved games either.
 
In this map, the same as the one above but later on, the bug has returned where, when I have built a guild hall etc. I'm just making gold hand over fist, without earning it. Naturally, I'm hoping you will continue not fixing this.

[EDIT]: This may have been a one-time event where I got over $30,000, because my unearned riches are now declining.)
View attachment Current Solo MT 2.0h game.ColonizationSave
 
We need better domestic economy. Right now you earn nothing in the beginning and once you get a certain invention you start to sell lots of the yield you can produce and money is no longer an issue. It is way too easy to sell automatically to locals and earn a fortune without the risk of bandits, pirates and similar during the journey.

RaR has a system where units wants to buy yields and the marked in a city will never be able to sell more than the demand from it's citizens. That way it can provide an income, but you can't suddenly sell 200 units of a yield inside your own country. This mean if you want to profit from domestic sales you have to move your goods around to reach the cities with the customers instead of just selling in one city. Colonization 2071 has a similar system, except buildings can create a demand as well as units. However unlike RaR it can't disable domestic sales, which is annoying if there is a demand for the yield you are also stockpiling because it's needed for a building.

We already have one thing for a domestic marked, which is the domestic advisor screen for it. Remember that we are using the same file as RaR meaning the whole screen is there, but it is disabled by XML settings in M:C. Sure we might need to change it a little bit to fit our needs, but most of the needed code is already there.

Moving the yields around between cities was rather annoying in RaR, but we have feeder service, which is designed with tasks like this in mind. RaR 1.7 will have feeder service too.
 
We need better domestic economy. Right now you earn nothing in the beginning and once you get a certain invention you start to sell lots of the yield you can produce and money is no longer an issue. It is way too easy to sell automatically to locals and earn a fortune without the risk of bandits, pirates and similar during the journey.

Well, we can adjust the local profit in the XML. Each building that auto sales goods on the market has an modifier and right now they are all set to 100 percent profit. It works off the same rules as the Warehouse but the Warehouse sales goods at 50 percent profit. The amount sold is also the same as if it was sold at a Warehouse, just what ever the amount lost do to over stocked warehouse, something around ten percent (CITY_YIELD_DECAY_PERCENT = 10) units, so only that amount gets sold each turn in each City. That doesn't seem like much really but if you added up all the yields being sold together it could be quite a few.

RaR has a system where units wants to buy yields and the marked in a city will never be able to sell more than the demand from it's citizens. That way it can provide an income, but you can't suddenly sell 200 units of a yield inside your own country. This mean if you want to profit from domestic sales you have to move your goods around to reach the cities with the customers instead of just selling in one city. Colonization 2071 has a similar system, except buildings can create a demand as well as units. However unlike RaR it can't disable domestic sales, which is annoying if there is a demand for the yield you are also stockpiling because it's needed for a building.

We already have one thing for a domestic marked, which is the domestic advisor screen for it. Remember that we are using the same file as RaR meaning the whole screen is there, but it is disabled by XML settings in M:C. Sure we might need to change it a little bit to fit our needs, but most of the needed code is already there.

Moving the yields around between cities was rather annoying in RaR, but we have feeder service, which is designed with tasks like this in mind. RaR 1.7 will have feeder service too.

I like this idea and I have thought about something along these lines as well. I also thought of tying this in with some kind of happiness factor. We would need to over haul the Fealty as well. Each citizen would have a happiness factor that effects their production and fealty. They would also have a "desired goods" factor and if they had access to those goods then in would increase their happiness and fealty if not then they would get disgruntled. If a Citizen isn't doing what they are good at, such as a Baker working as a farmer, that would also cause them to become disgruntled. Then you would need to give them access to things such a Ale to keep them happy :beer: Disgruntled citizens could start riots or revolutions in your cities as well as immigrate out to another city.
 
We need better domestic economy. Right now you earn nothing in the beginning and once you get a certain invention you start to sell lots of the yield you can produce and money is no longer an issue. It is way too easy to sell automatically to locals and earn a fortune without the risk of bandits, pirates and similar during the journey.

RaR has a system where units wants to buy yields and the marked in a city will never be able to sell more than the demand from it's citizens. That way it can provide an income, but you can't suddenly sell 200 units of a yield inside your own country. This mean if you want to profit from domestic sales you have to move your goods around to reach the cities with the customers instead of just selling in one city. Colonization 2071 has a similar system, except buildings can create a demand as well as units. However unlike RaR it can't disable domestic sales, which is annoying if there is a demand for the yield you are also stockpiling because it's needed for a building.

We already have one thing for a domestic marked, which is the domestic advisor screen for it. Remember that we are using the same file as RaR meaning the whole screen is there, but it is disabled by XML settings in M:C. Sure we might need to change it a little bit to fit our needs, but most of the needed code is already there.

Moving the yields around between cities was rather annoying in RaR, but we have feeder service, which is designed with tasks like this in mind. RaR 1.7 will have feeder service too.

Yeah I agree. Having some actual supply/demand generated within your colonies makes things way more interesting. The Domestic Economy feature that allows generating demand from citizens/buildings was first developed by Androrc in his modcomp here which was included in the ancient 2071 version :old:; RaR uses a variant of this too but doesn't include the ability for buildings to affect local demand (but it does allow disabling domestic sales, which is rather a crucial feature as Nightingale pointed out!) The current M:C system is good in that it allows buildings that enable domestic sales; but it doesn't yet generate actual demand from units/buildings, thus the problem that passively selling things in one city can become easy if demand is never saturated and the price stays up.

I like this idea and I have thought about something along these lines as well. I also thought of tying this in with some kind of happiness factor.

Yeah I really like the idea of having supply/demand relate to some form of Happiness or Unrest factor as well. This way, getting more citizens which generate more demands isn't all free upside from selling goods to them; you also have some motive to keep them supplied as best you can. RaR had considered this too but never got around to implementing it.

It might be too much to have separate moods for every individual citizen in your empire though; once it gets big enough, tracking opinions for hundreds of individuals across all settlements each turn could get really time consuming. Anyway Medieval Lords were probably more concerned with overall unrest among the masses than thoughts of individual peasants -- so it could be possible to have a meter for each settlement which works like Rebel Sentiment currently does, but measures something like Unrest or Happiness. That way each individual citizen would still be upset and add to local Unrest if his demands were unsatisfied, but you wouldn't have to keep track of current moods of everyone in the game individually. A lot of good effects for Rebel Sentiment are already coded in vanilla (like increasing worker efficiency and defense bonus at higher levels) so hopefully replicating that mechanism could save time & stability.

We could also have certain other buildings/professions be able to generate Happiness / decrease Unrest, such as Tavern/Cathedral and governing Noblemen/Priests. :king: Also, special buildings like Shrine could generate a good chunk of Happiness per turn. (It's surprising how content people were those days just from having the right mummified saint fingerbone around!:lol:)
 
In RaR, a common feedback from players was that Domestic Markets was itself a fun feature in the beginning, but it just became too overwhelming or tedious to need to track everything on an individual basis each turn (i.e. Williamsburg needs exactly 3 Coats; time to ship 4 Cigars to Roanoke, Boston needs 6 Rum and 8 TradeGoods this turn but keep in mind next turn 2 new Indentured Servants will be arriving, etc etc). :crazyeye: In M:C the feeder service makes trade routes easier to manage; this will improve things but part of the issue remains that the sheer number of individual transports that would need to be made, tracked and updated can eventually get rather large and burdensome. You'd eventually need swarms of Wagon Trains (or Pedlers) everywhere picking up and dropping off small amounts of individual yields, which would create a big drag on late-game performance.

I had proposed an option for a single national-level economy, where if a city ran short of a demanded good; instead of freaking out that you didn't send a Wagon Train to fetch 3 Rum it could simply consume some surplus from other cities that were set to sell that good, and everyone would be satisfied. :king: Let me know what you think about it:

http://forums.civfanatics.com/showthread.php?t=494027

Others have also mentioned before that the Domestic Market is initially quite a fun feature, but can eventually cause so much micromanagement that it ends up becoming very frustrating. I agree with this; I think the Domestic Market is a very interesting and realistic feature allowing the local economy to become gradually more independent from Europe; but with many cities and many yield types to keep track of each turn, it really can get to the point where the resulting micromanagement can become very excessive and not fun at all to deal with (and also not very manageable for AI). I know some people will still enjoy having the possibility of making and managing very large amounts of automated trade routes; but for me the sheer number actually does become too frustrating a chore and will make me stop playing since it can just become much too tedious, even with automation.

From the viewpoint of realism, a lot of domestic trade happened naturally by small "laissez-faire" independent traders between local settlements, and was not centrally managed by needing very large amounts of planned trade routes and treks. From the viewpoint of the AI, optimal trade routes considering all demand and supply of all goods between all cities can just be too difficult for it to plan far ahead very well, making it do less well than humans.

So, what is a way that could allow Domestic Market to be a realistic model of internal trade that's fun and manageable for players (and more fair for AI players to use), while still allowing benefits from optimal micromanagement of domestic trade routes for players who enjoy that? I've been thinking about that a while, and I think the solution could be to allow for some possibility of natural trade between local domestic cities, while still giving a benefit if you can optimally manage trade routes and local supply/demand.

This could be done by a method similar to the following function, run once at the end of the turn.

Code:

* For each city (CityA), if it doesn't have enough Yield to satisfy local demand, then:
* For each of that player's other cities (CityB) :
* If the other city is set to sell that Yield, and the other city has excess supply ((other city's supply - other city's demand) > 0):
* subtract this excess supply from CityB, and treat it as consumed in CityA's Domestic Market.
* charge a slight gold penalty for transport, proportional to distance between the two cities.

In this way, there's a realistic ability for cities selling excess goods to satisfy demand from their neighbors, but there's still an advantage to efficiency if you're able to plan your economy well to satisfy domestic demand locally or from trade routes. I think it provides the best of both worlds, in allowing maximal micromanagement through Wagon Train routes if you want that, and allowing you to function reasonably well if you don't.

An alternate algorithm that could be even quicker:

* At the beginning of the Domestic Market phase, do a single calculation adding up a national total for Domestic Excess Supply: this is the sum of (local supply - local demand) for all cities which have excess supply and are set to sell that Yield.
* For each city, if it doesn't have enough Yield to satisfy local demand, it can consume some to be subtracted from the total Domestic Excess Supply, charging a slight penalty for transport.
* At the end of the phase, the total amount consumed from Excess Supply is subtracted proportionally from the cities that had excess supply and are set to sell.

I think this also might be computationally less expensive than directly schlepping around large numbers of yields physically via trade routes between lots of cities using Wagon Train units, so this might help the game run faster in the late game for games with large maps and large numbers of routes.
 
Yeah I agree. Having some actual supply/demand generated within your colonies makes things way more interesting. The Domestic Economy feature that allows generating demand from citizens/buildings was first developed by Androrc in his modcomp here which was included in the ancient 2071 version :old:; RaR uses a variant of this too but doesn't include the ability for buildings to affect local demand (but it does allow disabling domestic sales, which is rather a crucial feature as Nightingale pointed out!) The current M:C system is good in that it allows buildings that enable domestic sales; but it doesn't yet generate actual demand from units/buildings, thus the problem that passively selling things in one city can become easy if demand is never saturated and the price stays up.
I'm proposing a new variant to the family of domestic sales. The sales each turn should be considered raw material consuming, like blacksmiths consume ore. This influence the change at the bottom row and avoids the col2071 problem where it says +2, but you only get one because the other one is sold. Even more importantly the AI is capable to moving yields around to supply the need. It's not a matter of telling the AI how to do it, it's a matter of implementing this in the code the AI is already able to handle well.

In RaR, a common feedback from players was that Domestic Markets was itself a fun feature in the beginning, but it just became too overwhelming or tedious to need to track everything on an individual basis each turn (i.e. Williamsburg needs exactly 3 Coats; time to ship 4 Cigars to Roanoke, Boston needs 6 Rum and 8 TradeGoods this turn but keep in mind next turn 2 new Indentured Servants will be arriving, etc etc). :crazyeye: In M:C the feeder service makes trade routes easier to manage; this will improve things but part of the issue remains that the sheer number of individual transport decisions that would need to be made, tracked and updated can eventually get rather large and burdensome. You'd eventually need swarms of Wagon Trains (or Pedlers) everywhere picking up and dropping off small amounts of individual yields, which would create a big drag on late-game performance.
One feature I considered for RaR (but never implemented) is to set the city governor to manage imports. It should use the same code as import feeder service to meet the demand. The difference is that it should auto set the threshold to fit the increasing demands from the city. Say you build a new building, which needs a single silver each turn. In that case the governor detects this, sets import feeder on and threshold to say 10*consumed each turn. Next you add a citizen, which also consumes silver and he will increase the threshold. I haven't worked out the details, but this is the idea. Keeping track of demands in say 15 cities is way out of what I would consider fun.

Yeah there might be some performance issues. Also I noticed that feeder service efficiency drops as you get more land. You might import lumber from 30 plots away even though you have a surplus 4 plots away. I'm considering making transport areas and each transport can assign to one. The transport would then ignore all transport lines which starts or ends outside that area. It should then be possible to make a transport area consist of just two cities meaning transport between different areas will still be possible. This should allow a more efficient automated transport net in big civs. However I haven't figured out how to actually code this. As you said performance could be an issue. It needs to be implemented a bit more clever than transport figures out where to go and if it's invalid it tries again to find something else.

Then again I might end up doing nothing at all because I fear it's a huge task. On top of that I have other stuff to code first.
 
I'm proposing a new variant to the family of domestic sales. The sales each turn should be considered raw material consuming, like blacksmiths consume ore. This influence the change at the bottom row and avoids the col2071 problem where it says +2, but you only get one because the other one is sold. Even more importantly the AI is capable to moving yields around to supply the need. It's not a matter of telling the AI how to do it, it's a matter of implementing this in the code the AI is already able to handle well.
Hmm, that's a good idea to treat domestic market sales as part of the standard yield consumption rather than a separate system. :cool: Would make things a lot less confusing for AI and also for players (especially if the tooltip when hovering on the yield in cityscreen can include something like "-2:c5science:, +5:gold: from citizen consumption"). I guess the timing of when production/consumption takes place could be tricky, the simplest may be that each turn finishes regular production first, then handles domestic-market consumption using the yields then in place. Allowing import/export governor as an option sounds like a great feature as well.

Yeah there might be some performance issues. Also I noticed that feeder service efficiency drops as you get more land. You might import lumber from 30 plots away even though you have a surplus 4 plots away. I'm considering making transport areas and each transport can assign to one. The transport would then ignore all transport lines which starts or ends outside that area. It should then be possible to make a transport area consist of just two cities meaning transport between different areas will still be possible. This should allow a more efficient automated transport net in big civs. However I haven't figured out how to actually code this. As you said performance could be an issue. It needs to be implemented a bit more clever than transport figures out where to go and if it's invalid it tries again to find something else.

Yeah, even if shipping by AI can be accomplished using unit-based transport, there will always be issues relating to pathfinding and the sheer number of transports. The DLL probably does continue using a concept of "Area" for each map tile carried over from Civ4BtS, where each Area is basically a continent or anything surrounded by water. I know this must still be in Civ4Col as well, since BonusInfos.xml still uses this to determine Bonus placement during map generation ( <iMinAreaSize> sets a minimum threshold for the size of continents it can appear on, and <bArea> makes it unique to one continent.) OTOH that doesn't address pathfinding across large continents so may not be that relevant. I wonder if some issues with long transport route pathfinding in M:C are related to Bandits/Animals; if the pathfinding AI sees a single Bear near a chokepoint and tries to avoid it it could get sidetracked.
 
Back
Top Bottom