Steph's crazy (?) idea to expand the game without the source code.

What do you think of the idea?


  • Total voters
    62
Yes, in theory it would be possible, providing
a) There's a free civ to create one of the side of the civil war
b) You save everyturn, and are ready to accept that if a civil war strikes, you will load the new saved game. Nothing would force you to do it.
 
I know how this will sound but a similar idea crossed my mind before though I dismissed it as too much work for anyone to handle ;) I've been editing saves manually before, e.g. I'd edit the saves to change city names to match their real world locations. A few times I did this for civilizations & their leaders too, e.g. when Germans in my game were reduced to 2 cities in alps, I renamed them to Swiss Confederacy. An automated tool that could do and more that would be really cool.

There's more - all data that is normally saved in the save game also resides in the memory (see Civ Assist), in the same format. So, you could make your tool modify the game data on the fly (at the end of turn etc.), instead of monitoring the saves. This could open a lot of possibilities, including event scripts (e.g. on year X change civ relations to this and this; war/peace status can be changed as well, though there wouldn't be any in-game annoucement).

In short, I love the idea, and if it was done through mem editing, the cumbersome part of it would be solved ;)
 
That is not so simple.
Replacing a value in memory (for instance changing the name), is not too difficult. But Changing the whole structure, to add eras for instance, is a different league!
The possibility of side effects is quite high.

At least in the file format, we know (or should know) where everything is going.

Beside, I've studied the file format (not the savegame format), so I know where things are. I won't try to do the same with memory, that's too much work.

Now if the CivAssist team can lend some expertise and tell if it is doable, why not.
 
True, the AI would be totally unable to use new features :(

I change of names or some settings (like traits) for each era, and more eras, would probably not pause a problem. For the rest, it's much more debatable.
 
The basic conclusion of this post is that in my opinion, despite the difficulties that will inevitably come up when messing with something like this, it is a good idea. Casual readers probably don't need to read any of the rest. :)

I agree that the CivAssist utility can provide a good example of what this new tool could do. In CivAssist you can monitor all sorts of stuff, like disorder, what technologies are available, how happy your cities are, how many units you have, what relations and attitude you have with other leaders. All of these things could potentially become 'triggers' for changes in the game. It's a massive opportunity, but I can also see that the game could become almost unplayable if a load is required in order to effect all the changes. It's going to be up to modders to work out how to use the possible events to best effect, and using them sparingly is likely to be necessary. I for one am not keen on the idea of a new load every turn.

One possible problem I see, which I'm sure is outweighed by the potential of the idea: when you went from era one to era two, then the first era techs would be lost and units that require techs from the first era will be left without prerequisites. That means that any 'not required for era advancement' techs are going to lose any strategic value they would still have. I'd suggest therefore that, if you're having more than four eras, that you would always want to have the era immediately before the current era kept in the biq/save files. In other words you're constantly working through the second era tech tree, which slides along as you progress. Hope that makes sense.

The main problem is that it would take a lot of time and expertise to do this, and that is obviously the limiting factor here. Steph: you'll have to decide which way you want to go in the short term, a new game or this project. Then again, maybe when you want a rest from the new game you could work on this and vice-versa?

This really seems like a lot of extra work when creating a new game with improved AI would be a better bet.
Are you saying that the new game with improved AI is not a lot of work? :lol:
I take the point that Steph's scheme is not going to radically change the experience of the game, whilst a new game obviously would. On the other hand we're all hanging around a Civ 3 forum years after it's follow up was released for a reason. A lot of people are still playing, despite the short-comings, and Steph's idea could provide a lot more flexibility to modders. This project won't radically change the civ experience like a new game, but it will make it a wider experience, a longer experience and a deeper experience.
 
Of course I am not saying that a new game with improved AI is not allot of work. What I am saying is a new game would be better than this workaround because only a new game has the ability to change the AI behaviour.
 
I think you missed the point (well almost, you nailed it at the end). The modder could createa a mod with 40 civilizations, and instead of biq, he would have a "biq2", not usuable with Civ directly.
Instead, before starting civ, he would use a small exe, "ExpandedGameSettings". where he selects 31 (or less) civilizations among the 40 and possibly the starting era, and then click on "generate".
The exe would then generate a new biq, with only the selected civ and eras, and deleting everything that become useless (so a unit that no one can get would not be included).
Then, you start Civ3, select the new biq, and start the game. You can even have random map this way, as we change the biq, not the save.

And you just have to provide one "biq2" files, not millions of biq with all the combination.

And this is something I already started to do with my editor. The goal was to allow a modder to work on a large epic mod, but to propose playable test version restricted to some civ/era, if the epic mod is not finished.

I will probably add this option to my editor at some point.

The difference here would be to expand the concept, with more than 31 civ and 4 eras, and turn it into an easy to use exe, where you just select a biq2 file, some civ, and start era, and go!

Ah, yes, that's a much easier way to go about it! I'm too much in the box - no need to stick to the one BIQ to one SAV format. Better to go BIQ2->BIQ->SAV than BIQ2->SAV.

There's more - all data that is normally saved in the save game also resides in the memory (see Civ Assist), in the same format. So, you could make your tool modify the game data on the fly (at the end of turn etc.), instead of monitoring the saves. This could open a lot of possibilities, including event scripts (e.g. on year X change civ relations to this and this; war/peace status can be changed as well, though there wouldn't be any in-game annoucement).

