Resource icon

C3X: EXE Mod including Bug Fixes, Stack Bombard, and Much More Release 26

As for the wall built by workers, that depends what you would want it to do. Block movement, I guess? You can already sort of build a wall on the map by building fortresses in a line. They need to be garrisoned to be effective, but that is at least realistic.
Yes, in terms of blocking movement but also in terms of the visual aspect, it should be seen as a continuum wall similar to the Great Wall of China! :)
 
Is there a way to limit a unit's bombardment to sea or land tiles? I'm thinking of coastal artillery that can only target naval units and can't be turned inland, but it seems like this could have other applications as well.

And would there be any way to make it possible to modulate the radius of a nuclear explosion? Maybe using the Bombard Range value or something?
 
Last edited:
Hello!
Observation:
Distribution Hub can be built between cities, without "using" the city tiles, but it must be within the borders of the "Country"! Super!
- (and only with the port built, it is possible to distribute food/shields to cities on another continent!)
1765122525236.png

1765122372674.png
 
Last edited:
Hello!
Observation:
Distribution Hub can be built between cities, without "using" the city tiles, but it must be within the borders of the "Country"! Super!
- (and only with the port built, it is possible to distribute food/shields to cities on another continent!)
Yes, that's all correct and as intended.
 
The main thing is not to abandon this idea with science on the main screen. I think it will be useful to many.
I'll try not to forget about it though there's so much to do. Lua's going to get delayed, again. As an initial experiment, I padded out the "box right color" and "box right alpha" PCX files to match the size of the larger minimap then got the game to load the larger PCXs and modified the size and location of the status area accordingly. Here's what that looks like:
larger_box_right_prototype.PNG

It's a bit unfortunate that the game positions everything a fixed distance from the upper left of the status panel. The next turn button is automatically in the right place but nothing else is. If the other buttons had kept their positions relative to the right edge of the screen, that would be perfect, I'd just leave them there. If the upper buttons were at least centered on the panel, I might have called that good enough. As it is though I'll have to reposition almost everything. There's no free lunch here like there was with the minimap.

Yup I'm running the exe, so LAA should be present... But then again the game must be coded in such way that allows the use of it since signed 4 byte pointers will overflow past the 2GB. That's always a possible issue to keep in mind with LAA - most of the code might not mind but then you run into some obscure game subroutine that actually do mind it and goes bonkers over time.

Anyway unloading the graphics/sounds assets for save game duration would be a brilliant idea. Manual save takes almost no time even in my games, maybe like 2 seconds top, it literally takes way, WAY longer to navigate the menu screen to rename the save file. I do have my system and civ3 on NVMe SSD and run a fairly modern CPU (R5 5600 @ 4.4GHz locked) so I can't speak for those that rock the game on some ancient Core2Quad or Phenom II rigs.

Edit: By the way, should I provide save files with big laggy stacks, and with jumpy list stacks?
So far I haven't seen anything inside the EXE that wouldn't work given larger pointer values, though like you said, there could always be some strange code in an obscure corner. C3X has been setting the LAA bit on install for years now, since version 6, and so far no one's reported any issues, so that's encouraging.

I'm hoping unloading the art assets will work and be easy too. As far as I know, the game lazily loads all the art for units. So when a unit object is created, the game fills in only the path to the unit's INI file, then when it's drawn on the screen, the game reads the INI and creates an animation object for the unit, loads its FLC, WAV, and AMB files, and so on. I'm hoping it will work to detect when a save has failed due to lack of memory then deinitialize all the unit art, attempt the save again, and simply leave the game to reload everything afterward.

I'm not far off a Core 2 Quad myself, I'm running the game on my almost 15 year old i5-2500k overclocked to 4.2 GHz with DDR3-1333 memory. At least it drives me to work on the game's performance. The reason I started working on Trade Net X was that I was playing a game on the Monstrosity map into the industrial era and turn times blew up to around 15 minutes. I thought that was ridiculous, that there was no reason it had to be that slow.

You could go ahead and give me a save with problematic unit stacks if it's not any trouble.

