Why wasn't production overflow implemented?

krille

CivDOS Fanatic
Joined
Sep 5, 2005
Messages
337
Any ideas why Sid Meier didn't implement production overflow? Was this an intended design decision? Somehow it feels like it considering how it took until Civ4 that this was changed.

Example: Say a city has a Barracks at 38/40 shields and the city's production is 6, the next turn you currently end up with a Barracks and 0 shield in the next turn (any overflow is discarded). With proper overflow handling, you should've ended up with a Barracks and 4 shields towards your next build (or possibly 4 coins).

Sadly, the current implementation forces the player to wade through a lot of annoying extra micromanagement (switching between mined hills, ocean squares, etc to "time" builds exactly). This is not a big problem if you only have four cities to look after. But at 40 cities it's near impossible. (In my opinion it gets ruddy annoying beyond four cities and I stop doing it completely past eight cities or so.) I'm sure Whelkman would agree (I can imagine how 127 cities must be like).

I think this is the most annoying thing about Civ1 and something should definitely be done about it.

[Wishful thinking]Couldn't Sid release the source code or do a patch or something so we could have this 'fixed'? :)[/Wishful thinking]
 
I agree, in bad english.

I have the problem not with buildings. "Loosing" 5 to 10 shields when building barracks or a grannary is sad but you can manage. But when a large zulu-force has your capital under siege, even 2 or 3 shields lost while building reinforcements might cost you your largest city.

I somehow understand that the shields aren't just "transfered" to the next item to build. But they could be added as additional money. Which reminds me of the worst thing I know about the game, Why can't you "build" money. All of my "just for fun" games ebnd up with citys, building tons of caravans...
 
You can use the "F1" key to see the first 20 cities at a glance. This lets you see which cities are getting close to a finish.
If you get beyond 20 cities, you are probably doing well enough that you no longer sweat every shield.

I'm guessing that Sid could have easily fixed the problem but chose not to.
If you use diplomats to look in on your neighbors, you will see that they DO get to keep their leftover shields. They probably keep leftover light bulbs also. Yet another cheat that the AIs enjoy.
 
If you use diplomats to look in on your neighbors, you will see that they DO get to keep their leftover shields. They probably keep leftover light bulbs also. Yet another cheat that the AIs enjoy.

How interesting. Makes sense because the AI would be a lot easier to code if you didn't have to worry about wasting shields. Perhaps someday I'll put this AI cheat into my Palm game too...
 
I think on autobuild the shields carry over don't they?

Not that I've noticed this on the PC version, but when I used to play on the Amiga, if production was high enough, I would get two units in a single turn. Maybe that was just a bug though.
 
Almost makes me want to get an Amiga.

On version 4 on the PC, you get no carryover even on auto build. Sorry.
 
Sadly, the current implementation forces the player to wade through a lot of annoying extra micromanagement (switching between mined hills, ocean squares, etc to "time" builds exactly). (...) I think this is the most annoying thing about Civ1 and something should definitely be done about it.

You don't have to be so perfectionist. You can still win the game and build a large and powerful civilization even without spending too much time in micromanagemente activity. I'm a kind of a perfectionist, myself. I spend a lot of time in micromanagement activity, specially in the early part of the game when it makes more difference. But I only do it because I like it.

This aspect of the game isn't annoying for me at all. On the contrary, I love to find out how many decisions can be taken in a single turn. I enjoy other similar things like the eventual loss of lightbulbs when your civilization completes a science discovery or the fact that no lightbulbs are stored when a city completes the production of a unit or building.

All these things add more complexity to the game, making it more and more interesting after time goes by. It's hard to get tired of a game when you keep discovering new features and new ways of improving your way of playing.

Personally, to minimize the production loss, in the last few turns before completion, I usually buy the unit or production currently being produced. As soon as I have enough money, I buy things. Of course I keep getting the funny message from Domestic Advisor that goes something like: «Warning: funds are running low. Perhaps we should raise our tax rate or hire some tax collectors.»
 
If you use diplomats to look in on your neighbors, you will see that they DO get to keep their leftover shields. They probably keep leftover light bulbs also. Yet another cheat that the AIs enjoy.