In short, I love the idea, and if it was done through mem editing, the cumbersome part of it would be solved ;)

A user named Muchembled tried to modify the memory structures to remove the 512-city limit several years ago - see his utility here. He ended up removing that attempt from the program as it apparently caused instability and crashes, but he did succeed in cascading food/shields/beakers, making barbarians become more advanced with triggers, and (partially) removing the 4096 (PTW) unit limit. It doesn't have a Conquests version.

Unfortunately he hasn't been on CFC for more than three years, but the link for the program still works, and the source code is included with the download. It's a mix of C++ and x86 assembly. Not sure quite how it works myself, but it could be useful to someone trying to figure out how to make a memory mod in addition to CivAssist.
 
That is not so simple.
Replacing a value in memory (for instance changing the name), is not too difficult. But Changing the whole structure, to add eras for instance, is a different league!
The possibility of side effects is quite high.

At least in the file format, we know (or should know) where everything is going.

Beside, I've studied the file format (not the savegame format), so I know where things are. I won't try to do the same with memory, that's too much work.

Now if the CivAssist team can lend some expertise and tell if it is doable, why not.

Oh, of course I wasn't suggesting adding things like eras through memory hacking. But still, if you could alter all the data normally saved in BIQ/SAV on the fly, the possibilities are enormous. Even if you sticked to just what you described, it'd take out all the cumbersomeness of saving/reloading the game every turn.

Now, the thing is, saves use the same format as BIQs and my understanding is that the data in memory uses the same format as well (at least CivAssist has access to everything that is normally in the BIQ/SAV formats and reads it directly from memory, while crediting Gramphos for the format still). I have a feeling that if you scan the memory for the BIQ tags you'll find them in a ready-to-use state ;)
 
Actually, CivAssist doesn't read the in-game memory space, it only reads save files. Powerbar, on the otherhand, does read (and modify) the in-game memory. Its possible, but I believe it only changes values, not create new ones.

I also think that changing the memory might be difficult in (say) vista or Windows 7. Changing memory in XP requires a pretty rugged hack into the memory address IIRC, and I think that protection only gets more beefed-up in Vista & Windows 7.

I believe that this could be done. I haven't played around with the Civ3 file format for quite a while, but IIRC, the BIQ rules are read-in to the start of each save. The structure is such that (for example) the number of eras is defined in-save: I haven't ever attempted to change them, but in theory, it might be robust enough programming to simply read in more if more are defined. It certainly works that way for units etc.
 
Actually, CivAssist doesn't read the in-game memory space, it only reads save files. Powerbar, on the otherhand, does read (and modify) the in-game memory. Its possible, but I believe it only changes values, not create new ones.

I also think that changing the memory might be difficult in (say) vista or Windows 7. Changing memory in XP requires a pretty rugged hack into the memory address IIRC, and I think that protection only gets more beefed-up in Vista & Windows 7.