When waking individual units from a group on the right click menu, how does C3X select which unit to wake? Does it simply cyle the units on the tile and then pick the first one to wake?
C3X does not directly decide which unit gets activated. The way it works is that, when the game goes to add a new line for a unit to the menu, C3X intercepts that and checks if that line is for a unit that's a duplicate of another one already listed on the menu. If so, it increments a duplicate counter for that unit's line and doesn't add the new one. After all the units have been added to the menu, it goes back and puts the duplicate counters at the start of each line. So which unit gets activated when you click a line with duplicates is whichever was the first one to be listed because that's the unit that the line is for.

What I could do is, when a new line is found to be a duplicate, change the existing line to point to the new unit that would have been added. That way clicking the line would activate the last instead of the first unit in that group. I doubt that would solve the problem though. It could solve the case where the first time activating a unit from a group of fortified units creates a new line because that's the first one that establishes the line and waking it means the rest can't get grouped with it anymore. I wouldn't solve cases where the units jump around in the list, I don't think, granted I still don't know what causes that.

Given that the slider settings are already displayed on the info-box, would it maybe be possible to recode that part of the display so that when an overspend is imminent, the science-value gets made bold/ underlined/ changes to red/ starts blinking, or similar?
I totally forgot the game shows the slider settings there. That's a good idea to indicate surplus science spending by modifying that. However it would be tricky to change the font just for one character. I expect the game assembles a string like "Babylon - Republic (5.4.1)" in my picture above then draws it centered with some font set. Choosing a different font would require another call to the text drawing method and that would mess up the centering. It would be much easier to insert some additional text but that wouldn't stand out as well.

Another feature that I would suggest for Flintlock to add is some other way to see which cities will be disordering than just the popup window he added. ... Another problem I've been noticing in my games is the trade advisor resource list gets flooded with copies and its basically unusable apart from telling you what civs can trade you something.
You mean like an icon on the map to show which cities are unhappy? Easiest thing would probably be to activate the fires and smoke graphics for cities that are unhappy and not yet in disorder. It would also be easy to add another icon like for barracks, harbor, or airports. Another thing I could so is modify the domestic advisor's Happy.Content column to show Happy - Unhappy instead. That way you could sort by that column to bring all the net unhappy cities to the top. I wonder why it doesn't work that way already, what's the use of Happy.Content? Problem there is I don't know much about the advisor screens so they may not be easy to modify. That's the problem with modifying the trade advisor too.

Has anyone experienced regular game crashing (freezing without an error message) in the newest version of c3x (R26_Preview_2) late in games, after editing the default C3X config file?
Could you post a save for me to replicate the freeze? That's the easiest way to narrow down these kinds of bugs. You're right that it wouldn't be a syntax error in the config. Those would appear when the game is loaded.

- with wild animals, before the appearance of the Barbarian tribes, which will attack, in a certain area, the people and the villages? E.g. Smilodon, Cave Bear etc.?
- "Migration" of animals such as Big Game, Deer, Caribou, etc. which will bring only a temporary bonus to the city and on condition that they have a tile (or more) as pasture - meaning uncultivated and without buildings on them?
That's possible. Scattering wild animal barbarians around the map is something that will be easy using Lua, if I ever get around to that. The second thing sounds like a random event, again something I hope to make possible using Lua.

Is there a way to limit a unit's bombardment to sea or land tiles? I'm thinking of coastal artillery that can only target naval units and can't be turned inland, but it seems like this could have other applications as well.
And would there be any way to make it possible to modulate the radius of a nuclear explosion? Maybe using the Bombard Range value or something?
There is no way right now to limit bombardment like that though it's been requested before so I'll mentally bump it up a bit in priority. Modifying damage from nuclear explosions isn't easy since it's hardcoded. I could replace the upper limit on how many tiles it loops around applying damage to so it extends to second, third, etc. rings. Though it would be the same amount of damage to all tiles, not fall off further from the center of the blast like would make more sense. Making the radius depend on the nuke unit's bombardment range would be possible but more work as, again, it's hardcoded.
 
