March 19 2024 05:49:26
Navigation
· Home
· Articles
· Downloads
· FAQ
· Discussion Forum
· Web Links
· News Categories
· Contact Me
· Photo Gallery
· Search
· Gameservers
Languages
Users Online
· Guests Online: 2

· Members Online: 0

· Total Members: 1,126
· Newest Member: schweatyballz
Teamspeak 3
Last Seen Users
· Sully02:22:28
· doomed03:49:21
· Silent Bob07:32:57
· Intruder14:08:00
· forrest74720:11:13
· gus 1 day
· Terminator 2 days
· The ACE 3 days
· WEZ 4 days
· GONZO 1 week
· desintegrator 1 week
· VictorMyson 2 weeks
· Jerry 2 weeks
· Don Turtuma 3 weeks
· Peter Shannon 3 weeks

View Thread: Intrusion « SITREP »
Vietcong.Info » Vietcong General Discussion » Maps & Mapping
Who is here? 1 Guest
Current Rating: (Total: 1 rating)  
 Print Thread
Intrusion « SITREP »
Intruder
Hi,

As some of you already know, I'm trying to release the next version of Intrusion (Intrusion_beta_2) as soon as possible...
Many months ago, after to have found and fixed many bugs, I decided to go further by increasing all "the details" for the best immersion and gameplay... Everything was working correctly and I really thought I was rather close a public release, but I was wrong! During our last beta tests, we found another bug!!!

The bug:
The first time the players are loading the map, everything is working normaly and as it should. However, once the FIRST bot is killed, it becomes impossible for a (new) player/rejoiner to load the map. The map will crash the game to the desktop at the very end of the loading! But if we "restarmap" the map (> new bots), the players can load and respawn on the map, again...
In fact, the only way to load the map WITH the bug is by using the "trick" we all know, by putting the game to the desktop during the map's loading!

The fix?:
Because we had no idea of what was causing that bug, I decided to create many different versions of the map (no lightmaps, no waypoints,...), by hoping to find the culprit... To make it short, it's only when we tested the version where I deleted around 1.000 objects (random number, just for the test, which is huge!) that the bug was GONE!!! Don't ask me what is the link between the bots, the objects and the desktop, to create that bug (or not), because I have NO idea! If some of you have ideas, you're the welcome to share them! lol
So apparently, the map has no bug but it just became "too big" for what the game engine can handle...(?)


Of course, I could have written in the readme file provided with the map, to just put the game to the desktop during the map's loading, to be able to play it normaly but this is not how it's supposed to work! And with the maps loading via a server, that information may never be read by the players...
So, after all those long hours spent in the placement of my objects, I'm now deleting them, one by one, to try to find back a map without the bug! So far, I already deleted (more or less) 300 objects but the bug is still there! Grrr...

Note that I saved a map version with "all the details" just in case someone finds a fix for that bug in the future...


Let's hope I'll have better news to announce you for the next time! Wink



Intruder
Edited by Intruder on 17-10-2019 00:44
Signaturewww.vietcong.info/portal/images/ranks/Member_of_the_Month1011.pngwww.vietcong.info/portal/images/ranks/Member_of_the_Month_6.png
  x 2  x 1
 
Silent Bob
Intruder wrote:
The bug:


Is it possible to merge/link some objects so the total number of objects is smaller than before?

Did you try a different gamemode script ?
  x 1
 
www.vietcong.info
martyr
More questions sorry...

Is this only happening in COOP mode?

Can you share your .inc (mplevel etc) and game mode and script files?
Signature________________________________________________________________________

"From every kill grow, from every death learn"
  x 1
 
http://www.clanofminh.vcclan.net/minh/
Intruder
Silent Bob wrote:

Is it possible to merge/link some objects so the total number of objects is smaller than before?

Hmmm, excepted you know a method I don't, I don't think it's possible the way I have built Intrusion...

Did you try a different gamemode script ?

Not really... My Discovery mode (same map, only without the bots) has no trouble for example...
I want to precise again that the Coop mode has no problem in fact, as long as we are on the map, from the start, and we're not trying to re/join after the first vc kill... That's why it took us so much time before to discover there was a bug... And because the game is not crashing if we go to the desktop during the loading, I guess it's not a coop script problem also (or another one)... But maybe I'm wrong!

--------------------------------------------------

martyr wrote:

Is this only happening in COOP mode

Yes... The map has my usual Coop, Coop' and Discovery modes only... Coop and Coop' modes are crashing but the Discovery one is ok.

Can you share your .inc (mplevel etc) and game mode and script files?

But all my scripts are the "default" ones in fact... I don't have the skill to create custom scripts with special "features". Usually, I'm using the scripts from my older maps because I never got problems with them. However, after all that time and those long years in mapping, maybe I missed something important! I'll check them again and will post them if they are not the ones by "default"...

--------------------------------------------------

For information, the latest datas from the map, at its highest level were:

