Ideas and brain storming for Europe map scenario

Hmmm, I think it would be really cool to have Europe Map scenario for the next release maybe.

I could just work forward the map script I've posted to this thread earlier. Or maybe build real historical scenario with preset cities. Maybe crusader era scenario? Any suggestions?

I'd really enjoy the mod even more if I was able to play on Europe shaped continent, and I guess I'm not only one.
 
Hmmm, I think it would be really cool to have Europe Map scenario for the next release maybe.

I could just work forward the map script I've posted to this thread earlier. Or maybe build real historical scenario with preset cities. Maybe crusader era scenario? Any suggestions?

I'd really enjoy the mod even more if I was able to play on Europe shaped continent, and I guess I'm not only one.

I agree, and I would be glad to assist in getting it working correctly. I just finished up making Trade Screens work off of a single Python file so it will be really simple to add new screens.

I think you have suggested ideas where we use the whole map and there are no TradeScreens, as they are now anyway. That maybe interesting to add at some point for sure, but for now we should stick with the simpler Trade Screens.

For a Map, I think something like this would be cool...

1200.jpg


With a Map like this we could actually have some on screen TradeScreens and some off. Like Constantinople could be a trading center and another on the African Coast. Anyway, Night could merge the AI_Trading back into development and you could use that branch to work from. You would just have to start working on it and then we can figure out what we need to adjust and such.
 