Could you post a save for me to replicate the freeze? That's the easiest way to narrow down these kinds of bugs. You're right that it wouldn't be a syntax error in the config. Those would appear when the game is loaded.

Thanks for looking into this Flintlock !
@Flintlock
I finally figured it out actually, it was a unit name with Parenthesis (). I'm not sure if this caused civ 3 in general to crash or caused an issue with C3x, but when I updated the unit name to have asterisks * instead in the editor and C3X config file, the crashes stopped!

I was afraid that .biq file wouldn't work for you if I posted, since it's on an in-progess version of ToC that requires a full install, but will let you know if this happens again! For now we're good! Thanks again!
 
The first is a system that sets unit production limits based on the amount of strategic resources a player controls. For example, each source of a strategic resource could allow the player to produce up to ten units that require that resource (with the exact number being adjustable). If a player has one source of Rubber, they could produce a total of ten Rubber-dependent units—such as four Infantry and six Tanks—and additional Rubber sources would increase the cap proportionally.
Transferring the barracks full heal effect to another building ought to be easy. Someone actually started working on unit limits based on resource count a few weeks ago and opened a PR for it on my GitHub here: https://github.com/maxpetul/C3X/pull/14. He seems to have run into an issue that the resource counts the game tracks per player are off by one except when a player has only one copy of a resource. Not sure what's going on there. I can think of two other issues this rule would have, first that resource trade between players isn't designed to trade multiple copies (mentioned by robotlincoln), and second that the game doesn't track resource counts for cities off the capital's trade network so the resource limits couldn't work properly for those.
This will not be exactly the same, but it will be similar. One of my older suggestions was a way to limit how many cities a single source of strategic resource can support at the same time. It would require some simple restriction so that a single resource of oil couldn't easily support hundreds of cities at once. So, for example, if something requiring oil was being built in 5 cities at the same time, then in the sixth city (and in all the rest), nothing requiring oil could be built. If a player had 2/3/4 oil resources, there could be 10/15/20 such cities. Of course, this applies to global resources; locally produced oil would not be included in this calculation, and such a city could, for example, be the sixth city building something that requires oil with only one global oil resource in the entire empire.

A side effect of such a change would be that it would make more sense to gain access to more than one source of a given strategic resource, and it would also make sense to adjust trade between civilizations so that more than 1 oil could be traded between civilizations, if, for example, one civilization had 5 oil and 20 cities and the other civilization had only 1 oil and 40 cities.

