-
Content Count
551 -
Joined
-
Last visited
-
Medals
Everything posted by whiztler
-
Arma 3 STABLE Server 2.16 "profiling / performance binary" feedback
whiztler replied to Dwarden's topic in ARMA 3 - SERVERS & ADMINISTRATION
SPB | Server Performance Benchmark updated to 1.10 Added: Headless Client (autodetect) Updated: Slots, 49 Client slots + 1 HC slot http://forums.bistudio.com/showthread.php?177487-MP-CO25-SPB-Server-Performance-Benchmark -
CHANGELOG Current version VERSION 1.10 Added: Headless Client (autodetect) Updated: Slots, 49 Client slots + 1 HC slot Previous versions DOWNLOAD Mega.co.nz: http://goo.gl/PvZCkf [version: 1.10] Armaholic: http://www.armaholic.com/page.php?id=25649 [version: 1.10] ABOUT SPB The Server Performance Benchmark (SPB) mission was put together to benchmark dedicated server performance (Server FPS). SPB offers a fully an autopilot function, fully automated test scripts that can be configured in the mission parameters (at mission start/slot selection). If the tester does not wish to use the autopilot function, one can test manually. SPB can spawn up to 500 AI Bluefor units and up to 10 Opfor squads to simulate combat situations. After each Bluefor group spawn a report is generated: * Displayed on screen (hint) * Copied to the clipboard (comma delimited) * Inserted into the Server RPT file Screenshots http://i62.tinypic.com/245iowh.jpg (113 kB) http://i59.tinypic.com/5lwe3m.jpg (108 kB) Sample RPT log Author Concept & development by whiztler (www.nopryl.no) VANILLA & CBA/A.C.R.E. There are two versions of SPB available: ARMA III Vanilla The SPB Vanilla version requires no addon's and runs with ARMA III Vanilla. Make sure that the server admin configures the server as Vanilla and instruct the clients to join the SPB mission with a Vanilla profile (no addon's). Filename: SPB_Vanilla_v100.Altis.pbo CBA / A.C.R.E. The SPB CBA/A.C.R.E. version is dependent on CBA A3/A.C.R.E. (and Jay's ArmaLib A3). Other than the required addon's, the SPB CBA/A.C.R.E. is the same as SPB Vanilla. Filename: SPB_CBA-ACRE_v100.Altis.pbo SPB MISSION PARAMETERS You can configure several mission parameters: * Day or Night. When selecting 'Day', time is set to 12:00 hrs (noon). When selecting night, time is set to 00:00 hrs (midnight). * Expert Mode. Disables the instructions screens at the beginning of the mission. You'll jump right into the benchmarking feature. * SPB Autopilot config (see 'Automated Benchmarking using the Autopilot test scripts' for more information) BENCHMARKING PREPARATIONS For reliable testing please use the same 'mod-line' each time you run SPB (both server and clients). SPB was designed to test using up to 50 connected clients of which one is the 'tester' client. Only the tester client can access the SPB action menu and spawn up to 10 AI Bluefor groups of 50 units each group. Read the 'Server bandwidth & Optimisation' tutorial by Terox for information about getting the most out of your ARMA III server. Server It is recommended that you start with the default ARMA III server profile to create a baseline. Start testing with the SPB Vanilla version and benchmark various server profiles until you are satisfied with the performance. Once you have a satisfactory SPB Vanilla benchmark you can proceed with the SPB CBA/A.C.R.E version or add mods to your server modline to test performance impact of certain addon's. Make sure that before you start, you have several server profiles ready that you want to test. With 'Tophe's Arma Dedicated Server Tool' (TADST - http://www.armaholic.com/page.php?id=11655) you can create and save various profiles that you want to test at a later stage. Simply load the profile, start the server and Bob is your uncle. For real-time server performance monitoring I suggest you install the 'Arma Server Monitor' (ASM: http://www.armaholic.com/page.php?id=21436 -or- https://github.com/fred41). ASM is an external application that runs on your server. It can be used alongside SPB for additional reporting. Benchmarking can be a lengthy process. But when done right, you'll end up with a server profile that is able to run a smooth ARMA III server. People that play on your server(s) will thank you for it! Client Participating clients (incl. the tester) should run a similar modline as the server. Please make sure that clients do not have enabled any client-side addon's such as ST-Hud, Blastcore, SpeedofSound, JSRS2, etc., etc. The tester should brief people that will join as a client re which profile they should use before joining the server. For SPB Vanilla, clients can start ARMA III without any mods activated. When testing Benchmark reports are generated after each Bluefor group spawn (manual and Autopilot) and after spawning Opfor squads (Autopilot only). AUTOMATED BENCHMARKING USING THE AUTOPILOT TEST SCRIPTS SPB offers fully automated benchmarking using the SPB Autopilot feature. The SPB Autopilot needs to be configured at mission start-up. Using mission parameters you can setup SPB Autopilot to spawn 50, 100, 150 ... 500 units. The script will take care of the reporting in between the group spawns and during spawning of Opfor squads. The SPB Autopilot cycle is concluded with spawning 10 Opfor squads. You can initialize the SPB Autopilot, after the SPB Baseline has initialized, using the SPB Action Menu. Warning Do not configure the SPB Autopilot to spawn 10 groups of Bluefor AI's if you do not know if your server can handle it. Start with 3 groups and increase from there on. I cannot be held accountable for any damage done to your server! MANUAL BENCHMARKING If you prefer to have more control over the benchmarking process, you can manually spawn Bluefor groups using the SPB Action Menu. You can decide if you wish to spawn 1, 5 or 10 Opfor squads after or during the Bluefor group spawning. A Bluefor group spawn report is created 60 seconds after each groups has spawned. If you wish to monitor server performance during combat you can start the 'server stats' feature with Radio Juliet [0-0-0] and disable it again with Radio Alpha [0-0-1]. You can display the last test result with Radio Bravo [0-0-2]. Recommended manual benchmarking method: 1. Spawn the first 3 Bluefor groups. Wait for the report to appear before spawning the next group (60 secs). 2. Spawn 5 Opfor Squads. Wait until all Opfor units have been killed. 3. Check Server Stats with [0-0-0] during combat and disable with [0-0-1] 4. Spawn the fourth and the fifth Bluefor groups. 5. Spawn 5 Opfor Squads. 6. Check Server Stats with [0-0-0] during combat and disable with [0-0-1] 7. Spawn the sixth and seventh Bluefor groups. 8. Spawn 5 Opfor Squads. 9. Check Server Stats with [0-0-0] during combat and disable with [0-0-1] 10. Spawn the remaining three0 Bluefor groups. 11. Spawn 10 Opfor Squads. 12. Check Server Stats with [0-0-0] during combat and disable with [0-0-1] If you decide only to spawn a few Bluefor groups, then conclude your cycle with step 11 and 12. TESTER & CLIENTS The tester slot controls the testing process. All clients (including Tester) cannot be harmed or killed. For optimal testing results it is important that clients remain still and move as little as possible.
-
[MP CO25] SPB Server Performance Benchmark
whiztler replied to whiztler's topic in ARMA 3 - USER MISSIONS
SPB updated to 1.10 See OP for change log and download links. -
Querying respawn time as set in description.ext
whiztler posted a topic in ARMA 3 - MISSION EDITING & SCRIPTING
Is there any way to query the respawn delay time as set in description.exe? description.ext respawnDelay = 30; -
Querying respawn time as set in description.ext
whiztler replied to whiztler's topic in ARMA 3 - MISSION EDITING & SCRIPTING
Yep, does the trick very well. Something new learned today. Thanks lads! -
Querying respawn time as set in description.ext
whiztler replied to whiztler's topic in ARMA 3 - MISSION EDITING & SCRIPTING
Thanks mate, I'll look into that one -
Garbage Collection Script Needed
whiztler replied to phronk's topic in ARMA 3 - MISSION EDITING & SCRIPTING
This one does the trick for me: /* ..... ... .. ... .. .H8888888h. ~-. .=*8888x <"?88h. .=*8888x <"?88h. 888888888888x `> X> '8888H> '8888 X> '8888H> '8888 X~ `?888888hx~ '88h. `8888 8888 '88h. `8888 8888 ' x8.^"*88*" '8888 '8888 "88> '8888 '8888 "88> `-:- X8888x `888 '8888.xH888x. `888 '8888.xH888x. 488888> X" :88*~ `*8888> X" :88*~ `*8888> .. `"88* ~" !"` "888> ~" !"` "888> x88888nX" . .H8888h. ?88 .H8888h. ?88 !"*8888888n.. : :"^"88888h. '! :"^"88888h. '! ' "*88888888* ^ "88888hx.+" ^ "88888hx.+" ^"***"` ^"**"" ^"**"" | TheButcherBay | ARMA 3 ALPHA | ANJAN DELETE ALL | */ if (!isServer) exitWith {}; TBB_Included = []; TBB_Excluded = ["B_soldier_AR_F","B_soldier_exp_F","B_Soldier_GL_F", "B_Helipilot_F","B_soldier_M_F","B_medic_F","B_Soldier_F", "B_soldier_repair_F","B_soldier_LAT_F","B_Soldier_SL_F", "B_Soldier_lite_F","B_Soldier_TL_F","B_Lifeboat", "B_Assaultboat","B_SpeedBoat","B_Quadbike_F", "B_Hunter_F","B_Hunter_HMG_F","B_Hunter_RCWS_F", "B_MH9_F","B_AH9_F","O_Ka60_Unarmed_F","O_Ka60_F","B_Mk6"]; // true/false = on/off. _canMove = true; // if vehicles should be deleted when they are to damaged to move and empty, NOTE empty fuel also means it cannot move. _abandoned = false; // if vehicles should be deleted after being x time un manned, if 1 unit enters in the time period, time is reset, and vehicle is processed again when empty or destroyed. _groupDel = true; // if empty groups should be deleted, to avoid reaching 144 group limit in long missions. _viewDist = 0; // min distance in meter from a player unit to allow delete, if you dont care if player sees the delete, set it to 0. _manTimer = 30; // x seconds until delete of dead man units. _vehTimer = 30; // x seconds until delete of dead vehicles, for destroyed and heavy damaged vehicles. _abaTimer = 30; // x seconds a vehicle must be unmanned to be deleted, for _abandoned option. _incTimer = 30; // x seconds any object put inside the TBB_Included will be deleted no matter condition. // DO NOT EDIT PAST THIS LINE // // delete function. _delete = { _del = _this select 0; _dis = _this select 1; _tim = _this select 2; _aba = _this select 3; _abt = _this select 4; _cnm = _this select 5; if (isPlayer _del) exitWith {}; _abort = true; if ("veh" in _this AND (_aba OR _cnm)) then { _sec = _abt; while {_sec != 0} do { sleep 1; if (_aba AND (getDammage _del) < 1 AND ({alive _x} count (crew _del)) == 0) then {_sec = _sec - 1}; if (_aba AND _sec == 0) then {_abort = false}; if (((_cnm AND canMove _del) OR _aba) AND ({alive _x} count (crew _del)) != 0) then { _sec = 0; _abort = true; _del setVariable ["TBB_delete_readd", true, true]; }; if ((getDammage _del) >= 1) then { _sec = 0; _abort = false; sleep _tim; }; if (isNull _del) then {_sec = 0; _abort = true}; }; } else { _abort = false; sleep _tim; }; // fail safe for excluded and included. if (isNull _del OR _abort OR _del in TBB_Excluded) exitWith {}; { _arr = _x; _obj = ""; _timer = _tim; _dist = _dis; if ((typeName _arr) == "ARRAY") then { _obj = _arr select 0; _timer = _arr select 1; if ((count _arr) == 3) then {_dist = _arr select 2} else {_dist = _viewDist}; } else { _obj = _arr; _timer = _tim; _dist = _dis; }; if (_del == _obj) then { _del = _obj; _dis = _dist; if ((_timer - _tim) > 0) then {sleep (_timer - _tim)}; // clean up the TBB_Included array of deleted objects. TBB_Included = TBB_Included - [_x]; }; } foreach TBB_Included; if (!isNull _del) then { _arr = []; waitUntil {sleep 1; ({isPlayer _x AND (_del distance (vehicle _x)) < _dis} count playableUnits) == 0}; waitUntil {sleep 1; ({isPlayer _x AND (_del distance (vehicle _x)) < _dis} count switchableUnits) == 0}; if ("veh" in _this OR "incVeh" in _this) then {{_arr = _arr + [_x]; _x setPos (getPos _del); deleteVehicle _x} foreach crew _del} else { if (_del isKindOf "man") then {hideBody _del; sleep 10}; }; _arr = _arr + [_del]; deleteVehicle _del; //{_x = objNull; waitUntil {sleep 1; isNull _x}; _x = nil} foreach _arr; {if (_x in TBB_delete_respawned) then {_arr = _arr - [_x]}} foreach _arr; TBB_delete_respawned = TBB_delete_respawned + _arr; }; }; _processed = []; _todo = []; _types = []; _included = []; TBB_delete_respawned = []; while {true} do { // check TBB_Excluded array for changes. {if ((typeName _x) == "STRING" AND !(_x in _types)) then {_types = _types + [_x]}} foreach TBB_Excluded; // update types/classnames if changed. {if (!(_x in TBB_Excluded)) then {_types = _types - [_x]}} foreach _types; // clean the processed list of all objects that have been deleted. {if (isNull _x) then {_processed = _processed - [_x]}} foreach _processed; // clean the included list of all objects that have been deleted. {if (isNull _x) then {_included = _included - [_x]}} foreach _included; // process TBB_Included array. { _arr = _x; _obj = ""; _timer = 0; _dist = 0; if ((typeName _arr) == "ARRAY") then { _obj = _arr select 0; _timer = _arr select 1; if ((count _arr) == 3) then {_dist = _arr select 2} else {_dist = _viewDist}; } else { _obj = _arr; _timer = _incTimer; _dist = _viewDist; }; if (_x in _included) exitWith {}; _included = _included + [_obj]; if (_obj isKindOf "AllVehicles" AND !(_obj isKindOf "Man")) then { _null = [_obj,_dist,_timer,false,0,false,"incVeh"] spawn _delete; } else { _null = [_obj,_dist,_timer,false,0,false,"inc"] spawn _delete; }; } foreach TBB_Included; // gather all dead. _allD = allDead; {if (_x in TBB_delete_respawned AND _x in _processed) then {_processed = _processed - [_x]}} foreach _allD; { _unit = _x; if (_x in _included) exitWith {}; if ((vehicle _x) == _x AND !(_x in _processed) AND ({_unit isKindOf _x} count _types) == 0 AND !(_x in TBB_Excluded)) then { if (!(_x in _todo)) then {_todo = _todo + [_x]}; }; } foreach _allD; // gather all vehicles and process depending on options used. _allV = vehicles; {if (_x in TBB_delete_respawned AND _x in _processed) then {_processed = _processed - [_x]}} foreach _allV; { _veh = _x; if (_x in _included) exitWith {}; if (_x getVariable ["TBB_delete_readd", false]) then { _processed = _processed - [_x]; _x setVariable ["TBB_delete_readd", false, true]; }; if (!(_x in _processed) AND ({_veh isKindOf _x} count _types) == 0 AND !(_x in TBB_Excluded)) then { if ((getDammage _x) >= 1 OR (_canMove AND !canMove _x AND ({alive _x} count (crew _x)) == 0) OR (_abandoned AND ({alive _x} count (crew _x)) == 0)) then { if (!(_x in _todo)) then {_todo = _todo + [_x]}; }; }; } foreach _allV; // run the delete script for todo list. { if (!(_x in _processed)) then { if (_x isKindOf "Man") then { _null = [_x,_viewDist,_manTimer,_abandoned,_abaTimer,_canMove] spawn _delete; } else { _null = [_x,_viewDist,_vehTimer,_abandoned,_abaTimer,_canMove,"veh"] spawn _delete; }; _todo = _todo - [_x]; _processed = _processed + [_x]; }; } foreach _todo; // delete empty groups. if (_groupDel) then {{if ((count (units _x)) == 0) then {deleteGroup _x; _x = grpNull; _x = nil}} foreach allGroups}; // sleep 10 seconds, then check if there are any changes to dead or vehicles that are not processed. sleep 10; }; -
Update marker color on dedicated server for all players & JIP
whiztler replied to wiggum2's topic in ARMA 3 - MISSION EDITING & SCRIPTING
Try without the "": re22 setMarkerColor "ColorBlack"; -
Updated to v1.22. See OP for more info
-
Good to know. Thanks! Have you lads had time to test Day 3 v1.22 yet?
-
High resolution PDF/Image Altis Map - free license
whiztler replied to mecharius's topic in ARMA 3 - MISSION EDITING & SCRIPTING
Have a peek here: http://www.openstreetmap.org/#map=12/39.9034/25.1405 OWM offers various options to download your map. Recommended License info: http://www.openstreetmap.org/copyright -
Just like I do with ACRE, I can then add spare radio's to the crates. I noticed that TFAR actually replaced backpacks (on officers/FTL's ?) Anyway, I'll look into it. if it add's value to gameplay/usability I'll add TFAR. I did a quick test on my DS and all seemed fine. But with DS it's always better to test with at least 2 clients. Vol. 2 coming around nicely. Release soonish :)
-
I am looking into adding TFAR to the mission params. Never worked with it so be patient. I'll drop you a PM later today with a new Day 3 version for you guys to test. If it works as it should, I'll release the updated pack.
-
Sorry mate, this is due to how are framework works. Gear can only be applied when not in a vehicle. Found the bug, I'll post an update later on Friday.
-
CBA_fnc_taskPatrol help
whiztler replied to thedog88's topic in ARMA 2 & OA : MISSIONS - Editing & Scripting
CBA_fnc_searchNearby does nothing. So replace just with "", e.g.: [_grp1, _markerpos, 200, 7, "MOVE", "AWARE", "YELLOW", "LIMITED", "STAG COLUMN", "", [2,3,4]] call CBA_fnc_taskPatrol; Note that in your example you have used the same local var for both the group and the spawn position More info: http://dev.withsix.com/docs/cba/files/ai/fnc_taskPatrol-sqf.html -
Updated to 1.21 CHANGELOG Version 1.21 - Added: Basic & Advanced Wolfpack training missions - Fixed: Detection script error - Updated: Wolfpack Readme Document See OP for download information
-
Updated to 1.20 CHANGELOG Version 1.20 - Updated: Arma v1.20 - Updated: LAF3 v1.02 - Fixed: cTab didn't load - Fixed: Opfor balancing See OP for download information
-
Does the physical location of the HC unit on the map need to be near the AO (like in Arma2) or can we tuck him away safely on on of the offshore islands?
-
Basically everything you're looking for: http://www.armaholic.com/page.php?id=23684 http://alivemod.com/
-
Excellent. Have fun guys. Looking forward to see any feedback. Sorry mate but have other plans on Sunday. Have fun tho! If anyone happens to record the session on video, please feel free to post here!
-
Updated to version 1.10 CHANGELOG: Version 1.10 - Fixed: exfil features in all 5 ops - Fixed: Fire missions in Day 2 and 3 - Fixed: 'Endmission' triggers - Added: vehicle pool from 1.18 update Version 1.00 - Initial public release Thanks everyone for your feedback & bug reports!
-
Below case is a script that runs at the beginning of a mission: if (!isServer) exitWith {}; trueVar = false; waitUntil {trueVar}; After 1+ hour into the mission: trueVar = true; publicVariableServer "trueVar"; When the trueVar init is broadcasted to the server, the server will be dealing with lots of AI's, combat, etc. FPS drops but no lower than 17. Is it possible that due to server lag or the fact that the game is already been at it for over an hour that the waitUntil {tueVar}; is no longer working? Anyone experienced this before?
-
If you decide to go the scripting way (more flexibility) than have a look here: http://forums.bistudio.com/showthread.php?151680-FHQ-TaskTracker
-
Thanks guys. Always keen to learn new things about scripting for Arma.
-
Top notch mate! Congrats with the release