Jump to content

Turn custom map content from vehicles to objects


Recommended Posts

Mate this is great! That's a gigantic reduction in file size and it'll hopefully show good results on a live server. If it does show good performance differences on a live server you should definitely put this in it's own thread, I'm damn sure it'll be a big asset to many other servers.

Maybe it'd be worth it to NIL the allObjects variable at the end of the PV handler, may as well keep the array out of memory on the server until it's needed.

I also noticed you comment about how count + _i out performs forEach + _forEachIndex, is this true? I've never even thought to test them for any differences, usually just heading straight for the forEach format.

 

Just had a thought, how does this cope with high speed flight in aircraft, around 200+ speed?

 

I could check if speed > 125 and shorten the update interval.

 

I knew that count outperformed foreach, but didnt know it outperformed with a manual counter attached. But it does, test it yourself to see the difference.

 

Test findings after placing this on our live server

  • Better server FPS! Managed to get a decent server fps boost while the server was under heavy load (30+ players). With AI missions on didnt go below 10fps, when usually we go to 8/9fps (and our missions have a treshold of 10fps). So before 30+ players no missions = < 10fps | After 30+ players + missions = > 10fps. Client fps does not seem to be suffering.
  • Not loading: Sometimes the code randomly doesn't load, i tried fixing that with adding a while loop that keeps going until !isNil "allObjects", but have to debug more cause it caused the server to become unstable.
  • Loot: Need to rethink this part, loot gets deleted when the building deletes so people could stay relogging to keep getting fresh loot. The best i can think of now is making objects that spawn loot server side.
  • Logging off inside upper levels of buildings: Because the buildings load in after your character loads in your character gets TP'ed to floor level which sometimes makes you spawn inside a building when you logged off on top level. Possible fixes are reworking some part of the code inside server_playersetup.sqf

@f3uck 

 

will you try to add this to the github files for future releases?

 

=]

 

Probably not. Epoch devs seem no longer interested in A2 Epoch, not wasting my time on pull request.

Link to comment
Share on other sites

Ah I never even gave a thought to loot or logging in and out. Damn.

As for the random non-loading of code, maybe try switch out the publicVariableClient to a publicVariable and see if that makes any difference. In the past, for me, I've had issues with the server correctly finding a player's client ID, so maybe a standard PV would be easier. That'd also remove the need for a PV eventHandler.

For the loot I think the only proper way, that won't drown client computers, is to keep the lootable buildings serverside. It does seem like a step back though but I guess there isn't much option for it.

The logging issue is a whole other kettle of fish. Sounds like you'd need to find a way to halt the player spawn procedure until the buildings are loaded in. But then you wouldn't be able to use player distance _x, but I guess for the first load you could just use the player's spawn position instead.

 

That FPS gain is pretty damn nice though! ~2 extra server ticks is a decent gain, especially for only around a day or two of work.

Link to comment
Share on other sites

Hmm Interesting, i'll start logging player id server side and see if that is what might be causing the issue.

 

Actually it's much more then 2fps considering the load of the mission system. If i had to do an estimate i think it's about a 25-35% performance gain.

 

--

 

Edit: Fixed the loading issue, turned out that this happened when the player requested a public variable while the eventhandler wasn't initialized yet. What i've done to resolve this is add a init_done = true; publiceventhandler "init_done"; to the bottom of the file that holds them and add a waitUntil {!isNil "init_done"}; to the init.sqf before any of the isDedicated stuff.

 

Edit 2: Was a good idea to diag_log the player inside the publicvariable cause when a player has no character yet "player" returns <nullobject>, fixed that by also waiting for waitUnti{isNull player}; Thanks CordIAsis!

Edited by f3cuk
Link to comment
Share on other sites

Little update on this. Has been running steadily on our server for about a week now and managed to get most of the teething out. The loot issue has not been resolved yet but after I have managed to identify the objects that contain loot spawn I'll move them server side again. All in all pretty content with the performance boost we got :)

Working on expanding this with the Epoch buildables which should really give a huge performance boost to the server. Pretty excited about this, will let you know when i got some coding done.

Link to comment
Share on other sites

Okay so got the initial code working. What i did so far is first setup an array with object classnames that i want to spawn local, which is the exact same list of classnames of objects that are immune to damage on our server.

 

server_monitor.sqf

