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:
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.