Are you sure about this? I think that I never read anything about this difference between civilizations controlled by human players and civilizations controlled by the computer. And I've seen a few lists about this subject.

My experience can't help because I rarely "waste" my diplomats on espionage missions.
 
Hmm... Anyone know a good debug tool to debug MS-DOS executables in Windows XP? I'm currently using DosBox to play Civ1 (NTVDM crashes my system when Civ forces fullscreen causing a total system freeze, trying to reset the graphics adapter does nothing) and while it's perfect for finding memory addresses, it sort of renders debugging (such as using OllyDbg) useless (I don't want to debug DosBox after all). Maybe there's a good disassembler out there or something? I'm blatantly ignorant when it comes to assembler (I've only been doing high-level coding, really).

Osvaldo Manso > The game is too easy. It's got nothing to do with that, I just hate knowing that I could've spent those citizens working more useful tiles (such as a fish instead of a plains). There's absolutely no reason for the game to "work" (I'd call it misbehave) like this.

As for "wasting" Diplomats, reload is your friend. :) (If you know a bit about memory editing, you can just create any needed Diplomats - or other units - on the fly, I do this when investigating into the game rules/mechanics to save time).
 
...you can just create any needed Diplomats - or other units - on the fly, I do this when investigating into the game rules/mechanics to save time).

So you can reach into a running CIV.EXE locate an entry into your countries Unit table and edit in a complete unit descriptor.

Very impressive
 
You don't have to be so perfectionist. You can still win the game and build a large and powerful civilization even without spending too much time in micromanagemente activity. I'm a kind of a perfectionist, myself. I spend a lot of time in micromanagement activity, specially in the early part of the game when it makes more difference. But I only do it because I like it.

This aspect of the game isn't annoying for me at all. On the contrary, I love to find out how many decisions can be taken in a single turn. I enjoy other similar things like the eventual loss of lightbulbs when your civilization completes a science discovery or the fact that no lightbulbs are stored when a city completes the production of a unit or building.

All these things add more complexity to the game, making it more and more interesting after time goes by. It's hard to get tired of a game when you keep discovering new features and new ways of improving your way of playing.

Personally, to minimize the production loss, in the last few turns before completion, I usually buy the unit or production currently being produced. As soon as I have enough money, I buy things. Of course I keep getting the funny message from Domestic Advisor that goes something like: «Warning: funds are running low. Perhaps we should raise our tax rate or hire some tax collectors.»

Agreed. Plus, I actually LIKE micromanaging at times. Especially at the very start, when I'll switch my workers from shields to trade (or just more food, if there are no rivers/seas near my first city) just as my first militia, settlers, etc. are about to be built. Even with the first three or four cities, this kind of micromanagement can not only make a difference (an extra three or four arrows here and there can speed up research in these ancient times), but also keeps me "in touch" with my infant cities...gets me to know them better, and to love the li'l cuties.

Although certainly if I have a 30-something-city civilization (which can happen!), it's can be easy to overlook this stuff and to let shields go to waste. As Valen said, at this point you won't really be losing out too much -- it's not a make-or-break kind of situation -- and again, you can always press F1 to see what cities are about to complete production, and switch workers to trade or food squares, or make them into 1-turn scientists or something.
 
So you can reach into a running CIV.EXE locate an entry into your countries Unit table and edit in a complete unit descriptor.