_cpcimmune  = ["WoodFloor_DZ","WoodFloorHalf_DZ","WoodFloorQuarter_DZ","WoodLargeWallDoor_DZ","WoodLargeWallWin_DZ","WoodLargeWall_DZ","WoodSmallWallDoor_DZ","WoodSmallWallWin_DZ","Land_DZE_WoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_GarageWoodDoor","WoodLadder_DZ","WoodStairsSans_DZ","WoodStairs_DZ","WoodSmallWall_DZ","WoodSmallWallThird_DZ","CinderWallHalf_DZ","CinderWall_DZ","CinderWallDoorway_DZ","CinderWallDoor_DZ","Land_DZE_LargeWoodDoor","MetalFloor_DZ","Land_HBarrier1_DZ","Land_HBarrier3_DZ","Land_HBarrier5_DZ","FuelPump_DZ","CinderWallDoor_DZ"]

Then inside the forEach (_BuildingQueue + _objectQueue); loop i added this on top.

{
        _idKey        = _x select 1;
        _type        = _x select 2;
        _ownerID    = _x select 3;
        _worldspace    = _x select 4;
        _inventory    = _x select 5;
        _hitPoints    = _x select 6;
        _fuel        = _x select 7;
        _damage        = _x select 8;
        _dir        = 0;
        _pos        = [0,0,0];
        _wsDone        = false;
        _skip        = false;

        if(_type in _cpcimmune) then {
            localObjects set[count localObjects, [_type,_ownerID,_worldspace,_damage]];
            _skip = true;
        };

        if(!_skip) then {
              // continue with spawning server-side items

Then clientside to spawn in the objects..

[] spawn {
    
    private ["_type","_ownerID","_worldspace","_damage","_dir","_pos","_ownerPUID"];

    waitUntil {sleep .5; !isNil "localObjects"};

    {
        _type        = _x select 0;
        _ownerID    = _x select 1;
        _worldspace    = _x select 2;
        _damage        = _x select 3;
        _dir        = 0;
        _pos        = [0,0,0];

        if (count _worldspace >= 2) then
        {
            if ((typeName (_worldspace select 0)) == "STRING") then {
                _worldspace set [0, call compile (_worldspace select 0)];
                _worldspace set [1, call compile (_worldspace select 1)];
            };

            _dir = _worldspace select 0;
            
            if (count (_worldspace select 1) == 3) then {
                _pos = _worldspace select 1;
            };
        };

        if (count _worldspace < 3) then {
            _worldspace set [count _worldspace, "0"];
        };

        _ownerPUID = _worldspace select 2;

        if (_damage < 1) then {
            _object = _type createVehicleLocal [0,0,0];
            _object setVariable ["lastUpdate",time];
            _object setVariable ["ObjectID", _idKey];
            _object setVariable ["OwnerPUID", _ownerPUID];
            _object setVariable ["CharacterID", _ownerID];
            _object setdir _dir;
            _object setposATL _pos;
            _object setDamage _damage;
            _object addEventHandler ["HandleDamage", {false}];
            _object enableSimulation false;

            if ((typeOf _object) in dayz_allowedObjects) then {
                _object setVariable ["OEMPos",_pos];
            };

            // TODO: Build a client-monitor that keeps track of objects that were removed
        };
    } count localObjects;

};
Link to comment
Share on other sites

@CordlAsis: Send you my latest files in PM. Some fixes already implemented there that I havent posted yet.

 

@Cen / @Markokil321: Don't think so. This is just some experimental stuff that I'm not willing to give any support on.

Link to comment
Share on other sites

@CordlAsis: Send you my latest files in PM. Some fixes already implemented there that I havent posted yet.

 

@Cen / @Markokil321: Don't think so. This is just some experimental stuff that I'm not willing to give any support on.

 

You may not need to give any support, but some of us just need a short text where we gonna put what, like i'm struggling only on where exactly call the clientside part from and just curious about one { in server monitor but that should i can figure out self :)

Link to comment
Share on other sites

You may not need to give any support, but some of us just need a short text where we gonna put what, like i'm struggling only on where exactly call the clientside part from and just curious about one { in server monitor but that should i can figure out self :)

 

With the risk of sounding like an ass - which is definitely not my intention - if you cannot figure that out, you probably shouldn't be trying to add this to your server. If i make this into a tutorial and people fail to get it working, they'll come to me asking for help and I'll feel obliged to give them support, i'd rather not spend my time on support.

 

Furthermore none of the code posted by me in this thread is ready to be used on a live server. A lot of stuff, like security for example, has not been thought through and it needs a lot more field testing before it can be deemed stable or even usable.

 

---

 

Our live server now running a restart cycle with the latest code (epoch indestructible buildables handled locally).

 

So far so good, although no missions yet.

19:53:22 "DEBUG FPS : 46.2428 OBJECTS: 2375 : PLAYERS: 20"
19:54:22 "DEBUG FPS : 47.0588 OBJECTS: 2416 : PLAYERS: 21"
19:55:22 "DEBUG FPS : 46.1095 OBJECTS: 2455 : PLAYERS: 21"
19:56:22 "DEBUG FPS : 48.3384 OBJECTS: 2486 : PLAYERS: 21"
19:57:22 "DEBUG FPS : 46.7836 OBJECTS: 2227 : PLAYERS: 21"
19:58:22 "DEBUG FPS : 46.9208 OBJECTS: 2304 : PLAYERS: 22"
19:59:22 "DEBUG FPS : 43.0108 OBJECTS: 2370 : PLAYERS: 22"
20:00:22 "DEBUG FPS : 44.0771 OBJECTS: 2385 : PLAYERS: 21"
20:01:22 "DEBUG FPS : 40.9207 OBJECTS: 2462 : PLAYERS: 21"
20:02:22 "DEBUG FPS : 41.2371 OBJECTS: 2553 : PLAYERS: 22"
20:03:22 "DEBUG FPS : 39.1198 OBJECTS: 2584 : PLAYERS: 22"
20:04:22 "DEBUG FPS : 43.3604 OBJECTS: 2545 : PLAYERS: 20"
20:05:22 "DEBUG FPS : 44.1989 OBJECTS: 2571 : PLAYERS: 21"
20:06:22 "DEBUG FPS : 45.0704 OBJECTS: 2507 : PLAYERS: 24"
20:07:22 "DEBUG FPS : 41.6667 OBJECTS: 2437 : PLAYERS: 23"
20:08:22 "DEBUG FPS : 39.0244 OBJECTS: 2420 : PLAYERS: 23"
20:09:22 "DEBUG FPS : 37.123 OBJECTS: 2496 : PLAYERS: 23"
20:10:22 "DEBUG FPS : 39.312 OBJECTS: 2479 : PLAYERS: 23"
20:11:22 "DEBUG FPS : 37.5587 OBJECTS: 2488 : PLAYERS: 23"
20:12:22 "DEBUG FPS : 35.0109 OBJECTS: 2528 : PLAYERS: 23"
20:13:22 "DEBUG FPS : 39.312 OBJECTS: 2462 : PLAYERS: 23"
20:14:22 "DEBUG FPS : 38.9294 OBJECTS: 2420 : PLAYERS: 23"
20:15:22 "DEBUG FPS : 39.0244 OBJECTS: 2361 : PLAYERS: 23"
20:16:22 "DEBUG FPS : 36.3636 OBJECTS: 2366 : PLAYERS: 23"
20:17:23 "DEBUG FPS : 36.7816 OBJECTS: 2391 : PLAYERS: 24"
20:18:23 "DEBUG FPS : 35.0877 OBJECTS: 2434 : PLAYERS: 25"
20:19:23 "DEBUG FPS : 35.7143 OBJECTS: 2417 : PLAYERS: 26"
20:20:23 "DEBUG FPS : 36.036 OBJECTS: 2413 : PLAYERS: 26"
20:21:23 "DEBUG FPS : 34.0426 OBJECTS: 2357 : PLAYERS: 26"
20:22:23 "DEBUG FPS : 31.8725 OBJECTS: 2429 : PLAYERS: 26"
20:23:23 "DEBUG FPS : 33.264 OBJECTS: 2448 : PLAYERS: 26"
20:24:23 "DEBUG FPS : 31.5582 OBJECTS: 2463 : PLAYERS: 27"
20:25:23 "DEBUG FPS : 32.8542 OBJECTS: 2494 : PLAYERS: 27"
20:26:23 "DEBUG FPS : 33.1263 OBJECTS: 2456 : PLAYERS: 27"
20:27:24 "DEBUG FPS : 31.4342 OBJECTS: 2449 : PLAYERS: 28"
20:28:24 "DEBUG FPS : 30.7102 OBJECTS: 2426 : PLAYERS: 29"
20:29:24 "DEBUG FPS : 29.5203 OBJECTS: 2487 : PLAYERS: 29"
20:30:24 "DEBUG FPS : 28.4698 OBJECTS: 2448 : PLAYERS: 28"
20:31:25 "DEBUG FPS : 28.3186 OBJECTS: 2448 : PLAYERS: 28"
20:32:25 "DEBUG FPS : 28.169 OBJECTS: 2459 : PLAYERS: 28"
20:33:25 "DEBUG FPS : 30.7102 OBJECTS: 2424 : PLAYERS: 28"
20:34:25 "DEBUG FPS : 32.0641 OBJECTS: 2356 : PLAYERS: 29"
20:35:25 "DEBUG FPS : 31.3112 OBJECTS: 2412 : PLAYERS: 29"
20:36:25 "DEBUG FPS : 29.9625 OBJECTS: 2437 : PLAYERS: 29"
20:37:25 "DEBUG FPS : 28.4192 OBJECTS: 2461 : PLAYERS: 28"
20:38:26 "DEBUG FPS : 28.4698 OBJECTS: 2519 : PLAYERS: 28"
20:39:26 "DEBUG FPS : 29.9065 OBJECTS: 2562 : PLAYERS: 28"
20:40:26 "DEBUG FPS : 27.7778 OBJECTS: 2526 : PLAYERS: 28"
20:41:26 "DEBUG FPS : 28.2686 OBJECTS: 2523 : PLAYERS: 28"
20:42:26 "DEBUG FPS : 28.6738 OBJECTS: 2583 : PLAYERS: 29"
20:43:26 "DEBUG FPS : 28.6738 OBJECTS: 2592 : PLAYERS: 30"
20:44:26 "DEBUG FPS : 27.6339 OBJECTS: 2627 : PLAYERS: 30"
20:45:27 "DEBUG FPS : 25.5183 OBJECTS: 2664 : PLAYERS: 30"
20:46:27 "DEBUG FPS : 26.2295 OBJECTS: 2667 : PLAYERS: 30"
20:47:27 "DEBUG FPS : 25.0784 OBJECTS: 2704 : PLAYERS: 30"
20:48:27 "DEBUG FPS : 22.792 OBJECTS: 2707 : PLAYERS: 30"
20:49:27 "DEBUG FPS : 25.3968 OBJECTS: 2701 : PLAYERS: 30"
20:50:27 "DEBUG FPS : 24.9221 OBJECTS: 2667 : PLAYERS: 30"
20:51:27 "DEBUG FPS : 25.1968 OBJECTS: 2669 : PLAYERS: 30"
20:52:27 "DEBUG FPS : 25.1968 OBJECTS: 2699 : PLAYERS: 30"
20:53:28 "DEBUG FPS : 25.6 OBJECTS: 2743 : PLAYERS: 30"
20:54:28 "DEBUG FPS : 26.3158 OBJECTS: 2754 : PLAYERS: 31"
20:55:28 "DEBUG FPS : 26.5781 OBJECTS: 2731 : PLAYERS: 31"
20:56:29 "DEBUG FPS : 25.6822 OBJECTS: 2776 : PLAYERS: 30"
20:57:29 "DEBUG FPS : 27.027 OBJECTS: 2729 : PLAYERS: 30"
20:58:29 "DEBUG FPS : 26.3591 OBJECTS: 2668 : PLAYERS: 30"
20:59:29 "DEBUG FPS : 28.5205 OBJECTS: 2681 : PLAYERS: 29"
21:00:29 "DEBUG FPS : 23.8095 OBJECTS: 2651 : PLAYERS: 29"
21:01:29 "DEBUG FPS : 27.3973 OBJECTS: 2577 : PLAYERS: 29"
21:02:29 "DEBUG FPS : 28.0702 OBJECTS: 2570 : PLAYERS: 30"
21:03:30 "DEBUG FPS : 27.1186 OBJECTS: 2596 : PLAYERS: 31"
21:04:30 "DEBUG FPS : 25.0784 OBJECTS: 2629 : PLAYERS: 31"
21:05:30 "DEBUG FPS : 23.7389 OBJECTS: 2798 : PLAYERS: 30"
21:06:31 "DEBUG FPS : 24.6533 OBJECTS: 2767 : PLAYERS: 30"
21:07:31 "DEBUG FPS : 23.1884 OBJECTS: 2890 : PLAYERS: 30"
21:08:31 "DEBUG FPS : 20.8877 OBJECTS: 2949 : PLAYERS: 31"
21:09:32 "DEBUG FPS : 23.3236 OBJECTS: 2948 : PLAYERS: 32"
21:10:32 "DEBUG FPS : 21.3618 OBJECTS: 2893 : PLAYERS: 33"
21:11:34 "DEBUG FPS : 20.6718 OBJECTS: 2863 : PLAYERS: 33"
21:12:35 "DEBUG FPS : 21.1921 OBJECTS: 2841 : PLAYERS: 33"
21:13:35 "DEBUG FPS : 22.0994 OBJECTS: 2831 : PLAYERS: 33"
21:14:35 "DEBUG FPS : 21.4477 OBJECTS: 2858 : PLAYERS: 33"
21:15:35 "DEBUG FPS : 21.2202 OBJECTS: 2834 : PLAYERS: 33"
21:16:36 "DEBUG FPS : 20.7523 OBJECTS: 2912 : PLAYERS: 32"
21:17:37 "DEBUG FPS : 21.2202 OBJECTS: 2886 : PLAYERS: 32"
21:18:39 "DEBUG FPS : 21.4765 OBJECTS: 2876 : PLAYERS: 32"
21:19:40 "DEBUG FPS : 21.1921 OBJECTS: 2880 : PLAYERS: 32"
21:20:41 "DEBUG FPS : 22.13 OBJECTS: 2887 : PLAYERS: 32"
21:21:42 "DEBUG FPS : 21.5343 OBJECTS: 2877 : PLAYERS: 32"
21:22:44 "DEBUG FPS : 22.1607 OBJECTS: 2859 : PLAYERS: 32"
21:23:45 "DEBUG FPS : 21.7096 OBJECTS: 2858 : PLAYERS: 33"
21:24:45 "DEBUG FPS : 20.4082 OBJECTS: 2849 : PLAYERS: 33"
21:25:47 "DEBUG FPS : 22.5035 OBJECTS: 2871 : PLAYERS: 31"
21:26:48 "DEBUG FPS : 22.567 OBJECTS: 2870 : PLAYERS: 30"
21:27:48 "DEBUG FPS : 23.3577 OBJECTS: 2864 : PLAYERS: 30"
21:28:50 "DEBUG FPS : 24.2424 OBJECTS: 2803 : PLAYERS: 30"
21:29:50 "DEBUG FPS : 20.6986 OBJECTS: 2810 : PLAYERS: 30"
21:30:51 "DEBUG FPS : 22.2531 OBJECTS: 2728 : PLAYERS: 31"
21:31:53 "DEBUG FPS : 21.3049 OBJECTS: 2665 : PLAYERS: 32"
21:32:54 "DEBUG FPS : 20.6718 OBJECTS: 2667 : PLAYERS: 34"
21:33:55 "DEBUG FPS : 21.025 OBJECTS: 2657 : PLAYERS: 34"
21:34:55 "DEBUG FPS : 21.164 OBJECTS: 2709 : PLAYERS: 34"
21:35:57 "DEBUG FPS : 19.9005 OBJECTS: 2763 : PLAYERS: 33"
21:36:57 "DEBUG FPS : 23.4949 OBJECTS: 2783 : PLAYERS: 34"
21:37:57 "DEBUG FPS : 20.7254 OBJECTS: 2844 : PLAYERS: 34"
21:38:58 "DEBUG FPS : 20.4082 OBJECTS: 2865 : PLAYERS: 35"
21:40:00 "DEBUG FPS : 19.5599 OBJECTS: 2826 : PLAYERS: 35"
21:41:01 "DEBUG FPS : 19.7044 OBJECTS: 2759 : PLAYERS: 36"
21:42:02 "DEBUG FPS : 19.347 OBJECTS: 2731 : PLAYERS: 36"
21:43:03 "DEBUG FPS : 20.1258 OBJECTS: 2724 : PLAYERS: 36"
21:44:05 "DEBUG FPS : 20.3304 OBJECTS: 2676 : PLAYERS: 37"
21:45:06 "DEBUG FPS : 19.975 OBJECTS: 2701 : PLAYERS: 37"
21:46:09 "DEBUG FPS : 18.7354 OBJECTS: 2700 : PLAYERS: 37"
21:47:09 "DEBUG FPS : 20.4082 OBJECTS: 2683 : PLAYERS: 36"
21:48:11 "DEBUG FPS : 19.7531 OBJECTS: 2756 : PLAYERS: 35"
21:49:12 "DEBUG FPS : 20.8877 OBJECTS: 2650 : PLAYERS: 35"
21:50:13 "DEBUG FPS : 21.6216 OBJECTS: 2605 : PLAYERS: 35"
21:51:13 "DEBUG FPS : 21.5343 OBJECTS: 2628 : PLAYERS: 35"
21:52:14 "DEBUG FPS : 20.8062 OBJECTS: 2661 : PLAYERS: 35"
21:53:15 "DEBUG FPS : 20.1765 OBJECTS: 2660 : PLAYERS: 35"
21:54:16 "DEBUG FPS : 19.802 OBJECTS: 2685 : PLAYERS: 35"
21:55:17 "DEBUG FPS : 21.5343 OBJECTS: 2650 : PLAYERS: 34"
21:56:18 "DEBUG FPS : 20.9974 OBJECTS: 2655 : PLAYERS: 36"
21:57:19 "DEBUG FPS : 20.5656 OBJECTS: 2681 : PLAYERS: 36"
21:58:20 "DEBUG FPS : 20.0501 OBJECTS: 2711 : PLAYERS: 37"
21:59:23 "DEBUG FPS : 20 OBJECTS: 2711 : PLAYERS: 37"
22:00:23 "DEBUG FPS : 19.2539 OBJECTS: 2744 : PLAYERS: 38"
22:01:25 "DEBUG FPS : 16.4779 OBJECTS: 2867 : PLAYERS: 38"
22:02:26 "DEBUG FPS : 20.3822 OBJECTS: 2843 : PLAYERS: 34"
So far so good, happy with the FPS increase :)

Edits: More data

Edited by f3cuk
Link to comment
Share on other sites

If you want to convert other map add-ons. These might help you.

_vehicle_(\d+) = _this;\n
_vehicle_(\d+) = objNull;\n
e-(\d+)
\[([+-]?\d*\.\d+)(?![-+0-9\.]), ([+-]?\d*\.\d+)(?![-+0-9\.]), ([+-]?\d*\.\d+)(?![-+0-9\.])];
\[([+-]?\d*\.\d+)(?![-+0-9\.]), ([+-]?\d*\.\d+)(?![-+0-9\.]), 0];
\[([+-]?\d*\.\d+)(?![-+0-9\.]), ([+-]?\d*\.\d+)(?![-+0-9\.])];

if (true) then
{
};
 [], 0, "CAN_COLLIDE"];
