Jump to content

Defunkt

Member
  • Content Count

    2558
  • Joined

  • Last visited

  • Medals

  • Medals

Everything posted by Defunkt

  1. Well it's all relative, -5 is huge given a scene/rig that only yielded 31 FPS previously. I also feel the 'stability' you mention has suffered but it's hard (or at least, time consuming) to measure that stuff objectively. I wouldn't actually try and play at 30FPS, when I do play I'll generally shorten my VD or play on a less demanding map. In the interests of testing thoroughly I've tried again with all cloud quality levels and at best clawed back just one FPS on the same scene, doesn't seem to make much/any difference at all (which would otherwise be a good thing).
  2. The other thing that pops out for me in those captures is that the trees are thinner (down one LOD level?) in the Beta compared to Stable (ATOC should have been disabled in both cases as I never use it). I do like that there's more colour variation visible in the foreground clutter. And the clouds, the clouds are very pretty. But I'd rather have my ~5 FPS back.
  3. Well I'm sorry to report that my FPS (and frankly also Image Quality) has tanked with this update. Given the same scene (below) I've dropped from 31.0 frames to just 25.5. Stable - No Customisation 31.0 FPS Beta - No Customisation 25.5 FPS And honestly I think it looked better before with ReShade; Stable - RealLight & Custom MidDetail 29.5 FPS But it's back to the drawing board on those customisations as they don't play well with the new lighting; Beta - RealLight & Custom MidDetail 24.5 FPS I applaud what you've done with the satmap (EDIT: actually on closer inspection it would appear it has just been lightened to offset the effect of the new lighting) and accept that the new default lighting is better than the old default (even though it has queered my setup) but this framerate loss is unacceptable to me. Note that the above comparison was done with the new water reflections turned off. I see with the Beta more clouds are evident (and very pretty they are) but that can't account for the size of the FPS drop.
  4. I like that there are situations (times of day, lighting conditions) which mean that an optic isn't always automatically better than open sights.
  5. Does anyone know what's changed regarding the terrain? I presume it's an updated satellite layer. Is it higher-res? I really like it. I'm less keen on the lighting changes, honestly I had things looking better before with Real Light. My initial impression regarding performance (no objective comparisons run yet) is that the game has become more sluggish.
  6. Defunkt

    Faces of War [WW2]

    Not really a good example as it's a case of exactly what's been asked for, developers coalescing into fewer, larger teams.
  7. Defunkt

    Offline Script Command Glossary?

    EDIT: On second thoughts, rather than encouraging people to each suck down their own copy of the whole Biki I made one for the script commands page (2 links deep); https://www.sendspace.com/file/r4rajz
  8. Oh right, well try the amendment, rather than copying it all to the clipboard it writes to file as it goes via Neo's mapbuilder File IO extension; // // dumpConfig.sqf // Copyright (c) 2010 Denis Usenko, DenVdmj@gmail.com // MIT-style license // // Modified to write using MapBuilder MBFile_IO extension. /* ====================================================================================== Dump config to the clipboard: [config HNDL, bool IncludeInheritedPropertiesFlag] call compile preprocessFileLineNumbers "dumpConfig.sqf" This example put section CfgVehicles on the clipboard: [configFile >> "CfgVehicles"] call compile preprocessFileLineNumbers "dumpConfig.sqf" This example will put on the clipboard class "RscDisplayArcadeUnit", all classes will contain all heritable properties, so you get a full and self-sufficient class, independent from the other classes. [configFile >> "RscDisplayArcadeUnit", true] call compile preprocessFileLineNumbers "dumpConfig.sqf" More examples: [configFile >> "RscTitle", true] call compile preprocessFileLineNumbers "dumpConfig.sqf" [configFile >> "RscEdit", true] call compile preprocessFileLineNumbers "dumpConfig.sqf" [configFile >> "RscToolbox", true] call compile preprocessFileLineNumbers "dumpConfig.sqf" Warning: don't attempt to get a large classes with switched on parameter "IncludeInheritedPropertiesFlag", eg don't do so: [configFile, true] call compile preprocessFileLineNumbers "dumpConfig.sqf" Dump the entire config, it can take over ten seconds: [configFile] call compile preprocessFileLineNumbers "dumpConfig.sqf" ====================================================================================== */ #define arg(x) (_this select (x)) #define argIf(x) if(count _this > (x)) #define argIfType(x,t) if(argIf(x)then{typeName arg(x) == (t)}else{false}) #define argSafe(x) argIf(x)then{arg(x)} #define argSafeType(x,t) argIfType(x,t)then{arg(x)} #define argOr(x,v) (argSafe(x)else{v}) #define push(a,v) (a)set[count(a),(v)] #define pushTo(a) call{(a)set[count(a),_this]} #define log2(number) ((log number)/.3010299956639812) private ["_joinString", "_escapeString", "_collectInheritedProperties", "_dumpConfigTree"]; _joinString = { // Fast string concatenation. private ["_list", "_char", "_size", "_subsize", "_oversize", "_j"]; _list = arg(0); _char = arg(1); if( count _list < 1 ) exitwith {""}; for "" from 1 to ceil(log2(count _list)) do { _size = count _list / 2; _subsize = floor _size; _oversize = ceil _size; _j = 0; for "_i" from 0 to _subsize - 1 do { _list set [_i, (_list select _j) + _char + (_list select (_j+1))]; _j = _j + 2; }; if( _subsize != _oversize ) then { // Add a tail. _list set [_j/2, _list select _j]; }; _list resize _oversize; }; _list select 0; }; _escapeString = { private ["_source", "_target", "_start", "_charCode"]; _source = toArray _this; _start = _source find 34; if(_start > 0) then { _target = +_source; _target resize _start; for "_i" from _start to count _source - 1 do { _charCode = _source select _i; push(_target, _charCode); if(_charCode == 34) then { push(_target, _charCode); }; }; str toString _target; } else { str _this; }; }; _collectInheritedProperties = { private ["_config", "_className", "_propertyNameList", "_propertyNameLCList", "_propertyName", "_propertyNameLC"]; _config = _this; _propertyNameList = []; _propertyNameLCList = []; while { _className = configName _config; for "_i" from 0 to count _config - 1 do { _propertyName = _config select _i; _propertyNameLC = toLower configName _propertyName; if!(_propertyNameLC in _propertyNameLCList) then { push(_propertyNameList, _propertyName); push(_propertyNameLCList, _propertyNameLC); }; }; _className != ""; } do { _config = inheritsFrom _config; }; _propertyNameList; }; _dumpConfigTree = { private ["_includeInheritedProperties", "_specifyParentClass", "_result", "_indents", "_depth", "_pushLine", "_traverse", "_traverseArray"]; "mb_fileio" CallExtension "open_w|config_dump.txt"; _includeInheritedProperties = argOr(1, false); _specifyParentClass = argOr(2, !_includeInheritedProperties); _result = []; _indents = [""]; _depth = -1; _pushLine = { if (_depth < 0) then { "mb_fileio" CallExtension Format["write|/* %1 %2.%3 */", ProductVersion select 0, ProductVersion select 2, ProductVersion select 3]; } else { if(_depth >= count _indents) then { _indents set [_depth, (_indents select _depth-1) + " "]; }; "mb_fileio" CallExtension Format["write|%1%2", _indents select _depth, _this]; }; }; _traverse = { private "_confName"; _confName = configName _this; if( isText _this ) exitwith { _confName + " = " + (getText _this call _escapeString) + ";" call _pushLine; }; if( isNumber _this ) exitwith { _confName + " = " + str getNumber _this + ";" call _pushLine; }; if( isArray _this ) exitwith { _confName + "[] = " + (getArray _this call _traverseArray) + ";" call _pushLine; }; if( isClass _this ) exitwith { "class " + _confName + ( configName inheritsFrom _this call { if( _this == "" || !_specifyParentClass ) then { "" } else { " : " + _this } } ) + " {" call _pushLine; if( _includeInheritedProperties ) then { _this = _this call _collectInheritedProperties; }; _depth = _depth + 1; for "_i" from 0 to count _this - 1 do { _this select _i call _traverse }; _depth = _depth - 1; "};" call _pushLine; }; }; _traverseArray = { if(typeName _this == "array") exitwith { private "_array"; _array = []; for "_i" from 0 to count _this - 1 do { push(_array, _this select _i call _traverseArray); }; "{" + ([_array, ", "] call _joinString) + "}"; }; if(typeName _this == "string") exitwith { _this call _escapeString; }; str _this; }; arg(0) call _traverse; "mb_fileio" CallExtension "close"; }; _this call _dumpConfigTree;
  9. Actually it turns out (after chatting to kju) that the breakage I encountered was a bug in the initial EDEN release which has subsequently been fixed so there's no need for the amendment (though I haven't actually confirmed this for myself yet). Original script by Denis Usenko (found on OFPEC IIRC) below (sorry I can't seem to find a spoiler tag); // // dumpConfig.sqf // Copyright (c) 2010 Denis Usenko, DenVdmj@gmail.com // MIT-style license // /* ====================================================================================== Dump config to the clipboard: [config HNDL, bool IncludeInheritedPropertiesFlag] call compile preprocessFileLineNumbers "dumpConfig.sqf" This example put section CfgVehicles on the clipboard: [configFile >> "CfgVehicles"] call compile preprocessFileLineNumbers "dumpConfig.sqf" This example will put on the clipboard class "RscDisplayArcadeUnit", all classes will contain all heritable properties, so you get a full and self-sufficient class, independent from the other classes. [configFile >> "RscDisplayArcadeUnit", true] call compile preprocessFileLineNumbers "dumpConfig.sqf" More examples: [configFile >> "RscTitle", true] call compile preprocessFileLineNumbers "dumpConfig.sqf" [configFile >> "RscEdit", true] call compile preprocessFileLineNumbers "dumpConfig.sqf" [configFile >> "RscToolbox", true] call compile preprocessFileLineNumbers "dumpConfig.sqf" Warning: don't attempt to get a large classes with switched on parameter "IncludeInheritedPropertiesFlag", eg don't do so: [configFile, true] call compile preprocessFileLineNumbers "dumpConfig.sqf" Dump the entire config, it can take over ten seconds: [configFile] call compile preprocessFileLineNumbers "dumpConfig.sqf" ====================================================================================== */ // // #include "\rls\common"; // #define arg(x) (_this select (x)) #define argIf(x) if(count _this > (x)) #define argIfType(x,t) if(argIf(x)then{typeName arg(x) == (t)}else{false}) #define argSafe(x) argIf(x)then{arg(x)} #define argSafeType(x,t) argIfType(x,t)then{arg(x)} #define argOr(x,v) (argSafe(x)else{v}) #define push(a,v) (a)set[count(a),(v)] #define pushTo(a) call{(a)set[count(a),_this]} #define log2(number) ((log number)/.3010299956639812) private [ "_joinString", "_escapeString", "_collectInheritedProperties", "_dumpConfigTree" ]; _joinString = { // // Fast string concatenation, // private ["_list", "_char", "_size", "_subsize", "_oversize", "_j"]; _list = arg(0); _char = arg(1); if( count _list < 1 ) exitwith {""}; // while { count _list > 1 } do { for "" from 1 to ceil(log2(count _list)) do { _size = count _list / 2; _subsize = floor _size; _oversize = ceil _size; _j = 0; for "_i" from 0 to _subsize - 1 do { _list set [_i, (_list select _j) + _char + (_list select (_j+1))]; _j = _j + 2; }; if( _subsize != _oversize ) then { // to add a tail _list set [_j/2, _list select _j]; }; _list resize _oversize; }; _list select 0; }; _escapeString = { private ["_source", "_target", "_start", "_charCode"]; _source = toArray _this; _start = _source find 34; if(_start > 0) then { _target = +_source; _target resize _start; for "_i" from _start to count _source - 1 do { _charCode = _source select _i; push(_target, _charCode); if(_charCode == 34) then { push(_target, _charCode); }; }; str toString _target; } else { str _this; }; }; _collectInheritedProperties = { private [ "_config", "_className", "_propertyNameList", "_propertyNameLCList", "_propertyName", "_propertyNameLC" ]; _config = _this; _propertyNameList = []; _propertyNameLCList = []; while { _className = configName _config; for "_i" from 0 to count _config - 1 do { _propertyName = _config select _i; _propertyNameLC = toLower configName _propertyName; if!(_propertyNameLC in _propertyNameLCList) then { push(_propertyNameList, _propertyName); push(_propertyNameLCList, _propertyNameLC); }; }; _className != ""; } do { _config = inheritsFrom _config; }; _propertyNameList; }; _dumpConfigTree = { private [ "_includeInheritedProperties", "_specifyParentClass", "_result", "_indents", "_depth", "_pushLine", "_traverse", "_traverseArray" ]; _includeInheritedProperties = argOr(1, false); _specifyParentClass = argOr(2, !_includeInheritedProperties); _result = []; _indents = [""]; _depth = 0; _pushLine = { if(_depth >= count _indents) then { _indents set [_depth, (_indents select _depth-1) + " "]; }; push(_result, (_indents select _depth) + _this); }; _traverse = { private "_confName"; _confName = configName _this; if( isText _this ) exitwith { _confName + " = " + (getText _this call _escapeString) + ";" call _pushLine; }; if( isNumber _this ) exitwith { _confName + " = " + str getNumber _this + ";" call _pushLine; }; if( isArray _this ) exitwith { _confName + "[] = " + (getArray _this call _traverseArray) + ";" call _pushLine; }; if( isClass _this ) exitwith { "class " + _confName + ( configName inheritsFrom _this call { if( _this == "" || !_specifyParentClass ) then { "" } else { " : " + _this } } ) + " {" call _pushLine; if( _includeInheritedProperties ) then { _this = _this call _collectInheritedProperties; }; _depth = _depth + 1; for "_i" from 0 to count _this - 1 do { _this select _i call _traverse }; _depth = _depth - 1; "};" call _pushLine; }; }; _traverseArray = { if(typeName _this == "array") exitwith { private "_array"; _array = []; for "_i" from 0 to count _this - 1 do { push(_array, _this select _i call _traverseArray); }; "{" + ([_array, ", "] call _joinString) + "}"; }; if(typeName _this == "string") exitwith { _this call _escapeString; }; str _this; }; arg(0) call _traverse; [_result, toString [0x0D,0x0A]] call _joinString; }; private ["_res", "_startTime", "_endTime"]; _startTime = diag_tickTime; _res = _this call _dumpConfigTree; _endTime = diag_tickTime; copyToClipboard _res; hint format["Ready\nNow get config from clipboard\ntime: %1", _endTime - _startTime]; _res;
  10. Defunkt

    ruPal Disable Zoom

    An ACOG (say) has 3.4 or 4-times the magnification of the soldier without any optic when the player is 'zoomed' fully. Removing that variable FOV makes the ACOG a considerably more powerful optic relative to the performance of the human eye that cannot 'zoom'. Of course the human eye does not zoom but it's capable of both a greater acuity and a wider FOV than can be represented in a screen with a single fixed FOV. Play how you wish but you should be aware that this change makes the game less realistic in the ways that actually matter.
  11. Defunkt

    RHS Escalation (AFRF and USAF)

    It has one (ofc) but (for me at least) it's a little misaligned, I have to line up where the red cross is indicated;
  12. Why on earth would you need to restart the game 100 times an hour? That's ridiculous. The problem is your workflow.
  13. Defunkt

    Arma 3 - APEX - NEWS and SPECULATIONS

    Hah, not that I have any problem with it, I like that the Arma sandbox can be co-opted into lots of varied purposes, but could they make Tanoa any more life mod friendly?
  14. I dunno, maybe BIS has re-enabled it. As I read Fred's documentation it used to be enabled by default then BIS changed it which necessitated patching of the exe. Possibly no longer required.
  15. I should think you'd want it off for PvP but I don't think that qualifies as 'unfair' given the same option is available to everyone. I don't care for the effect anyway, I find it makes everything look a bit 2-dimensional.
  16. Defunkt

    RHS Escalation (AFRF and USAF)

    Kind of a nightmare scenario IMO. I've never seen Unreal Engine do a good job of naturalism, my heart sinks every time I hear of a new title on it I might otherwise be interested in.
  17. I noticed new key bindings turned up in my profile, maybe you need to bind to the new keys; keyCommandingMenuSelect1[]={2}; keyCommandingMenuSelect2[]={3}; keyCommandingMenuSelect3[]={4}; keyCommandingMenuSelect4[]={5}; keyCommandingMenuSelect5[]={6}; keyCommandingMenuSelect6[]={7}; keyCommandingMenuSelect7[]={8}; keyCommandingMenuSelect8[]={9}; keyCommandingMenuSelect9[]={10}; keyCommandingMenuSelect0[]={11};
  18. Great work BIS, super to have weapon switching while moving. Just one small thing I've noticed; it appears I can't use SPACE for the new editor Up key binding. Instead SPACE (not bound) appears to cycle a highlight through the widgets on the toolbar but not to any obvious effect.
  19. Oh, I didn't realise there'd already been a preview released. I think then you should absolutely update it and keep iterating publicly.
  20. Defunkt

    Arma 3 ported to Mac?

    I gather it runs really well on Linux;
  21. Can't see it working. Consider that recently people (I wasn't one of them) voted overwhelmingly in favour of CUP releasing their terrains as separately downloadable maps even after it was pointed out that the prerequisite package required to run any one of them was ~3 times the size of all of the maps combined. And all of these maps are part of the official canon. People like to pick and choose (even when it makes no sense).
  22. Defunkt

    RAM Management - Serious Question

    As a programmer I get that it's hard to retrospectively convert the RV engine's core into something that's thread-friendly. What I don't understand is why BI don't make better use of the available processing power so we could have something more to show for our hardware. Specifically for the AI, complex path-finding and better strategic and tactical decision making could be constantly re-evaluated in parallel and the main thread just fetches the conclusions of those calculations as and when it has time ('what should this unit be doing now and which units need the greatest attention right now?'). Your FPS might not improve much but the perceived quality of the game would reflect the hardware it was running on. The headless client is a really poor substitute and far too complex to setup for the vast majority of players (like the guy who made that video). Get somebody like William van der Steren (http://www.cgf-ai.com/docs/plannedassault_ai_planner.pdf) on the job for a year and work toward re-using the engine's current AI decision making timeslice to just exchange updates with a completely separate process.
  23. What I do/did, largely from memory, no liability accepted, follow at your own risk... Large Page Support (not compatible with BattleEye) - Get the LP Manager helper (https://github.com/fred41/GimmeMoarFrames/tree/master/GimmeMoarFrames/LPManager), save it to your A3 folder and mark it as needing to run 'as Administrator'. - Run the helper ('as Administrator') and enter your Windows account username in the textbox and click the Privilege button next to it. - Place a check mark in LP ImageFileMapping Client (+patch). This will create a patched version of arma3.exe called arma3lp.exe in your A3 folder. I've marked this executable as needing to run 'as Administrator' also. This is the executable you need to run to get large page support (but not with BattleEye). - Restart your PC. - Each time Arma is updated you need to run the helper again, clear the check mark (removes arma3lp.exe), then re-check it (creates a new patched arma3lp.exe). Custom Allocator (works best/only on 64 bit OS, with at least 8GB RAM) - Get the malloc DLL (https://github.com/fred41/tbbmalloc_arma/tree/master/binary) and place it in ...\Arma 3\DLL (I renamed it tbbmalloc_fred41.dll). - Add -malloc=tbbmalloc_fred41 to your arma3lp.exe command line. This gets you Fred's customized memory allocator. I believe you can use this part without large page support and the regular arma3.exe (so BattleEye is OK) but I don't imagine you'll see the same gains. - To confirm it's working check the malloc_????.log file(s) created in the Arma 3 root. You should see; "SeLockMemoryPrivilege: granted, huge pages enabled" (I seem to recall to get this I had to mark the arma3[lp].exe as needing to run 'as Administrator').
  24. Tricky, feedback might be a boost but if you feel it might be a bit underwhelming it could also undermine your enthusiasm. All the screenshots you've shown look great but if it's only 10% populated (and the rest is bare sat-map) people probably aren't going to do a whole lot with it. Have you investigated all of the latest productivity tools? I'm not a mapper but I believe X-Cam and/or MapBuilder are hugely helpful. Might be just the thing to speed things up and revive your interest. Or take a break and do something else for a while. You can always release it unfinished later (and include source files if you reach the point where you know you won't complete).
×