Very impressive
Not sure if that was sarcasm (you can't tell over the net unless you use emoticons!), but yeah you can. It's actually very easy (in my opinion). I'm putting in effort into finding out as much as possible about the CIV.EXE data structures and I'm making an EXCEL spreadsheet with my findings (lots of offsets and documentation on the data structures). I can upload a copy if you want. edit: It's nowhere near complete, just a few fragments at this point. And inconclusive.

You can do lots of things, like change the terrain, terrain improvements, edit city instances (this includes "creating" new cities), edit unit instances (including "creating" new ones, it's actually just more of making sure they're not dead), etc, etc.

My intention is to make a trainer to aid the player during run-time. (It will contain features such as "Remove all Pollution", "Disable Move and GoTo Animations", "Teleport Caravans", etc. Essentially all the stuff I need myself.)

So, ehm, don't steal my idea. :lol:
 
Are you sure about this? I think that I never read anything about this difference between civilizations controlled by human players and civilizations controlled by the computer. And I've seen a few lists about this subject.

My experience can't help because I rarely "waste" my diplomats on espionage missions.


Yes, they do 'cheat' in this way.

Actually, it doesn't matter what the AI player is building, the shields simply stack up as if it was a shield 'granary'. Thus the AI can churn out a military unit in the midst of building a cathedral without losing any of the shields already invested in it, and then go right back to cathedral construction the next turn, minus shields spent on the military unit. If you play with SHIFT-56 cheat you can watch it all happening much more easily than with diplomats.
 
I suspect most of us don't have shift-56 available.
I must chime in with Krille on this one. Keep a diplomat parked outside and reload on every turn. You can even use screen capture (in DosBox) to keep a running history.

I concur with simonnomis. The AIs are very free with the way they use their shields.
 
krille, I basically handle it as Valen suggests: I'll scope the city view for the first batch of cities and eventually let off as the net benefit of micromanaging food and production decreases as the game wears on. After a while, the only question becomes "Can city X produce a Caravan in 2 turns or 3?" which is what happens the bulk of the turns.

As for why they did it this way: truncation was dominant in 8 and 16 bit programming due to its space saving advantages and slightly faster computation. While saving a byte here and there seemed a little silly even in 1991 since on can readily assume a Civ machine held at least 1 MB RAM (with most of the DOS 640K available), especially with the EGA requirement, you were still dealing with programmers who most likely cut their teeth on the Z80, 6502, and the like, and didn't see the need to drop their "efficient" habits.

Gowron's formulas prove this mindset with their frequent use of signed 16 bit variables, even though many of the game's variables can easily exceed 32767. I think we determined that I was overflowing my approval rating by a factor of 8 or 9!
 
Followup:

As for why the CPU gets to keep its leftover shields, either, as Valen says, disadvantaging the player was intentional, or a separate coder programmed the CPU routines, which would explain the radical discrepancies between the player and CPU rules.

And, as for open sourcing, be careful for what you ask for. 16 bit DOS code is notoriously horrendous. We've gotten so used to flat memory that segmentation might make our heads explode. I don't think anyone ever ended up doing anything with Wolfenstein 3D's source; they pretty much decided it wasn't worth the effort of deciphering it.
 
Hmm... Anyone know a good debug tool to debug MS-DOS executables in Windows XP? I'm currently using DosBox to play Civ1 (NTVDM crashes my system when Civ forces fullscreen causing a total system freeze, trying to reset the graphics adapter does nothing) and while it's perfect for finding memory addresses, it sort of renders debugging (such as using OllyDbg) useless (I don't want to debug DosBox after all). Maybe there's a good disassembler out there or something? I'm blatantly ignorant when it comes to assembler (I've only been doing high-level coding, really).

1) Does DosBox support a TSR?
2) Does XP Command Prompt support a TSR?
Krille said “NTVDM crashes my system” I agree, some people seem to not have problems running CIV from the Command Prompt but I get varying result. I find DOSbox much more stable.

A quick Google seems to indicate that a TSR will work in DOSbox.

A TSR could be written so that when it is invoked by some function key. It would save all the data areas of the running CIV.EXE to a file on a hard or virtual drive.

I have a application that monitors a directory for file changes and executes when a change occurs. (I use this program to save a copy of the map & sve file every time I do a save from CIV DOS. So that I can have a unlimited number of saves). That process could be used to recognize when the TSR generated saved data file is written. A windows program could then be used to manipulate any data that the running CIV.EXE had. The TSR program could be monitoring the folder for a signal to write the changed data back into the CIV.EXE.

The changed data could be returned in a file in the form of:
Offset:new data (example 0A12:FF)
Keeping the amount of internal data updated to a minimum.

The TSR will then let CIV.EXE run and the folder monitor will go back to monitoring.
Sounds seamless and quick.

I'm sure you will want to do all of this as an open source project. (some sort of smiley face goes here)
 
Basically, DOSBox should support TSRs that don't do weird stuff with the interrupt table or DMA.
 
Man, I thought I was crazy about Civ games. =o
 
Top Bottom