Sharable permissive faction files

    Joined
    Jun 30, 2013
    Messages
    390
    Reaction score
    285
    • Video Genius
    • Legacy Citizen 8
    • Community Content - Silver 1
    When we rebuild our server we use the bulk import/export list. With over 200 sector files it can be a time consuming task to wait for each faction owner to rejoin, setup his new faction and then using that new ID, run around using the /faction_set_entity command on all the players ships, turrets and stations/planet.

    The bulk import command is beautiful and we want it to stay! however due to the Faction ID being "first come first server, this leads to imports being under a different ID than it's owner.

    So here is my Idea.

    Everything is Starmade is Sharable or at least it will be. So like Ships and one day stations it would be awesome to have a Faction File that can be saved/loaded by the Faction owner. (not the server file factions.fac)

    This Faction File could be unique to the Founder's account. It could hold faction member accounts as well, but the main point is to make the ID permissive. This ensures that when a Faction owner rejoins, he can claim his faction and the imports will always be using the correct ID.

    It would also allow Founders of large factions to keep their members past the point of universe reset which saves time and aids growth :D



    EDIT:
    Also a command for the setting of faction ID following import sector wide would be handy.
    eg:
    /faction_set_entity_sector X Y Z (ID)
    /faction_set_entity_sector 1 -2 30 10001

    This would fix the problem for import a few sectors at a time, but for over 200 sectors in the Bulk list we bumped our heads and came up with the Founder Managed Loadable system, maybe using .xml


    ADDITIONAL HYBRID CONCEPT :D

    People were talking to me about making the entire Faction system part of the Registry somehow, that way the Faction ID is passed to a server when the Uplink data is requested on login.. In this way the Faction ID is the same across any server that a Player Joins.

    This would mean any faction ID would be correct across any server.
    The management of Factions can be either done exclusively in the registry or updated to it from inside the game. The implementation I am not sure of but the core concept is side-loading Faction ID to the Registry. Any Multi-player Server will be able to do this of course. In single player the 1000 range first come first served system could be used but this adds some security for Factions.

    So Permissive Registry Cloud Faction ID's :D ha
     
    Last edited:
    Joined
    Feb 27, 2014
    Messages
    1
    Reaction score
    1
    This sounds like a great idea. This would help Server Admins so much and help players keep their faction, stations, planets and ship linked to that faction.
     
    • Like
    Reactions: Tomino_sama

    NeonSturm

    StormMaker
    Joined
    Dec 31, 2013
    Messages
    5,110
    Reaction score
    617
    • Wired for Logic
    • Thinking Positive
    • Legacy Citizen 5
    Maybe objects should not belong to a faction, but have a password (timestamp+randomNumber) stored in a keyring.
    Only users which have access to a keyring storing this password can access the ship/station/whatever.

    If now factions and users own these key-rings and the owner (=user or faction boss) can set permission to use these keys for players, a ship can for example be used by factionA.playerA and his friend factionB.playerB.
    Or factions could share a docked seat-ship with another faction for the duration of a collective task.

    You would never need to reset ships, just upload/download these key-rings just like blueprints.
    And to make sure these key-rings use player-names instead of IDs.
     
    Joined
    Aug 14, 2013
    Messages
    2,811
    Reaction score
    960
    • Councillor 3 Gold
    • Wired for Logic
    • Top Forum Contributor
    Additionally a command to change the ID of a faction could also be helpful. I've already had a bug where adding new factions via console command over-wrote my faction. I had to restore a backup to fix the problem, but if I could have just recreated the faction and reassigned IDs then I could have easily avoided any trouble. I'm not sure the logistics behind changing something like a factions ID but it would be useful.
     
    • Like
    Reactions: Tomino_sama
    Joined
    Jun 30, 2013
    Messages
    390
    Reaction score
    285
    • Video Genius
    • Legacy Citizen 8
    • Community Content - Silver 1
    updated thread to include the Registry side option for Faction data :D

    TLDR

    Idea 1 is to allow for a system that generates a unique key for each faction ID. This means if the same Founder picks the same Name the ID is always the same. That means sector imports always come in to the correct number - before the faction has been recreated and all players have rejoined (following a universe reset).

    Idea 2 takes that Idea further and sideloads all the faction Data to the Registry. This can be done in full with all management also done there, or simply the ID being stored alone. this means that no matter what server you join you are already in the correct faction AND the faction ID is correct when you have an uploaded sector imported.

    Idea 3 involved the registry allowing upload of a file generated in game. this could be shared as an .xml Pre Shared Key to faction members to allow them to join. Much as Blueprints and sectors files it would be a Faction File. The Founder could update it as needed with member names.
     
    Last edited:
    • Like
    Reactions: NeonSturm

    NeonSturm

    StormMaker
    Joined
    Dec 31, 2013
    Messages
    5,110
    Reaction score
    617
    • Wired for Logic
    • Thinking Positive
    • Legacy Citizen 5
    faction_edit /faction_edit 1001 myNewFaction lazers4all FactionID(Integer), FactionName(String), Description(String) Edits a faction.




    faction_list /faction_list - Lists all current the servers factions.
    faction_join_id /faction_join_id Schema 1001 PlayerName(String), FactionID(Integer) Adds this player to the faction belonging to this ID.
    faction_list_members /faction_list_members 1001 FactionID(Integer) Lists all members of this faction.
    faction_set_id_member /faction_set_id_member Schema 1001 PlayerName(String), FactionID(Integer) Sets a player to a faction ID (Debugging tool, doesn't replace join!)
    faction_mod_member /faction_mod_member Schema 1 PlayerName(String), Role(1-5)(Integer) Sets a player to a role within the faction.





    If you have less members than assets, it might be a better choice to rename/change factions with some ID, but it is a huge amount of work too.

    Maybe you can "hack" the factions file with tools like Hex-Edit.


    I like it stored in the registry Tomino_sama, but I not want to lose off-line functionality. I don't want the game functions rely solely on a working server/internet. I know from my own experience that hard-drives fail very often and some servers are suddenly down when you are bored the most...
     
    Last edited by a moderator:
    Joined
    Jun 30, 2013
    Messages
    390
    Reaction score
    285
    • Video Genius
    • Legacy Citizen 8
    • Community Content - Silver 1
    faction_edit /faction_edit 1001 myNewFaction lazers4all FactionID(Integer), FactionName(String), Description(String) Edits a faction.

    I like it stored in the registry Tomino_sama, but I not want to lose off-line functionality. I don't want the game functions rely solely on a working server/internet. I know from my own experience that hard-drives fail very often and some servers are suddenly down when you are bored the most...
    The beauty of the Registry option is it works alongside the 10000+ range we currently use (first come first server numbering system)
    The Registry ID's could be in a different range from the current one. For single player and LAN the 10001, 10002 etc is used.

    For those players with 100+ member in a faction, the registry option allows any Faction member to join any server under his/her faction. As the ID is set and supplied using something like the uplink, it will always be the same. Of course if you play on a public multiplayer server the internet connection is a given.


    That being said. I have it on good authority that Our Best Friend in the Whole Universe has this covered. On that Basis all my Idea's are fun to think about, but I have every confidence in the final method chosen :D
     
    Last edited by a moderator:
    Joined
    Mar 15, 2014
    Messages
    238
    Reaction score
    68
    • Community Content - Bronze 1
    • Legacy Citizen 3
    If we do truly want factions consistent across all servers, and community based from the "core" starmade dock/portal, then #2 will have to be the method, it would seem. I kind of like that - we make our faction via the starmade portal, and the members/ID/permission settings are automatically propagated to all official/public Starmade servers that choose to register with the Starmade portal and keep their files updated properly. The only downside to this is it would be more difficult, and buggy, to temporarily switch factions on 1 server. SOooo buggy, perhaps, it might not be worth it, and factions will probably just stay unique/separate per server and not linked to other servers.

    Faction sectors, and ships, will stay unique and different on each server - that makes sense.

    I think mass import/export will be best facilitated by a running database or spreadsheet of sectors to automatically backup daily, maybe at 0:00 GMT. Any file type should work, xml, text (comma delineated)... upon server restart/reset, a script should automatically run that imports the member list, then sets the whitelist, then re-creates registered factions, then finally runs an import of all 'registered' sectors in the mass import list file. After this is complete, the server opens for logins.
     
    • Like
    Reactions: NeonSturm
    Joined
    Feb 24, 2014
    Messages
    101
    Reaction score
    23
    • Purchased!
    • Community Content - Bronze 1
    • Legacy Citizen 5
    I like the idea of the uplink for factions as this could also add the option of protecting faction names as we can do now with usernames


    but for the bulk export import issue it could be that the export command also saves a list of faction IDs + name along with the founder's usernames associated with each ID.

    when importing the data, if there is a faction ID that does not belong to a faction that already exists, add the faction ID, name and Founder name to a list of unclaimed factions.

    when users log in to the server,if he does not already have a faction associated, and if the list of unclaimed factions has any items in its list, the username logging in is checked to see if he owns one of the unclaimed factions, if a match is found the faction could be automatically reinstated with that player as founder and the same faction ID

    when bulk exporting or importing large numbers of sectors it may take a little longer, but the checks upon logging in should not make any noticeable difference to login times