Page MenuHomeFeedback Tracker

Custom profile namespaces
Feedback, NormalPublic

Description

I'd like to request a feature to create custom profile namespaces, separate from default one operated by profile namespace commands.

Reasoning:
Current profile namespace grows quite big after playing a lot of different missions and servers, making saveProfileNamespace command freeze the game for a bit, rendering mid-game saving problematic because micro freezes ruin performance and fluidity of the game. This happens because each developer uses it as they see fit, some might save a lot of data into it, which would hinder its usage in other missions. This uncertainty pretty much makes profile namespace unusable, unless its saved only during UI actions where short game freezes can be considered acceptable.

I propose to introduce set of command and functionality to let mission developers use their own named profile namespaces.

Details

Severity
Feature
Resolution
Open
Reproducibility
N/A
Operating System
Windows 10 x64
Category
Scripting
Additional Information

Commands:
<bool> = loadCustomProfileNamespace <string>
Unary command that loads custom profile namespace with name supplied as string. Target filename could be something like <profile>.<string>.vars.Arma3Profile in the profile directory. Returns load failure or success as boolean, true if name was provided, file exists and valid, false otherwise.

<bool> = saveCustomProfileNamespace
Saves currently loaded custom profile namespace that was previously loaded with load command. Return true if writing was successful, false otherwise (file is read only, custom profile namespace wasn't loaded, etc.)

<namespace> = customProfileNamespace
Returns currently loaded custom profile namespace variable to use in scripts. Null namespace if it wasn't loaded.

Additional twists to the idea:

  • Define custom namespace name in description.ext instead of scripting command, something like customProfileNamespace = "my_mission";. Less flexible but maybe easier to implement in the engine.
  • Save variables globally instead of to your current profile, so namespace is accessible regardless of selected profile, which I'd see as an upside. Commands could be named as loadCustomNamespace, saveCustomNamespace, customNamespace then.

Alternative command set approach idea
<namespace> = loadCustomProfileNamespace <string>
Loads namespace into variable.

saveCustomProfileNamespace <namespace>
Saves namespace onto the disk.

Event Timeline

SaMatra created this task.Mar 16 2022, 9:29 AM
SaMatra updated the task description. (Show Details)
SaMatra edited Additional Information. (Show Details)
SaMatra updated the task description. (Show Details)Mar 16 2022, 9:47 AM
SaMatra edited Additional Information. (Show Details)Mar 17 2022, 2:24 AM

Are new commands isMissionProfileNamespaceLoaded, missionProfileNamespace and saveMissionProfileNamespace result of this ticket? If so, how are they connected to the mission itself? Through the mission filename? If so, then it won't fit for our purposes because we use different mission filenames for different communities (to avoid mission re-download when switching servers) like:
KingOfTheHill_by_Sa-Matra_for_CODE4.Altis.pbo
KingOfTheHill_by_Sa-Matra_for_ARMASU.Altis.pbo
but we need a namespace accessible between these different mission files but within our mission's "universe".

BIS_fnc_KK added a comment.EditedMar 18 2022, 7:12 AM

Perhaps mission config param to override mission name? (not real mission name but name used for the file)

Sure, this can work.

BIS_fnc_KK removed BIS_fnc_KK as the assignee of this task.Mar 18 2022, 3:01 PM
BIS_fnc_KK changed the task status from New to Feedback.
BIS_fnc_KK added a subscriber: BIS_fnc_KK.

This is really, trully, a godsend! Thank you KK!

Hopefully this can be the beginning of an official MP saving system integrated into Arma 3 because mission makers and even CDLC devs are having a very hard time adding a way to save their player's progress in MP scenarios.

Yeah, poorman's database basically, you can always encrypt data on the server and save on client if you want to make it harder to manually edit