Textures: 525 (48.2 MB)
Light maps: 1632 (33.1 MB)
Collisions: 13.75 MB
Used BESses: 8506
Lights: 3
Waypoints: 2173
Events: 293

And the actual datas, in my search of a lighter and working version are:

Textures: 517 (48 MB)
Light maps: 1499 (32.1 MB)
Collisions: 13.33 MB
Used BESses: 7842
Lights: 3
Waypoints: 2341
Events: 293


Thank you for your interest! :)



Intruder
Signaturewww.vietcong.info/portal/images/ranks/Member_of_the_Month1011.pngwww.vietcong.info/portal/images/ranks/Member_of_the_Month_6.png
  x 1
 
xhc
send coop.c and bot's .c files usied in that map
I will find there some lines to exclude possibility that issue is in .c files, but I think, this could be map issue (editor work), don't know more this time...
  x 2
 
http://moddb.com/members/xhc
The ACE
Light maps could be an issue.
  x 1
 
http://theace.favos.nl/
Intruder
The ACE wrote:

Light maps could be an issue.

Indeed, lightmaps could create that kind of problem but during our latest big tests, I also made a map version without lightmaps and the game was still crashing... So I guess we can exclude them from the list.

--------------------------------------------------

After many more tests and checks, I found missmatches in my vc groups (scripts) and "players" in the Editor... I really don't know what happend but apparently something went wrong during the process! Frown
I first need to fix that mess before to go further because it may be the only reason why the game is crashing!!! Shock

See you next time with good news... I really hope!


Edit:
It's still not fixed! Frown
I need to do more tests because the crashes are not consistent now. Sometimes it crashes, sometimes not!
I have the bad feeling to fight with more bugs at the same time...



Intruder
Edited by Intruder on 04-11-2019 23:20
Signaturewww.vietcong.info/portal/images/ranks/Member_of_the_Month1011.pngwww.vietcong.info/portal/images/ranks/Member_of_the_Month_6.png
  x 1
 
Intruder
xhc wrote:

send coop.c and bot's .c files usied in that map
I will find there some lines to exclude possibility that issue is in .c files, but I think, this could be map issue (editor work), don't know more this time...

Just in case and to be sure my Coop.c file is free of errors...

Download source  Code
/*
   Eric multiplayer script - Coop
*/

#include <inc\sc_global.h>
#include <inc\sc_def.h>




#define GVAR_GPHASE            500

//#define RECOVER_TIME   15.0f      // time to global recover
#define NORECOV_TIME   3.0f      // disable time of recoverplace after recovering someone there

#define REC_WPNAME_US   "USSpawn_coop_%d"
#define REC_MAX         64

dword gRecs = 0;
s_SC_MP_Recover gRec[REC_MAX];
float gRecTimer[REC_MAX];

float gNextRecover = 0.0f;

dword gEndRule;
dword gEndValue;
float gTime;

#define GPHASE_BEGIN         1
#define GPHASE_GAME            2
#define GPHASE_DONE            3
#define GPHASE_FAILED         4

dword gPhase = GPHASE_BEGIN;
float gPhase_timer = 5.0f;
dword gPhase_send = 0;

BOOL gValidSide0 = FALSE;

dword gRecoverTime = 0;
dword gRecoverLimit = 0;

float gAllNoAiRecover  = 0.0f;

BOOL SRV_CheckEndRule(float time){

   switch(gEndRule){
      case SC_MP_ENDRULE_TIME:         

         if (gValidSide0) gTime += time;
         SC_MP_EndRule_SetTimeLeft(gTime,gValidSide0);

         if (gTime>gEndValue){
            SC_MP_LoadNextMap();
            return TRUE;
         }

         break;

      default:
         SC_message("EndRule unsopported: %d",gEndRule);
         break;

   }// switch(gEndRule)

   return FALSE;

}// void SRV_CheckEndRule(float time)


void SRV_CheckUpdate(void){

   if (gPhase_send!=gPhase){

      gPhase_send = gPhase;

      SC_sgi(GVAR_GPHASE,gPhase);

   }// if (gPhase_send!=gPhase)

}// void SRV_CheckUpdate(void)