Well, I did get the city limit taken care of by the end of the summer, so you can't say I've never kept to my schedule. But Lua's going to be in R27 some time next year. R26 is going to be about the districts with a few other small things thrown in too.
I am definitely not trying to say that you are deliberately trying to not stick to your schedule. :bowdown: I really just want to have an overview of what your priorities are and what you think you will achieve in what time frame. I myself am certainly partly to blame for the delays due to my complicated questions, which you are trying to answer honestly. Just to remind you:
- A huge list of new unit abilities;
- The ability of ships to sail on tiles shared by rivers;
- A new diplomatic status between nations (ceasefire);
- The problem with a fixed number of people born content in cities;
- A trick allowing you to have multiple screens for a single technological era;
- Having a choice when there are multiple upgrade options in the upgrade chain;
- Both options for hurrying production available at once for specific government types;
- New restrictions or capabilities for different government types (less control because the senate will prohibit you from declaring war, more control because happy people express the ruler's popularity);
- Revolts in parts of the empire with high corruption/low popularity of the ruler/large numbers of citizens of other nationalities (example of an event with the emergence of a new nation during the game);
- Adjustments to the amount of food needed for city growth, food purchasing, food corruption;
- The development of the economic complexity of the game through various interest rates and loans;
- Ways to decipher AI behavior in order to improve its strategies and decision-making (Stupid AI behavior is absolutely irritating to me).

Maybe it's just a feeling, but I think Lua could solve most of it, but there are also quite a few things that are very complex issues with no simple solutions and probably a lot of work that may not be worth it.
 
I'm not far off a Core 2 Quad myself, I'm running the game on my almost 15 year old i5-2500k overclocked to 4.2 GHz with DDR3-1333 memory. At least it drives me to work on the game's performance. The reason I started working on Trade Net X was that I was playing a game on the Monstrosity map into the industrial era and turn times blew up to around 15 minutes. I thought that was ridiculous, that there was no reason it had to be that slow.
2500K despite its age is actually quite capable system for tasks that don't require more than 4 cores, C2Q and PII systems are almost 2 times slower than that. Single thread performance didn't go up that much since then outside of AVX heavy loads so in case of civ3 you wouldn't gain much until you jump to something ridiculous like 14900K that boosts single core to 6GHz, or 7800X3D/9800X3D (big "maybe", since the big cache on it is of "victim" type).
You could always clock up your good old sandy bridge 2500K to 4.8~5.2GHz depending on how lucky you are with the chips silicon quality, for that little last bit extra of performance. That line of CPUs was legendary for hitting such clocks on almost every single chip within reasonable core voltage. :thumbsup:
I've ran quite similar system myself until november last year - 3570K 4.6GHz with 4x4GB DDR3 1866MHz, sudden demise of either mobo, CPU, or both, forced me into an upgrade sooner than expected. Before that I've owned first gen i7 Xeon 2.533->4GHz and C2Q6600 2.4->3.2GHz - the last one I've used until like 2018 and it was really painful perf-wise.
If you live in Europe I could send you the remnants of my old system (dead cpu/mobo + working RAM and CPU tower style cooler with 2 120mm fans) but resurrecting it is pointless, since second hand market charges here so much for used mobos/CPUs even this old that it makes way more sense to just buy a generation or two old brand new parts, where you end up paying the same/less and receive way more performance + actual warranty on them.

You could go ahead and give me a save with problematic unit stacks if it's not any trouble.
I will look later this week through saves and sort 1-2 good examples of both issues. If they turn out too large for file attachment then it might take longer - if I upload it elsewhere and post a link, the forum mod needs to manually approve the post before it appears.
 
Hope this isn't derailing the thread, but for those who really enjoy playing on massive maps with massive numbers of cities, can you explain how it changes the game dynamics in ways you prefer? I usually play on a Large map with around 24 civs, and that feels like about the right size to me--it has a reasonable number of core river valleys where big rival civs can emerge, some areas of the map that stay less populated and advanced and can be colonized later on, etc. Even Huge maps sprawl in a way that makes it hard for me to enjoy playing the game to the end. Is it just that more is better? Or if you really bump up the scale does the game feel meaningfully different?
 
@robotlincoln Custom maps and modded games. Monstrosity map alone has enough spots for 2000 cities - 32 players with 512 city limit results in really tiny and lackluster AI empires.
Heres how much empty space remains with 512 limit (boosted to 560~ with old pre-C3X city limit patch) on that map
Civ3Conquests_251209_191007.png
 
@robotlincoln Custom maps and modded games. Monstrosity map alone has enough spots for 2000 cities - 32 players with 512 city limit results in really tiny and lackluster AI empires.
Heres how much empty space remains with 512 limit (boosted to 560~ with old pre-C3X city limit patch) on that map
View attachment 750001
Making really big custom maps make sense to me for geographical accuracy, and to make sure that your opponents are able to grow enough to be hard to beat, but does it make sense for there to be a huge AI empire in the Yukon, like you have on that map? It seems like having a map of that size filled with cities means that there would be huge empires with big industrial cores all over the globe, and that would feel off in terms of gameplay experience to me.
 
@robotlincoln That's why it's a modded game. :)
Tech speed is so slow that 230 turns in I'm still in middle ages, while AIs due to early city limit cap, are stuck in ancient ages.
In my game AIs don't get really penalized for bankruptcy so they keep amassing huge armies for huge clashes. I control right now about 200 cities, of which 170 are developed, have 2850 total units... and even tiny nations like the Ottomans with measly 20 (!) mostly size 6 towns have "about the same military size" on diplomacy screen. ☠️