One very important question: the load/save code in CvInfos.cpp, are they used for scenario maps? I noticed some bugs in CvInfo::read/write meaning whatever is using that code is currently broken. My codechanges did break something (it's wip), but the majority of the issues were present before I started working on that file.

If those read/write functions are only used for locked modified assets, then I have a simple solution: edit XML to disable that option and don't care about the code. We should disable it anyway as RaR have rejected bug reports due to being unable to load savegames due to that stupid setting.

I'm all in favour of adding a scenario map (though I generally prefer random maps). My concern is that it could be made now and broken before next release due to DLL bugs.
 
Yes, it makes no sense to create scenario file if it's going to be broken very soon. But we can design what to do at least. There are some issues:

  1. Is the scenario going to be submod or 100% supported with main mod. I'd prefer it to be supported, so it can be updated with ease. Maybe somehow add support for plug-in style events too.
  2. Have to decide how to use trade screens. I think silk road could be accessed in the east around Caspian sea. Spice route has access point around Red sea. But it's long way for western civs to travel there. So maybe add some extra trade sceens like the mentioned byzantine trade screen and maybe saharan "Salt road screen"
  3. List of Nations. The good thing of scenario file is that you can rename the civilizations. But it still would be preferred to have unique civ for every nation in scenario.But first have to decide the start date of the scenario.
---

As far as I understand anything I think the Scenario file loading is handled with python in the CvWBDesc.py
 
The random map game starts 476 AD. But I feel that Crusader era scenario could be nice. If the start date is set too early with just few preset cities, it's not too different from random map.
 
As far as I know the read/write in Infos isn't used, that's what I was told.
I'm not convinced they aren't used. They are not used for normal savegames, but that will not rule out some other case. I strongly suspect either scenarios and/or games with locked assets. It took quite some time to code them for vanilla. It makes little sense if they are never called.

Maybe somebody should add a false assert in load and save and then make a scenario and see if the assert triggers.

If they are never used, then we might as well delete them, or most of them. The way they are now, the compiler treats them like they are in use.
 
Yes, it makes no sense to create scenario file if it's going to be broken very soon. But we can design what to do at least. There are some issues:

  1. Is the scenario going to be submod or 100% supported with main mod. I'd prefer it to be supported, so it can be updated with ease. Maybe somehow add support for plug-in style events too.
  2. Have to decide how to use trade screens. I think silk road could be accessed in the east around Caspian sea. Spice route has access point around Red sea. But it's long way for western civs to travel there. So maybe add some extra trade sceens like the mentioned byzantine trade screen and maybe saharan "Salt road screen"
  3. List of Nations. The good thing of scenario file is that you can rename the civilizations. But it still would be preferred to have unique civ for every nation in scenario.But first have to decide the start date of the scenario.
---

1. I'd help with a 100% supported

2. The Trade Screens shouldn't be that big of a deal and we can play test to see what's best

3. I like the idea of starting in the Crusade era, then we can look to history for the Civs that we start with with. The time frame could be from the Crusades 11th century the 16 th century or what ever works.
 
I'm not convinced they aren't used. They are not used for normal savegames, but that will not rule out some other case. I strongly suspect either scenarios and/or games with locked assets. It took quite some time to code them for vanilla. It makes little sense if they are never called.

Maybe somebody should add a false assert in load and save and then make a scenario and see if the assert triggers.

If they are never used, then we might as well delete them, or most of them. The way they are now, the compiler treats them like they are in use.

I made quick search in the forums and I think that the read/write in the CivInfos.cpp are for "lock modified assets" option. Didn't test it though.
 
I ran some tests and it turns out that neither scenario maps or games with locked assets tries to save the XML data. I consider that great for us, but it leaves the question why the code is written in the first place :confused:

I merged Kailric's AI trader and trade screen code into develop. That branch should now be completely up to date regarding savegames. AFAIK we don't have anything planned, which would ruin savegame compatibility meaning anything made with the develop branch should work with next release.
 
Hmm is there any new features that you can't code in the scenario file? Civics, Trade perks, techs and censures etc are all civics in the terms of game engine? I'm not sure how the scenario file loading handles them, guess I have to test it.

I'm wondering whether it would be possible to have a check if the game being played is a scenario game. This could allow modding python events without disturbing the random map games. Maybe just add a bool value m_bScenarioGame in the CvGame class?
Or actually, events should be tied to the specific scenario, so different scenarios could have different events. Not sure how would I do that...

And what is the current state of the unplayable nations like Byzantines and Mongols? Why aren't they playable?
 
Or actually, events should be tied to the specific scenario, so different scenarios could have different events. Not sure how would I do that...

I think scenario could be split into 2 files, map and events. Map is normal scenario file and events is a python file that is imported into CvEventManager.py somehow... Both files share the name so you can identify the different scenarios. Hmmm the implementation into CvEventManager.py requires some thinking....In CvEventInterface.py you could do check which is the name of the scenario played and pass the corresponding events.py to the AppInterface as CvEventManager. I guess this might be the easiest way if you want to have multiple scenarios with events.
 
Hmm is there any new features that you can't code in the scenario file? Civics, Trade perks, techs and censures etc are all civics in the terms of game engine? I'm not sure how the scenario file loading handles them, guess I have to test it.

I'm wondering whether it would be possible to have a check if the game being played is a scenario game. This could allow modding python events without disturbing the random map games. Maybe just add a bool value m_bScenarioGame in the CvGame class?
Or actually, events should be tied to the specific scenario, so different scenarios could have different events. Not sure how would I do that...

And what is the current state of the unplayable nations like Byzantines and Mongols? Why aren't they playable?

I would think, for a 100% supported scenario dll, that we need to add a Civ4ScenarioInfos.xml and from their we can add all the different types of info we need for each Scenario, then Events could then be assigned to a ScenarioType. Then we just need either a Button that appears in WorldBuilder, or in Cheat Mode, or a Control hotkey that brings up the Scenario Menu that lets you choose which Scenario and all its attributes is saved.

The Byzantines and Mongols are not set to playable basically because they don't fit with the default Historical Theme for M:C. The Mongols didn't appear what, until the 1200s, and Byzantium was already a thriving society at 476. I have plans to add Byzantium to the mod as a NationState just like the Pope and Rome is now, but I am still in the testing mod with Rome to see how it is working out. But any of the Civs can be configured in the XML to be playable.

Do Scenarios just use all the default xml values? Like if you placed Byzantine on the map and wanted the Player to be able to play them, would you then have to create a separate mod with separate xmls so you can set them as Playable? If so, then in the proposed ScenarioInfos we could have a "PlayableCiv" option where the dll would over ride certain settings for the Scenario, and likewise with other settings as well. The dll would check for Scenario and then automatically override certain settings.
 
I tried following this guide:

That works ok, but if I edit the file with a text editor, I notice that there is no place for starting techs. We need to figure out how to solve that in order to get proper scenario support.

Other than that, ColonizationWBSave looks pretty robust compared to DLL changes. I'm no longer that concerned that it will break.
 
I would think, for a 100% supported scenario dll, that we need to add a Civ4ScenarioInfos.xml and from their we can add all the different types of info we need for each Scenario, then Events could then be assigned to a ScenarioType. Then we just need either a Button that appears in WorldBuilder, or in Cheat Mode, or a Control hotkey that brings up the Scenario Menu that lets you choose which Scenario and all its attributes is saved.

The Byzantines and Mongols are not set to playable basically because they don't fit with the default Historical Theme for M:C. The Mongols didn't appear what, until the 1200s, and Byzantium was already a thriving society at 476. I have plans to add Byzantium to the mod as a NationState just like the Pope and Rome is now, but I am still in the testing mod with Rome to see how it is working out. But any of the Civs can be configured in the XML to be playable.

Do Scenarios just use all the default xml values? Like if you placed Byzantine on the map and wanted the Player to be able to play them, would you then have to create a separate mod with separate xmls so you can set them as Playable? If so, then in the proposed ScenarioInfos we could have a "PlayableCiv" option where the dll would over ride certain settings for the Scenario, and likewise with other settings as well. The dll would check for Scenario and then automatically override certain settings.

I think Scenario file already has PlayableCiv tag that overrides xml.No need for separate mod for that. But if I set Byzantium to be playable will the game be stable?
 
That works ok, but if I edit the file with a text editor, I notice that there is no place for starting techs. We need to figure out how to solve that in order to get proper scenario support.

Other than that, ColonizationWBSave looks pretty robust compared to DLL changes. I'm no longer that concerned that it will break.

Techs are civics, right? Well anyway, it's possible to add all starting techs with python event at game start.
 
I think Scenario file already has PlayableCiv tag that overrides xml.No need for separate mod for that. But if I set Byzantium to be playable will the game be stable?

Byzantium isn't used in M:C at the moment so you can just set them up like the other playable civs and you would have no worries. In fact for the scenario you could then add what ever Civs you want and just have them noneplayable for random games.

Techs are civics, right? Well anyway, it's possible to add all starting techs with python event at game start.

I'd like to add a better interface for adding techs to any player. I've never tried modding world builder but it would be good if we can use the same system as Civ4 for adding techs.
 
Techs are civics, right?
It loops all civic types and stores the selected one for each. The type for inventions is currently -1, which is why it's skipped.

It would be interesting to know where the read/write function for scenario files is as this might not be the only data we would like to add.

Well anyway, it's possible to add all starting techs with python event at game start.
Good point. However it would still be preferred if we could figure out how to actually save techs rather than relying on a python extension.
 
Back
Top Bottom