 |
|  |
 |
|  |
 |
|
Fromafar
|
|
quote: Originally posted by Martin Gühmann
Well we could increase the save file version again, and if the save game version doesn't match the save file version of that release a /reloadslic should be forced instead of loading the slic from the savegame, unfortunatly this means that we have to increase the save file version everytime we add such an member. |
Let's address the 2 separate problems separately:
If you want to store and reload the values of the members, changing the save file version is the only proper solution. But I don't think this is necessary for the current members. These seem to behave more like accessor functions than variables, so you don't need to store the values at all.
So, this could be solved by introducing some new functions: e.g. something like AddButDontSaveMember to register such a new member, and GetNumberOfMembersNotCountingDontSaveMembers in the file load/save handling to have only the original members in the file, but still have the new members accessible to the Slic coders.
The other problem is more difficult. You really don't want to do a /reloadslic, because this will reset the values of all Slic variables in the game.
|
|
|  |
 |
|  |
 |
|  |
 |
|  |
 |
|  |
 |
|
Fromafar
|
|
There are lots of problems indeed. So maybe we should try not to do too much at once. I think we should aim for the following goals:
- Saving and reloading a game with the same version should work without doing any /reloadslic or similar tricks. Right now, this doesn't work, because of the design error in the Slic parser.
- Likewise, starting a new game from a scenario (may involve loading some old Activision .ctg save file) should work without user intervention. Right now, this doesn't work because of the added variables.
Loading a game in progress that has been saved with an older version is more of an option. If we can support this without user interaction, fine. Maybe we could even perform an automatic string table reset when loading a game, because that Gdansk/Noyon thing is very annoying indeed, and there should not be an effect on the game state. IIRC someone mentioned a /resetstrings option, it could be interesting to have a look into that one.
|
|
|  |
 |
|
Martin Gühmann
|
 |
Berlin, Germany
Mar 2001 time: 06:32
|
|
quote: Originally posted by Fromafar
Saving and reloading a game with the same version should work without doing any /reloadslic or similar tricks. Right now, this doesn't work, because of the design error in the Slic parser. |
It does work as long as you don't use any run time database access code. However I was able to find a solution.
quote: Originally posted by Fromafar
Likewise, starting a new game from a scenario (may involve loading some old Activision .ctg save file) should work without user intervention. Right now, this doesn't work because of the added variables. |
So all scenarios are affected and why can I load the world map successfully?
quote: Originally posted by Fromafar
Loading a game in progress that has been saved with an older version is more of an option. If we can support this without user interaction, fine. Maybe we could even perform an automatic string table reset when loading a game, because that Gdansk/Noyon thing is very annoying indeed, and there should not be an effect on the game state. IIRC someone mentioned a /resetstrings option, it could be interesting to have a look into that one. |
Actual it is a must, because noone want to lose his savegames, and those savegames provide us with valuable information about bugs. So tell me how do you want to reload the database support from an patch 1.1 file without reloading slic, the only way to do this is to know how Activision designed the database support, how many SOP_*s did they use, in which order, how they made they sure that at run time even after a reload the necessary information like the database and the member is available.
-Martin
|
|
|  |
 |
|
J Bytheway
|
 |
England
Jul 2001 time: 05:32
|
|
Since Martin has just fixed one of the above problems with loading, I thought it was time for a new Playtest version.
New version available:
2004.04.30.CTP2Playtest.rar
Changes:
Added: New SLIC global variables
Fixed: Bug with scenario editor and players who have been removed
Added: New SLIC functions
Changed: Some French and German strings
Improved: Govener AI choice of squares on which to place tile imps
Changed: Error reporting for modulo 0 errors
Fixed: Active defense movement type check
Fixed: Neutral tile imp pillage bug
Fixed: Problem with loading games using SLIC database access
Last edited by J Bytheway on 01-05-2004 at 02:27
|
|
|  |
 |
|  |
 |
|  |
 |
|
Flinx
|
 |