int ScriptMain(s_SC_NET_info *info)
{
   s_SC_MP_EnumPlayers      enum_pl[64];
   s_SC_MP_SRV_settings   SRVset;
   s_SC_MP_Recover *precov;
   s_SC_MP_hud      hudinfo;
   s_SC_P_getinfo   plinfo;
   dword   i, j, sideA, sideB, num;
   BOOL   valid[2];
   BOOL   alldeath;
   char   txt[32],*itxt;
   ushort *witxt;
   float   val;


   //
   switch(info->message)
   {
      case SC_NET_MES_SERVER_TICK:   
         
         if (SRV_CheckEndRule(info->elapsed_time)) break;

         for (j=0;j<2;j++)
         for (i=0;i<gRecs;i++)
            gRecTimer[i] -= info->elapsed_time;


         if (gRecoverTime<0xffff){
            gNextRecover -= info->elapsed_time;
            if (gNextRecover<0.0f) gNextRecover = (float)gRecoverTime;
         }// if (gRecoverTime<0xffff)
         

      
         if (gAllNoAiRecover>0.0f){
            gAllNoAiRecover -= info->elapsed_time;            
            if (gAllNoAiRecover<=0.0f)
               SC_MP_RecoverAllNoAiPlayers();      
                        
            break;
         }// if (gAllNoAiRecover>0.0f)
         else{
            gAllNoAiRecover -= info->elapsed_time;
         }


         CLEAR(valid);         
         j = 64;
         alldeath = FALSE;

         if (SC_MP_EnumPlayers(enum_pl,&j,SC_MP_ENUMPLAYER_SIDE_ALL)){            

            alldeath = TRUE;

            for (i=0;i<j;i++){
               if (enum_pl[i].status==SC_MP_P_STATUS_INGAME){
                  if (enum_pl[i].side>1) SC_message("coop script wrong side: %d",enum_pl[i].side);
                  else{
                     valid[enum_pl[i].side] = TRUE;
                  }
               }

               if ((enum_pl[i].side==0)&&(enum_pl[i].status==SC_MP_P_STATUS_INGAME)) alldeath = FALSE;

            }// for (i)

            SC_Log(3,"Enum, v[0]: %d   v[1]: %d  alldeath: %d",valid[0],valid[1],alldeath);
               
         }// if (SC_MP_EnumPlayers(enum_pl,&j,SC_MP_ENUMPLAYER_SIDE_ALL))
         else SC_Log(3,"NoEnum");

      
         if ((gPhase==GPHASE_GAME)&&(alldeath)&&(gPhase_timer<0.0f)){
            
            if (gRecoverLimit==0){
               // mission failed
               SC_Log(2,"Set GPHASE_FAILED");
               gPhase = GPHASE_FAILED;
               gPhase_timer = 5.0f;
            }
            else {
               // recover unlimited
               if ((gRecoverTime>=0xffff)&&(gAllNoAiRecover<-5.0f)){
                  gAllNoAiRecover = 4.0f;               
               }
            }

         }// if ((alldeath)&&(gRecoverTime>=0xffff))
         else gAllNoAiRecover = 0.0f;


         gValidSide0 = valid[0];

         switch(gPhase){
            case GPHASE_BEGIN:
               gPhase_timer -= info->elapsed_time;

               if (gPhase_timer<0.0f)
               if ((valid[0])&&(valid[1])){
                  SC_Log(2,"Set GPHASE_GAME");
                  gPhase_timer = 5.0f;
                  gPhase = GPHASE_GAME;                  
               }
               break;
            case GPHASE_GAME:
               gPhase_timer -= info->elapsed_time;

               if (gPhase_timer<0.0f)
               if (!valid[1]){
                  SC_Log(2,"Set GPHASE_DONE");
                  gPhase = GPHASE_DONE;
                  gPhase_timer = 8.0f;
               }// if (!valid[1])
               break;
            case GPHASE_DONE:
            case GPHASE_FAILED:

               gPhase_timer -= info->elapsed_time;
               if (gPhase_timer<0.0f){
                  SC_Log(2,"SC_MP_RestartMission");
                  SC_MP_RestartMission();               //restart
                  gPhase = GPHASE_BEGIN;
                  gPhase_timer = 5.0f;
               }

               break;
         }// switch(gPhase)

         SRV_CheckUpdate();

         break;

      case SC_NET_MES_CLIENT_TICK:

         break;// SC_NET_MES_CLIENT_TICK


      case SC_NET_MES_LEVELPREINIT:
         SC_sgi(GVAR_MP_MISSIONTYPE,GVAR_MP_MISSIONTYPE_COOP);

         gEndRule = info->param1;
         gEndValue = info->param2;
         gTime = 0.0f;

         SC_MP_EnableBotsFromScene(TRUE);

         break;// SC_NET_MES_LEVELPREINIT

      case SC_NET_MES_LEVELINIT:
         
         SC_MP_SRV_SetForceSide(0);


         SC_MP_SRV_SetClassLimit(18,0);
         SC_MP_SRV_SetClassLimit(19,0);
         SC_MP_SRV_SetClassLimit(39,0);

         SC_MP_GetSRVsettings(&SRVset);

         for (i=0;i<6;i++){
            SC_MP_SRV_SetClassLimit(i+1,SRVset.atg_class_limit[i]);
            SC_MP_SRV_SetClassLimit(i+21,SRVset.atg_class_limit[i]);
         }// for (i)


         CLEAR(hudinfo);
         hudinfo.title = 1098;

         hudinfo.sort_by[0] = SC_HUD_MP_SORTBY_KILLS;
         hudinfo.sort_by[1] = SC_HUD_MP_SORTBY_DEATHS | SC_HUD_MP_SORT_DOWNUP;
         hudinfo.sort_by[2] = SC_HUD_MP_SORTBY_PINGS | SC_HUD_MP_SORT_DOWNUP;

         hudinfo.pl_mask = SC_HUD_MP_PL_MASK_KILLS | SC_HUD_MP_PL_MASK_DEATHS | SC_HUD_MP_PL_MASK_CLASS;
         hudinfo.use_sides = TRUE;
         hudinfo.side_name[0] = 1010;
         hudinfo.side_color[0] = 0x440000ff;
         hudinfo.side_name[1] = 1011;
         hudinfo.side_color[1] = 0x44ff0000;
         hudinfo.disableVCside = TRUE;

         hudinfo.side_mask = SC_HUD_MP_SIDE_MASK_FRAGS;
         

         SC_MP_HUD_SetTabInfo(&hudinfo);

         SC_MP_AllowStPwD(TRUE);
         SC_MP_AllowFriendlyFireOFF(TRUE);
         SC_MP_SetItemsNoDisappear(FALSE);  //False=original

         SC_MP_SetChooseValidSides(1);

         if (info->param2){

            if (info->param1){
               // it's server      

               SC_MP_GetSRVsettings(&SRVset);
               gRecoverTime = SRVset.coop_respawn_time;
               gRecoverLimit = SRVset.coop_respawn_limit;

//               SC_MP_SRV_InitWeaponsRecovery(-1.0f);             
               SC_MP_SRV_InitWeaponsRecovery((float)SRVset.dm_weap_resp_time); 
               
               SC_MP_Gvar_SetSynchro(GVAR_GPHASE);               
               
               gRecs = 0;

               for (i=0;i<REC_MAX;i++){      
                  sprintf(txt,REC_WPNAME_US,i);         
                  if (SC_NET_FillRecover(&gRec[gRecs],txt)) gRecs++;               
               }               
#if _GE_VERSION_ >= 133
 
     i = REC_MAX - gRecs;
     SC_MP_GetRecovers(SC_MP_RESPAWN_COOP,&gRec[gRecs],&i);
     gRecs += i;
#endif
               if (gRecs==0) SC_message("no US recover place defined!");

               CLEAR(gRecTimer);

            }// if (info->param1)
         }//if (info->param2)

         if (info->param1)
         {
            //!!! ++ Reinit AI - NEW
            num = 64;
            SC_MP_EnumPlayers(enum_pl, &num, SC_P_SIDE_VC);
            for (i = 0; i < num; i++)
            {
               SC_P_ScriptMessage(enum_pl[i].id, SCM_MP_REINIT, 0);
            }
            //-- Reinit AI - NEW

         }
         break;// SC_NET_MES_LEVELINIT


      case SC_NET_MES_RENDERHUD:

         switch(SC_ggi(GVAR_GPHASE)){

            case GPHASE_DONE:
               j = 1099;
               break;
            case GPHASE_FAILED:
               j = 1049;
               break;

            default:j = 0;break;

         }// switch(SC_ggi(GVAR_GPHASE))

         if (j){
                     
            witxt = SC_Wtxt(j);
            SC_GetScreenRes(&val,NULL);

            val -= SC_Fnt_GetWidthW(witxt,1);

            SC_Fnt_WriteW(val * 0.5f,15,witxt,1,0xffffffff);

         }// if (j)


         break;

      case SC_NET_MES_SERVER_RECOVER_TIME:

         if (info->param2){
               info->fval1 = 0.1f;
         }
         else{
            // killed

            SC_P_GetInfo(info->param1,&plinfo);   
                        
            if (plinfo.side==0){               

               if (gRecoverLimit>0){
                  
                  if (gRecoverTime>=0xffff) info->fval1 = -1.0f;
                  else
                  if (gRecoverTime>0) info->fval1 = gNextRecover;
                     else info->fval1 = 4.0f;                  
               }
               else info->fval1 = -1.0f;
                        
            }
            else info->fval1 = -1.0f;
            
         }

         break;

      case SC_NET_MES_SERVER_RECOVER_PLACE:

         if (info->param1!=0){
            SC_message("No recover for VC");
            break;
         }
         
         precov = (s_SC_MP_Recover*)info->param2;

         i = SC_MP_SRV_GetBestDMrecov(gRec,gRecs,gRecTimer,NORECOV_TIME);
         
         gRecTimer[i] = NORECOV_TIME;
         *precov = gRec[i];
                  
         break;
         

      case SC_NET_MES_SERVER_KILL:


         break;// SC_NET_MES_SERVER_KILL


      case SC_NET_MES_RESTARTMAP:


         CLEAR(gRecTimer);

         gNextRecover = 0.0f;

         gTime = 0;


         gPhase = GPHASE_BEGIN;
         gPhase_timer = 5.0f;
         gPhase_send = 0;

         gValidSide0 = FALSE;

         SC_MP_GetSRVsettings(&SRVset);
         gRecoverTime = SRVset.coop_respawn_time;
         gRecoverLimit = SRVset.coop_respawn_limit;


         gAllNoAiRecover  = 0.0f;
               

         SC_MP_SRV_ClearPlsStats();

         SC_MP_SRV_InitGameAfterInactive();
         SC_MP_RecoverAllAiPlayers();
         SC_MP_RecoverAllNoAiPlayers();         
         

         break;// SC_NET_MES_RESTARTMAP

      case SC_NET_MES_RULESCHANGED:         
         gEndRule = info->param1;
         gEndValue = info->param2;
         gTime = 0.0f;
         break;
         

               
   }// switch(info->message)
   

   return 1;

}// int ScriptMain(void)