I'm enjoying large war campaigns, I've deployed 1500 units to Carthage and had to fight through 2500+ defenders, it took me a few days IRL just from the army landing turn to complete destruction of the AI civ, and immediately I must deal with counterattack coming from the Zulu in the south which have probably 4000 or more units, since both civs declared war on me ages before we could even land each other.
I wonder how that game would go through if I started it now when 2048 cities is a possibility, it would be probably an apocalyptic total war with me being constantly attacked without any time to amass forces. And that's the modded civ3 experience I'm actually looking for.
 
I finally figured it out actually, it was a unit name with Parenthesis (). I'm not sure if this caused civ 3 in general to crash or caused an issue with C3x, but when I updated the unit name to have asterisks * instead in the editor and C3X config file, the crashes stopped!
What config setting was that in? I want to try to replicate it quickly because parenthesis in a unit name really shouldn't crash the game even if it's easy to work around.

This will not be exactly the same, but it will be similar. One of my older suggestions was a way to limit how many cities a single source of strategic resource can support at the same time.
Limiting city production by the number of resources available should be simple enough, but once you do that it's only natural to have buildings that generate resources deduct their inputs from the available resource count, and that's more difficult. For one thing, it raises the problem of what to do when there's a resource shortage, how to determine which cities get access to the scarce resources. Also, like you mentioned, the game's diplomacy is not designed for multiple copies of resources.

I really just want to have an overview of what your priorities are and what you think you will achieve in what time frame. I myself am certainly partly to blame for the delays due to my complicated questions, which you are trying to answer honestly. Just to remind you:
...
Maybe it's just a feeling, but I think Lua could solve most of it, but there are also quite a few things that are very complex issues with no simple solutions and probably a lot of work that may not be worth it.
I don't have anything like a road plan for C3X. The next big thing is Lua and I don't know how long that will take. My plan is to build out Lua scripting a bit at a time with an eye toward making possible the things that people have requested. For example, I decided to start by adding a call into Lua to determine whether a given tile is a valid city location. That's a relatively simple thing but would let us easily disallow city locations based on arbitrary rules. Some don't like how the C3X minimum city separation measures distances between cities, and such a Lua script could help there. First, I was going to add the ability to loop over tiles in Lua scripts, then ran into the problem that tiles in Civ 3 don't know their own coordinates, and then got distracted with other things. Again I don't know when Lua will be "done" if it ever will be. Many of the things you've suggested I would consider post-Lua things. Lua should make the game overall much more malleable.

2500K despite its age is actually quite capable system for tasks that don't require more than 4 cores, C2Q and PII systems are almost 2 times slower than that. Single thread performance didn't go up that much since then outside of AVX heavy loads so in case of civ3 you wouldn't gain much until you jump to something ridiculous like 14900K that boosts single core to 6GHz, or 7800X3D/9800X3D (big "maybe", since the big cache on it is of "victim" type).
That's true, I don't feel I need to upgrade. The 2500k gets the job done most of the time. A few years ago I researched how much single thread performance had improved since Sandy Bridge, ignoring wider SIMD units, and as far as I could tell modern chips were 2 to 3 times faster than a 2500k depending on the application. Single thread perf only improves 10% or so each generation but it adds up over time. Haswell started that trend and I remember that well because that was when I lost interest in following every new CPU release, back then at the start of the stagnation caused by Bulldozer flopping.

I'm curious what difference X3D makes for Civ 3. I expect it would help a lot simply because the game does not make efficient use of the CPU cache, so having more cache should compensate for having to run to RAM all the time. The game is written in typical OOP style for its era so all object properties are piled together into large objects that are scattered in memory. Looping over, for example, all units of a player or all tiles in an area, cannot be done efficiently. There's also needless pointer chasing. Each tile object is allocated individually and its pointer stored in an array of pointers. The function that looks up a tile pointer given its index is one of the most expensive functions in the program, as measuring by Intel VTune, even though all it does is check bounds then return map->tiles[index]. Granted it's called everywhere and in absolute terms it costs only ~5% CPU time, but still, I'd guess it spends almost all of its time taking cache misses on that pointless middleman array. Tile objects are only 220 bytes so allocating them all in one chunk would occupy 14.4 MB maximum, no problem. This is something I want to address in C3X at some point.

