Beyond the Game - Competitive Expansion

After your comment I read on this a bit and you seem to know much better than I do,it's no so straightforward to me at the least.
Yes, I live in Hungary. Austria-Hungary would be fine in a RFC scenario in a particular time period but not in a general mod.
It iself re-uses (and I did myself as I made modification / shuffled things around) Austria (https://forums.civfanatics.com/threads/austria-by-dumanios.447556/#post-14743530) and Hungary (https://forums.civfanatics.com/threads/hungary-by-dumanios.448001/) assets
That's better. But if I may add a little more to this:
Jurta (pronounce 'yurta', Hungarian for Yurt) fits only a very narrow time period: When the nomadic Hungarian tribes arrived to the Karpats and settled there.
As a UB I'd rather suggest Végvár (literally 'end-castle' or 'edge-castle'). They were used especially on the borders throughout the middle ages.
Huszár is fine.

In AND Mega Pack you can find 100+ civs with at least 2 leaders for each, and some more leader heads for vanilla civs. It's an add-on for AND2 and Chronicles of Mankind.
Maybe you want to use something from it :)
 
New screens no game change just to show more information. You can just copy and paste or use WinMerge to see what I change.
 

Attachments

  • Screenshot (1).png
    Screenshot (1).png
    698.2 KB · Views: 343
  • Screenshot (2).png
    Screenshot (2).png
    698.6 KB · Views: 356
  • Screenshot (3).png
    Screenshot (3).png
    764.2 KB · Views: 332
  • Screenshot (4).png
    Screenshot (4).png
    846.6 KB · Views: 327
  • BTP_210.zip
    3.1 MB · Views: 299
New screens no game change just to show more information. You can just copy and paste or use WinMerge to see what I change.

O waw !
I'm glad enough people show interest and download the MOD... let along they produce code for it !

I like it, super easy to include, will do in 2.11 whenever that is...
Very similarly I thought about including this from platyping (Unique text for Civ in DOM screen - https://forums.civfanatics.com/threads/platys-peculiar-pleasant-posh-python.497337/page-2)...but I just don't have that much interesting stuff to say ?!

That's better. But if I may add a little more to this:
On a general note, am quite happy were things stand as a whole, and initially I though 6 extra Civ to round up to 40 of them sounded quite nice, and would cover all traits combos -I also though 2.10 sounded like enough version to get things right... guess they'll be some more-

But I'll clean that up eventually, separating those 2 would be a natural way to expand :)

Now we only need to rebase it on top of Advanced Civ :crazyeye: (and rework the combat system ofc, but that will come later...)
Started reading the topic on Advanced Civ more,
I'll be honest I think order of priorities was/is
MP Balance / Strategy / Depth > MP capacities > Cleaness / Professional Look / Clarity > Thematic > Solo Gameplay
...but it doesn't mean I'm dismissing it ! Quite the opposite, it's quite interesting !

I did think about starting with the BUG MOD, I didn't, possibly by lack of skills at the beginning (I've improved through time, especially Python) and I believe too late to come back on that.
I see advanced Civ is built on BUG + source of K-MOD
I also Advanced Civ has balanced component etc.

What would you think is the best source to take assets that improve AI gameplay (only) and put them in ?
I'd be okay to do that. I'm presuming it be all SDK and located in the file I less commonly touch like CvCityAI etc. so relatively easy to merge.
Also call me obsessed but I want to keep every fundamental change as an option so that's the way I'd present it




Other

The other major component I wanted to look at is this :
https://forums.civfanatics.com/threads/sdk-modcomp-unit-fuel-mod-includes-global-fuel.269430/
... is there interest ?

I have a clear vision of how to do it but it would be some work...(I would refine the principle)
I haven't so far because finding the right balance for fuel consumption would be difficult, it require tons of playing to get a right balance for all types of map size, game (did you start ancient age or Modern...? Teamer or Solo?). Could be a lot of games where your tank doesn't move ! :O
 
AI gameplay (only)
advciv,
without a doubt.

adv has it, perfected for mp play.

thats a good number,
more civs can make the gameload slower.

platyping
that modder did some wonderful stuff.
i used to use a lot of his work.

thats one of the better mod ideas that was made,
only issue that the ai wouldnt use it right. im against adding only human mods...
also - its a really game changer game mod, need to balance and test for many games as you said, not sure worth the effort these days, since not many play good old civ4.

I'm glad enough people show interest and download the MOD... let along they produce code for it !
keep at it. until there will be a true successor to civ4, if ever, it will take...long.
only downfall of civ4 is the 32bit memory issue.
 
Hello Fanatics !
Big update (2.16) this week so I updated all the topic again (I usually only update the download link)
This is progressing well and seeing more and more plays, last couple of updates were mostly to fix bugs in fact it's all extremely stable now and I don't know of any bugs left:)