I believe that this could be done. I haven't played around with the Civ3 file format for quite a while, but IIRC, the BIQ rules are read-in to the start of each save. The structure is such that (for example) the number of eras is defined in-save: I haven't ever attempted to change them, but in theory, it might be robust enough programming to simply read in more if more are defined. It certainly works that way for units etc.
I tried adding era, but it didn't work. Although you can add it in the save format, and there is a value for number of eras, it seems it's overriden by some harcoding when the game actually read the save or iq :(.
It works well for units, buildings (to the limit of 256, then the game has some strange behaviour).
Who is behind Powerbar? Still around? Could help?
 
This idea is brilliant, but unfortunately it's a kludge. Not your fault, that's the position firaxis put us in. Having to run an external program several times during one game would take a lot of the pleasure of playing away for me. Of course I tend to play in obsessive 6 hour sessions without a break. :crazyeye:
To make it clear I'd prefer focusing all my efforts on my own game. But it's very long, and it will be a long time before we can actually play it.
Please work on the editor (to work with C3 as it exists) and your own game.
 
Who is behind Powerbar? Still around? Could help?
Various. Started by CrsadrJoe, who hasn't looged in since Feb 2008. Spiderzord[/url worked on it next, and he is still active. Most recent is [url=http://forums.civfanatics.com/member.php?u=24064]Nexushyper, who last logged-in in september last year.

IIRC, there are differences in memory offsets for in-game memory as opposed to the save file structure. However, I expect that the rules that are read-in are probably very similar to the BIQ. Changing the rules on the fly is actually what you are trying to achieve, and I think that this is probably reasonably easy. The best bit about that is that the rules is the part of the save file structure that is pretty-much completely known / documented. The save file structure still has a lot of gaps in it.
 
I voted "not interesting, gameplay fine as it is" - but that's strictly a reflection of my own interests. For me, personally, as someone who doesn't create full-scale mods (beyond very basic messing about with corruption rules), 4 eras are just fine.

Steph, your idea is radical, ambitious and extremely interesting. It's just that "more eras" isn't something that really appeals to me. What does appeal to me is the chance to change corruption rules as time goes on (in brief, to allow corruption in fringe cities to improve in the long-term, if you hold them consistently).

I'd already figured out that the only way to do this is to modify the .BIQ section of the .SAV file mid-game, and this is exactly what you're proposing here - you're just aiming at a different purpose.

I think keroro makes some very good points. Particularly that the triggers for the "alteration" should be few and infrequent - no-one wants to have to re-load frequently. Your "change of era" trigger is excellent in this respect - it only happens a few times per game.

So my vote should really be "Best Idea of the Century - Go for it!", because it's an extremely fruitful technical idea - but the proposed application, to increase the number of eras, doesn't really interest me much.
 
It sounds like a great idea! I'm not a programmer, but I am very familiar with the normal editor and could be of some use for testing.
 
It is very likely.

I have too many techs in each era, and I'd like to have subperiod.

It will also greatly help with the tech tree, as for the moment I have to use "chock points" tech, but it's "artificial" as I can have only 4 requirements. If I'm using real era instead of period, I'll be able to have as many required tech as I whish as requirement for next era.

The tech tree will have only 20 or so tech in each era instead of around 100 as it is now, I'll be able to play with civ and leaders names and traits, also with military leader name (to be sure that Vercingetorix doesn't appear in the Napoleonic wars or Napoleon in the ancient era).

I may use this opportunity to have more than 256 buildings, to have more than 1000 turns, etc.

I may also introduce some nice features like specific barbarians for each era, food consumption for citizen that could vary with the era, etc.

There are many possibilities. Example:
- Horseback riding requires a non era tech "early horse". European civ can research it, but no Aztec. This make the horse resource available in the ancient era.
- Then, when moving to the Conquest of the new world era, a new tech "horse importation" is available, and it also gives horses. The European starts with it. Not the Aztec.
Result: in the ancient Era, the Europeans civs can have horse units. When they move to a more recent era, they will keep it. The Aztecs can discover horses only in late game.

Of course, this all depends on several factors:
- I need to change my computer first. My old system is to slow to allow working comfortably on this
- I need to be sure of what I can find in the save file format, which is a bit different from the biq format. I may not be able to do everything I want
- Some changes will be easy to add, some will be more difficult. So It's not sure I'll do everything I'm dreaming of, and it may be done in several steps (unless we can have several Stephs ;)).
 
To change the content of the save-file would have a lot of additional advantages :), per example:

- Different unit stats for the same unit in different eras
- the change of summer- and winterterrain (together with a change of the unit stats
now there could be created a real Russion winter for Operation Barbarossa)

-Supernovas in space scenarios and, and ...

The manipulation of information for saved files was very common for Civ 2. An expert here was Mercator: http://www.civgaming.net/mercator/mapedit/downloads.html#file0020 who made CivSwap to automate these changes.

A program to change the savefiles should consider, that it should also work for 64-bit systems if possible.
 
Back
Top Bottom