Wanted: Programmer

Discussion in 'Empyrion API' started by IndigoWyrd, Jan 19, 2020.

  1. IndigoWyrd

    IndigoWyrd Rear Admiral

    Joined:
    Jun 19, 2018
    Messages:
    1,028
    Likes Received:
    1,414
    I'm looking for someone with some programming aptitude to engage in a little venture I believe the community at large would relish.

    While I am not without some programming aptitude myself, I learned many years ago that it is not something I particularly enjoy doing, and I am exceptionally slow at doing it. I'm also very out of practice, and my last big programming venture was in 8086 Assembly.

    Here's what I'd like to see though:

    A utility program that loads the Config.ecf file and allows for easy modification of a number of values in this particular file. Here's an example:

    { Block Id: 272, Name: RCSBlockSV
    Group: cpgRCS
    Material: metal
    ShowBlockName: true
    Mass: 250, type: float, display: true, formatter: Kilogram
    Volume: 40, type: float, display: true, formatter: Liter
    IsOxygenTight: false, display: true
    IsIgnoreLC: true
    Info: bkiGyroscope, display: true
    StackSize: 6
    BlockColor: "110,110,110"
    Category: Devices
    Torque: 100, type: int, display: true, formatter: NewtonMeter
    EnergyIn: 3, type: int, display: true, formatter: Watt
    CPUIn: 750, type: int, display: true
    BlastRadius: 4
    BlastDamage: 100
    UnlockCost: 4, display: true
    UnlockLevel: 5, display: true
    TechTreeParent: GeneratorSV
    TechTreeNames: Small Vessel
    }

    Here we're looking and the SV RCS device. Values that would be worth modifying:

    Mass, Volume, Torque, EnergyIn, CPUIn, BlastRadius, and BlastDamage.

    The UI for this need only read the Name: and the modifiable values and be able to write these values back to this file, allowing server admins to modify these values without having to delve into the raw text files, search these out, hope they preserve any requisite formatting, or mis-modify a value.

    I'd be more than glad to collaborate, and I'm certain this would prove to be a fairly simple program to compile - it could probably be done in a browser interface rather than an executive file format.

    Or, there might already be such a utility out there I am just unaware of, and if so, please point me in the right direction.
     
    #1
    Cluascorp and Ephoie like this.
  2. Ephoie

    Ephoie Captain

    Joined:
    Jan 27, 2018
    Messages:
    329
    Likes Received:
    515
    No 'takers' yet, eh?
    I'd be willing to work with any programmers in this 'venture', and help with testing/formulation.
    Would a little financial incentive perk anyone's ears up at the opportunity to create some new mods?
    @Exacute @Jascha @ASTIC @Xango2000

    I'm sure we could scrape a few modest bucks together to soften the hit to one's time it may require.
     
    #2
  3. ASTIC

    ASTIC Captain

    Joined:
    Dec 11, 2016
    Messages:
    991
    Likes Received:
    707
    Well, at this point you don't actually need a tool but "only" a best practice recommendation.
    Just enter the values to be changed in your Config.ecf, this will be create an easy, clear and maintainable file.

    For example see my modified config.ecf with some changes.
     

    Attached Files:

    #3
    Ephoie likes this.
  4. IndigoWyrd

    IndigoWyrd Rear Admiral

    Joined:
    Jun 19, 2018
    Messages:
    1,028
    Likes Received:
    1,414
    Not sure what "best practice" is being illustrated here, but this doesn't quite look like what I'm wanting to do here, at least not for what I have in mind. I'll see if I can't cobble something together in keeping with what I'd like to see and someone else might go "OH!" and want to refine it.
     
    #4
  5. ASTIC

    ASTIC Captain

    Joined:
    Dec 11, 2016
    Messages:
    991
    Likes Received:
    707
    Best practices - in the form that you only specify the few changes - this file changes so often in the meaning and syntax that a tool or extensive adjustments burn a lot of time
     
    #5
  6. imlarry425

    imlarry425 Captain

    Joined:
    Jan 10, 2019
    Messages:
    457
    Likes Received:
    338
    I'm a db geek vs UI so in a world full of nails I tend to favor that hammer. I'd looked at something like this but it would have been a local app vs. web because of that and I still am missing the front end (aka friendly so people use it) skills.

    The data is almost in JSON format but not quite .. my approach was going to be using REGEX to convert a subset of files (the ones people want to tweak) into actual JSON for import via SQLexpress (because it is a) free, b) supports native JSON ingestion, c) I'm 20+ years familiar with MSSQL) and then put helper tables around the import data based on the natural keys of the names in the imported name/value pairs to define definitions of what something is/does and the domain ranges of expected and recognized values. Making changes wouldn't change the import data but instead be attached to a version entity so that you could create named configurations ("NoWVTurretHeaven", "BugHunt", etc.) and then share the resulting exports. This general approach is less brittle on version changes in the underlying files since the db helpers are config data vs. code.

    Export would require going back through a REGEX pass to create the replacement files from the db data which would need to get applied .. it would be nice if you could rollback on that sort of thing so rather than writing to the actual steamapps path in the tree you would probably want to do that as a separate step to enable using simple folder copy sorts of actions to move stuff from the export tree into the target after copying the existing files into rollback trees.

    But like I said, I only have the SQL hammer and enough C# to write ETL processes so making that into a user friendly tool is a learning experience I haven't taken the time for in the last 30 years so guessing I ain't the droid you're looking for.
     
    #6
    Ephoie likes this.
  7. IndigoWyrd

    IndigoWyrd Rear Admiral

    Joined:
    Jun 19, 2018
    Messages:
    1,028
    Likes Received:
    1,414
    That sounds a bit like pounding screws with that hammer. These .cfg files are just text. It shouldn't be that complex a task to search:

    Block Id: 272, Name: RCSBlockSV

    Torque: 100, type: int, display: true, formatter: NewtonMeter

    EnergyIn: 3, type: int, display: true, formatter: Watt

    CPUIn: 750, type: int, display: true

    for:

    The Name (RCSBlockSV), read that data into a field
    Search for Torque (100), read that into an editable field
    Search for EnergyIn (3), read that into an editable field
    Search for CPUIn (750), read that into an editable field,
    and write those changes back into the .cfg being read.

    These all follow the same format, Start with a "Block Id:" and end with "}" so finding the beginning and end of an entry shouldn't be terribly difficult or require SQL, JSON conversion or anything so engineered. The goal here is to give server admins a quick and easy way to make modifications for the games they host, such as "I'd like the RCS to use a little more power and a little less CPU" or "I'd like Plasma to do more damage to shields, less damage to concrete and be devastating to organic (wood and carbon) blocks" for example.

    This can already be done by manually fiddling with these files, but a little utility would make this easier, neater, ensure they don't set a damage value to something like à and screw things up, and perhaps get people to realize they can change some of values of things they may not have realized (like doing more or less damage to a type of block with a type of weapon).
     
    #7
  8. Ephoie

    Ephoie Captain

    Joined:
    Jan 27, 2018
    Messages:
    329
    Likes Received:
    515
    Holy run on sentences, @imlarry425 man....
    :p
    There is an ECF - JSON converter out there.... Don't know if its depreciated... and it does require compiling...
     
    #8
  9. Ephoie

    Ephoie Captain

    Joined:
    Jan 27, 2018
    Messages:
    329
    Likes Received:
    515
    I assume you already have Notepad++....
    "ALT + F" while in the file, and enter your search term to quickly peruse through the file to your desired entry.
     
    #9
  10. IndigoWyrd

    IndigoWyrd Rear Admiral

    Joined:
    Jun 19, 2018
    Messages:
    1,028
    Likes Received:
    1,414
    I do, I know how to use it, I was just wanting a more organized method that might be useful to someone who isn't quite so adept at editing text files and doesn't spend their time reading through them to find and figure out what a particular object is called by an internal name, as sometimes they can be a little less than obvious. Try looking up CV Turret Rockets, Rocket Launcher Rockets and Enemy Rockets and see a decent example.
     
    #10
    Ephoie likes this.
  11. imlarry425

    imlarry425 Captain

    Joined:
    Jan 10, 2019
    Messages:
    457
    Likes Received:
    338
    Yeah E .. talk that way too. And too fast - it's the ADHD.

    Since you're only looking for hard coded sitting on one file maybe you could bid it to a freelancer website?
     
    #11
    Ephoie likes this.
  12. Ephoie

    Ephoie Captain

    Joined:
    Jan 27, 2018
    Messages:
    329
    Likes Received:
    515
    You're alright @imlarry425
    I'm just teasing.

    Yeah, if we could find someone who plays, codes, and is willing to dedicate some time to this project, it would be nice.
     
    #12
  13. Fenra369

    Fenra369 Commander

    Joined:
    Apr 5, 2016
    Messages:
    340
    Likes Received:
    139
    Color me curious.... You want a GUI interface which would allow people to search, modify, and edit config files?... I feel like someone just modifying the PDA reader would do. I'm surprised Jascha hasn't bitten on it. That said, it must be smart enough to 'update' itself via the default config if it existed somewhere in the base folder. As others have mentioned, it changes a lot, it's not something that's gonna be maintainable by virtue of 'updating' the code everytime the config changes.
     
    #13
    Ephoie likes this.
  14. IndigoWyrd

    IndigoWyrd Rear Admiral

    Joined:
    Jun 19, 2018
    Messages:
    1,028
    Likes Received:
    1,414
    Not quite search, and I may actually be wrong as to what actual file is being modified here - it's the config.ecf to be specific. The "search" function would be performed when the file is loaded into the app, to identify the various blocks, gadgets and devices to be modified, as well as the current values of those particular blocks, gadgets and devices.

    To demi-pseudo-code...

    Open [config.ecf]
    Find [BlockId:]
    Get Value [Name:]
    Get Value [Torque:]
    Get Value [EnergyIn:]
    Get Value [CPUIn:]
    Stop Find at [}]

    So the file would be parsed, locate the [BlockId:], get the [Name:], [Torque:], [EnergyIn:] and [CPUIn:] values, write those values into fields. Name would just be display, so you'd know what you were looking at.
    [Torque:], [EnergyIn:] and [CPUIn:] would be editable, corresponding values found in the config.ecf file.
    Those values could then be edited and written back into the config.ecf

    This is, of course, only one example, and other blocks, gadgets and devices have some other values that would be worth editing in this manner, but this communicates the basic concept. But yes, a GUI for this, rather than a cold text file would be nice, organized, and limit the amount of error that could be made editing this particular file.
     
    #14
    Ephoie likes this.
  15. Aftertaste

    Aftertaste Ensign

    Joined:
    Jun 12, 2021
    Messages:
    1
    Likes Received:
    0
    I know this has been awhile ha, but here is a semi simple parser for ecf , rename the extention to cs

    is simple to use,

    if(File.Exists("ItemsConfig.ecf"))
    {
    string[] fileData = RegExData.PrepareData(File.ReadAllLines("ItemsConfig.ecf"));

    List<string[]> items = RegExData.GetDataBlocks(fileData);

    if(items.Count > 0)
    {
    for(int i =0;i<items.Count;i++)
    {
    string[] chunk = items;

    Console.WriteLine("---------------------------------------------------------");

    foreach (var l in chunk)
    Console.WriteLine(l);

    Console.WriteLine("_________________________________________________________");
    }
    }
    }

    Currently it just parses blocks from ItemsConfig.ecf but it should be simple enough to understand, you simply find the first line of a section you wish to parse from the file, as all pertinent data is contained between brackets { } you can simply count the brackets until the open brackets { and the closed brackets } become a matching number, then you have one full block of data you can parse even further, the Regex examples are simple and to the point, if you are interested in learning c# i feel file parsing is an excellent start as most people can wrap their mind around it.
     

    Attached Files:

    #15
    Last edited: Jun 12, 2021

Share This Page