Reminder: My Coop mode is...

Coop:
The "classic one" we all know, with...
-Addition of: extra weapons, grenades and bandages...
-The weapons will disappear if you drop them on the ground but...
-Extra weapons will reappear on the map:
To use this feature, set the respawn time in the server "Mode settings".


Thanks for the help!



Intruder
Signaturewww.vietcong.info/portal/images/ranks/Member_of_the_Month1011.pngwww.vietcong.info/portal/images/ranks/Member_of_the_Month_6.png
  x 1
 
martyr
Intruder wrote:
...The bug:
The first time the players are loading the map, everything is working normaly and as it should. However, once the FIRST bot is killed, it becomes impossible for a (new) player/rejoiner to load the map. The map will crash the game to the desktop at the very end of the loading! But if we "restarmap" the map (> new bots), the players can load and respawn on the map, again...
....
It's still not fixed! Frown
I need to do more tests because the crashes are not consistent now. Sometimes it crashes, sometimes not...


So the current situation is same as beginning but now it only crashes sometimes?

Are you by chance using any of Ando's automatic global variable functionality?
Edited by martyr on 06-11-2019 15:13
Signature________________________________________________________________________

"From every kill grow, from every death learn"
  x 1
 
http://www.clanofminh.vcclan.net/minh/
Intruder
Indeed...
After to have checked and fixed the mistakes in my scripts, I tested my "light version" of Intrusion (with less objects) and made the same test that will create the crash for sure... I loaded the map, respawned and killed the first bot before to leave for the rejoining, and the map hasn't crashed! So I decided to kill the second bot and the game hasn't crashed at my second rejoining either!
Because I thought the bug was fixed, I decided to re-test my full map version (with all the objects) but the game crashed "as usual"! Damned, so the scripts weren't the problem?!? Let's restart the light version then... And at that moment, after the first vc bot killed, the light version crashed again at the end of the loading!
I don't remember exactly what I made next but I think to have tested all the possibilities of "kills and rejoinings" I could do and concluded I couldn't trust the results of those tests anymore...
The only thing I can note is... The less objects the map has, the more "stable" it seems to be. The "light version" may work or may not but my "full version" will crash for sure. That's why I'm thinking about a certain "limit of something" the game engine can't handled...