You could always clock up your good old sandy bridge 2500K to 4.8~5.2GHz depending on how lucky you are with the chips silicon quality, for that little last bit extra of performance.
I've ran quite similar system myself until november last year - 3570K 4.6GHz with 4x4GB DDR3 1866MHz, sudden demise of either mobo, CPU, or both, forced me into an upgrade sooner than expected. Before that I've owned first gen i7 Xeon 2.533->4GHz and C2Q6600 2.4->3.2GHz - the last one I've used until like 2018 and it was really painful perf-wise.
If you live in Europe I could send you the remnants of my old system (dead cpu/mobo + working RAM and CPU tower style cooler with 2 120mm fans) but resurrecting it is pointless, since second hand market charges here so much for used mobos/CPUs even this old that it makes way more sense to just buy a generation or two old brand new parts, where you end up paying the same/less and receive way more performance + actual warranty on them.
I'm hesitant to push the overclock since all I have is a basic air cooler attached. Before the 2500k, I had a Core 2 Quad as well. I forget the model number but it ran a little under 3.0 GHz. I remember upgrading to Sandy Bridge felt like night & day in Civ 4 with its terribly laggy interface written in Python. I appreciate the offer for that old system, but I live in the US. The second hand market is not great here either. A few years ago, I considered upgrading my chip to an Ivy Bridge i7 since my motherboard could support it, but after checking prices on Ebay decided it just wasn't worth it.
 
FWIIW:
Just wanted to mention an observation I had testing an AI vs AI game. The AI does not understand that bombarding a unit that has 1 HP is a waste. It will keep bombing, even though it has targets in range with more than 1 HP. This is starting to make me reconsider using the fix for bombardment. The saving grace is in my own games the AI will not be at war with each other that much.

In addition it will send out 1 or 2 bombardment units into a field that has many units at play that are enemies. Pretty much a suicide run and a gift of that bombardment unit to one of the civs.
 
What config setting was that in? I want to try to replicate it quickly because parenthesis in a unit name really shouldn't crash the game even if it's easy to work around.
It was here, this crashed the game (from my test plays), random crash anywhere around 300-600 turns into the game (not right away).
I created the unit in Quintillis' editor with the same name as well.

Getting rid of Parenthesis (replacing with Asterisks *) fixed my issue. It might not be a C3X issue, maybe it's putting Parenthesis in a Unit name in the Editor that was causing the issue? not sure.

1765344209739.png
 
Last edited:
I'm curious what difference X3D makes for Civ 3. I expect it would help a lot simply because the game does not make efficient use of the CPU cache, so having more cache should compensate for having to run to RAM all the time.
Anything that loops through same data set, will be accelerated greatly, BUT if the code touches the data only once, it wont, because the additional X3D cache isn't a fully fledged associative cache, instead it's a much simpler to implement victim cache - the CPU cannot preload new data into it, it only can dump the data it already used previously to it. Obviously it simplifies design of cache memory controller greatly but at the expense of the cache being rather a specialized thing. Even AMD engineers originally didn't intend it for gaming, it was developed for the datacenter EPYC line of CPUs, but by pure chance they found out that 3D games benefited from it and "lobbied" internally to make a gaming line variant with it.

Yet another question is whenever a single core in a single threaded process could even properly utilize the full size of regular L3 cache, your 2500K has 6MB of it, while my current R5600 a whole 32MB, but it is actually described as 4x1.5MB/6x5.33MB etc. of shared L3 cache - it could very well turn out that a single core doesn't have what it takes to be able to write past the barrier of it's own L3s block size, only read/copy from the entire L3 size if the other cores wrote to their own blocks of it. At least as of it is right now, I don't feel any advantage of that quite large total L3 size of my CPU while playing civ3 - turns just take as long as they did on my previous 3570K...
...Which was EXACTLY the 2500K core but downshrinked to new smaller 22nm silicon node. Intels old "tick tock" strategy.

