Connection Lost: A Theory (Works for me so far)

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Tactical_Marksman

    #1

    Connection Lost: A Theory (Works for me so far)

    I think I found a fix. Please don't flame me if it doesn't work for you or my 'theory' behind it doesn't make sense, I may have started out as a Computer Science major but I switched to Psychology. DO let us know if this helps you one way or the other so we will know to sticky it or let it die.

    1) The Problem:
    Like many others who own BF2 and visit these boards for help, I recently developed a problem (out of the blue) staying in servers. I'll be able to start the game, populate the server list, join a server, but ten to twenty minutes later be kicked to the server list with a "There is a Problem with your Connection" warning followed by "Connection has been Lost." Also, if I try to repopulate the server list I get nothing. If I exit the game and try to load a webpage I get nothing. My cable modem will indicate that there IS a connection and there IS throughput, but windows will give me an additional warning that "There is little to no connectivity on this connection."

    My Basic setup? P4 2.8ghz with 1gig of DDR RAM, Nvidia Geforce 6800 OC, tried both onboard and PCI ethernet connections as well as disabling the unused one in the bios. My ISP is a broadband service, no router.

    2) The Theory:
    Someone in the many, many threads on this problem mentioned that it must be a game/pb issue as everytime it occured they pulled up the console to find a query sent to even-balance. Many have recommended manually updating Punkbuster (which I do) but it seems to have only temporary results. Some have even found that they don't have this problem when joining non-ranked, non-PB servers. This got me wondering... Why would all of us with kick @ss new PCs, many built from scratch by hand, have connection problems while running BF2?

    Ok, here it is, cracked-pot or not... BF2 was DESIGNED to run in such a way as to monopolize your system resources. It places CPU priority on generating the graphic-intense environment and all related physics computations. WE designed our systems to run graphics intensive games, with our systems software-optimized to GIVE CPU priority to the game itself. My theory is that BF2, and the way many of us are running it, gives the game itself TOO high a priority on our system resources, resulting in background processes and services being given sporatic or limited time... like punkbuster.

    Think about it, if you look at BF2's code (at least as far as the Python interface goes) it looks very modular. Punkbuster is a separate program run side-by-side with BF2, just like with other games. However BF2 is a mother-F*cking MONSTER who uses over 1.5 GIGABITES of system memory (RAM or page/swap file) on many people's PCs. I believe that BF2 Develeopers poorly coded the game and it's Punkbuster plug-in so that it is given, as a default, a LOW CPU priority, making your computer view PB as just a background service. As a result, when playing, any PB request gets put in a long, LONG Que that is constantly updated with more 'important' requests. Noticable effect? The PB querry is never resolved, even when retaining a connection to a game server depends on it. Even after you shutdown the game, it is STILL the highest priority internet querry and keeps your connection locked cold for a couple of minutes until the game is purged from temporary memory completely.

    3) My Solution:
    First, manually update punkbuster using PBWeb.exe, which is downloadable from evenbalance.com. Second, reboot. Give your system a fresh start and a chance to clear it's caches/memory. Third, download "Smartclose" and use it to close all background processes while running the game. Fourth, if you're running Windows XP do the following:

    -Click Start
    -Click "Settings" > "Control Panel" > "System"
    -Now, Click the "Advanced" tab, then on the "Performance" button
    -Click the "Advanced" tab in the new box that popped-up and change the first two radio-button settings from "Programs" to either "Background services" or "System Cache".

    This makes windows prioritize background processes HIGHER than programs (such as the game BF2) in terms of Memory and CPU access. Sound insane? Yes, it does. But last night I played BF2 for four straight hours after doing this little trick.

    4) Epilogue: The results
    I did notice some brief periods of lag or latency, but only occationally and when some intense stuff was going on ingame. My guess is that these would have been times I'd have been disconnected before. Otherwise, the game runs beautifully.

    If you followed step 3 in my fix list, you don't HAVE anything else running in the background for BF2 to be prioritized below. You've simply told the computer to run any requests sent by sub-components or background processes created by BF2 BEFORE data required by the executable itself so performance drops should be low. Most people have system specs superior to mine anyway, so I imagine they won't notice any change (Except that the game will work.

    As I said, it's been a long time since I have been a serious techno-geek, and I'm tempted to say that this is all coincidence and superstition, but damn it, it WORKS for me. I hope it works for you too. If not, well, please let me know but be kind. Afterall, I've not told you to do anything to your PC that isn't instantly reversible and I'm just trying to help out my friends in the Total BF2 community. We're all in the same boat, and we all know EA isn't going to fix the problem.
  • kewl e-man

    #2
    nice i will try tht. even though i get problem wit ur connection once every 2 months. lol.

    Comment

    • Nomad2k3

      #3
      :) ..nice post proffessor :laugh: :laugh:

      Comment

      • Gunny Highway

        #4
        The settings Background Services(cpu) and System Cache (memory) are the default settings for a Windows Server 2003 (or older versions).

        Couldn't you alternatively start BF2 via start /belownormal bf2.exe and this would bring the the priority to belownormal as a start value and thus other services and processes would get more CPU time allocation, but without you having to set the system wide settings like you suggest above and end result would be similar??

        Just a thought, to test this at your end just make a .bat or .cmd file and place the line in the file: start /belownormal bf2.exe and place it the same dir as the bf2.exe and execute it from there or make a shortcut to it and launch via it.
        You can then tell in the Processes tab of Task Manager if it has set the priority correctly.

        Testing this for me would probably be fruitless I think as I have 2GB RAM.

        Also I remember a while back some systems using ATI couldn't use the System Cache settings and would get Delayed Write Failure and thus bad things would happen like registry not being written or MFT not being written or just 'regular' files not being written to harddrive, don't know if this has been fixed but it most likely has.

        Comment

        • Tactical_Marksman

          #5
          Ah, an excellent idea, thank you. As I said, I'm behind the times in my personal knowledge base. Thanks for the suggestion, I'll try it out!

          Does my general theory on WHY this happens seem reasonable? I still feel like it's strange, but it makes sense in it's own way. Especially since altering the system priorities works.

          Comment

          • Gunny Highway

            #6
            Originally posted by Tactical_Marksman
            Ah, an excellent idea, thank you. As I said, I'm behind the times in my personal knowledge base. Thanks for the suggestion, I'll try it out!

            Does my general theory on WHY this happens seem reasonable? I still feel like it's strange, but it makes sense in it's own way. Especially since altering the system priorities works.
            You are not behind in knowledge or you wouldn't have thought about it

            Not sure what I think but if, and I stress if, any application hogs too much CPU time and resources it will take them from other process, e.g. setting a process to Real Time, as you never should, and the process goes into somekind of loop it will makes system very unstable/unresponsive and other processes fail or in other becomes unuseable.

            Experimenting wont hurt and as you say in topic title, works for me, is always good to take into account because all systems are different and what works on one doesn't necessary work on another.

            It could be on a low-end system, and I'm talking BF2 low-end , that it releaves other background critical processes. However I'm not sure PB is so much out of the loop from rest of the core files in BF2 and would have lower CPU time, as the I think it is executed from within the bf2.exe.
            A PB client is tailored for each game to interact with it better I presume, so my guess would be, without having any knowledge of the fact, that it runs at same 'level' as the rest of the game, and the binary just taps into its resources, I'm not ruling out you are right, just my guess. Easier to tell if ppl tried it, preferbly on low-end system I guess, and reported back.

            Comment

            • Tactical_Marksman

              #7
              UPDATE: I've created a batch file as Gunny recommended and so far I'm getting the same, positive results as when I'd changed all my windows settings. I'd definitely go with the process Gunny described as it doesn't cripple your system's performance overall, just fixes the connection issues with BF2.

              Comment

              • warlord

                #8
                nice... damn EAs crappy coding doug..

                Comment

                • imported_FAST

                  #9
                  How do I create the batch files...Mabe some one could put a walk through..Like where do I put in the commands?

                  Comment

                  • Tactical_Marksman

                    #10
                    Sure, just right lick on your desktop and select "New." In the drop down menu select "Text Document." A new, blank text document will be created on your desktop.
                    Open it.

                    Copy and paste the following into the text document:
                    start /belownormal bf2.exe

                    That's all you need. Click save. Now, right click on the document again and select "Rename." Name it anything you want, but be sure it has a .bat extention. If you have 'hide file extensions enabled' it'll still end up being a text document, so be sure to turn that off (See below). Mine is called BF2low.bat. Now, place the file in the Battlefield 2 main directory (the one where the bf2.exe file is) and you're good to go. I also created a shortcut for it (by right clicking on the .bat file and selecting "Create Shortcut") and relocated it to my desktop. Now all I have to do is click my BF2Low.bat shortcut instead of the Battlefield 2 icon and I'm good to go.

                    To disable the hide file-extensions for known file types feature (whose reason for existing escapes me) open Explorer, click "Tools" then "Folder Options." In the box that pops-up, click the "View" tab to see the list of features. De-select the box next to "Hide file extensions for known file types" which is just below the file-folder icon for "Hidden Files and Folders" (which I also have set to display).

                    Comment

                    • x2pixel

                      #11
                      Originally posted by Tactical_Marksman
                      Mine is called BF2low.bat. .
                      that's the same name as I chose for mine, spooky :)

                      yes I tried this, it seems to work, no random disconnects, playing for about 4 hours.

                      The first game was mega smooth aswell, right from the start, where usually I have to wait for a minute for the stutter to smooth out.

                      Having said that though in later maps some of the initial stutter came back at the beginning

                      so overall, I can't say it makes the game perfect but this fix does seem to help.

                      Thanks Tactical and Gunny :)

                      Comment

                      • SerbSniper1

                        #12
                        Another guy said to lower the agp and pci latency and that would work. Videos cards are something like 248 and he said to lower to 64 or 32. Is this similar to what your doing?

                        Here is the thread.

                        Comment

                        • kewl e-man

                          #13
                          well i installed smartclose and now i dont have lag in the beginning. amazing. now my fps went 10 times higher. i get average 89-99 fps even during arty strikes.

                          Comment

                          • agentbad

                            #14
                            Originally posted by SerbSniper1
                            Another guy said to lower the agp and pci latency and that would work. Videos cards are something like 248 and he said to lower to 64 or 32. Is this similar to what your doing?

                            Here is the thread.

                            http://forums.totalbf2.com/showthread.php?t=23071
                            no this is different but does work. i tested all 3 settings and found that in 3dmark05 the best scores were with it set to 64. i use atitool to set it auto on startup.

                            Comment

                            • Tactical_Marksman

                              #15
                              I'm really glad this is working for you guys, thanks for posting.

                              Anybody with this problem try this fix and have it NOT work? If this is the kill-all solution I might send it to EA for them to add to their knowledge base. Because, you know, it'll probably be another year before they fix it themselves.

                              Comment

                              Working...