Extra info: I made all my tests with a levels and maps folder containing only the map version I was working on.

And no, I haven't used Ando's automatic global variable script(s)...


I still have ideas for more tests to do but as you can see, the task isn't easy to finaly found and fix that damn bug! Angry



Intruder
Signaturewww.vietcong.info/portal/images/ranks/Member_of_the_Month1011.pngwww.vietcong.info/portal/images/ranks/Member_of_the_Month_6.png
  x 1
 
martyr
Intruder, you are a patient and tenacious man... never give up is what i say :)

I've been reading back through this whole thread from the beginning and decided to try and offer some fresh perspective. Maybe I can spark some new ideas and something new will come to mind to help you with this problem.

But first, I have some preliminary questions. Sorry if they sound stupid...
1. Are you renaming the CBF and DAT files before you play/test or are the names created during finalisation? - I assume the answer is no.
2. Have you replicated the crash while playing in the editor - to see if there is an error message of any kind? - I assume the answer is yes and no there is no error message.

If I assumed correctly, then maybe consider these other ideas. I noticed some clues in your previous comments and they got me thinking again...

Intruder wrote:
when we tested the version where I deleted around 1.000 objects (random number, just for the test, which is huge!) that the bug was GONE!!!

When testing with code, machinery and gaming during my life, I've often found that when I make a big change and it fixes a problem, it might be that only one small part (of the many changes) is actually the problem. So maybe just a few or even just one object is the problem.

Intruder wrote:
Coop and Coop' modes are crashing but the Discovery one is ok.

Very interesting. The only change (as far as I know) in the script for Discovery mode is one function call:
Download source  Code
SC_MP_EnableBotsFromScene(FALSE)


The SDK VietcongScripting.htm file defines this as: This function will enable or disable creation of the AI characters from the player objects in the scene. FALSE by default. The english in this definition is a little confusing but later in the file it confirms it: "...enable or disable AI characters placed in the scene for cooperative modes of the game with the SC_MP_EnableBotsFromScene function.".
So with this in mind, are you still thinking this can only be a problem with objects?