Technically speaking the memory on both systems has almost the same effective latency - my old rig had 1866MHz DDR3... but it ran with CL (Clock Latency, how many cycles of that RAM speed pass before the RAM can be accessed) of 10, while my current one has 3200MHz DDR4 but at CL of 16 - that makes my current memory only about 8% faster in how long it takes to access/write/read an address in memory. Newer DDR5 doesn't make any progress in that matter either - most common high end performance kits have same ratio of clockspeeds to clock latency, ie 6400MHz with CL32.
You get to see benefits of higher memory clockspeeds in database applications or compression/decompression tools where you can schedule a large continuous write or read operation for several GBs at once, but in games that use memory at random and chaotically only the total effective latency matters - hence you can see in game tests the crazy clocked DDR5s at like 8000MHz but with awful latency of CL56 get absolutely demolished even by cheap 4400MHz CL22 kits, that hold that golden MHz:CL ratio.

Single thread perf only improves 10% or so each generation but it adds up over time.
Oh it was way worse than that, from 2500K to 9900K you had 0%~2% IPC (instructions per clock) improvement per generation for non-AVX workloads. Only the 10th generation saw finally a decent uplift, 11th none, 12th again an upfilt.
Yeah AMD Faildozer era was terrible, I seriously thought AMD was cooked and will go bankrupt at that time (their shares did even fall below 1 USD a pop), they were really lucky with their next CEO choice, Lisa Su really pulled a miracle there using her IBM contacts to secure enough funding for new architecture + being knowledged enough to seek out and contract really old talent that made AMDs past best sellers but haven't worked at the company since 2004 like Jim Keller (that dude alone costs millions to hire nowadays). Apparently Ryzen was their last shot - if the architecture failed, they didn't have enough funds to keep going.
I'm hesitant to push the overclock since all I have is a basic air cooler attached.
Shame that international shipping is so expensive, I have there on that old dead rig a no longer needed prolimatech megahalems tower cooler, with two fans attached. You can look up pics of that thing - with it you'd have both good temps even at 5GHz while being dead silent at idle/still relatively silent at full load.
You could get yourself something like thermalright phantom spirit 120/120SE - that thing is like 40$~ on amazon, cools down monstrosities like 14900K and is STILL compatible with old LGA115x platforms. You'd get peace and quiet plus low temps. :lol: I have one on my current rig.
 
Last edited:
Even though I’ve been playing Civilization III for the past 15 years, using C3X has made the game more enjoyable than ever. So I wanted to write down a few additional ideas I’ve been thinking about. I don’t expect all of these to be implemented; I just believe they might be useful as references or inspiration when new features are added in the future.


---

1. Redesigning the Road/Railroad System

As the game progresses into the later eras, the entire map becomes covered with roads and railroads, which removes any strategic meaning from them.
In the early game, choosing pathways still matters, but in the mid-to-late game, chokepoints disappear and troop movement becomes trivial.
So I think the road/rail system needs a fundamental redesign.

1-1. Introducing Road Maintenance Cost

If administrative or maintenance costs increase in proportion to total road length, it would naturally prevent excessive road spamming.

1-2. AI Road-Building Strategy

AI could use a dedicated algorithm that connects only key points—cities, resources, forts, colonies—rather than paving the entire map.



---

2. City Status and Defense Bonuses

Cities suffering from starvation should not receive any defense bonuses
(similar to how resistance removes defensive bonuses).

When a city is captured, “refugees” should be generated: population decreases in the captured city and the lost population relocates to nearby friendly cities.


---

3. Technology Trade Conditions

Just as Printing Press enables communication trade and Navigation enables map trading,
certain techs (chosen by the user/modder) should be required before tech trading becomes available.


---

4. Golden Age Improvements

Golden Ages should have both duration and number of occurrences adjustable.


---

5. Expanded Combat Bonuses

minus defensive bonus available. ex) marsh
Attack bonuses when attacking downhill from a hill.
Terrain-based bonuses for artillery bombardment.


---

6. Proposed Supply System

A unit’s combat strength decreases based on the total movement cost required to reach the nearest friendly city (town/city/metro selectable).