_this = createVehicle 
_this setDir 
_this setPos
_this setVehicleInit "this setvectorup [0.1,0,0.01]";
_this setVehicleInit "this setvectorup [0,0,1]";

\n // takes a while
; => ;\n
],[ => ],0],[
],\[ => ],\n[

; => ],
 
Link to comment
Share on other sites

If you want to convert other map add-ons. These might help you.

 

 

 

Uhhhhh heheh too late :)

I used Utraedit, it has its own reg expressions.

Tried with Sublime...took me forever. Really give Ultraedit a try :)

 

Damn..i am back to 2fps T_T......i gotta do the HC.

Link to comment
Share on other sites

Uhhhhh heheh too late :)

I used Utraedit, it has its own reg expressions.

Tried with Sublime...took me forever. Really give Ultraedit a try :)

 

Damn..i am back to 2fps T_T......i gotta do the HC.

Have you got (partly) indestructible bases on your server?

Link to comment
Share on other sites

20:44:26 "DEBUG FPS : 27.6339 OBJECTS: 2627 : PLAYERS: 30"
20:45:27 "DEBUG FPS : 25.5183 OBJECTS: 2664 : PLAYERS: 30"
20:46:27 "DEBUG FPS : 26.2295 OBJECTS: 2667 : PLAYERS: 30"
20:47:27 "DEBUG FPS : 25.0784 OBJECTS: 2704 : PLAYERS: 30"
20:48:27 "DEBUG FPS : 22.792 OBJECTS: 2707 : PLAYERS: 30"
20:49:27 "DEBUG FPS : 25.3968 OBJECTS: 2701 : PLAYERS: 30"
20:50:27 "DEBUG FPS : 24.9221 OBJECTS: 2667 : PLAYERS: 30"
20:51:27 "DEBUG FPS : 25.1968 OBJECTS: 2669 : PLAYERS: 30"
20:52:27 "DEBUG FPS : 25.1968 OBJECTS: 2699 : PLAYERS: 30"
20:53:28 "DEBUG FPS : 25.6 OBJECTS: 2743 : PLAYERS: 30"
20:54:28 "DEBUG FPS : 26.3158 OBJECTS: 2754 : PLAYERS: 31"
20:55:28 "DEBUG FPS : 26.5781 OBJECTS: 2731 : PLAYERS: 31"
20:56:29 "DEBUG FPS : 25.6822 OBJECTS: 2776 : PLAYERS: 30"
20:57:29 "DEBUG FPS : 27.027 OBJECTS: 2729 : PLAYERS: 30"
20:58:29 "DEBUG FPS : 26.3591 OBJECTS: 2668 : PLAYERS: 30"
20:59:29 "DEBUG FPS : 28.5205 OBJECTS: 2681 : PLAYERS: 29"
21:00:29 "DEBUG FPS : 23.8095 OBJECTS: 2651 : PLAYERS: 29"
21:01:29 "DEBUG FPS : 27.3973 OBJECTS: 2577 : PLAYERS: 29"
21:02:29 "DEBUG FPS : 28.0702 OBJECTS: 2570 : PLAYERS: 30"
21:03:30 "DEBUG FPS : 27.1186 OBJECTS: 2596 : PLAYERS: 31"
21:04:30 "DEBUG FPS : 25.0784 OBJECTS: 2629 : PLAYERS: 31"

 