Intruder wrote:
I'm thinking about a certain "limit of something" the game engine can't handle

As i have hinted, my feeling is that this limit is not related directly to a number of objects. More likely to be a particular object or few objects that are somehow linked to a bot script? Or maybe a single object script?

Suggested testing

Well I would be a complete asshole to make these suggestions without having any idea of how to test for them... so here we go. My ideas on testing:

Intruder wrote:
Let's restart the light version then... And at that moment, after the first vc bot killed, the light version crashed again

Do all testing on full version not any light version.

1. To establish if a particular object script is causing the issue, remove any/all of these first and test.

2. Remove bots in groups of 10 - starting with the last 10. Test with each removal. If you can remove them all, does the bug still happen if there are only 3 bots remaining?

3. Run discovery mode and have 3 players join: player A, B and C. Have player A team kill player B then leave the server. Have Player A then rejoin the server. Repeat this test with Player B leaving the server. Repeat this test with Player C leaving the server. Any crash?
Signature________________________________________________________________________

"From every kill grow, from every death learn"
  x 1
 
http://www.clanofminh.vcclan.net/minh/
Intruder
Hi,

First, sorry for the late reply!!!

Before the last post of this topic, I made another test to be "sure" the way I was taking by deleting 5.000 objects from the map, but this time on the other side of the river... So, the objects weren't the same as the ones from my previous test. I made the "crash test" with a friend by killing one bot first, to rejoin "as usual" and the game hasn't crashed. We made a second kill, to rejoin again and the game hasn't crashed either. Because I was pretty sure now that the number of objects were causing the crashes, we continued to kill more bots "for the fun" till my friend died from the vc bullets... Well, because it was a testing session anyway, I told him to rejoin AND... His game crashed again during the loading! Oh my...
So, if the game is crashing after to have deleted around 1/3 of the objects, I guess I can stop to work on a "light version" of the map right away!!! It's just more time that I have lost for "nothing" but it won't be the first time anyway! "lol"
However, it seems that the more I delete objects, the more we can kill bots before the game is crashing when we rejoin. Despite that fact, I now think that the bug is not linked anymore to the number of the map's objects! But it's showing, one more time, how difficult it is to understand sometimes how the game is behaving when bugs appear...

--------------------------------------------------

martyr wrote:

I've been reading back through this whole thread from the beginning and decided to try and offer some fresh perspective. Maybe I can spark some new ideas and something new will come to mind to help you with this problem.

I totally agree with your thought!

1. Are you renaming the CBF and DAT files before you play/test or are the names created during finalisation? - I assume the answer is no.

No, I never do and I know we must never change the names the editor is creating to avoid many troubles...

2. Have you replicated the crash while playing in the editor - to see if there is an error message of any kind? - I assume the answer is yes and no there is no error message.

I never tested in multiplayer through the Editor and I'm not even sure it's possible... Is it? But "alone", the Editor is not showing any error message(s)...

...when I make a big change and it fixes a problem, it might be that only one small part (of the many changes) is actually the problem. So maybe just a few or even just one object is the problem.

I thought about that also but after to have written what happend during my latest test, I guess we can exclude that possibility...

Very interesting. The only change (as far as I know) in the script for Discovery mode is one function call: SC_MP_EnableBotsFromScene(FALSE)
...So with this in mind, are you still thinking this can only be a problem with objects?

Indeed, it's the only change I make for the Discovery mode. I copy/past my Coop script, edit it and rename it to Discovery. It's easy, fast and very handy to "study" some parts of the map for a better gameplay in the future!
Again, after my latest test, I don't think anymore the bug is linked to the objects... I thought the bug was connected to the number of objects in the map because "all the signs" of my tests were going in that direction. But after all the years I've spent in VC mapping, I noticed that many bugs are creating bugs "elsewhere". Because the bugs' subject is a lot more complicate to explain (and find!), I invite you to read this post (if you still haven't) to understand what I mean...

As i have hinted, my feeling is that this limit is not related directly to a number of objects. More likely to be a particular object or few objects that are somehow linked to a bot script? Or maybe a single object script?

The only scripts that I'm using are the ones from the bots, and/or the "regular ones" (level.c, coop.c, ...).

Do all testing on full version not any light version.

Knowing my "light version" has the bug also, I guess I can continue the tests with my "full version" now...

1. To establish if a particular object script is causing the issue, remove any/all of these first and test.

With what I've already explained, I can't remove some of them or the Editor will start to complain for sure! lol Wink

2. Remove bots in groups of 10 - starting with the last 10. Test with each removal. If you can remove them all, does the bug still happen if there are only 3 bots remaining?

It's a possibility I'll keep in mind but I would like to test more things before...

3. Run discovery mode and have 3 players join: player A, B and C. Have player A team kill player B then leave the server. Have Player A then rejoin the server. Repeat this test with Player B leaving the server. Repeat this test with Player C leaving the server. Any crash?