Just need to spread the word more now !
 
Hello everyone, new update for this ! 2.18 is around now and we have more and more interest and (multi)players on it ! Great !

For next step I've been asked to make the MOD (much) smaller and also a "simple" MOD rather than a full-fledge game installation.
I'm looking actively at this and will probably make a concurrent "light" and "full" version before eventually switching full to the light/normal MOD version.

I do struggle to do this part though (which I thought would be easy) so anyone with the skills to do that would be welcome to look here... :
https://forums.civfanatics.com/thre...mod-to-subdirectory-one.665034/#post-15969115
https://forums.civfanatics.com/thre...d-full-dump-on-virtual-address-access.665032/


Otherwise please do let your feedback here or elsewhere on this new update :hug:
 
rather than a full-fledge game installation.
i actually think this is a cool feature and unique in the mod scene.
keep at it i think.
splitting mod into other mods will start splitting your attention, making stuff aligned and such, trust me, i know.

keep doing what you are doing.
 
Hello, as some may have seen, I've added version updates etc. we're at 2.21 :)
More people have played this in multiplayer recently with this version so am really glad !

However there is an issue with XML loading, for some people (I confess I've seen it for myself too before),
Which is super easily solved, but still annoying.

Anyone know how to fix "Permanently" ?



To fix around, as I updated in the first post, you have to do this :


Troubleshooting - Make sure of this before your first MP game
Some people are facing an issue with XML file loading, provoking issues when doing their first MP game.
Rest assured it's easily resolved :
Spoiler Change your settings to allow clean XML loading :

This is what doing "Shift" when launching the game does...
But it's much cleaner (and much recommanded) to change these entries in CivilizationIV.ini with "1's" to activate :

; Disable caching of file system (may slow initialization)
DisableFileCaching = 1
; Disable caching of xml and file system (may slow initialization)
DisableCaching = 1


Verify it's worked :
Spoiler Before launching a game verify in Solo mode :

If there is (still) an issue with XML loading, you will see that when you settle a city, your city has "free" electricity.
You will also see that your Civic menu has 'gone crazy' with multiple lines everywhere.
This is a true confirmation you have an issue with XML loading.


 
huh,
i was just thinking about you this morning , wondering if we'll get an update from you :)
funny.

for your xml issue:
you can clean the cache folders:
C:\Users\[YOUR USER]\AppData\Local\My Games\Beyond the Sword\Profiles

i encountered many things, this may help you.
 
Ah thanks ! (for continuous support and your thoughts !)

I note well what you say but not sure it will solve it, weirdly have had report of people installing a fresh install of the game on a new PC and still getting the issue.
We don't know of any way to "force" the value to be 1 at all times do we... ?
Am thinking either of those:
- Force "1" at creation of files (would work since in next version they'll be a dedicated ini file
- C++ doesn't read the value and always assume it's 1 (I'd be super happy to force the "long" load on people
- Change in the .ini the value afterwards.
 
[...] But it's much cleaner (and much recommanded) to change these entries in CivilizationIV.ini with "1's" to activate :
; Disable caching of file system (may slow initialization)
DisableFileCaching = 1
; Disable caching of xml and file system (may slow initialization)
DisableCaching = 1
[...] We don't know of any way to "force" the value to be 1 at all times do we... ? Am thinking either of those:
- Force "1" at creation of files (would work since in next version they'll be a dedicated ini file
- C++ doesn't read the value and always assume it's 1 (I'd be super happy to force the "long" load on people
- Change in the .ini the value afterwards.
This post by @Nightinggale describes how to disable the XML cache through the DLL. As far as I can tell, the XML cache isn't used for (BtS) mods anyway, but, since you deploy your mod standalone, I guess it isn't loaded as a mod. So this might actually solve your problem.

There's still the file cache, which probably deals with the catalog*.dat files in the cache folder. Those files get written even when DisableFileCaching or DisableCaching is set, but perhaps the INI settings prevent the EXE from reading the file cache. I don't see any difference in loading times with and without file caching.

The DLL can change INI settings too (example), but, in the case of the file cache, it seems that the EXE reads the INI file and writes (reads?) the file cache without calling any DLL function in between. INI settings changed by the DLL get saved in the .ini on disk (at least that's what happened in a test I did, iirc), so, if you disable file caching through the DLL, it'll at least be disabled on subsequent starts. (The flipside is that the cache will remain disabled when players load other mods. But, then, the file cache doesn't seem to have any benefit, so players shouldn't mind.) Well, I doubt that the file cache interferes with XML loading anyway.

If you'll distribute an INI file along with the mod, then, sure, you could just disable the caches there. However, making settings like UserProfile, Alias and screen dimensions for the players sounds inconvenient for them. I guess you could copy those settings from the CivilizationIV.ini under My Games, if you have an install script that can locate that file. :undecide:
 
I highly recommend not using the xml cache for any mod meaning disabling it for all mods is a bonus, not an issue.

The xml cache saves the loaded xml files as bytestreams meaning it will not have to load xml and intrepid them. Sounds good on paper, but my guess is that the time saved on the computers we use today is less than a second. The cache is however problematic, both because updated xml files won't apply and because modders will have to maintain the read/write functions in CvInfos.cpp, something which you can't assume will be done. It's a detail, which is so easy to overlook when adding a new tag to an xml file and if overlooked once, the cache won't work as intended.

The cache is used in CvXMLLoadUtilitySet.cpp. Search for gDLL->cacheRead and gDLL->cacheWrite. In theory you can change the code to remove all calls, but it's way easier to mod CvXMLLoadUtility::LoadPlayerOptions and force the config file as you would like it.
PHP:
gDLL->ChangeINIKeyValue("CONFIG", "HidePythonExceptions", "0");
gDLL->ChangeINIKeyValue("CONFIG", "DisableFileCaching", "1");
gDLL->ChangeINIKeyValue("CONFIG", "DisableCaching", "1");
Unrelated but still worth mentioning: I always force python exceptions to be enabled. Not only will it make bug reports more useful, the game engine has a nasty habit of restoring this to the default 1, hence hiding python exceptions for yourself. The main reason I decided for force it to be always on in WTP is because I overlooked a bug because the game had decided to hide exceptions while I remembered having set it to display them.
 
Well I certainly am very very glad I dared ask this one, because the answers have been beyond expected... Thanks a ton !
Those 2 lines I've added extremely easily yesterday and I could also test-proof that it works speedily, much much appreciated :thumbsup:
I did have a look to the XML tag of my civic that provides electricity, and to all new tags in CvInfo in the part of Civics, but I don't see any read/write that is erroneous; strange. There must be a root case though, but I haven't observed a OOS for this part when players rejoin; so I did not think there would be a mistake.

I highly recommend not using the xml cache for any mod meaning disabling it for all mods is a bonus, not an issue.
Sounds good on paper, but my guess is that the time saved on the computers we use today is less than a second.
I'm clearly not the most knowledgeable on the cache but I can only agree and don't see why Firaxis built it like this. Even at the time it must have saved 3 seconds to load max.
 
Last edited:
Talking about performance, and seeing such insightful feedback... :

What do you think would be the performance impact of increase the MAX_CIV_PLAYERS to (my) amount of Civs (so probably 40/41) ?

Technical implementation is easy even though I realize I'll need to look at almost all mapscripts to be able to handle more than 18 starting spots (and I'll probably do a new WorldSize for it, which needs handling in the maps as well; although I'll mainly would do this for this map : https://forums.civfanatics.com/threads/earth-evolution-v4-for-btg-and-historical-versions.669255/)

It will probably be useful for 1% of the games so I don't want to hinder the performances too much by putting this; there is lot lot calls to MAX_CIV_PLAYERS so am worried the additional times in the loop will be noticeable.
Depending on feedback I guess my alternative is to make a separate DLL and put it in a MOD folder of my BTG version (having built it a standalone offers this possibility; but I think it gets messy and confusing to have "sub-MODs")
 
I'm not an expert but I can tell how it is in AND2: We have 2 dll files, a 50 and 100 civs limit.
I have played quite some time with the 100civs dll and turn times were okay (for me at least). I also have to add that even though it was 100civs limit I had more than 30-35 civs alive at any given time.
 
I read you well, and it's valuable feedback but I will rephrase it for a sub-question which is more important to me :

What kind of impact using a DLL which allow say 41 civs will have on games with 6 or 8 Civilizations

 
What kind of impact using a DLL which allow say 41 civs will have on games with 6 or 8 Civilizations
A few years ago, I've tested that (through a single game on AI Auto Play) for 16/18 vs. 48 civs, and found that the higher limit added about 50% to AI turn times: link to post
That seems like a lot in retrospect and may have been specific to my mod, or rather its state at the time. More recently, after a lot of optimizations, the difference is down to 8% with 18 vs. 31 civs (again, tested only through a single sample game). Which would be acceptable to me, but, now that I've been using 18-civ and 48-civ DLLs for years, I don't want to break everyone's savegames. For scenarios, I've changed the WBDesc parser so that e.g. a 48-civ DLL can parse 18-civ scenarios – so long as the scenario has fewer civs than the DLL allows, it's fine.

Perhaps you could do your own test through AI Auto Play (or, if that's unavailable, game.aiplay on the Python console) to get an impression of the performance penalty in your specific case.

On a side note, my intuition is that the memory allocated for arrays of size MAX_PLAYERS and MAX_TEAMS (i.e. cache performance) is a bigger issue than the loops over dead players and teams.
 
Top Bottom