Toronto, ON CANADA
Nov 2001 time: 00:32
|
|
quote: Originally posted by Fromafar
Crashes when loading a file
At the moment, we have 4 different file formats for save files, dependent on the release. Only the first 2 types are correct.
- Playtest releases 2004.02.21 and before generate files that are in the same format as the original (unpatched) Activision release.
These releases can read files that have been generated with the unpatched Activision release, but can not read files that have been generated with the Activision 1.1 patch.
Files generated with this release can be loaded with the Activision executables (both patched and unpatched), and with the 2004.03.31 and 2004.04.03 releases.
- Playtest releases 2004.03.31 and 2004.04.03 generate save files that are compatible with the Activision 1.1 patch format.
This release is able to load both 1.1 patch format files and original unpatched format files.
Generated files can be loaded with the Activision 1.1 executable, but not with the unpatched executable, nor with playtest releases 2004.02.21 and before.
- Playtest release 2004.04.12 generates incorrect save files - because of the added player.government variable.
Loading any other than 2004.04.12 format files may cause a crash, and loading files generated with this release may cause a crash when loading with any other release.
- Playtest release 2004.04.18 generates another type of incorrect save files - because of 3 more added variables.
Loading correct or 2004.04.12 save files may cause a crash, and loading files generated with this release may cause a crash when loading with any other release.
Releases that crash on loading correct save files will also crash when starting a scenario.
For people with the source code: comment out the 4 new AddMember statements in SlicBuiltIn.cpp to reenable loading any correct file format and generation of Activision 1.1 patch format files.
Crashes after loading a file
These occur mostly when pressing the end of turn button, but may also be triggered by other Slic events during the movement phase.
All playtest releases since January 2004 contain a design error that may surface when executing database related Slic functions (such as GrantAdvance) after loading a file.
Using /reloadslic immediately after loading the file will prevent the crash. | Did Martin's fix address any of these situations? The April 3rd playtest seems to still have the most portable savegames, and the ability of future playtest versions to load current savegame files is still up in the air. Or am I wrong?
Last edited by Flinx on 01-05-2004 at 06:22
|
|
|  |
 |
|  |
 |
|
LDiCesare
|
|
La Ferté sous Jouarre France
Jan 2001 time: 05:32
|
|
I get an 'Expected keyword MAX_MATCH_LIST_CYCLES not found' when launching the game (French version if that matters).
What bothers me is that I have such a variable defined in Const.txt
(excerpt:
RIOT_LEVEL 73
MAX_MATCH_LIST_CYCLES 10 # Amount of AI match list cycles
POWER_POINTS_TO_MATERIALS 1 # 1 power point can be converted to x materials
)
Where is that line supposed to be? Is that the good file? And in which directory is it supposed to be?
Is there a debugging switch enabling to know which file has been read where?
And is there a troubleshooting FAQ for playtesters?
Like 'if you can't run the game because of an error message, you probably did this or that wrong'?
|
|
|  |
 |
|
Peter Triggs
|
|
Gone Fishin, Canada
Jan 2000 time: 05:32
|
|
quote:
Is there a debugging switch enabling to know which file has been read where?
|
c3debug_SetDebugMask is in civ3_main::main_InitializeLogs @1820. The options are:
code:
#define k_DBG_ALL 0xffffffff
#define k_DBG_NONE 0x00000000
#define k_DBG_INFO 0x00000001
#define k_DBG_AI 0x00000002
#define k_DBG_NET 0x00000004
#define k_DBG_GRAPHICS 0x00000008
#define k_DBG_DATABASE 0x00000010
#define k_DBG_FILE 0x00000020
#define k_DBG_GAMESTATE 0x00000040
#define k_DBG_UI 0x00000080
#define k_DBG_FIX 0x00000100
#define k_DBG_SLIC 0x00000200
#define k_DBG_SCHEDULER 0x00000400
#define k_DBG_SCHEDULER_DETAIL 0x00000c00
#define k_DBG_SCHEDULER_ALL 0x00001c00
#define k_DBG_DIPLOMACY 0x00002000
#define k_DBG_MAPANALYSIS 0x00004000
To see what AIDATA files were being loaded I went to c3files_fopen in \ctp2_code\ctp\ctp2_utils and added:
code:
if (g_civPaths->FindFile(dirID, s1, s) != NULL) {
if(dirID==C3DIR_AIDATA){
DPRINTF(k_DBG_FILE, ("dirID= %d, %s\n",dirID,s));
}
You'll want C3DIR_GAMEDATA.
|
|
|  |
 |
|
Peter Triggs
|
|
Gone Fishin, Canada
Jan 2000 time: 05:32
|
|
quote:
hmmm installed the playtest and it still doesn't work. it crashes the instant I build my first city
|
I compiled the latest build, added in the more recent changes, and am getting something similar. It crashes when I should get a popup message from a goody hut and when I try to use the city building manager.
|
|
|  |
 |
|
LDiCesare
|
|
La Ferté sous Jouarre France
Jan 2001 time: 05:32
|
|
Thanks a lot. I'll try to report some real bugs.
|
|
|  |
All times are GMT. The time now is 05:32. Apolyton Time is 00:32. |
top of page
|
|
|
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is ON
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|