It's a test I could do easily but I don't think it will help me a lot... I'm not sure it will give me the "right informations" even if something is happening...


To conclude:
- Despite I corrected the errors in my waypoints, I lately re-run the test and the Editor found 2 new/more errors... Maybe those are causing the problem but I really doubt. I'll have to check that with my testers very soon! And again, the "pleasure" of VC mapping! Each time we check the errors, the Editor may find some even if it found any(more) in the previous test!!!
- I'm thinking to import all my Intrusion scripts in a map I know everything is working correctly... And the same, the "other way" by importing all the scripts from a map that I know is working correctly into my Intrusion map...
- The last possibility, is to re-start all my scripting part, by using the default scripts provided with the editor...

I'm thinking about more "things" but it will be for another time if needed! lol

Let's see what's happening!


I always try to stay as close as possible the "normal boundaries" of the game but by pushing them to the limits of what it can offer us. And for me, the biggest difficulty is to find those limits because they aren't defined "somewhere"... So far, I've never tried to use "special scripts" linked to objects or to create mission objectives for example, because I simply don't have the knowledge for that. It must partially explain why my work is mainly based on "trials and errors" I guess... Wink


Thank you (all) for your help and propositions!



Intruder
Signaturewww.vietcong.info/portal/images/ranks/Member_of_the_Month1011.pngwww.vietcong.info/portal/images/ranks/Member_of_the_Month_6.png
  x 1
 
martyr
Intruder wrote:
...it seems that the more I delete objects, the more we can kill bots before the game is crashing when we rejoin.

So strange. We agree (I think) that it's not a result of the number of objects so why does deleting objects have this effect? Maybe it's a sign that one bug is affecting another bug but we only see the bug that crashes the game?


Intruder wrote:
I never tested in multiplayer through the Editor and I'm not even sure it's possible... Is it? But "alone", the Editor is not showing any error message(s)...

It is possible... Open the Editor. If you open a SCO file, it will be very slow to load your map. So don't load a SCO file. From the menus at the top, choose Game > Game Menu.
Then make a LAN or Internet map test as normal. The Editor sometimes displays an error message or a clue of some kind after a crash. Testing in the game does not display anything when crash happens and normal Editor testing is not 'real' MP test - more like a preview. I would love to know if you see an error or something! (I use the Dev Editor by the way)


Intruder wrote:
I'm thinking to import all my Intrusion scripts in a map I know everything is working correctly... And the same, the "other way" by importing all the scripts from a map that I know is working correctly into my Intrusion map...

Fantastic idea! Use vanilla map duplicate and apply your Intrusion scripts. Perfect way to get some simple answers. And the other way around is also useful if the first test gives no answers.


By the way, I suggested the Discovery mode test because I wanted to see if the crash only happens when bots are killed or when any player is killed.


Good luck with your further testing.
If I think of anything else, I will post again.
Signature________________________________________________________________________

"From every kill grow, from every death learn"
  x 1
 
http://www.clanofminh.vcclan.net/minh/
GONZO
The number of objects in a scene is limited. It won't be a problem. I am confident that the problem will be the complexity of the terrain, which is loaded into memory as soon as you connect. To prevent similar complications, I divided the terrain into 28 individual objects in the G_Underground map. For each section, I centered the pivot point and set the clipping distance. Finally, I did not use the standard terrain_xxxxx.bes, but these parts. You can take a look. When the map is loaded into the graphics memory at startup, it only loads as much as set in clip dist. I think this will solve your problem. Of course, your map will not need to cut the terrain into so many parts, it is extensive across the board. Say a 2x2 or 3x3 array? Try it.
SignatureVisit my website:
https://vietcongl...press.com/


or my forum:
https://vietcongl...orums.net/


vietconglab.files.wordpress.com/2023/08/vietcong_lab_small.png
  x 1
 
apfelbaum
if your map is that big (although i doubt it is bigger than 20x20km, but it could be placed far away from world origin) you might have an arithmetic overflow somewhere? did you check your scripts for that?
I mean, Ariane 5 crashed because of it, why not vietcong.
Edited by apfelbaum on 05-12-2019 09:39
  x 1  x 1
 
Intruder
martyr wrote:

Intruder wrote:
...it seems that the more I delete objects, the more we can kill bots before the game is crashing when we rejoin.

So strange. We agree (I think) that it's not a result of the number of objects so why does deleting objects have this effect? Maybe it's a sign that one bug is affecting another bug but we only see the bug that crashes the game?

I have no idea but it's what happens! With the "full objects", the game will crash for sure at each attempt but once I delete "some objects", the game will load the map after 1 or 2 kills without to crash... It explains why we have been "fooled" by the presence of that bug for such a long time before to notice it!

martyr wrote:

Intruder wrote:
I never tested in multiplayer through the Editor and I'm not even sure it's possible... Is it? But "alone", the Editor is not showing any error message(s)...