Example:
3 road tiles (cost 1) + 1 mountain tile (cost 3) → total 4 → combat strength reduced by 40%.

6-1. Required Rule for Supply System: Temporary Culture Zones on Occupied Tiles
(But i think this is too difficult to make it work, so maybe it'll be fine to ignore this)

When a unit pushes deep into enemy territory and occupies a tile,
that tile should temporarily become part of the player’s culture zone.

It remains so until the enemy steps on it again, and reverts after peace is signed.
Without this, the supply penalties would make offensive operations overwhelmingly difficult.

6-2. Supply Line Mechanics

A unit should suffer a severe combat penalty if its supply line to friendly territory is cut.
If the tile path connecting the unit to the nearest friendly city or cultural border is blocked by enemy units or enemy culture, the unit becomes "out of supply" and its combat strength drops sharply.

With this system, encirclement and annihilation tactics could naturally emerge:
if a unit or an entire army is surrounded and its supply line is completely severed, it would become drastically weaker and easier to destroy.

However, creating an AI strategy capable of maintaining and protecting its supply lines may be extremely difficult.
This is the main challenge with implementing a full supply-line system.

Currently, Civ3 allows marching straight to the capital without any supply concerns; this could be improved.


---

7. Improved Interaction Between Unit Classes

7-1. Cavalry Bonus

Cavalry should receive an attack bonus when striking non-fortified enemy units on flat terrain.

7-2. Defensive Units Lose Fortify After Combat

Defensive units should lose their fortified status after they engage in combat.
This would allow infantry to initiate combat and cavalry to break the weakened line afterward.
Cheap units like Warriors could be used to break enemy fortification before cavalry charges.


---

8. Differentiation Between Archers and Artillery

Giving Archers direct bombard would overlap too much with artillery.
Instead, artillery bombardment could remove enemy fortification, giving Archers more unique synergy.


---

9. Production System Improvements

Currently, when switching production, shields are transferred directly to the new item.
A more natural system—similar to Civ6—would store shields within each individual project.

A paused project keeps its accumulated shields; switching to another project starts from zero.
Returning to the original project resumes it from the stored shield value.

Applying this system to tech research would also fix the issue where misclicking a tech forces you to restart from the beginning.


---

10. Bombardment Line-of-Sight Rule

Bombardment should have no effect—or drastically reduced accuracy—when the target tile is not visible.
Otherwise, there is no reason to secure air superiority or high-ground vision, which historically mattered greatly.

11. Ethnic problems can also create unhappiness.
If a city has multiple cultural or ethnic groups, this can lead to unhappy citizens.
And if a city is ruled by another civilization—usually due to conquest—unhappiness can arise from the citizens’ desire for independence.
 
Last edited:
@robotlincoln That's why it's a modded game. :)
Tech speed is so slow that 230 turns in I'm still in middle ages, while AIs due to early city limit cap, are stuck in ancient ages.
In my game AIs don't get really penalized for bankruptcy so they keep amassing huge armies for huge clashes. I control right now about 200 cities, of which 170 are developed, have 2850 total units... and even tiny nations like the Ottomans with measly 20 (!) mostly size 6 towns have "about the same military size" on diplomacy screen. ☠️

I'm enjoying large war campaigns, I've deployed 1500 units to Carthage and had to fight through 2500+ defenders, it took me a few days IRL just from the army landing turn to complete destruction of the AI civ, and immediately I must deal with counterattack coming from the Zulu in the south which have probably 4000 or more units, since both civs declared war on me ages before we could even land each other.
I wonder how that game would go through if I started it now when 2048 cities is a possibility, it would be probably an apocalyptic total war with me being constantly attacked without any time to amass forces. And that's the modded civ3 experience I'm actually looking for.
That makes sense to me, but doesn't having armies in the thousands just make things take longer to resolve, and decrease the role of chance in the outcome? Wouldn't a war with dozens or hundreds of units have roughly the same dynamics as one with thousands, with a slight increase in randomness as you scale down? Or is there just something about scaling up that makes the experience feel more epic?
 
Back
Top Bottom