​Fuck me in the ass you get some high FPS with 30 people, at-least compared to me lol. I am always on ~48 FPS at server startup or if there's only one person ingame, but as soon as a couple more people start joining it quickly drops down into the 20's, 10's and then eventually even lower if there are more than 35-40 people connected.

I am certain it has a lot to do with the amount of buildings i am loading, and i'm still working to improve my basic.cfg. will look through this thread and attempt to try out your script.  :)

Link to comment
Share on other sites

Not sure how you only have 2400 objects after 2 hours... Either that's only counting loot or nobody builds on your server lol...

	Line 854: 20:18:52 "DEBUG FPS: 4.07021 OBJECTS: 14812 LOOTS 163: PLAYERS: 38"
	Line 1326: 20:25:30 "DEBUG FPS: 2.70316 OBJECTS: 15802 LOOTS 729: PLAYERS: 43"
	Line 1717: 20:34:03 "DEBUG FPS: 2.23933 OBJECTS: 15685 LOOTS 421: PLAYERS: 45"
	Line 2248: 20:43:10 "DEBUG FPS: 2.19419 OBJECTS: 16074 LOOTS 564: PLAYERS: 44"
	Line 2894: 20:52:31 "DEBUG FPS: 2.00879 OBJECTS: 16364 LOOTS 745: PLAYERS: 47"
	Line 3543: 21:02:51 "DEBUG FPS: 2.00426 OBJECTS: 16596 LOOTS 675: PLAYERS: 48"
	Line 4129: 21:12:47 "DEBUG FPS: 1.95217 OBJECTS: 16832 LOOTS 780: PLAYERS: 44"
Link to comment
Share on other sites

We went from 2375 (number consists of vehicles + objects - local spawned objects) to 2843 objects (+468 / ~ +230 p/h) in 2 hours, which seems more plausible in terms of new buildables then going from 14812 -> 16832 (~ +2000 p/h) to me, which seems like an impossible rate.

 

Seems like you changed the diag function on your server.. I'll try to enhance ours and add the epoch buildables + map-addons that are now skipped in the count. We have an object table of about 7500 objects and mapp add-ons of about 1500 objects. We work hard on keeping low objects by having a tidy maintenance/decay setup and keeping in touch with big base owners so we can remove huge bases when they leave the server.

Other things we did to ensure low object count:

  • Max one base per player/group;
  • Building limit of 300 (will be raised now);
  • High vehicle prices;
  • No indestructible vehicles.
  • Missions -> Although being a resource hogger, are a great way to keep people from building :P
Link to comment
Share on other sites

@f3cuk, why did you ask if i have partly indestr. buildings ?

I know you added yours but how did you manage the buildings that are getting removed by players ?

Did you push/pull to the local_objects array objects that get deleted/upgraded/downgraded from the server ?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×
×
  • Create New...