It is possible... Open the Editor. If you open a SCO file, it will be very slow to load your map. So don't load a SCO file. From the menus at the top, choose Game > Game Menu.
Then make a LAN or Internet map test as normal. The Editor sometimes displays an error message or a clue of some kind after a crash. Testing in the game does not display anything when crash happens and normal Editor testing is not 'real' MP test - more like a preview. I would love to know if you see an error or something! (I use the Dev Editor by the way)

Oh, I didn't know it was possible! I've learned something new... Thanks for the trick! Smile
So, I tried and no, I have no error message from the Editor...

martyr wrote:

Intruder wrote:
I'm thinking to import all my Intrusion scripts in a map I know everything is working correctly... And the same, the "other way" by importing all the scripts from a map that I know is working correctly into my Intrusion map...

Fantastic idea! Use vanilla map duplicate and apply your Intrusion scripts. Perfect way to get some simple answers. And the other way around is also useful if the first test gives no answers.

I'm not sure it will work of course but I need to try each option to try to fix that bug anyway...

martyr wrote:

By the way, I suggested the Discovery mode test because I wanted to see if the crash only happens when bots are killed or when any player is killed.

I haven't tried during my last session yet because we need to be at least 3 players to avoid that "the dead one" respawn just after "the rejoiner" leave the server.

martyr wrote:

Good luck with your further testing.
If I think of anything else, I will post again.

Thanks! Smile



Intruder
Signaturewww.vietcong.info/portal/images/ranks/Member_of_the_Month1011.pngwww.vietcong.info/portal/images/ranks/Member_of_the_Month_6.png
 
Intruder
GONZO wrote:

The number of objects in a scene is limited. It won't be a problem. I am confident that the problem will be the complexity of the terrain, which is loaded into memory as soon as you connect. To prevent similar complications, I divided the terrain into 28 individual objects in the G_Underground map. For each section, I centered the pivot point and set the clipping distance. Finally, I did not use the standard terrain_xxxxx.bes, but these parts. You can take a look. When the map is loaded into the graphics memory at startup, it only loads as much as set in clip dist. I think this will solve your problem. Of course, your map will not need to cut the terrain into so many parts, it is extensive across the board. Say a 2x2 or 3x3 array? Try it.

I remembered you already advised me that option in the past but I still haven't tried... Frown
It would be strange however because the terrain is not that complicate and the map "as it is" is not crashing in the Discovery mode for example but like a friend told me, maybe the bug was/is present for a long time but not "active" until other "factors" are added (like the presence of the bots)...
I'm wondering if the big terrains from Pterodon are all split in pieces also... If they are, maybe they made it for a reason (like the bug I have with Intrusion)... I should check that!

Anyway, because you succeeded to fix the same kind of bug with the solution you explained, it's an option I really have to consider and try!

I really have to re-install my 3dsmax now! lol

Thanks for the advise! Smile



Intruder
Edited by Intruder on 05-12-2019 18:33
Signaturewww.vietcong.info/portal/images/ranks/Member_of_the_Month1011.pngwww.vietcong.info/portal/images/ranks/Member_of_the_Month_6.png
  x 1
 
Intruder
apfelbaum wrote:

if your map is that big (although i doubt it is bigger than 20x20km, but it could be placed far away from world origin) you might have an arithmetic overflow somewhere? did you check your scripts for that?
I mean, Ariane 5 crashed because of it, why not vietcong.

Hmmm... The terrain is about 400m x 300m if I'm not wrong and it is centered at 0 - 0 - 0 . So I'm pretty sure we can forget that option... Wink



Intruder
Signaturewww.vietcong.info/portal/images/ranks/Member_of_the_Month1011.pngwww.vietcong.info/portal/images/ranks/Member_of_the_Month_6.png
  x 1
 
GONZO
What I know, many Pterodon's terrains are splited to parts. Often to subentities from main terrain but are. Look for example from RADIORELAY.BES, this cutting is about 300x300m (hill) and you can see 9 terrain objects but ofcourse in one BES file as subentities.
media1.webgarden.cz/images/media1:5de9ffade22d8.jpg/RADIORELAY.jpg
So I think, it is all about what is loaded at startup.
Edited by GONZO on 06-12-2019 09:15
SignatureVisit my website:
https://vietcongl...press.com/


or my forum:
https://vietcongl...orums.net/


vietconglab.files.wordpress.com/2023/08/vietcong_lab_small.png
  x 1  x 1
 
martyr
I'm glad you tested in the editor/game. Shame there was no message or clues.

It seems that you still have more testing to try - I look forward to reading your next update!

In particular, I am very curious about your results when you test GONZO's idea. It seems very logical!
Signature________________________________________________________________________

"From every kill grow, from every death learn"
  x 1
 
http://www.clanofminh.vcclan.net/minh/
Jump to Forum:
Login
Username

Password



Not a member yet?
Click here to register.

Forgotten your password?
Request a new one here.
Render time: 0.73 seconds - 107 Queries 4,860,386 unique visits